Information processor, method and program

The information processing device expands the number of candidate pitches by setting harmonically related notes, enabling users to perform complex musical expressions through their performance operations, improving the musical experience.

JP2025145567APending Publication Date: 2025-10-03CASIO COMPUTER CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2024045801
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-03-22
Publication Date
2025-10-03

AI Technical Summary

Technical Problem

Existing systems, such as described in Patent Document 1, limit the number of candidate pitches for musical tones based on the pitches specified in song data, restricting the user's ability to perform complex musical expressions.

Method used

An information processing device that sets multiple candidate pitches, including harmonically related pitches, allowing a user to select a sounding pitch based on their performance operation, thereby increasing the number of available pitches.

Benefits of technology

Enables a greater variety of musical expressions by allowing users to select pitches that harmonize with the original pitch, enhancing the musical performance experience even for those with less skill.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025145567000001_ABST
    Figure 2025145567000001_ABST
Patent Text Reader

Abstract

To increase the number of candidate pitches.SOLUTION: An information processor includes at least one processor. At least one processor sets a pitch of musical sound in a sound generation period in music data as a first candidate pitch, sets a second candidate pitch based on the first candidate pitch, detects an operation pitch associated with a performance operator operated by a user and selects a sound generation pitch of musical sound generating sound from the plurality of candidate pitches including the first candidate pitch and the second candidate pitch based on the detected operation pitch.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The disclosure of this specification relates to an information processing device, a method, and a program. [Background technology]

[0002] There is known a device that assists a user in performing an operation (see, for example, Patent Document 1). The device described in Patent Document 1 sets the pitches of musical notes indicated to be produced by song data as candidate pitches. When a user performs a performance operation, this device produces musical notes of the set candidate pitches. [Prior art documents] [Patent documents]

[0003] [Patent Document 1] Japanese Patent Application Laid-Open No. 2008-20875 Summary of the Invention [Problem to be solved by the invention]

[0004] In Patent Document 1, depending on the musical tone sounding situation, only the pitches of musical tones that are specified to be sounded by the song data are set as candidate pitches. Patent Document 1 has room for improvement in terms of increasing the number of candidate pitches.

[0005] The embodiments of the present disclosure have been made in consideration of the above circumstances, and an object thereof is to provide an information processing device, method, and program that can increase the number of candidate pitches. [Means for solving the problem]

[0006] An information processing device according to an embodiment of the present disclosure includes at least one processor that sets a pitch of a musical note during a sounding period in song data as a first candidate pitch, sets a second candidate pitch based on the first candidate pitch, detects an operation pitch associated with a performance operator operated by a user, and selects a sounding pitch of the musical note to be sounded from among a plurality of candidate pitches including the first candidate pitch and the second candidate pitch based on the detected operation pitch. [Effects of the Invention]

[0007] According to an embodiment of the present disclosure, an information processing device, method, and program are provided that are capable of increasing the number of candidate pitches. [Brief explanation of the drawings]

[0008] [Figure 1] 1 is a block diagram illustrating a configuration of a musical instrument system according to an embodiment of the present disclosure. [Figure 2] 1 is a diagram illustrating an overview of an information processing device, a method, and a program according to an embodiment of the present disclosure. [Figure 3] 10A to 10C are diagrams illustrating a method for setting a plurality of pronunciation candidate sounds according to an embodiment of the present disclosure. [Figure 4] 10A to 10C are diagrams illustrating a method for setting a plurality of pronunciation candidate sounds according to an embodiment of the present disclosure. [Figure 5] 10A to 10C are diagrams illustrating a method for setting a plurality of pronunciation candidate sounds according to an embodiment of the present disclosure. [Figure 6] 10 is a diagram showing the relationship between a plurality of sound candidate sounds and sound generation periods of musical sounds according to an embodiment of the present disclosure. FIG. [Figure 7] 1 is a flowchart of a process executed by a processor included in an information processing device according to an embodiment of the present disclosure. [Figure 8A] This is a subroutine of the music progression process in step S104 of FIG. [Figure 8B] This is a subroutine of the music progression process in step S104 of FIG. [Figure 9A]This is a subroutine of the performance operation process in step S105 of FIG. [Figure 9B] This is a subroutine of the performance operation process in step S105 of FIG. [Figure 9C] This is a subroutine of the performance operation process in step S105 of FIG. [Figure 10A] 10 is a subroutine of an event process according to a first modification of the present disclosure. [Figure 10B] 10 is a subroutine of an event process according to a first modification of the present disclosure. [Figure 11] FIG. 10 is a diagram showing an example of a code table according to Modification 1 of the present disclosure. [Figure 12A] 10 is a subroutine of a music progression process according to a second modification of the present disclosure. [Figure 12B] 10 is a subroutine of a music progression process according to a second modification of the present disclosure. [Figure 12C] 10 is a subroutine of a music progression process according to a second modification of the present disclosure. [Figure 13] 10 is a diagram showing the relationship between the sounding period of a musical tone and the storage period of the corresponding note number in the second modification of the present disclosure. FIG. DETAILED DESCRIPTION OF THE INVENTION

[0009] The following description relates to an information processing device, method, and program according to an embodiment of the present disclosure. Common or corresponding elements are denoted by the same or similar reference numerals, and duplicate descriptions will be appropriately simplified or omitted.

[0010] 1, a musical instrument system according to an embodiment of the present disclosure includes an information processing device 1 and an electronic musical instrument 2. The information processing device 1 and the electronic musical instrument 2 are connected to each other so as to be able to communicate with each other via wire or wirelessly.

[0011] The information processing device 1 is a device dedicated to an electronic musical instrument and equipped with a sound source. The information processing device 1 may be replaced with, for example, a smartphone, a tablet terminal, a PC (Personal Computer), a game controller, or the like. For example, a smartphone or a tablet terminal can operate as the information processing device 1 by downloading and installing an application that executes various processes according to an embodiment of the present disclosure from an app store. In this case, a user can operate the information processing device 1 by, for example, performing a touch operation on a GUI (Graphical User Interface) screen on which various components are laid out.

[0012] The electronic musical instrument 2 is an example of a performance device. The electronic musical instrument 2 is, for example, an electronic keyboard. The electronic musical instrument 2 may be an electronic keyboard instrument other than an electronic keyboard, such as an electronic piano. The electronic musical instrument 2 may also be another type of electronic musical instrument, such as an electronic percussion instrument, an electronic wind instrument, or an electronic string instrument.

[0013] The keyboard of the electronic musical instrument 2 has 88 keys, which are an example of performance controls. In other words, the electronic musical instrument 2 is an example of a performance device that has a plurality of performance controls. Each key is associated with a different pitch A0 to C8.

[0014] In this disclosure, an explanation will be given using the international notation in which pitch C4 is given as note number 60. Therefore, note numbers corresponding to pitches A0 to C8 are 21 to 108, respectively. Pitches are also called notes. Note numbers are also called key numbers or MIDI (Musical Instrument Digital Interface) keys. The number of keys on a keyboard is not limited to 88. The number of keys may be, for example, 61 or 76.

[0015] Pitch names represent absolute pitches, and are specifically written as C, C#, D, D#, E, F, F#, G, G#, A, A#, and B. These pitch names C to B can also be written as pitch number numbers 0 to 11, respectively.

[0016] The electronic musical instrument 2 outputs MIDI data to the information processing device 1 in response to a user's performance operation. Hereinafter, this MIDI data will be referred to as "MIDI data D." The MIDI data D output from the electronic musical instrument 2 includes various messages such as note-on, note-off, and control change.

[0017] In another embodiment, a musical instrument app that reproduces the electronic musical instrument 2 may be installed in the information processing device 1. In this case, the user can perform performance operations on the musical instrument app instead of the electronic musical instrument 2. In yet another embodiment, the information processing device 1 may be built into the electronic musical instrument 2. In other words, the information processing device 1 may be an element that constitutes the electronic musical instrument 2.

[0018] The information processing device 1 is an example of a computer. As shown in Fig. 1, the information processing device 1 includes, as hardware components, a processor 10, a RAM (Random Access Memory) 11, a ROM (Read Only Memory) 12, a flash memory 13, a display unit 14, a switch panel 15, a MIDI interface 16, a sound source LSI (Large Scale Integration) 17, a D / A converter 18, and an amplifier 19. The components of the information processing device 1 are connected via a bus 20.

[0019] The processor 10 reads out programs and data stored in the ROM 12. The processor 10 controls the information processing device 1 overall by using the RAM 11 as a work area.

[0020] The processor 10 is, for example, a single processor or a multiprocessor, and includes at least one processor. When multiple processors are included, the processor 10 may be packaged as a single device, or may be configured as multiple devices that are physically separated within the information processing device 1. The processor 10 may be called, for example, a control unit, a CPU (Central Processing Unit), an MPU (Micro Processor Unit), or an MCU (Micro Controller Unit).

