1. Field of the Invention
The present invention relates to a chord detection apparatus, a chord detection method, and a program for detecting from performance data a chord (harmonic tones) musically related to the performance data, which is input according to a performance operation.
2. Description of the Related Art
Conventionally, an electronic musical instrument for detecting, from performance data, a chord musically related to performance data is known. The detected chord is added to a melody, for example.
As such an electronic musical instrument, there is known an instrument that inputs and stores performance data representing a sequence of notes, divides the stored performance data into predetermined sections, and extracts a chord progression conforming to performance data of one of the divided sections of the performance data from a chord progression database stored with a large number of chord progressions (see, for example, Japanese Laid-open Patent Publication No. 2001-142462).
Since the above-described electronic musical instrument extracts a chord progression conforming to performance data input beforehand, a chord progression musically well related to a stream of notes in the performance data can be extracted by taking account of not only performance tones preceding a current performance tone, but also performance tones subsequent to the current performance tone. However, if an attempt is made to extract a chord progression musically well related to performance data which is being input during real time performance, a chord progression extraction in which performance tones subsequent to a current performance tone are taken into account cannot be made since a performance tone that will be next input is unknown. As a result, a chord progression musically well related to realtime performance data cannot be extracted in some cases.
To eliminate the above problem, there is a technique to examine whether a chord progression formed by continuously extracted chords is stored in a chord progression database, predict a chord that follows the chord progression (if any) stored in the database, and determine whether the predicted chord is consonant with the next input performance data. With this technique, if the predicted chord is not consonant with the next input performance data, a chord other than the predicted chord is extracted, resulting in a fear that the extracted chord is not musically related to the performance data. Conversely, if the predicted chord is consonant with the next input performance data, the predicted chord is extracted and thus a chord progression musically related to the performance data can be obtained. However, there is a tendency that the same chord progression frequently appears, causing the user to get tired of chord progressions.
The present invention provides a chord detection apparatus, a chord detection method, and a program, which are capable of detecting a wide variety of chords musically related to realtime performance.
According to a first aspect of the present invention, there is provided a chord detection apparatus, which comprises a performance data acquisition unit configured to acquire performance data, a tonality information acquisition unit configured to acquire tonality information in the performance data, an instruction unit configured to detect a chord detection timing and give an instruction for chord detection, a reference unit configured to refer to a reference chord, an extraction unit configured to extract, according to the tonality information acquired by the tonality information acquisition unit, chord candidates that can follow the reference chord having been referred to by the reference unit, and a selection unit configured to select a chord from the chord candidates extracted by the extraction unit according to the performance data acquired by the performance data acquisition unit when the instruction for chord detection is given by the instruction unit.
With this invention, chord candidates that can follow the reference chord having been referred to by the reference unit are extracted based on the tonality information acquired by the tonality information acquisition unit, and a chord is selected from the extracted chord candidates based on performance data acquired by the performance data acquisition unit when the instruction for chord detection is given by the instruction unit. Thus, a variety of chords musically related to realtime performance can be detected.
In this invention, the chord detection apparatus can further include a storage unit configured to store the chord selected by the selection unit so as to be capable of being referred to by the reference unit.
The extraction unit can determine a function of the reference chord based on the acquired tonality information, can determine functions that can follow the determined function of the reference chord, and can extract chords each having any of the determined functions, as the chord candidates.
In that case, a function of the reference chord is determined based on the acquired tonality information, functions that can follow the determined function of the reference chord are determined, and chords each having any of the determined function are extracted as the chord candidates. Thus, a variety of chords musically related to realtime performance can be detected.
The chord detection apparatus can further include a detection unit configured to detect a break in performance music, and the extraction unit can extract even a chord that can produce an interrupted cadence, as a chord candidate, at a time of chord candidate extraction after the break being detected by the detection unit.
In that case, even a chord that can produce an interrupted cadence, i.e., a chord normally prohibited from being included in chord progression, is extracted as a chord candidate when the chord candidate extraction is made after a break is detected by the detection unit. Thus, a fresh chord progression unexpected by the user or listeners is sometimes provided.
The extraction unit can determine a non-functional chord progression technique that can follow the reference chord, and can extract even a chord corresponding to the determined non-functional chord progression technique, as a chord candidate.
In that case, a non-functional chord progression technique that can follow the reference chord is determined, and even a chord corresponding to the determined non-functional chord progression technique is extracted as a chord candidate. Thus, a much variety of chords musically related to realtime performance can be detected.
According to a second aspect of this invention, there is provided a chord detection method corresponding to the chord detection apparatus described in the first aspect of this invention.
According to a third aspect of this invention, there is provided a program for executing the chord detection method described in the second aspect of this invention.
Further features of the present invention will become apparent from the following description of an exemplary embodiment with reference to the attached drawings.
The present invention will now be described in detail below with reference to the drawings showing a preferred embodiment thereof.
As shown in
The electronic musical instrument also includes an automatic accompaniment apparatus 9 for generating performance data (used to generate accompaniment tones) based on chord information supplied from the CPU 5, a display unit 10 that has, e.g., an LCD (liquid crystal display) and LEDs (light emitting diodes) for displaying various information, and a storage unit 11 that stores various application programs including the control program and various data such as various music data.
The electronic musical instrument further includes a communication interface (I/F) 12 connected to an external equipment 100 such as an external MIDI (musical instrument digital interface) equipment for transfer and reception of data to and from the external equipment 100, a tone generator circuit 13 for converting performance data input from the performance operating unit 1 into a musical tone signal and converting performance data generated by the automatic accompaniment apparatus 9 into a musical tone signal, an effect circuit 14 for adding various effects to the musical tone signal output from the tone generator circuit 13, and a sound system 15 that includes a DAC (digital-to-analog converter), amplifier, speaker, etc. for converting the musical tone signal output from the effect circuit 14 into sound.
The above-described elements 3 to 14 are connected to one another through a bus 16. The timer 8 is connected to the CPU 5 and to the automatic accompaniment apparatus 9, the external equipment 100 is connected to the communication I/F 12, the tone generator circuit 13 is connected to the effect circuit 14, and the effect circuit 14 is connected to the sound system 15.
The automatic accompaniment apparatus 9 is realized by the CPU 5 by executing sequencer software stored in the ROM 6 or the like. The automatic accompaniment apparatus 9 generates performance data based on chord information supplied from the CPU 5, and supplies the generated performance data to the tone generator circuit 13 to generate accompaniment tones. The automatic accompaniment apparatus 9 has a function of generating performance data by reproducing accompaniment style data selected by a user from various accompaniment style data stored beforehand in the ROM 6 or the like. To achieve this function, the automatic accompaniment apparatus 9 reproduces the accompaniment style data based on time information supplied from the timer 8. Since the construction and function of the automatic accompaniment apparatus 9 do not constitute the gist of this invention, a further description thereof is omitted.
The storage unit 11 is comprised of a storage medium (such as a flexible disk, hard disk, CD-ROM, DVD, optomagnetic disk, or semiconductor memory) and a drive unit for the storage medium. The storage medium can be configured so as to be detachable or undetachable from the drive unit, and the storage unit 11 can be configured to be detachable or undetachable from the electronic musical instrument. Since the control program can be stored in the storage unit 11, the CPU 5 can execute the control program by reading it into RAM 7 from the storage unit 11, if the control program is not stored in the ROM 6. The control program stored in the storage unit 11 can easily be version-upgraded.
In the illustrated example, the external equipment 100 is connected to the communication I/F 12, but this is not limitative. For example, a server computer can be connected to the communication I/F 12 through a communication network such as a LAN (local area network), Internet, or telephone line. In that case, the communication I/F 12 can be used to download programs and various parameters not stored in the storage unit 11 from the server computer. To this end, the electronic musical instrument transmits a request for the downloading of the program and parameters to the server computer through the communication I/F 12 and the communication network, the server computer distributes the requested program and parameters to the electronic musical instrument through the communication network, and the electronic musical instrument receives the program and parameters through the communication I/F 12 and stores them into the storage unit 11.
As understood from the foregoing description, the electronic musical instrument of this embodiment is configured as an electronic keyboard instrument, but this is not limitative. The electronic musical instrument can be configured by a general-purpose personal computer to which a keyboard is externally connected.
In the following, a description of the outline of a control process performed by the chord detection apparatus of the electronic musical instrument will be given with reference to
The electronic musical instrument of this embodiment is configured to supply performance data, which is realtime input during the user's performance on the keyboard, to the tone generator circuit 13 for sound production, and detect a chord musically related to the realtime input performance data, which is then supplied to the automatic accompaniment apparatus 9 for the production of accompaniment tones. The chord detection period is a time period during which performance data to be referred to for chord detection is input. In other words, only the performance data input within the chord detection period will be referred to for the detection of a reference chord (that serves as a chord to be used for the production of accompaniment tones).
In the chord detection, chord candidates represented by degree names are extracted by executing first, second, and third extraction processes (101), (102), and (103). The first extraction process (101) is for extracting one or more degree name candidates each having a function that can follow the reference chord (hereinafter, sometimes referred to as the function that can come next), the second extraction process (102) is for extracting one or more degree name candidates each corresponding to an interrupted cadence, and the third extraction process (103) is for extracting one or more degree name candidates each corresponding to a non-functional chord progression technique.
In the first extraction process (101), one or more functions that can follow the last detected chord function are all extracted, while referring to either a correspondence table between chord functions and degree names for major tonality, which is shown in
In the second extraction process (102), one or more degree name candidates corresponding to an interrupted cadence are all extracted and registered into the degree name list, while referring to either the correspondence table shown in
In the third extraction process (103), one or more degree name candidates corresponding to a non-functional chord progression are all extracted and registered into the degree name list, while referring to either a listing of degree names appearing in a non-functional chord progression technique for major tonality, which is shown in
Next, the degree names registered in the degree name list are developed into chord names based on the current tonality. Then, one of chords represented by the developed chord names is selected based on input performance data, and the selected chord is output for sound production to the automatic accompaniment apparatus 9. The selected chord is stored for use in the first to third extraction processes (101) to (103).
In the example shown in
In the chord detection apparatus of this embodiment, chord candidates musically related to performance data, which is realtime input, are extracted as chords that can come next, and a chord consonant with the performance data is detected from the extracted chord candidates, as described above. It is therefore possible to detect a chord consonant with and musically related to the performance data that is realtime input.
Furthermore, since chord candidates each represented by a degree name are extracted and the extracted chord candidates are developed into chord names based on the current tonality, enharmonic chords differing in notation but alike in sound (e.g., “F♯Maj7” and “G♭Maj7”) can be generated or developed so as to be capable of being distinguished from each other.
Since chords forming a non-functional chord progression (such as cliche, passing diminish, or parallel motion) are extracted as chord candidates, a wide variety of chord progressions can be obtained. Furthermore, different chord progressions can be obtained according to a slight difference in touch in user's performance, whereby interesting chord progressions can be provided.
Chords that can come next are normally extracted as chord candidates, and a normally prohibited chord progression (e.g., interrupted cadence) is extracted only when a break in the music is determined. Thus, a fresh chord progression unexpected by the user or listeners is provided at a break in the music. The interrupted cadence is a normally unused chord progression, in which dominant (D) proceeds to subdominant minor (SM) in major tonality, whereas dominant (D) proceeds to subdominant (S) in minor tonality. The above extraction of interrupted cadence coincides with the principle of music composition that an interrupted cadence be used at a break in the music.
In the following, the details of the control process executed by the chord detection apparatus of the electronic musical instrument will be described.
The electronic musical instrument of this embodiment has first and second performance modes serving as performance modes in a case where realtime performance is performed by the user. In the first performance mode, the musical instrument produces sounds according to performance data input by the user by using the performance operating unit 1, with the operation of the automatic accompaniment apparatus 9 disabled. In the second performance mode, the musical instrument produces sounds according to performance data input by the user by using the performance operating unit 1 and also produces sounds (accompaniment tones) according to performance data generated by the automatic accompaniment apparatus 9.
When the electronic musical instrument is power on, the first performance mode is selected. Subsequently, if the user gives an instruction for mode shift, a shift is made from the first performance mode to the second performance mode.
In this embodiment, features of this invention are all contained in the performance process with automatic accompaniment, and therefore, a description of the performance process without automatic accompaniment will be omitted. It should be noted that all the features of this invention can be contained in the performance process without automatic accompaniment. In that case, no accompaniment tones are produced. In the following, the term “performance process” refers to the performance process with automatic accompaniment.
The performance process mainly includes (1) a startup process, (2) an automatic accompaniment start process, (3) an automatic accompaniment stop process, (4) a note event process, (5) a process at the time of a break of the music being detected, and (6) a process at the time of arrival of the chord detection period.
The startup process (1) includes (11) a setting process before performance start, (12) a chord detection period and rule setting process, (13) an initialization process, and (14) a chord detection period setting process.
Next, the CPU 5 executes the chord detection period and rule setting process (12) in which a chord detection period (chord detection timing) and various rules are set (step S2).
To set the chord detection period (chord detection timing), the time width of the chord detection period is set to a value of 0 or set to a value other than 0.
In the case of the time width being set to a value other than 0, reference time points corresponding to the chord-detection reference positions, a time width of a front-half of the chord detection period preceding the reference time point, and a time width of a rear-half of the chord detection period subsequent to the reference time point are set. For example, as shown in
In the illustrated example, the time width is set in units of msec, but this is not limitative. For example, the time width can be set in units of note length. The chord-detection reference position can be set not only at every other beat, but also at every beat. The setting at every other beat can be changed to the setting at every beat when there occurs a change in tempo, for example. The chord-detection reference position can also be set at a predetermined position (e.g., head position) in each bar other than beat positions, or can also be set to a position determined according to tempo or accompaniment style.
On the other hand, in the case of the time width being set to a value of 0, chord detection time points (chord detection timings) are set. For example, the chord detection time points can be set to, e.g., time points corresponding to the above-described various code detection reference positions (i.e., at predetermined beats or predetermined positions in each bar) or time points at each of which a predetermined operating element of the setting operating unit 2 is operated by the user. In this embodiment, it is assumed that the chord detection time period T1 to T3 shown in
As the various rules, there can be mentioned, for example, a tonality information detection rule (R1), a chord selection rule (R2), and a music break detection rule (R3).
As the tonality information detection rule (R1), there can be mentioned, for example, a rule stipulating that tonality information input by the user in reply to an inquiry made before the performance should be detected (acquired), and a rule stipulating that tonality information obtained by analyzing performance data input according to a user's performance operation should be detected as needed. It is assumed in this embodiment that tonality information represented by a key note name and major/minor is input or detected. A method for detecting tonality information by analyzing performance data is conventionally known. In the case of tonality information being detected as needed, it is preferable to store tonality information detected each time a chord is selected, so as to be associated with the selected chord.
As the chord selection rule (R2), there can be mentioned, for example, a rule (R2a) stipulating that a chord having the highest priority should be selected from among chord candidates according to predetermined priority orders of chords (for example, tonic chords of diatonic scale chords have higher priorities), and a rule (R2b) stipulating that a chord should be selected that has the highest degree of coincidence between tones of performance data to be referred to and tones of chord candidates (e.g., coincidence is found between all the tones, or between three or more tones, or between two or more tones). It is possible to add to the rule (R2b) a condition that performance data to be referred to must include root tones of the chord candidates.
As the music break detection rule (R3), there can be mentioned, for example, a rule (R3a) stipulating that a break in the music should be detected when an instruction to reproduce data that belongs to a “fill-in” section of selected accompaniment style data is given, a rule (R3b) stipulating that a break in the music should be detected when user's performance is restarted after the performance is discontinued over two or more bars, and a rule (R3c) stipulating that a break in the music should be detected when another accompaniment style data is selected.
In the chord detection period and rule setting process (12), it is possible to set whether or not the interrupted cadence in major tonality should be permitted even at the normal time. The term “permitted even at the normal time” refers to that a chord progression from dominant (D) to subdominant minor (SM) (i.e., interrupted cadence in major tonality) is permitted to be extracted not only in the second extraction process (102) to extract degree name candidates corresponding to the interrupted cadence, but also in the first extraction process (101) to extract degree name candidates each having a function that can come next.
In the case of the “permitted even at the normal time” setting being used, subdominant minor (SM) is added to the “function that can come next” field corresponding to function “D: dominant” in the correspondence table (shown in
In this embodiment, the correspondence table shown in
In the chord detection period and rule setting process (12), as with the setting process before performance start (11), the CPU 5 can make an inquiry to the user about contents to be set and can set the contents input or selected by the user in reply to the inquiry. Alternatively, the CPU 5 can set the contents by using default settings or last settings as they are or after being modified.
Referring to
The region (13a) is a region stored with a note event list NList in which note event information (tone pitch and input timing) corresponding to note-on events input within the chord detection period are registered. The region (13b) is a break counter constituted by a software counter incremented by 1 each time a break in the music is detected. The region (13c) is a region for storing a start point sTime of the chord detection period. The region (13d) is a region for storing an end point eTime of the chord detection period. The region (13e) is a region for storing tonality information Key detected according to a tonality detection rule. The region (13f) is a region for storing a degree name list DNList in which degree names of chord candidates extracted in a chord candidate extraction process (described later) are registered. The region (13g) is a region for storing a chord list CList in which chord names are registered, which are generated by developing, according to the tonality information Key, the degree names registered in the degree name list DNList. The region (13h) is a region for storing one chord name (i.e., the selected chord) selected from the chord list CList according to the note event information registered in the note event list NList. The region (13i) is a region for storing an output result list RList in which the selected chord, tonality information Key, and degree name corresponding to the selected chord are stored. The region (13j) is a region for storing a last degree name LDN corresponding to a last selected chord. The region (13k) is a region for storing a last function LF corresponding to the last selected chord.
Next, the CPU 5 executes the chord detection period setting process (14) in step S4. Specifically, the CPU 5 calculates the start point and the end point of a first chord detection period according to the chord detection period setting rule, and stores (sets) the calculated start and end points into the regions (13c), (13d) of the RAM 7, respectively.
In this embodiment, the start point T1 of the chord detection period is 250 msec ahead of the reference time point T2 corresponding to the top beat (chord-detection reference position). Thus, the start point of the chord detection period precedes the start of the music, but does not cause a problem since the control process is started upon start of the music.
Next, the CPU 5 determines whether an instruction to return to the performance process not using an automatic accompaniment (first performance mode) is given (step S5), and if the answer to step S5 is YES, completes the performance process. On the other hand, if the answer to step S5 is NO, the CPU 5 determines whether an automatic accompaniment start instruction is given (step S6), and if the answer to step S6 is NO, returns to step S5.
On the other hand, when determining in step S6 that an automatic accompaniment start instruction is given, the CPU 5 executes the automatic accompaniment start process (2). Specifically, the CPU 5 starts the timer 8 to start a time measurement (step S7). Time measurement information from the timer 8 is supplied to the automatic accompaniment apparatus 9. In a case that accompaniment style data has been set, the automatic accompaniment apparatus 9 reproduces, independently of the performance process, the accompaniment style data according to the time measurement information supplied from the timer 8.
Next, the CPU 5 determines whether a user's automatic accompaniment stop instruction is given (step S8). If the answer to step S8 is YES, the CPU 5 executes the automatic accompaniment stop process (3) to stop the timer 8 (step S9). As a result, the automatic accompaniment apparatus 9 stops reproducing the accompaniment style data. Next, whether the settings of accompaniment style, etc. are changed is determined (step S10). The process returns to step S1, if the answer to step S10 is YES, and returns to step S5, if the answer to step S10 is NO.
When determining in step S8 that the automatic accompaniment stop instruction is not given, the CPU 5 determines whether it receives a note event (step S11). If the answer to step S11 is YES, the CPU 5 executes the note event process (4) in step S12.
As shown in
In the note event process, the CPU 5 determines whether the current time point is within the chord detection period, while referring to the timer 8 (step S31). If the current time point is outside the chord detection process, the CPU 5 determines whether it receives a note-on event (step S37). If the answer to step S37 is YES, the CPU 5 executes the process (42a), i.e., a sounding process to output the received note-on event to the tone generator circuit 13 (step S38). On the other hand, if the answer to step S37 is NO (i.e., if a note-off event is received), the CPU 5 executes the process (42b), i.e., a sound deadening process to output the received note-off event to the tone generator circuit 13 (step S39).
When determining in step S31 that the current time point is within the chord detection period, the CPU 5 determines whether it receives a note-on event (step S32). If the answer to step S32 is YES, the CPU 5 executes the process (41a), i.e., a sounding process to output the received note-on event to the tone generator circuit 13 and a process to add note event information (tone pitch and input timing) corresponding to the note-on event to the note event list NList (steps S33 and S34). On the other hand, if the answer to step S32 is NO, the CPU 5 executes the process (41b), i.e., a sound deadening process to output the received note-off event to the tone generator circuit 13 and a process to delete note event information corresponding to the note-off event from the note event list NList (steps S35 and S36).
Referring to
In step S15, the CPU 5 determines whether or not the end point eTime of the chord detection period is reached, while referring to the timer 8. If the answer to step S15 is YES, the CPU 5 starts the process at the time of arrival of the chord detection period (6).
In the process (6), the CPU 5 acquires, in step S16, tonality information Key according to the tonality detection rule set in the chord detection period and rule setting process (12), stores the acquired tonality information Key into the region (13e) of the RAM 7 in step S17, and executes a chord candidate extraction process in step S18.
The chord candidate extraction process mainly includes a startup process (100a), a preparatory process (100b) for the first extraction process (101), and the first to third extraction processes (101) to (103).
In the chord candidate extraction process, the startup process (100a) is first executed, in which the CPU 5 determines whether the note event list NList is empty (step S41). If the answer to step S41 is YES (i.e., if no note event information is recorded in the note event list NList), the CPU 5 completes the chord candidate extraction process, and returns to the performance process. On the other hand, if the answer to step S41 is NO, the CPU 5 determines whether the output result list RList is empty (step S42). If the answer to step S42 is YES, the CPU 5 detects a degree name of a first chord according to the tonality information Key and the note event information recorded in the note event list NList, registers the detected degree name into the degree name list DNList (step S43), and completes the chord candidate extraction process.
The degree name of the first chord can be detected by an ordinary method. Since a last chord serving as a reference chord to be referred to has not been stored as yet when the degree name of the first chord is detected, a tonic chord in major tonality or minor tonality having as a root a key note of that tonality, for example, can be used as the reference chord.
When determining in step S42 that the output result list RList is not empty, the CPU 5 executes the preparatory process (100b) in which a tonic prohibition flag, subdominant prohibition flag, and dominant prohibition flag are set or reset. More specifically, the CPU 5 determines whether four or more pieces of chord information are registered in the output result list RList, and if so, further determines whether all the four pieces of chord information at the end of the output result list RList (i.e., all the four pieces of chord information last registered into the output result list RList) each correspond to any of tonics (T) of diatonic scale chords (step S44). The CPU 5 sets the tonic prohibition flag to a value of 1, if the answer to step S44 is YES (step S45), and resets the tonic prohibition flag to a value of 0, if the answer to step S44 is NO (step S46).
Next, the CPU 5 determines whether two or more pieces of chord information are registered in the output result list RList, and if so, further determines whether all the two pieces of chord information at the end of the output result list RList each correspond to any of subdominants (S) of diatonic scale chords (step S47). The CPU 5 sets the subdominant prohibition flag to a value of 1, if the answer to step S47 is YES (step S48), and resets the subdominant prohibition flag to a value of 0, if the answer to step S47 is NO (step S49).
Next, the CPU 5 determines whether two or more pieces of chord information are registered in the output result list RList, and if so, further determines whether all the two pieces of chord information at the end of the output result list RList each correspond to any of dominants (D) of diatonic scale chords (step S50). The CPU 5 sets the dominant prohibition flag to a value of 1, if the answer to step S50 is YES (step S51), and resets the dominant prohibition flag to a value of 0, if the answer to step S50 is NO (step S52).
A case where one of the three types of prohibition flags is reset to a value of 0 corresponds to steps S20 to S23 in
Next, the CPU 5 acquires a degree name and function of a last chord, while referring to the chord information at the end of the output result list RList (step S53), and stores the acquired degree name as the last degree name LDN into the region (13j) of the RAM 7 and stores the acquired function as the last function LF into the region (13k) of the RAM 7 (step S54).
Next, the CPU 5 executes the first extraction process (101) to extract degree name candidates each having a function that can come next (step S55).
In the first extraction process (101), the CPU 5 extracts all functions that can come next based on the last function LF and the tonality information Key (step S61), while referring to the correspondence table shown in
In a case, for example, that the last function LF is tonic (T) and the tonality information Key indicates a major tonality, the CPU 5 selects tonic (T), subdominant (S), dominant (D), and subdominant minor (SM) as the functions that can come next. In a case where the last function LF is dominant (D) and the tonality information Key indicates a major tonality, the CPU 5 extracts tonic (T), dominant (D), and subdominant minor (SM) as the functions that can come next, if the “permitted even at the normal time” setting is used to permit the progress from dominant (D) to subdominant minor (SM) in major tonality (i.e., interrupted cadence in major tonality), and if the “permitted even at the normal time” setting is not used, extracts tonic (T) and dominant (D) as the functions that can come next.
Next, the CPU 5 determines whether tonic is included in the extracted functions (step S62). If the answer to step S62 is NO, the process proceeds to step S66. If the answer to step S62 is YES, the CPU 5 determines whether the tonic prohibition flag is set to a value of 1 (step S63).
If the answer to step S63 is YES, the process proceeds to step S65. If the answer to step S63 is NO (i.e., if the flag is reset to a value of 0), the CPU 5 extracts all degree names conforming to the tonality information Key from among degree names corresponding to tonics of diatonic scale chords, and registers the extracted degree names into the degree name list DNList (step S64). Then, the CPU 5 extracts all degree names conforming to the tonality information Key from among degree names corresponding to tonics of chords other than diatonic scale chords, and registers the extracted degree names into the degree name list DNList (step S65).
In step S66, the CPU 5 determines whether subdominant is included in the extracted functions. If the answer to step S66 is NO, the process proceeds to step S70. If the answer to step S66 is YES, the CPU 5 determines whether the subdominant prohibition flag is set to a value of 1 (step S67).
If the answer to step S67 is YES, the process proceeds to step S69. If the answer to step S67 is NO (i.e., if the flag is reset to a value of 0), the CPU 5 extracts all degree names conforming to the tonality information Key from among degree names corresponding to subdominants of diatonic scale chords, and registers the extracted degree names into the degree name list DNList (step S68). Then, the CPU 5 extracts all degree names conforming to the tonality information Key from among degree names corresponding to subdominants of chords other than diatonic scale chords, and registers the extracted degree names into the degree name list DNList (step S69).
In step S70, the CPU 5 determines whether dominant is included in the extracted functions. If the answer to step S70 is NO, the process proceeds to step S74. If the answer to step S74 is YES, the CPU 5 determines whether the dominant prohibition flag is set to a value of 1 (step S71).
If the answer to step S71 is YES, the process proceeds to step S73. If the answer to step S71 is NO (i.e., if the flag is reset to a value of 0), the CPU 5 extracts all degree names conforming to the tonality information Key from among degree names corresponding to dominants of diatonic scale chords, and registers the extracted degree names into the degree name list DNList (step S72). Then, the CPU 5 extracts all degree names conforming to the tonality information Key from among degree names corresponding to dominants of chords other than diatonic scale chords, and registers the extracted degree names into the degree name list DNList (step S73).
In step S74, the CPU 5 determines whether subdominant minor is included in the extracted functions. If the answer to step S74 is NO, the process returns to the chord candidate extraction process. If the answer to step S74 is YES, the CPU 5 extracts all degree names conforming to the tonality information Key from among degree names corresponding to subdominant minor, and registers the extracted degree names into the degree name list DNList (step S75), whereupon the process returns to the chord candidate extraction process.
Referring to
In the second extraction process (102), the CPU 5 determines whether a value of the break counter is equal to 1 (step S81), and if the answer to step S81 is YES, increments the value of the break counter by 1 (step S82). Then, the CPU 5 completes the extraction process (102). On the other hand, if the answer to step S81 is NO, the CPU 5 determines whether the value of the break counter is equal to 2 (step S83), and if the value of the break counter is equal to 0 or equal to 3 or larger, completes the second extraction process (102), whereupon the process returns to the chord candidate extraction process.
When determining in step S83 that the value of the break counter is equal to 2, the CPU 5 determines whether the last function LF is dominant (step S84). If the answer to step S84 is NO, the process proceeds to step S89. If the answer to step S84 is YES, the CPU 5 determines whether the tonality information Key indicates a major tonality (step S85).
When determining in step S85 that the tonality information Key indicates a minor tonality (i.e., if the answer to step S85 is NO), the CPU 5 extracts all degree names conforming to the tonality information Key from among degree names corresponding to subdominant, and registers the extracted degree names into the degree name list DNList (step S88). At that time, while referring to the correspondence table (shown in
If the answer to step S85 is Yes, i.e., if the tonality information Key indicates a major tonality, the CPU 5 determines whether a chord progression from dominant to subdominant minor in major tonality (i.e., an interrupted cadence in major tonality) is permitted even at the normal time (step S86).
If the answer to step S86 is NO (i.e., if an interrupted cadence in major tonality is not permitted at the normal time), the CPU 5 extracts all degree names conforming to the tonality information Key from among degree names corresponding to subdominant minor, and registers the extracted degree names into the degree name list DNList (step S87). At that time, while referring to the correspondence table (shown in
On the other hand, if the answer to step S86 is YES (i.e., if the chord progression from dominant to subdominant minor (interrupted cadence) in major tonality is permitted even at the normal time, the CPU 5 skips step S87. This is because degree names each having a subdominant minor chord function are already registered in the degree name list DNList in step S75 in
In step S89, the CPU 5 clears the break counter. Then, the process returns to the chord candidate extraction process.
As described above, the second extraction process (102) is executed only when the value of the break counter is equal to 2. This is because the last function LF acquired when the end point eTime of the first chord detection period is reached (i.e., when the value of the break counter is equal to 1) is a function used before the break in the music is detected, which makes it difficult to properly extract degree name candidates corresponding to the interrupted cadence, and because the last function LF acquired when the end point eTime of the next chord detection period is reached (i.e., when the value of the break counter is equal to 2) is a function used after the break in the music is detected, so that degree name candidates corresponding to the interrupted cadence can be extracted properly.
Referring to
In the third extraction process (103), the CPU 5 determines whether there is a non-functional chord progression that can follow the last degree name LDN (step S91). If the answer to step S91 is YES, the CPU 5 extracts all degree names that will produce a non-functional chord progression following the last degree name LDN and conforming to the tonality information Key, and registers the extracted degree names into the degree name list DNList (step S92). Then, the extraction process (103) is completed and returns to the performance process.
On the other hand, if the answer to step S91 is NO, the CPU 5 determines whether the last degree name LDN indicates a chord appearing in a non-functional chord progression (step S93). If the answer to step S93 is NO, the extraction process (103) is completed and returns to the performance process.
If the answer to step S93 is YES, the CPU 5 initializes the degree name list NDNList (step S94), and determines whether the last degree name represents a cliche chord (step S95). If the answer to step S95 is YES, the CPU 5 acquires a degree name of a second last chord, while referring to second last chord information in the output result list RList (step S96), and stores the acquired second last degree name into a region BDN in the RAM 7 (step S97). Hereinafter, the second last degree name stored in the region BDN will be referred to as the second last degree name BDN.
Next, the CPU 5 extracts all degree names that can follow (as cliche) a progression from the second last degree name BDN to the last degree name LDN, and registers the extracted degree names into a next degree name list NDNList (step S98), whereupon the process proceeds to step S100.
If the answer to step S95 is NO, the CPU 5 extracts all degree names that can follow (as a non-functional chord progression conforming to the tonality information Key) the last degree name LDN, and registers the extracted degree names into the next degree name list NDNList (step S99), whereupon the process proceeds to step S100.
In step S100, the CPU 5 registers degree names, which have been registered in the next degree name list NDNList but have not been registered in the degree name list DNList, into the degree name list DNList. Then, the process returns to the performance process.
In steps S92, S93, S95 and S99, the CPU 5 refers to the listing of degree names (shown in
More specifically, in step S92, degree names are extracted according to a result of the determination to determine whether the last degree name LDN is included in a group of degree names indicated in the “Last” field of the listing corresponding to the tonality information Key. In a case, for example, that the last degree name LDN is IMaj7 and the tonality information Key indicates a major tonality, IMaj7 is included in the degree name group indicated in the “Last” field corresponding to the “Passing diminish” technique field of the listing of
In step S93, whether the last degree name LDN indicates a chord appearing in a non-functional chord progression is determined according to a result of the determination to determine whether the last degree name LDN does not correspond to any of degree names, which are indicated in the “Current” filed of the listing corresponding to the tonality information Key.
In step S95, whether or not the last degree name is a cliche chord is determined according to a result of the determination to determine whether the last degree name LDN is the degree name “Iaug” indicated in the “Current” field that corresponds to the “Cliche” technique field of the listing corresponding to the major tonality.
In steps S96 to S98, it is determined whether the second last degree name BDN is included in which of the degree name groups indicated in the “Last” fields corresponding to the “Cliche” technique field, and a degree name, which is indicated in the “Next” field corresponding to one of the “Last” fields that includes the second last degree name BDN, is registered into the next degree name list NDNList.
However, in a case where the second last degree name BDN is “I” or “Isus4”, the second last degree name BDN is included in both the “Last” fields corresponding to the “Cliche” technique field, making it impossible to determine the one “Last” field. In that case, a degree name indicated in both the “Last” fields is extracted and registered into the next degree name list NDNList.
In step S99, degree names each of which can follow the last degree name LDN are determined according to a result of the determination to determine whether the last degree name LDN corresponds to any of degree names, which are indicated in the “Current” field of the listing corresponding to the tonality information Key.
Referring to
Next, the CPU 5 selects a chord according to the note event list NList and the chord list CList (step S20). The chord selection is performed according to the chord selection rule (R2a) or (R2b) set in the chord detection period and rule setting process. The selected chord is stored into the region (13h) of the RAM 7 (step S21), and is output to the automatic accompaniment apparatus 9 (step S22).
Next, the CPU 5 adds the selected chord, tonality information Key, and degree name corresponding to the selected chord to the end of the output result list RList (step S23), calculates start and end points of the next chord detection period according to the setting rule, and updates the start point sTime and end point eTime stored in the regions (13c), (13d) of the RAM 7 to the calculated start and end points (step S24). The note event list NList, degree name list DNList, and chord list CList are initialized or cleared (step S25), whereupon the process returns to step S8.
In the above-described embodiment, a chord musically related to performance data input to the electronic musical instrument is detected, and automatic accompaniment is performed based on the detected chord, but this is not limitative. Based on the detected chord, harmony tones for the performance data can be generated.
In the above-described embodiment, after the start of the automatic accompaniment, the output result list RList is initialized only when the automatic accompaniment is stopped and the settings are changed (step S3 in
Detected chords can be stored in the form of chord names or in the form of degree names associated with tonality information or in both the forms. Detected chords stored in the form of chord names can each be converted into a degree name each time any of the chords is referred to.
In the above-described embodiment, performance data per se (which is input to the electronic musical instrument) is referred to at the time of chord detection, but this is not limitative. The accuracy of the chord detection can be improved by using, in the chord detection, performance data from which note data corresponding to grace notes and corresponding to tones supposed to be produced by unintended touches have been removed.
It is preferable, although not inevitably necessary, to configure that arbitrary chord types can additionally be registered by the user into the correspondence tables shown in
It is to be understood that the present invention may also be accomplished by supplying a system or an apparatus with a storage medium in which a program code of software, which realizes the functions of the above described embodiment is stored and by causing a computer (or CPU or MPU) of the system or apparatus to read out and execute the program code stored in the storage medium.
In that case, the program code itself read from the storage medium realizes the functions of the above described embodiment, and therefore the program code and the storage medium in which the program code is stored constitute the present invention.
Examples of the storage medium for supplying the program code include a flexible disk, a hard disk, a magnetic-optical disk, a CD-ROM, a CD-R, a CD-RW, a DVD-ROM, a DVD-RAM, a DVD-RW, a DVD+RW, a magnetic tape, a nonvolatile memory card, and a ROM. The program code may be downloaded via a network.
Further, it is to be understood that the functions of the above described embodiment may be accomplished not only by executing the program code read out by a computer, but also by causing an OS or the like which operates on the computer to perform a part or all of the actual operations based on instructions of the program code.
Further, it is to be understood that the functions of the above described embodiment may be accomplished by writing a program code read out from the storage medium into a memory provided on an expansion board inserted into a computer or a memory provided in an expansion unit connected to the computer and then causing a CPU or the like provided in the expansion board or the expansion unit to perform a part or all of the actual operations based on instructions of the program code.
Number | Date | Country | Kind |
---|---|---|---|
2010-206563 | Sep 2010 | JP | national |