[0021] RAM 11 temporarily stores data and programs. RAM 11 stores various data such as various programs, music data, and waveform data read from ROM 12. Part of the memory area of ​​RAM 11 is reserved as buffer 11A and buffer 11B. As will be described in detail later, buffers 11A and 11B store note numbers of candidate sounds to be produced (candidate note numbers), note numbers associated with keys pressed by the user (key pressed note numbers), note numbers of musical tones currently being produced (sound production note numbers), and the like.

[0022] The ROM 12 stores a control program 12A. The processor 10 executes the control program 12A to perform various processes according to an embodiment of the present disclosure.

[0023] The flash memory 13 stores multiple pieces of song data 13A. Each piece of song data 13A is data for a different song, but for convenience, they are all given the same reference number 13A. The song data 13A is created in, for example, SMF (Standard MIDI File) format. The song data 13A includes multiple events. The events describe delta time, command type, command data, etc. In other words, the song data 13A includes multiple events (an example of information about multiple musical tones that make up a song) each associated with a sound generation timing.

[0024] Command type is information such as note on, note off, control change, pitch bend change, and expression. In the MIDI standard, this is called a status byte. Command data is setting information for the command indicated by the command type. Command data is information such as note number and velocity. In the MIDI standard, this is called a data byte.

[0025] Processor 10 reads the events in song data 13A in order and progresses the song according to the delta time described in each event. Song data 13A is not limited to data stored in flash memory 13. Song data 13A may be obtained, for example, via a USB (Universal Serial Bus) memory, the Internet, or a smartphone.

[0026] The display unit 14 includes, for example, an LCD (Liquid Crystal Display) and an LCD controller. When the LCD controller drives the LCD in accordance with a control signal from the processor 10, a screen corresponding to the control signal is displayed on the LCD. The LCD may be configured as a touch panel display. The LCD may be replaced with other types of display devices, such as an organic EL (Electro Luminescence) display or an LED (Light Emitting Diode).

[0027] The switch panel 15 includes a plurality of switches, buttons, etc. for the user to perform various operations. The switch panel 15 includes, for example, a power switch, a volume knob, a button for the user to select a song, a button for the user to select a performance part, a button for the user to start playing a song, and a button for the user to stop playing a song.

[0028] The MIDI interface 16 communicably connects the information processing device 1 and the electronic musical instrument 2. The MIDI interface 16 receives, for example, MIDI data output by the electronic musical instrument 2.

[0029] For example, waveform data is stored in ROM 12. The waveform data is loaded into RAM 11 at the start-up process of information processing device 1 so that musical tones are quickly generated in accordance with song data 13A. Processor 10 instructs sound source LSI 17 to read corresponding waveform data from the waveform data loaded into RAM 11.

[0030] The tone generator LSI 17 generates musical tones based on waveform data read from the RAM 11 under the instruction of the processor 10. The tone generator LSI 17 includes multiple generator sections. The tone generator LSI 17 can simultaneously generate musical tones equal to the number of generator sections. In this embodiment, the processor 10 and the tone generator LSI 17 are configured as separate processors, but in another embodiment, the processor 10 and the tone generator LSI 17 may be configured as a single processor.

[0031] The digital musical sound data generated by the sound source LSI 17 is converted into an analog signal by a D / A converter 18, amplified by an amplifier 19, and output from, for example, a line-out terminal. The musical sound is then reproduced by, for example, a speaker connected to the line-out terminal.

[0032] An overview of an information processing device, method, and program according to an embodiment of the present disclosure will be described using FIG. 2. SMF (i.e., song data 13A) is composed of one or more tracks and includes multiple parts. The multiple parts include a piano part, guitar part, bass part, soprano saxophone part, drum part, obbli part, chord part, etc. The user can select one performance part from the multiple parts by operating switch panel 15. For convenience, parts other than performance parts are referred to as "non-performance parts."

[0033] In this embodiment, the chord data is, for example, a chord name string written in a meta event. The chord name string is text data indicating a chord such as C, CM7, or Cm7. A meta event including a chord name string is referred to as a "chord event." The chord data may also be data for a chord part.

[0034] The song data 13A may contain only one part, in which case this one part is selected as the performance part.

[0035] The information processing device 1 sequentially reads each event (MIDI data) included in the song data 13A. When the timing specified in the SMF for a musical note of a non-playing part arrives, the information processing device 1 immediately instructs the sound source LSI 17 to generate the musical note specified by the event. In other words, the information processing device 1 automatically performs the musical note of the non-playing part at the timing and volume (velocity) specified in the SMF. Velocity can be considered a value that indicates the strength of the key depression operation, and also a value that indicates the volume (volume) of the musical note.

[0036] On the other hand, for the performance part, the information processing device 1 does not instruct the sound source LSI 17 to generate musical tones in accordance with the SMF. When the timing for generating musical tones for the performance part, which is the timing specified in the SMF, arrives, the information processing device 1 does not immediately instruct the sound source LSI 17 to generate the tones, but sets multiple candidate tones to be generated based on the note numbers described in the event. The information processing device 1 stores the note numbers of the multiple candidate tones that have been set in the buffer 11A. The note numbers of the multiple candidate tones to be generated are overwritten and stored in the buffer 11A as the song progresses.

[0037] More specifically, the information processing device 1 stores the note numbers of a plurality of candidate sounds in the buffer 11A at the timing when a musical sound corresponding to a note-on event starts to be produced. The information processing device 1 deletes the note numbers of a plurality of candidate sounds from the buffer 11A at the timing when a musical sound corresponding to a note-off event stops to be produced. That is, the information processing device 1 stores the note numbers of a plurality of candidate sounds in the buffer 11A during the period from the start of production of a musical sound corresponding to a note-on event to the stop of production of a musical sound corresponding to a note-off event (an example of a production period in the song data).

[0038] When a user operates the electronic musical instrument 2, MIDI data D is input to the information processing device 1. When the MIDI data D including, for example, a note-on message is input, the information processing device 1 selects one note number from among the note numbers of the multiple candidate sounds stored in the buffer 11A at that time, regardless of the note number included in the MIDI data D. For example, the information processing device 1 selects the note number closest to the note number included in the MIDI data D (i.e., the key pressed note number associated with the key pressed by the user). The information processing device 1 instructs the sound source LSI 17 to generate the musical tone of the selected note number. The volume of the generated musical tone is determined not by the velocity described in the event of the song data 13A but by the velocity included in the MIDI data D. In other words, the information processing device 1 generates the musical tone of the pitch selected from the multiple candidate sounds at the timing and volume specified by the user's operation.

[0039] A method for setting a plurality of candidate sounds to be produced will be described with reference to Figures 3 to 5. Figures 3 to 5 show a correspondence table between note numbers (No.) and pitch names (NN) for a part of the key range of the keyboard of the electronic musical instrument 2. In this correspondence table, the columns for the candidate sound notes (candidate note numbers) and pitch names are hatched (for convenience, referred to as "first pattern hatching"). The columns for the operated pitch note numbers (auto key pressing numbers) and pitch names are shown in black. The columns for the produced pitch note numbers (produced note numbers) and pitch names are hatched in a second pattern that is different from the first pattern hatching.

[0040] Furthermore, the letters "key pressed (n)" are attached together with an arrow indicating the key pressed note number. Also, the letters "pronunciation (n)" are attached together with an arrow indicating the key associated with the pronunciation note number of the musical tone that is produced in response to the key press operation. n is a natural number and indicates the key pressing order (the order in which the user is currently pressing the keys) and the corresponding musical tone pronunciation order.

[0041] The length of these arrows indicates the velocity. The shorter the arrow, the smaller the velocity at which the key was pressed, and the corresponding velocity (loudness, etc.) at which the note was produced. The longer the arrow, the greater the velocity at which the key was pressed, and the corresponding velocity (loudness, etc.) at which the note was produced.

[0042] Buffer 11A is allocated as an array in RAM 11. 3 and 4 also show conceptual diagrams of buffer 11A allocated as an array. The data type of buffer 11A includes member variables note, on_note, and on_key. The note member stores a candidate note number (an example of the first and second candidate pitches) indicating the pitch of the candidate note to be sounded. The on_note member stores a sounding note number (an example of the sounding pitch) indicating the pitch of the musical note to be sounded. The on_key member stores a pressed note number (an example of the operation pitch associated with the performance operator operated by the user). A value of -1 is stored in an element where a note number is not stored. Buffer 11A (note_buf

[24] ) is allocated in RAM 11 with variables of this data type as an array. The number of elements of the array is 24. The number of elements, 24, is denoted as "NOTES_NUM_ALL."

[0043] As shown in Figures 3 and 4, buffer 11A is allocated in a contiguous area on RAM 11. This contiguous area is partitioned into three areas, each with eight elements. The number of elements, eight, is denoted as "NOTES_NUM." Starting from the top of the contiguous area, the pointer variables for each area are denoted as "note_buf_lower," "note_buf_mid," and "note_buf_upper." For convenience, the area of ​​the first eight elements of the contiguous area is denoted as "area note_buf_lower." The area of ​​the next eight elements is denoted as "area note_buf_mid." The area of ​​the further next eight elements is denoted as "area note_buf_upper."

[0044] In the example of FIG. 3, a case will be described in which the user presses the key of pitch B3 (note number 59) (see key press (1)) when a note-on event of pitch D3 (note number 50) occurs in the performance part.

[0045] The processor 10 sets the note number 50 described in the note-on event of the performance part as a candidate note number (an example of a first candidate pitch). The note number 50 indicates an example of the pitch (original pitch) of a musical note that will be sounded in the performance part data, determined in response to a user operation. The processor 10 further sets a second candidate pitch based on the original pitch (an example of a first candidate pitch). In the example of FIG. 3, the processor 10 sets the note numbers of a pitch (note number 62) one octave above and a pitch (note number 38) one octave below the original pitch (note number 50) as candidate note numbers (an example of a second candidate pitch based on the first candidate pitch). In other words, the processor 10 adds pitches that are musically in harmony with the original pitch of the performance part as candidate pitches.

[0046] For example, pitches m octaves above and below the original pitch (m is a natural number greater than or equal to 2) also harmonize musically with the original pitch. Therefore, instead of or in addition to pitches one octave above and below the original pitch, processor 10 may set note numbers of pitches m octaves above and below as candidate note numbers. In this way, processor 10 sets a pitch (an example of a second candidate pitch) an octave above and below the original pitch (an example of a first candidate pitch) as a candidate pitch.

[0047] It should be noted that any reference to an element using a designation such as "first," "second," etc., used in this disclosure does not generally limit the quantity or order of those elements. These designations are used for convenience to distinguish between two or more elements. Thus, reference to a first and a second element does not imply, for example, that only two elements are employed, that the first element must precede the second element, etc.

[0048] The processor 10 selects, from among the set candidate pitches, the candidate pitch closest to the operation pitch (in other words, the candidate note number having the smallest absolute difference from the pressed key note number) as the sounding pitch (in other words, the sounding note number). If there are two candidate note numbers having the same absolute difference from the pressed key note number, the processor 10 selects the lower candidate note number as the sounding note number. In the example of FIG. 3, the candidate note numbers 38, 50, and 62 have absolute differences from the pressed key note number 59 of 21, 9, and 3, respectively. The processor 10 selects the candidate note number 62, having the smallest absolute difference from the pressed key note number 59, as the sounding note number.

[0049] The processor 10 instructs the sound source LSI 17 to sound the musical tone of the selected sound note number 62 at the velocity at which the key was pressed. This causes the musical tone of the sound note number 62 to be sounded (see sound production (1)). The user can play the part they want to play at any timing and volume while listening to the musical tones of the non-playing parts as the song progresses automatically. Regardless of the keyboard operation, the playing part will be sounded at a musical tone that is musically in harmony with the original pitch.

[0050] In this way, processor 10 detects the key pressed note number (an example of an operation pitch associated with a performance operator operated by a user), and selects, based on the detected key pressed note number, from among a plurality of candidate pitches including the first candidate pitch and the second candidate pitch, a candidate pitch that is not the pitch of the musical tone being sounded and is closest to the operation pitch. Processor 10 processes the pronunciation of the pronunciation pitch so that the pronunciation pitch is pronounced at a magnitude corresponding to the velocity (an example of a value indicating the strength of the operation of the performance operator) at the time of key pressing.

[0051] The example in Fig. 3 will be explained in more detail using Fig. 6. Fig. 6 shows the relationship between the period during which each candidate note number is stored in the buffer 11A (in other words, the period during which musical tones are generated in the song data 13A) and the period during which musical tones are generated in response to key depression and key release.

[0052] When a note-on event for pitch D3 (note number 50) occurs in the performance part, processor 10 stores three candidate note numbers in buffer 11A. Specifically, processor 10 stores note number 50 of the original pitch in the note member of an empty element in area note_buf_mid of buffer 11A. Processor 10 stores note number 62 of the pitch one octave higher than the original pitch in the note member of an empty element in area note_buf_upper. Processor 10 stores note number 38 of the pitch one octave lower than the original pitch in the note member of an empty element in area note_buf_lower (see FIGS. 3 and 6).

[0053] When a note-on event corresponding to a key depression is input, the processor 10 stores the key depression note number 59 in the on_key member of the corresponding element. More specifically, the processor 10 stores the key depression note number 59 in the on_key member of the element in the area note_buf_upper corresponding to the candidate note number 62 that is closest to the key depression note number 59. Furthermore, the processor 10 stores the sound generation note number 62 in the on_note member of the same element, and instructs the sound source LSI 17 to generate the musical tone of the sound generation note number 62 (see FIG. 3). This starts the generation of the musical tone of the sound generation note number 62 (see "Sound Generation 1" in FIG. 6).

[0054] When a note-off event corresponding to a key release operation is input, the processor 10 changes the key-pressed note number 59 stored in the on_key member of the same element to a value of -1. The processor 10 also changes the sound generation note number 62 stored in the on_note member of the same element to a value of -1, and instructs the sound source LSI 17 to mute the musical note of the sound generation note number 62. As a result, the musical note of the sound generation note number 62 is muted even though the musical note of the original pitch in the song data 13A is still in the sound generation period (see "sound generation 1" in FIG. 6).

[0055] When a note-off event of pitch D3 (note number 50) occurs in the performance part, processor 10 changes all candidate note numbers 38, 50, and 62 stored in the note members of the corresponding area elements to a value of -1. However, processor 10 does not change the values ​​stored in the on_note and on_key members. These values ​​are changed to -1 when a note-off event corresponding to a key-release operation is input. Therefore, even if the sounding period of the musical note of the original pitch in song data 13A has ended, the musical note of sounding note number 62 continues to be sounded until a key-release operation is performed (see "Sounding 2" in Figure 6).

[0056] In this way, regardless of whether the musical tone of the original pitch (an example of a first candidate pitch) is in the sounding period in the song data 13A, when a key release operation is performed (when the operation of the performance operator is turned off), the corresponding sounding pitch is muted. Regardless of whether the musical tone of the original pitch is in the sounding period in the song data 13A, if a key release operation is not performed (when the operation of the performance operator is not turned off), the corresponding sounding pitch continues to be sounded. The user can play the performance part with musical tones that reflect his or her own intentions.

[0057] The example in FIG. 4 explains a case where a note-on event of pitch D3 (note number 50) occurs in the performance part, and the user further presses the key of pitch E2 (note number 40) (see key press (2)).

[0058] The processor 10 selects, from among the unsound candidate note numbers, the candidate note number 38 that is closest to the key pressed note number 40 as the note number to be sounded. In the buffer 11A, the key pressed note number 40 is stored in the on_key member of the element of the area note_buf_lower corresponding to the candidate note number 38, and the sound note number 38 is stored in the on_note member of the same element. The processor 10 instructs the sound source LSI 17 to sound the musical tone of the sound note number 38 with the velocity at the time of key depression. As a result, the musical tone of the sound note number 38 is sounded (see sounding (2)).

[0059] 5 (Example 1) illustrates a case where, when a note-on event for pitch D3 (note number 50) occurs in the performance part, the user further presses the keys for pitch C3 (note number 48) and pitch E3 (note number 52) (see key press (3) and key press (4)). FIG. 5 (Example 2) illustrates a case where, when a note-on event for pitch D3 (note number 50) occurs in the performance part, the user further presses the keys for pitch C3 (note number 48) and pitch B2 (note number 47) (see key press (3) and key press (4)).

[0060] 5 (Example 1) and (Example 2), the processor 10 selects, from among the unsound candidate note numbers, candidate note number 50 that is closest to the pressed note number 48 as the note number to be sounded. The processor 10 instructs the sound source LSI 17 to sound the musical tone of the selected note number 50 at the velocity at the time of key depression. As a result, the musical tone of note number 50 is sounded (see sounding (3)), and musical tones of all candidate pitches (candidate note numbers 38, 50, and 62) become sounding.

[0061] In (Example 1) and (Example 2) of Figure 5, when the key with pitch E3 (note number 52) is pressed, all of the candidate note numbers are sounding, so processor 10 sets the note number that is a perfect fifth above (i.e., note number 57) or a perfect fourth below (i.e., note number 45) the candidate note number as a new candidate note number to select the note number to be sounded. In (Example 1) of Figure 5, processor 10 sets note number 57 (a pitch a perfect fifth above) that is closest to key pressed note number 52 as the candidate note number, and sets this as the note number to be sounded. In (Example 2) of Figure 5, processor 10 sets note number 45 (a pitch a perfect fourth below) that is closest to key pressed note number 47 as the candidate note number, and sets this as the note number to be sounded.

[0062] In this embodiment, pitches that are a perfect fifth above or a perfect fourth below a candidate pitch (the original pitch and pitches one octave above or below the original pitch) are referred to as "perfect interval pitches." Pitches that are a perfect fifth above or a perfect fourth below pitches that are m octaves above or below the original pitch (m is a natural number greater than or equal to 2) are also referred to as "perfect interval pitches." Perfect interval pitches are an example of a third candidate pitch. Here, when there are multiple original pitches, the pitches of perfect intervals corresponding to each original pitch may have a small pitch difference. If musical notes with such a small pitch difference are produced, there is a risk of dissonance. Therefore, only when there is one musical note (i.e., one original pitch) in the sounding period in the song data 13A, note numbers that are a perfect fifth above or a perfect fourth below are set as candidate note numbers.

[0063] When pitches one octave apart are selected as candidate pitches, each original pitch is simply shifted by one octave. Therefore, when there are multiple original pitches, setting pitches one octave apart as candidate pitches does not result in dissonance.

[0064] In this embodiment, a greater number of candidate pitches than the original number of musical notes contained in the song data 13A are set, and then the sounding pitches are selected. This avoids a shortage of candidate pitches when selecting musical notes to be sounded in response to key presses. Furthermore, pitches that are musically in harmony with the original pitches are set as candidate pitches. Therefore, regardless of the keyboard operation, the performance part will be sounded with musical notes that are musically in harmony with the original pitches. Even users who are not skilled at playing musical instruments can enjoy playing.

[0065] The candidate note numbers in buffer 11A are automatically replaced in accordance with the note-on and note-off events included in the performance part, so that the user can freely play the electronic musical instrument 2 and still play a song using musically appropriate notes that should be produced at that time.

[0066] In this embodiment, the musical tone of the candidate note number closest to the pressed note number is sounded from among a plurality of candidate note numbers. The user can determine to some extent the pitch of the musical tone to be sounded by pressing a key. In other words, even if the user performs an arbitrary keyboard operation, the performance part can be performed with a musical tone that reflects the user's intention.

[0067] Even when a user presses multiple keys simultaneously, for example, processing is performed in ascending order of pressed key note numbers, and sounding note numbers are selected one by one. The processing of the flowchart described below (the processing of steps S102 to S105 in FIG. 7, including determination of sounding targets and sounding instructions) is performed periodically, for example, every 1 ms. Therefore, a sounding note number is selected every 1 ms, and musical tones of the selected sounding note numbers are sounded sequentially every 1 ms. In other words, when a user presses multiple keys simultaneously, musical tones equal in number to the number of pressed keys, which are in musical harmony, are sounded substantially simultaneously.

[0068] Fig. 7 is a flowchart showing processing executed by the processor 10 in one embodiment of the present disclosure. For example, when the information processing device 1 is powered on, execution of the processing shown in Fig. 7 starts. When the information processing device 1 is powered off, execution of the processing shown in Fig. 7 ends.

[0069] The steps of the flowcharts shown in the present embodiment may be reordered to the extent that they are consistent. For example, although the present disclosure presents the processing of various steps using an exemplary order, the order is not limited to the presented order. Furthermore, the steps of the flowcharts shown in the present embodiment may be executed in parallel or in parallel to the extent that they are consistent.

[0070] 7, the processor 10 executes an initialization process (step S101). In the initialization process, each component is initialized. Variables such as the buffer 11A are also initialized.

[0071] Processor 10 executes switch processing (step S102). In the switch processing, the operation states of various controls on switch panel 15 are acquired. For example, volume information, tone information, and the like are acquired.

[0072] Processor 10 executes function processing (step S103). In the function processing, a function corresponding to the operation state of the various controls acquired in step S102 is executed. For example, when the song playback start button is pressed, song playback start processing is executed. When the song selection button is pressed, selected song data 13A is loaded from flash memory 13 to RAM 11.

[0073] Processor 10 executes a song progression process (step S104). In the song progression process, the song progresses as time passes.

[0074] Processor 10 executes a performance operation process (step S105). In the performance operation process, when MIDI data D corresponding to a performance operation by the user is input from electronic musical instrument 2, a process corresponding to the performance operation is executed.

[0075] 8A and 8B, the subroutine for the song progression process in step S104 of FIG. 7 will be described. In this song progression process, processor 10 automatically advances the non-playing parts, but does not automatically advance the playing parts. For the playing parts, processor 10 updates buffer 11A as needed in accordance with note events contained in song data 13A so that musical tones that are musically in harmony with the original pitch are sounded and muted in response to keyboard operation. Note that even for the playing parts, events other than note events (e.g., control changes such as pedal changes) are processed according to the event description in song data 13A.

[0076] 8A, the processor 10 determines whether a song is currently playing (step S201). If the user has pressed the song playback start button and has not pressed the song playback stop button, or if the song has not ended, the song is currently playing. If the song is not currently playing (step S201: NO), the processor 10 ends this subroutine.

[0077] If the song is in progress (step S201: YES), processor 10 determines whether or not there is an event to be processed in the current progress time (step S202). If there is no event to be processed (step S202: NO), processor 10 ends this subroutine.

[0078] If there is an event to be processed (step S202: YES), processor 10 determines whether this event is a note-on event (step S203). If it is a note-on event for a non-playing part (here, other than the piano part, which is a playing part) (step S203: YES, step S204: NO), processor 10 processes the sounding of musical tones for the non-playing part in accordance with the description of the event (step S205), and ends this subroutine. In other words, processor 10 automatically progresses the non-playing part.

[0079] If the event to be processed is a note-on event of a performance part (here, piano part) (step S203: YES, step S204: YES), the processor 10 sets the value of the variable i to 0 (step S206). The variable i indicates an index of the array.

[0080] Processor 10 determines whether the values ​​of the note member and on_note member of the i-th element of area note_buf_mid are -1 or not (step S207). When the values ​​of the note member and on_note member are -1, this indicates that the element is empty. When the note member has a value other than -1, the candidate note number has been set. When the on_note member has a value other than -1, the musical tone of the sounding note number has been sounded.

[0081] If at least one of the values ​​of the note member and the on_note member of the i-th element of the area note_buf_mid is not -1 (step S207: NO), the processor 10 increments the variable i by 1 to proceed to the search for the next element (step S208). If the variable i is equal to or greater than the number of elements in the area note_buf_mid (NOTES_NUM=8) (step S209: YES), there is no free element. Therefore, the processor 10 ends this subroutine. The processor 10 repeats the processes of steps S607 to S609 until a free element is found.

[0082] If the i-th element is empty (step S207: YES), processor 10 stores the note number described in the note-on event of the performance part as a candidate note number in the note member of the i-th element (step S210). Processor 10 increments variable entry by 1 (step S211). Variable entry indicates the total number of candidate note numbers stored in the note members of the elements in area note_buf_mid. Variable entry was initialized to a value of 0 in the initialization process (step S101 in FIG. 7).

[0083] Processor 10 also stores candidate note numbers one octave below and one octave above the original pitch in buffer 11A (steps S212 to S215). Specifically, processor 10 determines whether the value obtained by subtracting 12 from the candidate note number stored in step S210 is lower than the lowest note number (note number 21 corresponding to pitch A0) (step S212). If the value is equal to or higher than the lowest note number (step S212: NO), the subtracted value indicates a note number within the key range. Therefore, processor 10 stores the candidate note number one octave below (i.e., the value obtained by subtracting 12 from the candidate note number stored in step S210) in the note member of the i-th element of area note_buf_lower (step S213). If the subtracted value is lower than the lowest note number (step S212: YES), the note is outside the key range. In this case, the processor 10 executes the process of step S214 without executing the process of step S213.

[0084] In step S214, processor 10 determines whether the value obtained by adding 12 to the candidate note number stored in step S210 is higher than the highest note number (note number 108 corresponding to pitch C8) (step S214). If the value is equal to or lower than the highest note number (step S214: NO), this added value indicates a note number within the key range. Therefore, processor 10 stores the candidate note number one octave higher (i.e., the value obtained by adding 12 to the candidate note number stored in step S210) in the note member of the i-th element of area note_buf_upper (step S215). If the added value exceeds the highest note number (step S214: YES), the note number is outside the key range. In this case, processor 10 terminates this subroutine without executing the process of step S215.

[0085] For example, consider a case where the tone generator LSI 17 can produce musical tones with note numbers (0 to 127) including those outside the key range. In this case, the processor 10 may store candidate note numbers one octave lower or one octave higher in the buffer 11A as candidate note numbers, even if these are outside the key range.

[0086] In this manner, in this embodiment, for each candidate tone (musical tone of the original pitch), candidate tones of pitches one octave above and below are also stored in the buffer 11A. Since the number of candidate tones increases threefold, it is possible to avoid a shortage of candidate pitches when selecting a musical tone to be sounded in response to a key press operation.

[0087] If the event to be processed is not a note-on event (step S203: NO), processor 10 determines whether the event is a note-off event (step S216). If the event is not a note-off event (step S216: NO), processor 10 executes event processing such as a control change in accordance with the event description (step S217), and ends this subroutine.

[0088] If the event to be processed is a note-off event of the non-playing part (step S216: YES, step S218: NO), processor 10 mutes the musical tones of the non-playing part in accordance with the description of the event (step S219), and then ends this subroutine. That is, processor 10 automatically advances the non-playing part.

[0089] If the event to be processed is a note-off event of the performance part (step S216: YES, step S218: YES), the processor 10 sets the value of the variable i to 0 (step S220).

[0090] The processor 10 determines whether the candidate note number stored in the note member of the i-th element of the area note_buf_mid is the same as the note number described in the note-off event of the performance part (step S221).

[0091] If the candidate note number is different from the note number written in the note-off event (step S221: NO), processor 10 increments variable i by 1 to proceed to the next element (step S222). If variable i is less than the number of elements in area note_buf_mid (NOTES_NUM=8) (step S223: NO), processor 10 returns to the processing of step S221. If variable i is equal to or greater than the number of elements in area note_buf_mid (NOTES_NUM) (step S223: YES), the candidate note number that is the same as the note number written in the note-off event has been deleted. Therefore, processor 10 ends this subroutine.

[0092] If the candidate note number is the same as the note number described in the note-off event (step S221: YES), this indicates that the time has come to mute the musical note of this candidate note number in the performance part. Therefore, processor 10 sets the value of the "note" member of the i-th element of area "note_buf_mid" to -1 (step S224). Processor 10 decrements variable "entry" by 1 (step S225).

[0093] Processor 10 also deletes candidate note numbers one octave above and below the candidate note number deleted in step S224 (steps S226 to S227). Specifically, Processor 10 sets the value of the note member of the i-th element of area note_buf_lower to −1 (step S226). Processor 10 sets the value of the note member of the i-th element of area note_buf_upper to −1 (step S227).

[0094] Because the event being processed is a note-off event for the performance part, the value of the on_note member remains unchanged, as explained with reference to Figure 6. Therefore, even after the candidate note number is deleted, the musical note corresponding to the sounding note number continues to be produced. The user can perform the performance part with musical notes that reflect their own intentions.

[0095] 9A to 9C, the subroutine for the performance operation processing in step S105 of Fig. 7 will be described. In this performance operation processing, processor 10 performs processing for the performance part according to the performance operation. If the performance operation is keyboard operation, processor 10 processes the generation and extinction of musical tones that are musically in harmony with the original pitch, based on the note numbers stored in buffer 11A.

[0096] The performance operation process is executed periodically, for example, every 1 ms. Therefore, when the user presses multiple keys, note numbers to be produced are selected sequentially from among multiple candidate note numbers, and the musical tones of the selected note numbers are produced sequentially. As a result, musical tones that are the same in number as the number of pressed keys and that are musically harmonious are produced in layers. In this embodiment, the number of candidate notes to be produced is increased, thereby avoiding a shortage of candidate pitches when selecting musical tones to be produced in response to key presses.

[0097] 9A, processor 10 determines whether MIDI data D has been input in response to a performance operation (step S301). If MIDI data D has not been input (step S301: NO), processor 10 ends this subroutine.

[0098] If a note-on event corresponding to a key depression is input (step S301: YES, S302: YES), the processor 10 initializes various parameters (step S303). Specifically, the processor 10 sets the value of the variable i to 0. The processor 10 sets the variables j and k to a value of −1 indicating an invalid state. The processor 10 sets the value of the variable min to 999.

[0099] The variable j indicates the index of the array and is used when processing the pronunciation of musical notes that are a perfect fifth above or a perfect fourth below. The variable k indicates the index of the array and is used when processing the pronunciation of musical notes at the original pitch or a pitch one octave above or below. The variable min indicates the absolute difference between the candidate note number and the pressed note number.

[0100] The processor 10 determines whether the value stored in the note member of the i-th element of the area note_buf is -1 (step S304). The area note_buf is an area formed by concatenating the areas note_buf_lower, note_buf_mid, and note_buf_upper. "note_buf" is a pointer variable that indicates the beginning of the entire buffer 11A.

[0101] If the value stored in the note member of the element is -1 (step S304: YES), no candidate note number is stored in the note member of the element. Processor 10 increments variable i by 1 to proceed to the next element (step S305). If variable i is equal to or greater than the total number of elements in buffer 11A (NOTES_NUM_ALL=24) (step S306: YES), processor 10 proceeds to processing of step S313 because all elements in the array have been searched. If unsearched elements remain (step S306: NO), processor 10 returns to processing of step S304.

[0102] If the value stored in the note member of the element is not -1 (step S304: NO), the candidate note number is stored in the note member of the element. The processor 10 determines whether the value stored in the on_note member of the element is -1 (step S307).

[0103] If the value stored in the on_note member of the element is not -1 (step S307: NO), a sounding note number is stored in the on_note member of the element. That is, the musical note of the sounding note number stored in the on_note member of the element is being sounded. Processor 10 sets variable j to the value of variable i to indicate that this musical note is being sounded (step S308). Processor 10 proceeds to step S305 to proceed to the next element.

[0104] If the value stored in the on_note member of the element is -1 (step S307: YES), the on_note member of the element does not store a sound note number. In other words, the musical note of the candidate note number stored in the note member of the element is not yet sounded. Processor 10 sets the absolute value of the difference between this candidate note number and the pressed note number to variable x (step S309).

[0105] Processor 10 determines whether variable x is smaller than variable min (step S310). If variable x is equal to or larger than variable min (step S310: NO), a candidate note number with a smaller absolute difference value from the pressed note number has already been detected. Processor 10 proceeds to step S305 to proceed to the next element.

[0106] If the variable x is smaller than the variable min (step S310: YES), the absolute difference between the candidate note number stored in the note member of the element and the key pressed note number is currently the smallest. Therefore, the processor 10 updates the value of the variable min to the value of the variable x (step S311). The initial value of the variable min is 999, while the maximum value of the note number is 127. Therefore, if there is an unsound candidate note number, the value of the variable min is always updated to the value of the variable x.

[0107] In step S311, processor 10 sets variable k to the value of variable i. When the search for all elements in the array is complete, the value of variable k indicates element i (i-th element) that stores the candidate note number with the smallest absolute difference from the pressed note number. For convenience, this element will be referred to as "element k."

[0108] In step S313, the processor 10 determines whether the variable k is equal to the initial value, −1. If the variable k is not equal to −1 (step S313: NO), the processor 10 processes the sound generation (step S314). Specifically, the processor 10 instructs the sound source LSI 17 to generate the musical tone of the candidate note number stored in the note member of element k at the velocity at the time of key depression (step S314). The processor 10 stores the candidate note number stored in the note member of element k in the on_note member of element k as the sound generation note number, and stores the key depression note number in the on_key member of element k (step S315). The processor 10 terminates this subroutine.

[0109] In this embodiment, the entire buffer 11A is searched from the beginning, and from among the candidate pitches (the pitch one octave below the original pitch, the original pitch, and the pitch one octave above the original pitch), a musical tone with a candidate pitch closest to the operation pitch is sounded. Therefore, the higher the key range the user presses, the more likely a musical tone with a higher candidate pitch is to be sounded, and conversely, the lower the key range the user presses, the more likely a musical tone with a lower candidate pitch is to be sounded. The user can play a performance part with musical tones with pitches that reflect his or her own intentions.

[0110] If the variable k is equal to -1 (step S313: YES), all musical tones of the candidate note numbers (original pitch and pitches one octave above and below) are currently being sounded. Currently, there are no musical tones of candidate note numbers that can be newly sounded. In this case, processor 10 executes the processes from step S316 onward to attempt to add a new candidate pitch that is musically in harmony with the original pitch.

[0111] Specifically, processor 10 attempts to add pitches that are perfect intervals (i.e., a perfect fifth above or a perfect fourth below the candidate pitch currently being pronounced) as new candidate pitches. These candidate pitches are in musical harmony with the currently being pronounced musical notes, regardless of the key of the song. "A perfect fourth below the currently being pronounced candidate pitch" can be rephrased as "a perfect fifth above the pitch one octave below the currently being pronounced candidate pitch."

[0112] In step S316, the processor 10 determines whether the variable entry has a value of 1. If the variable entry has a value of 1 (step S316: YES), the total number of candidate note numbers stored in the note member of the elements of the area note_buf_mid is 1. That is, the number of musical notes of the original pitch is 1, and the musical notes of all candidate note numbers are currently being sounded (in other words, the first candidate pitch corresponding to the single pitch and all second candidate pitches are currently being sounded). Here, buffer 11B is a buffer dedicated to perfect intervals, and its data type is the same as that of buffer 11A. If the variable entry has a value of 1 (step S316: YES), the processor 10 determines whether the value stored in the note member of buffer 11B is −1 (step S317).

[0113] If the value stored in the note member of buffer 11B is -1 (step S317: YES), a perfectly pitched musical note is not being sounded. In this case, processor 10 determines whether the pressed note number is equal to or greater than the candidate note number stored in the note member of the jth element of area note_buf (step S318). The jth element is the element that stores the largest candidate note number among the candidate note numbers. Basically, the jth element is the element that stores the candidate note number one octave above the original pitch. In cases where the pitch one octave above the original pitch is outside the key range, the jth element is the element that stores the candidate note number of the original pitch. For convenience, the candidate note number stored in the note member of the jth element of area note_buf is referred to as "candidate note number (j)."

[0114] If the pressed note number is equal to or greater than the candidate note number (j) (step S318: YES), processor 10 adds a value of 7 to candidate note number (j). This added value indicates a candidate note number that is a perfect fifth above candidate note number (j). Processor 10 stores the candidate note number that is a perfect fifth above candidate note number (j) in the "note" member of buffer 11B (step S319). In some cases, a note number outside the key range (109 or greater) may be stored as the candidate note number that is a perfect fifth above.

[0115] If the pressed note number is less than the candidate note number (j) (step S318: NO), the processor 10 subtracts the value 5 from the candidate note number (j). This subtracted value indicates the candidate note number that is a perfect fourth below the candidate note number (j). The processor 10 stores the candidate note number that is a perfect fourth below the candidate note number (j) in the "note" member of the buffer 11B (step S320).

[0116] Processor 10 instructs sound source LSI 17 to sound the musical tone of the candidate note number a perfect fifth above or a perfect fourth below, stored in the "note" member of buffer 11B, at the velocity at which the key was pressed (step S321). Processor 10 stores the candidate note number of the musical tone instructed to be sounded as the sound note number in the "on_note" member of buffer 11B (step S322). Processor 10 also stores the key pressed note number in the "on_key" member of buffer 11B (step S323). Processor 10 then ends this subroutine.

[0117] In this way, by adding pitches of perfect intervals as candidate pitches, it is possible to further avoid a shortage of candidate pitches when selecting musical tones to be sounded in response to key depression operations, and musical harmony is also ensured.

[0118] If the variable "entry" is not 1 (step S316: NO), there are two or more musical notes at the original pitch, or there is no original pitch at all. If there are two or more musical notes at the original pitch, as described above, there is a concern that dissonance may occur. Therefore, processor 10 ends this subroutine. If the value stored in the "note" member of buffer 11B is not -1 (step S317: NO), a perfect pitched musical note is already being sounded. In this case as well, processor 10 ends this subroutine.

[0119] If an event other than a note event (e.g., a control change from a pedal or the like) is input (steps S301: YES, S302: NO, S324: YES), processor 10 performs processing according to the description of the event (step S334). If a note-off event corresponding to a key release operation is input (steps S301: YES, S302: NO, S324: YES), processor 10 proceeds to the processing of step S325.

[0120] In step S325, processor 10 sets the value of variable i to 0 to search for a note-off target. Processor 10 determines whether the key-on note number stored in the on_key member of the i-th element of area note_buf matches the key-release note number included in the note-off event (step S326). If they do not match (step S326: NO), processor 10 increments variable i by 1 to proceed to the next element (step S327). If variable i is equal to or greater than the total number of elements in buffer 11A (NOTES_NUM_ALL=24) (step S328: YES), processor 10 proceeds to the processing of step S331 because all elements in the array have been searched. If unsearched elements remain (step S328: NO), processor 10 returns to the processing of step S326.

[0121] If an element storing a key-on note number that matches the key-release note number is found (step S326: YES), the processor 10 performs a sound-silencing process (step S329). Specifically, the processor 10 instructs the sound source LSI 17 to mute the musical tone of the sounding note number stored in the on_note member of the element (step S329). The processor 10 sets the values ​​of the on_note member and on_key member of the element to −1 (step S330). This causes the statuses of these members to transition to an invalid state. On the other hand, the note member of the element does not transition to an invalid state. Until the note member is transitioned to an invalid state in the process of step S224 of FIG. 8B, the musical tone of the candidate note number stored in the note member may be sounded again in response to a key depression operation.

[0122] The processor 10 determines whether the key-on note number stored in the on_key member of buffer 11B matches the key-release note number included in the note-off event (step S331). If they do not match (step S331: NO), the processor 10 ends this subroutine. If they match (step S331: YES), the processor 10 instructs the sound source LSI 17 to mute the musical tone of the sound note number stored in the on_note member of buffer 11B (step S332). The processor 10 sets the values ​​of the note member, on_note member, and on_key member of buffer 11B to -1 (step S333), and ends this subroutine.

[0123] In this embodiment, when the number of musical notes for the original pitch is one and all of the candidate note numbers are being sounded, a pitch of perfect interval is added as a new candidate pitch. However, if the key of the song can be acquired, for example, a third note that matches the key may be added as a new candidate pitch instead of or in addition to the pitch of perfect interval.

[0124] Pitches a perfect fourth above or a perfect fifth below also harmonize harmonically. Therefore, in this embodiment, the pitches of perfect intervals are not limited to pitches a perfect fifth above or a perfect fourth below the candidate pitch (the original pitch or pitches one octave above or below the original pitch), but may also be pitches a perfect fourth above or a perfect fifth below the candidate pitch. In other words, pitches of perfect intervals, which are an example of the third candidate pitch, include at least one of a pitch a perfect fifth above or a perfect fourth below the first candidate pitch, a pitch a perfect fifth above or a perfect fourth below the second candidate pitch, a pitch a perfect fourth above or a perfect fifth below the first candidate pitch, or a pitch a perfect fourth above or a perfect fifth below the second candidate pitch.

[0125] Modification 1 of the present disclosure will be described. In the above embodiment, the candidate sounds are set based on the note events of the performance part. In Modification 1, in addition to these candidate sounds, the candidate sounds are set based on the chord events.

[0126] A chord event is an event registered in the song data 13A in accordance with the timing of a chord change, and is, for example, a meta event in which a chord name string is written. The chord name string is text data (an example of chord data) that indicates a chord such as C, CM7, or Cm7.

[0127] Event processing according to Modification 1 of the present disclosure will be described using Figures 10A and 10B. Figures 10A and 10B show a modification of the event processing (step S217 in Figure 8B) of the above embodiment. The processing according to Modification 1 is the same as the above embodiment except for this event processing.

[0128] As shown in FIG. 10A, processor 10 determines whether or not the event is a chord event (step S401). If it is not a chord event (step S401: NO), processor 10 executes event processing, such as a control change, according to the event description (step S402), and then terminates this subroutine. If it is a chord event (step S401: YES), a chord change occurs at this timing. Therefore, processor 10 first deletes the note numbers of the chord constituent notes stored as candidate note numbers at the time of the previous chord event from the note member of buffer 11A.

[0129] Specifically, processor 10 sets element i and variable j1 to the value 0 (steps S403 to S404). Here, variable i indicates an index into array chord. Here, variable j1 indicates an index into area note_buf in buffer 11A. Array chord is an array in which note numbers of chord constituent notes are stored. Since array chord can accommodate a maximum of five chords, the number of elements in array chord is five.

[0130] The processor determines whether the value stored in the note member of the j1-th element of the area note_buf matches the value of the i-th element of the array chord (the note number of the chord constituent note) (step S405). If they match (step S405: YES), the processor 10 sets the value of the note member of the j1-th element to -1 (step S406). In other words, the processor 10 deletes the note number of the previous chord constituent note stored in the i-th element of the array chord from the buffer 11A. The processor 10 increments the variable i by 1 to proceed to the next element of the array chord (step S409).

[0131] If there is no match (step S405: NO), processor 10 increments variable j1 by 1 to proceed to the next element in area note_buf (step S407). If variable j1 is less than the total number of elements in buffer 11A (NOTES_NUM_ALL=24) (step S408: NO), there are still unsearched elements in area note_buf for the i-th element of array chord. Therefore, processor 10 returns to step S405. If variable j1 is equal to or greater than the total number of elements in buffer 11A (step S408: YES), searching all elements in area note_buf for the i-th element of array chord has been completed. Processor 10 increments variable i by 1 to proceed to the next element of array chord (step S409).

[0132] The processor 10 determines whether the variable i is equal to or greater than 5 (step S410). If the variable i is less than 5 (step S410: NO), there are still unprocessed elements in the array chord. Therefore, the processor 10 returns to the process of step S404. If the variable i is equal to or greater than 5 (step S410: YES), processing of all elements in the array chord has been completed. In other words, all chord notes of the previous chord have been deleted from the note members of the buffer 11A.

[0133] Processor 10 acquires information about the chord constituent notes of the new chord from the chord name character string written in the chord event in order to store the chord constituent notes of the new chord in buffer 11A (step S411).

[0134] 11 is stored in the flash memory 13. The chord table is a two-dimensional array having an array chord (number of elements: 5) as an element. In the chord table, the chord type TYPES is the first index and the note NOTES is the second index.

[0135] TYPES has 18 elements to define 18 chord types. The chord types are extracted from the chord name string. For example, a value of 0 indicates a major chord type. A value of 1 indicates a minor (m) chord type. A value of 2 indicates a diminished (dim) chord type. A value of 17 indicates a minor sixth (m6) chord type. NOTES indicates an element of the chord array. The value stored in the chord array indicates the note number. An element with a value of -1 indicates an invalid note.

[0136] The chord table holds information about the constituent notes of a chord whose root note is C. The root note is pitch C4. For example, for a C chord (in other words, a chord type whose value is 0), the elements of the chord array are {60, 64, 67, -1, -1}. For a Cm chord (in other words, a chord type whose value is 1), the elements of the chord array are {60, 63, 67, -1, -1}. For convenience, a chord whose root note is C will be referred to as a "C root chord."

[0137] Processor 10 obtains elements of the array chord for chords other than the C root chord by adding the difference between a C root chord and a chord other than the C root chord to the chord constituent notes of the C root chord. For example, in the case of a C# root chord, whose root note is C#, one semitone above C, the added value is 1. Therefore, for example, for a C# chord, the elements of the array chord are {61, 65, 68, -1, -1}. In the case of an A root chord, whose root note is A, nine semitones above C, the added value is 9. Therefore, for example, for an Am7 chord, the elements of the array chord are {69, 72, 76, 79, -1}.

[0138] As a more specific example, processor 10 first provisionally obtains a difference value from the first character of the chord name string. For example, consider an Am7 chord. In this case, the first character is "A." Because a C chord is nine semitones higher than an A chord, processor 10 provisionally obtains a value of 9 as the difference value. If the second character is "#," processor 10 raises the difference value by one semitone to a value of 10. If the second character is "♭," processor 10 lowers the difference value by one semitone to a value of 8. In the case of "Am7," the second character is "m," which indicates the chord type. Therefore, processor 10 determines the difference value to be 9.

[0139] If the second character is "m", the chord type is one of m, m7, m7b5, mM7, and m6. Because the third character of "Am7" is "7", the chord type is narrowed down to m7 and m7b5. The fourth character of "Am7" is a null character indicating the end of the string. Therefore, the processor 10 determines the chord type to be the value 7 corresponding to "m7". The processor obtains the elements {69, 72, 76, 79, -1} by adding the difference value 9 to the elements {60, 63, 67, 70, -1} corresponding to the chord type of value 7.

[0140] The processor 10 stores information about the chord constituent notes of the chord acquired in step S411 (that is, elements indicating the note numbers of the chord constituent notes) in the array chord (step S412).

[0141] Processor 10 adds as candidate note numbers those elements of array chord (in other words, note numbers of chord constituent notes) that are not currently stored as candidate note numbers in the note member.

[0142] Specifically, the processor 10 sets the value of the variable i to 0 (step S413). The processor 10 sets the value of the variable j1 to 0 and the value of the variable k to −1 (step S414).

[0143] The processor 10 determines whether the value of the note member of the j1-th element of the area note_buf is -1 (step S415). If the value is -1 (step S415: YES), the processor 10 sets the value of the variable j1 to the variable k to indicate that the element is empty (step S416), and proceeds to the processing of step S418.

[0144] If the value is not -1 (step S415: NO), processor 10 determines whether the candidate note number stored in the note member of the element matches the note number of the chord constituent note stored in the i-th element of the chord array (step S417). If they match (step S417: YES), the note number of the chord constituent note has already been stored as a candidate note number. In this case, processor 10 increments variable i by 1 to proceed to the next element of the chord array (step S422).

[0145] If there is no match (step S417: NO), the processor 10 increments the variable j1 by 1 to proceed to the next element in the area note_buf (step S418). If the variable j1 is less than the total number of elements in the buffer 11A (NOTES_NUM_ALL=24) (step S419: NO), there are still unsearched elements in the area note_buf. Therefore, the processor 10 returns to step S415.

[0146] If variable j1 is equal to or greater than the total number of elements in buffer 11A (step S419: YES), the note number of the chord constituent note stored in the i-th element of the chord array is not stored as a candidate note number in buffer 11A. Therefore, processor 10 determines whether variable k remains at its initial value, −1 (step S420).

[0147] If the variable k is not equal to -1 (step S420: NO), there is an empty element in the note_buf area that can store a candidate note number. Therefore, processor 10 stores the note number of the chord constituent note stored in the i-th element of the chord array as a candidate note number in the note member of the empty element indicated by variable k (step S421). Processor 10 increments variable i by 1 to proceed to the next element of the chord array (step S422).

[0148] The processor 10 determines whether the variable i is equal to or greater than 5 (step S423). If the variable i is less than 5 (step S423: NO), there are unprocessed elements remaining in the array chord. Therefore, the processor 10 returns to the processing of step S414. If the variable i is equal to or greater than 5 (step S423: YES), processing of all elements in the array chord has been completed, and the processor 10 ends this subroutine.

[0149] If the variable k is equal to -1 (step S420: YES), the candidate note numbers are stored in the note members of all elements in the note_buf area, and there are no empty elements. In this case, processor 10 ends this subroutine without storing the note numbers of the chord constituent notes as new candidate note numbers.

[0150] In this way, in Modification 1, the pitches of the chord constituent notes of the chord in progress are added as candidate pitches, which further prevents a shortage of candidate pitches when selecting musical tones to be sounded in response to key presses, while also ensuring musical harmony.

[0151] The root note set in the chord table is not limited to the pitch C4. In another embodiment, a pitch that is far from the range of notes that make up the melody may be set as the root note. In this case, the range of notes that make up the melody and the range of notes that make up the chord are far apart, allowing the user to, for example, perform a performance that clearly distinguishes between the melody and the accompaniment.

[0152] A second modification of the present disclosure will now be described. In the above embodiment, there is one performance part, but in the second modification, there may be multiple performance parts. Below, a case where there are two performance parts, a piano part and an obbli part, will be described. In another modification, the processing described below may be performed for three or more performance parts.

[0153] In Modification 2, the note numbers of the pitches of the musical tones of the two performance parts (in other words, the original pitches) are stored as candidate note numbers in buffer 11A. On the other hand, the timbre of the musical tones sounded according to the candidate note numbers is the timbre of one specific performance part (for example, the piano part), regardless of the performance part of the original pitch.

[0154] For example, by associating each candidate note number with a performance part, the musical tones of each candidate note number can be generated using the tone of the original performance part. However, in this case, it is difficult for the user to predict which tone will be used to generate the musical tones depending on the key press. Therefore, it is thought that unifying the tone of the musical tones generated in response to key presses to a single tone will result in a more natural performance sound.

[0155] 12A to 12C, a song progression process according to Modification 2 of the present disclosure will be described. Figures 12A to 12C show a modification of the song progression process (step S104 in FIG. 7) of the embodiment described above. The process according to Modification 2 is the same as the embodiment described above except for this song progression process.

[0156] 12A, processor 10 performs the same steps as steps S201 to S204 in FIG. 8A: determining the progress of the song (step S501), determining whether an event is present (step S502), determining whether a note-on event is present (step S503), and determining the playing part (piano part) (step S504). In Modification 2, processor 10 further performs a playing part (oblivious part) determination (step S505). If the event to be processed is a note-on event for a non-playing part (step S505: NO), processor 10 processes the sounding of a musical tone for the non-playing part in accordance with the description of the event (step S506), and ends this subroutine.

[0157] If the event to be processed is a note-on event of a performance part (here, a piano part or an obbli part) (step S504: YES or step S505: YES), the processor 10 sets the value of the variable i to 0 and the value of the variable k to −1 (step S507).

[0158] Processor 10 determines whether the value stored in the note member of the i-th element of area note_buf is the same as the note number included in the note-on event of the performance part (step S508). If the value stored in the note member of the element is the same as the note number included in the note-on event of the performance part (step S508: YES), processor 10 increments the value of the count member of the element by 1 (step S509) and ends this subroutine.

[0159] In the second modification, the data type of the buffer 11A is the same as that of the above embodiment, except that a count member is added as a member variable. The count member stores the number of musical notes of the same pitch, i.e., the number of musical notes currently being played in the song data 13A. For example, if the musical note of pitch C3 is currently being played in the piano part only in the song data 13A, the value stored in the count member for pitch C3 is 1. If the musical note of pitch C3 is currently being played in the piano part and the obbli part in the song data 13A, the value stored in the count member for pitch C3 is 2.

[0160] In this way, when a note number included in a new note-on event of a performance part is stored in buffer 11A as a candidate note number, processor 10 increments the value of the count member without newly storing this candidate note number in buffer 11A. Therefore, the same note number is not stored multiple times as a candidate note number in buffer 11A. Therefore, even if the user presses multiple keys, musical tones of the same pitch will not be sounded simultaneously.

[0161] With acoustic instruments, even when the same pitch is played with the same strength, the pitch fluctuates differently each time, resulting in different waveforms. For example, when multiple violins in an orchestra play the same pitch, the fluctuating notes interact with each other, creating a rich chorus effect. In contrast, with electronic instruments, musical tones are reproduced using waveform data stored in memory. If the same timbre is used, playing the same pitch with the same strength will produce musical tones with the same waveform. Playing musical tones of the same pitch simultaneously can result in a simple increase in volume or an unnatural undulation, which is undesirable.

[0162] The sounding periods of musical notes of the same pitch may overlap between two performance parts. In Variation 2, processing is performed for two performance parts, so a situation may occur in which two musical notes with overlapping sounding periods and the same pitch are sounded simultaneously. To avoid such a situation, processor 10 does not store as a new candidate note number a note number that is the same as an already stored candidate note number.

[0163] If the value stored in the "note" member of the element is different from the note number included in the note-on event of the performance part (step S508: NO), the processor 10 determines whether the "note" member of the element is empty (step S510). Specifically, the processor 10 determines whether the value stored in the "note" member of the element is -1.

[0164] If the state is free (step S510: YES), the processor 10 sets the value of the variable i to the variable k (step S511) and increments the variable i by 1 (step S512). If the state is not free (step S510: NO), the processor 10 increments the variable i by 1 (step S512) without processing step S511.

[0165] If the variable i is equal to or greater than the total number of elements in the buffer 11A (NOTES_NUM_ALL=24) (step S513: YES), the processor 10 proceeds to the process of step S514 because all elements in the array have been searched. If unsearched elements remain (step S513: NO), the processor 10 returns to the process of step S508.

[0166] If the process proceeds to step S514, the note number included in the note-on event of the performance part is not stored as a candidate note number in buffer 11A. Therefore, in step S514, processor 10 determines whether there is an empty element in which a candidate note number can be stored. Specifically, processor 10 determines whether variable k is equal to -1.

[0167] If the variable k is not equal to -1 (step S514: NO), there is a vacant element capable of storing a candidate note number. Therefore, processor 10 stores the note number included in the note-on event of the performance part as the candidate note number in the "note" member of the i-th element (step S515). Processor 10 increments variable "entry" by 1 (step S516).

[0168] At this point, the number of simultaneous notes of the musical tones of the candidate note numbers stored in the "note" member in step S515 becomes 1. Therefore, processor 10 sets the value 1 to the "count" member of the element (step S517). After setting the value 1, processor 10 ends this subroutine.

[0169] If the event to be processed is not a note-on event (step S503: NO), processor 10 determines whether the event is a note-off event (step S518). If the event is not a note-off event (step S518: NO), processor 10 executes event processing such as a control change in accordance with the event description (step S519), and ends this subroutine.

[0170] If the event to be processed is a note-off event (step S518: YES), processor 10 determines whether it is a note-off event of a performance part (piano part or obbli part) (steps S520-S521). If it is not a note-off event of a performance part (step S520: NO, step S521: NO), processor 10 mutes the musical tones of the non-performance part in accordance with the description of the event (step S522), and ends this subroutine. That is, processor 10 automatically progresses the non-performance part.

[0171] If it is a note-off event of the performance part (step S520: YES or step S521: YES), processor 10 deletes the candidate note number corresponding to the note-off event from buffer 11A.

[0172] Specifically, processor 10 sets the value of variable i to 0 (step S523). Processor 10 determines whether the value stored in the note member of the i-th element of area note_buf is the same as the note number included in the note-off event of the performance part (step S524). If the value stored in the note member of the element is the same as the note number included in the note-off event of the performance part (step S524: YES), processor 10 decrements the value of the count member of the element by 1 (step S525).

[0173] Processor 10 determines whether the value of the count member of the element is 0 (step S526). If this value is 0 (step S526: YES), the musical note of the note number included in the note-off event is not currently being sounded in either of the two performance parts. Processor 10 sets the value of the note member of the element to -1, which indicates an empty state (step S527). This deletes the corresponding candidate note number from buffer 11A. Processor 10 decrements variable entry by 1 (step S528) and terminates this subroutine.

[0174] If the value of the count member of the element is not 0 (step S526: NO), the musical note of the note number included in the note-off event is currently being sounded in the other performance part, so processor 10 ends this subroutine without deleting the corresponding candidate note number from buffer 11A.

[0175] If the value stored in the "note" member of the element is different from the note number included in the note-off event of the performance part (step S524: NO), processor 10 increments variable i by 1 to proceed to the next element in area note_buf (step S529). If variable i is less than the total number of elements in buffer 11A (NOTES_NUM_ALL=24) (step S530: NO), there are still unsearched elements in area note_buf. Therefore, processor 10 returns to step S524. If variable i is equal to or greater than the total number of elements in buffer 11A (step S530: YES), searching of all elements in area note_buf has been completed. Therefore, processor 10 ends this subroutine.

[0176] 13 shows the relationship between the period during which a musical note of a certain pitch (e.g., pitch C4) is sounded in each performance part and the period during which the corresponding candidate note number (e.g., note number 60) is stored in buffer 11A. For the "piano part" and "oblivion part" in FIG. 13, the period indicated by the bold line indicates the period during which a musical note of pitch C4 is sounded (the period from note-on to note-off). For "buffer 11A" in FIG. 13, the period indicated by the bold line indicates the period during which note number 60 is stored as a candidate note number.

[0177] 13, in Modification 2, while a musical note of pitch C4 is being sounded in one performance part, note number 60 continues to be stored in buffer 11A regardless of whether the sounding period of the musical note of pitch C4 has ended in the other performance part. Since the storage period of candidate note numbers is effectively extended, the period during which a large number of candidate pitches are stored in buffer 11A increases. This further reduces the number of candidate pitches that may be insufficient when selecting a musical note to be sounded in response to a key press.

[0178] Furthermore, the present disclosure is not limited to the above-described embodiments and may be modified in various ways without departing from the spirit and scope of the present disclosure. Furthermore, the functions performed in the above-described embodiments may be combined as appropriate as possible. The above-described embodiments include various steps, and various inventions may be derived by appropriately combining the disclosed multiple constituent elements. For example, if the desired effect can be achieved even if some constituent elements are deleted from all the constituent elements shown in the embodiments, the configuration from which these constituent elements are deleted may be derived as an invention. As a specific example, by combining the first-described embodiment with Variation 2, the original pitch, pitches one octave above and below, and pitches of perfect intervals for each of the multiple performance parts may all be set as candidate pitches in the song progression process.

[0179] In the above embodiment, a mode in which a song progresses automatically regardless of whether or not the user performs a performance operation has been described, but the modes applicable to the information processing device, method, and program according to the present embodiment are not limited to this. In another embodiment, a mode in which a song progresses only when the user performs a performance operation (in other words, a mode in which a song does not progress unless the user performs a performance operation) may be applied to the information processing device, method, and program according to the present embodiment. [Explanation of symbols]

[0180] 1: Information processing device, 2: Electronic musical instrument, 10: Processor, 11: RAM, 11A: Buffer, 12A: Control program, 13: Flash memory, 13A: Song data

Claims

1. at least one processor; The at least one processor setting a pitch of a musical tone during a tone generation period on the music data as a first candidate pitch, and setting a second candidate pitch based on the first candidate pitch; detecting an operation pitch associated with a performance operator operated by a user; selecting a pitch to be generated from among a plurality of candidate pitches including the first candidate pitch and the second candidate pitch based on the detected operation pitch; Information processing device.

2. the at least one processor mutes the corresponding tone pitch when the operation of the performance operator is turned off, regardless of whether the musical tone of the first candidate pitch is in a tone generation period in the song data, and continues to generate the corresponding tone pitch when the operation of the performance operator is not turned off; The information processing device according to claim 1 .

3. the second candidate pitch is a pitch one octave higher than the first candidate pitch and a pitch one octave lower than the first candidate pitch; The information processing device according to claim 1 .

4. when the first candidate pitch and the second candidate pitch corresponding to a single pitch are all being sounded and an operation pitch corresponding to a performance operator operated by a user is further detected, a third candidate pitch is set; The information processing device according to claim 1 .

5. the third candidate pitch includes at least one of a pitch that is a perfect fifth above or a perfect fourth below the first candidate pitch, a pitch that is a perfect fifth above or a perfect fourth below the second candidate pitch, a pitch that is a perfect fourth above or a perfect fifth below the first candidate pitch, and a pitch that is a perfect fourth above or a perfect fifth below the second candidate pitch; The information processing device according to claim 4 .

6. the song data includes chord data, the plurality of candidate pitches include pitches of chord constituent notes of the chord in progress; The information processing device according to claim 1 .

7. The at least one processor determining a performance part from the song data in response to a user operation; setting the pitch of the musical tone during the tone generation period on the determined performance part data as the first candidate pitch; The information processing device according to claim 1 .

8. The at least one processor selecting, from the plurality of candidate pitches, a candidate pitch that is not the pitch of the musical tone being sounded and that is closest to the operation pitch, as the sounding pitch; The information processing device according to claim 1 .

9. The computer setting a pitch of a musical tone during a tone generation period on the music data as a first candidate pitch, and setting a second candidate pitch based on the first candidate pitch; detecting an operation pitch associated with a performance operator operated by a user; selecting a pitch to be generated from among a plurality of candidate pitches including the first candidate pitch and the second candidate pitch based on the detected operation pitch; method.

10. The computer setting a pitch of a musical tone during a tone generation period on the music data as a first candidate pitch, and setting a second candidate pitch based on the first candidate pitch; detecting an operation pitch associated with a performance operator operated by a user; selecting a pitch to be generated from among a plurality of candidate pitches including the first candidate pitch and the second candidate pitch based on the detected operation pitch; program.

Citation Information

Patent Citations

  • Performance apparatus, performance implementation method and program

    JP2008020875A