text: the present invention relates to a process and apparatus for use in musical instruments . in particular , the invention identifies a chord played on a manual keyboard of a musical instrument , such as the accompaniment manual of an electronic organ , and identifies the root of the chord and the type of chord being played . the pedal circuitry ( which may be responsive to either the pedal keys or manual stops controlling pedal tone sequences ) of the musical instrument is then caused to play automatically either this root or a sequence of notes which is compatible with the identified root without actual playing of the pedals . the basic operation of a microprocessor controlled organ system in accordance with the present invention is as described below . the microprocessor includes a random access memory , a portion of which is used to store information regarding the identity of notes to be sounded by the organ . the microprocessor stores a &# 34 ; 1 &# 34 ; in its memory at the location allocated to a particular note if the key on the keyboard corresponding to that note is actuated , and a &# 34 ; 0 &# 34 ; in the memory location corresponding to each key on the keyboard which is not actuated . in addition , the microprocessor stores in defined locations a &# 34 ; 1 &# 34 ; or a &# 34 ; 0 &# 34 ; representing the on / off state of various stop and control tabs . there are as many as 61 accompaniment keys , 61 solo keys , 32 pedal keys and typically 50 to 100 stop and control tabs , or switches , available on most electronic organs . the precise number of such keys and tabs is immaterial to the present invention . the status of the various key switches of the keyboard ( as well as the status of stop control switches , pedal switches of the pedal keyboard and function tab switches ) is ascertained by addressing the location of these switches , and loading this information into designated portions of the memory . this operation is performed under the control of the microprocessor , and at intervals selected so as to eliminate any audible delay in the response of the instrument to a change in the status of a key or switch . programmable signal generators are then assigned to produce tones corresponding to notes to be sounded ( i . e ., the notes played plus the notes to be filled - in ) and these tones are transmitted to an appropriate output system . in a typical microprocessor controlled organ system , as shown in fig1 microprocessor 800 includes a strobe 810 , an output port 820 , a bi - directional input / output port (&# 34 ; i / o port &# 34 ;) 830 , and a random access memory 840 . for clarity , other conventional features of the microprocessor 800 are not shown . strobe 810 of microprocessor 800 is connected to strobe expander 850 by a line 855 . strobe expander 850 is connected in turn to latch array 860 via 12 lines 865 . output bus 870 connects the output port 820 of microprocessor 800 to the rest of the organ system via the eight lines which comprise output bus 870 as follows : four lines of output bus 870 are connected to strobe expander 850 ; three lines of output bus 870 are connected to latch array 860 ; and six lines of output bus 870 are connected to decoder 880 . five of the six lines connected to decoder 880 are also connected to strobe expander 850 or latch array 860 . however , no ambiguity arises between the strobe expander 850 and latch array 860 are only addressed during operations affecting the output system ( i . e ., gate array 890 , sustain array 900 , data selector array 910 and divider array 920 ) whereas the decoder 880 is only addressed when the status of the switches in switch matrix 930 is being read into the memory 840 of microprocessor 800 . as depicted in fig1 the switch matrix 930 is a 32 × 8 matrix , i . e ., 256 possible switch positions . decoder 880 is connected to switch matrix 930 by decoder bus 925 which comprises 32 lines which are addressed sequentially by decoder 880 . each of the 32 lines 925 addresses eight switches of the switch matrix and the status of the 32 sets of eight switches per set is thereby read into microprocessor 800 via the eight lines of i / o bus 875 , as a series of 32 8 - bit words . in this manner , the microprocessor 800 scans the condition of each of the switches in the switch matrix 930 . the switch matrix 930 includes a switch for each key of the keyboard ( s ) ( not shown ) as well as each of the stops ( i . e ., voice selection controls -- not shown ) and function tabs ( e . g ., automatic fill - in , automatic chording , and sustain -- not shown ) and each of the pedals on the pedal keyboard . this information is read into the random access memory 840 of the microprocessor 800 for further processing in accordance with the instructions called for by the switches . the microprocessor then uses the information stored in memory for the chord identification (&# 34 ; cid &# 34 ;). as will be appreciated , repetitive scanning of the keys through decoder 880 permits a determination of any changes to the keys being played by comparing the &# 34 ; current &# 34 ; state of the respective keys to that stored in temporary memory . once this determination is made , note assignments and generator allocations may be made based upon the new state of the keys and switches and signals may be generated for the synthesis of audible sounds by audio system 950 . it will be noted that the foregoing assignment and allocation function is fully and completely described in u . s . patent application ser . no . 163 , 409 , filed on june 26 , 1980 , entitled &# 34 ; electronic organ having an improved tone generator system ,&# 34 ; and assigned to the assignee of the present invention ; that application ( hereinafter referred to as the &# 34 ; tone generator system application &# 34 ;) is incorporated herein by reference for all purposes . after assignments and allocations have been made , solo (&# 34 ; solo &# 34 ;) and accompaniment (&# 34 ; acc &# 34 ;) keyswitch information is used by the microprocessor 800 to compute solo fill , or harmony , information . the solo fill is fully and completely described in u . s . patent application ser . no . 158 , 585 , filed on june 6 , 1980 , entitled &# 34 ; harmony generator for electronic organ &# 34 ;, and assigned to the assignee of the present invention ; that application ( hereinafter referred to as the &# 34 ; harmony generator application &# 34 ;) is incorporated herein by reference for all purposes . after the foregoing steps have been performed , the cid system 190 ( see fig2 ) of the present invention may be initiated to determine the root of the chord being played on the accompaniment manual keyboard and the chord type , i . e ., major , minor or flatted fifth , and to cause automatic playing of either the identified root or a sequence of notes musically compatible with this root . referring to fig2 the sequence of events occurring after solo , acc and pedal scanning has occurred is depicted . it will be appreciated that the microprocessor 800 of the present invention includes an array of memory bits which are set / reset during the playing of the musical instrument . for present purposes these memory bits include those relating to the accompaniment keys of the manual keyboard , the solo keys of the manual keyboard , the pedals of the pedal board and various tabs which control such functions as added harmony , etc . thus , when the musical instrument is being played , the memory bits of the microprocessor 800 are set / reset whenever the musician changes notes , tabs , etc . by comparing the state of the switches to the state of the memory bits each time that the switch matrix 930 is scanned , it is possible to determine which of the switches have been actuated / released since the last scanning sequence . and because such repetitive scanning occurs very rapidly , i . e ., on the order of milliseconds , it may be said that the state of any of the switches of the switch matrix 930 is instantaneously determined and , accordingly , any change in the state of any of the switches is also known . corresponding flags are thus set / reset to reflect these changes and to identify the status of the keyboards . in keeping with the present invention , the change of state of the switches of switch matrix 930 is used to initiate the cid process . thus , these switches are continuously tested / retested . table i generically identifies those memory bits which are set / reset based upon the results of the change of state of the switches of switch matrix 930 . table i______________________________________keyboard status flags brief description______________________________________δ a change in accompaniment keysδ s change in solo keysδ p change in pedal keyssa added solo keyswitchaa added accompaniment keyswitchakp accompaniment key being playedskp solo key being playedpkp pedal key being playedep easy - play mode being activatedchord cid mode being activated______________________________________ as noted in fig2 test 10 checks the state of the δa flag to ensure that the pedal root does not change unless there has been a change in accompaniment keys . if there has been no change in accompaniment keys since the last key scan routine , test 10 is negative and the δp flag is checked by test 20 . if there have been no changes to either the accompaniment or the pedal keyboards since the last key scan there would be no change in the pedal root ; test 20 would then be negative and the program would branch to exit . if test 20 is positive , test 30 checks the state of the easy play (&# 34 ; ep &# 34 ;) flag . if the ep flag is on ( i . e ., the test is positive ), test 40 checks the akp flag to determine if any accompaniment key is being played . if test 40 is positive , the program branches to exit . it should be noted in this sequence that the ep system described in u . s . patent application ser . no . 40 , 107 , filed on may 18 , 1979 , u . s . pat . no . 4 , 292 , 874 , issued on oct . 6 , 1981 , entitled &# 34 ; automatic control apparatus for chords and sequences ,&# 34 ; and assigned to the assignee of the present invention , ( hereinafter referred to as the &# 34 ; chords and sequences patent &# 34 ;) has priority over the pedal functions of the present invention . thus , when the ep system referred to in the chords and sequences application is being utilized , the on state of the δp and akp flags is effectively ignored . in other words , the ep system disclosed in the chords and sequences patent and the cid system disclosed herein are mutually exclusive . the chords and sequences patent , referred to above , is incorporated herein by reference for all purposes . in the event that either ( i ) test 30 establishes that the ep flag is on and test 40 establishes that the akp flag is off ( i . e ., the test is negative ) or ( ii ) that the ep flag is off , test 50 checks the state of the pkp flag . if this flag is on , i . e ., pedal keys are being played , the ep flag is again checked in test 55 . if test 55 is negative , i . e ., the ep flag is off , the pedal key being played is stored in memory as the pedal root by function 60 . in addition , a minor flag latch is set to 0 and a flatted fifth flag is set to 1 . however , if test 55 establishes that the ep flag is on , the pedal key being played is stored in memory as the root , a flatted fifth flag is set to 0 and a minor flag is set to the minor bar by function 65 . thereafter , the program branches to exit and the next sequential instruction is taken . if test 10 establishes that the δa flag is on , a check of the state of the ep flag is made by test 70 . if the ep flag is on , test 80 determines the state of the akp flag . if this flag is on , function 100 sets the pedal root equal to the ep note being played and the major / minor nature of the chord type is directly determined . in addition , the flatted fifth flag is set equal to 0 and the minor flag is set equal to the minor bar . thereafter , the program branches to exit . on the other hand , if test 70 establishes that the ep flag is off , a check of the pkp flag is made by test 110 . test 110 determines if a pedal key is being played . if test 110 is positive , ( i . e ., a pedal key is being played ), the cid system is inhibited and test 120 checks the state of the δp flag . if the δp flag is on , function 60 stores the pedal key being played as the pedal root . function 60 also sets the minor flag equal to 0 and the flatted fifth flag equal to 1 . thereafter , the program branches to exit . however , if the test 120 establishes that the δp flag is off , the program branches to exit . as noted , test 110 checks the state of the pkp flag , if that flag is off , test 130 checks the state of the chord tab . if the chord tab is off , test 140 checks the state of the pedal memory tab ; if the pedal memory tab is on , the program branches to exit . if the pedal memory tab is off , function 150 stores no key played in memory and the program branches to exit . thus , it will be noted that if test 140 is negative , no pedal note is sounded . as previously noted , test 80 checks the state of the akp flag . if that flag is off , the δp flag is checked by test 90 . if that test establishes that the δp flag is on , the program branches to test 50 . test 50 checks the state of the pkp flag . if that flag is off , the program branches to test 140 and that test , as previously described , is taken . in addition , if the test 90 establishes that the δp flag is off , the program also branches to test 140 for the purposes previously described . in the event that test 10 is positive ( δa flag is on ), test 70 is negative ( ep flag is off ), test 110 is negative ( pkp flag is off ) and test 130 is positive ( chord tab is on ), the program branches to test 160 which determines if an accompaniment key (&# 34 ; aa &# 34 ;) has been added since the previous scan . if test 160 is negative , i . e ., no accompaniment keys have been added since the previous scan , test 170 checks the state of the cid memory tab . if the cid memory tab is on , the program branches to exit . however , if the cid memory tab is off , test 180 checks akp flag . if this flag is off , the program branches to test 150 for the purposes previously described . it should be noted that if test 180 is negative , no pedal note is sounded . on the other hand , if test 180 establishes that the akp flag is on , the program branches to exit . in the event that test 160 establishes that the aa flag is on and because the chord root can change only on an added accompaniment key , the cid system 190 of the present invention is activated . after cid is taken , the program branches to exit . the cid system will now be described in detail . the cid system of the present invention has as its basis eleven ( 11 ) standard chords . for convenience , these standard chords are described in fig3 as &# 34 ; c &# 34 ; chords . it should be recognized , however , that the cid system of the present invention is not limited merely to &# 34 ; c &# 34 ; chords ; rather , the invention may be used with any chord . as shown in fig3 the c major triad is comprised of c , e and g notes . in machine readable binary code , the c major triad , as shown in fig3 may be written as &# 34 ; 100010010000 &# 34 ;. it also should be noted that for simplicity the remaining standard chords shown in fig3 are depicted in binary code form with the 0 &# 39 ; s excluded . as one skilled in the art will appreciate , the standard chords identified in fig3 can be divided into three groups as follows : the c augmented triad has three notes equally spaced on four semi - tone intervals . the c diminished seventh has four notes equally spaced on three semi - tone intervals . the chords in this group all have one root fifth interval . the chords in this group all have two pair of root fifth intervals . in the c minor seventh , the b b note is a fifth interval above the e b . by transposing each note down three semi - tones , the e b becomes c ; the g becomes e ; the b b becomes g ; and the c becomes a . the result of this transposition is a c major sixth chord . in other words , a c minor seventh is also an e b 6 . correspondingly , a c major sixth is also an a m7 . as one skilled in the art will also appreciate , the c major seventh chord also has two root fifth intervals . however , if the chord is transposed to the alternate root position , the chord would be a c minor triad with flatted sixth added , i . e ., root , minor third , fifth and flatted sixth . this is not one of the standard chords and , accordingly , the c major seventh chord may be non - ambiguously identified by the cid process . likewise , if the c dominant ninth chord is transposed up five semi - tones , the result is a c minor triad with both the fourth and sixth added ; because this is not one of the standard chords , the c dominant ninth transposition may also be identified without ambiquity . with the foregoing in mind , reference is now made to fig4 . when the cid system is activated , function 310 assumes that the root of the chord is the lowest , or bottom , note (&# 34 ; bn &# 34 ;) in the played chord . with this assumption , test 320 checks to determine if there is a fifth interval note in the chord based upon the assumed root . if no fifth interval note exists for the assumed root , the chord is transposed and the next higher interval note is assumed to be the root . this transposition is made by transposition means 330 . means 330 contains a counter ( not shown ) which counts the number of rotations each time a search is made for a new transposition . test 340 uses the value from this counter to determine if the transposition found is new , i . e . after 12 rotations the binary code has returned to the original inversion and the transposition would not be new at that point . if all chord transpositions are tested and no fifth interval note is found , the lowest note is assumed to be the root by the function 350 . the flow path just described is that path followed by the chords of group i , i . e ., the augmented triad or the diminished seventh . in addition to identifying the root of the chord to be automatically played by the pedal system , it is desirable to have the automatic pedal pattern play a sequence of notes compatible with the identified chord . this feature requires that the chord be identified as a major or minor chord . because the augmented triad and the diminished seventh are not always played in the root position , function 355 sets the minor flag equal to 0 and the flatted fifth flag equal to 1 . the result of this operation stores in memory the binary code for a flatted fifth rather than a major third or a minor third . thereafter , the program exits the cid process . in the event the test 320 determines that a fifth interval is present , test 360 is taken to determine if less than four notes are present . if this test is positive , a valid root for a major triad or a minor triad has been identified . in addition , if only a root fifth pair had been played , the correct root would also be determined . test 480 now determines if the chord is a major or minor chord . if test 480 is positive , the minor flag is set equal to 1 and the flatted fifth flag is set equal to 0 by function 500 . if the test 480 is negative , the minor flag is set equal to 0 and the flatted fifth flag is also set equal to 0 by function 490 which results in the output of a major third chord . a major third is musically valid with either a major triad or a root - fifth pair . the cid process is exited from either of the functions 490 or 500 . if the test 360 is negative , a chord of four or more notes has been identified . thus , it is necessary to determine the correct root fifth pair of either the group ii or group iii chords . this determination is commenced by test 370 which checks for a major third . if test 370 is positive , test 380 checks for a sixth . if no sixth is present , the chord can only be one of the major chords of group ii or the dominant ninth chord in the correct root position . thus , in the event test 380 is negative , a dominant seventh , major seventh , dominant ninth or diminished ninth chord has been identified . thereafter , test 480 is taken as previously described . if test 380 is positive , only a major sixth or a transposed minor seventh could be present . thus , test 390 checks to determine if the assumed root of the chord being tested is the lowest note . if this test is positive , the root assumed by function 310 is the preferred root and test 480 is taken as described . if test 390 is negative , test 400 determines if the corresponding fifth of the chord being tested is the bottom note . if this test is positive , test 480 is taken as described . however , if test 400 is negative , it has been determined that a minor seventh is the preferred chord and the root is transposed down three semi - tones to correspond to the root of a minor seventh rather than a major sixth . this transportation is made by function 410 . after such transposition , test 480 is taken as described . if test 370 is negative , i . e ., there is no major third , test 420 checks for the presence of four notes . if this test is negative , function 330 is addressed and a transposition of the chord occurs by function 330 . if test 420 is positive , test 425 checks for a minor third . if there is no minor third , transposition means 330 is addressed and a transposition of the chord occurs . if the test 425 is positive , test 430 is taken to check for the presence of a sixth chord . if this test is positive , test 480 is taken as described . however , if test 430 is negative , test 440 determines whether a flatted seventh interval is present . if no flatted seventh interval is present , transposition means 330 is addressed and a transposition of the chord occurs . if test 440 is positive , a minor seventh chord or a transposition of a major sixth chord has been identified . test 450 checks to determine if the assumed root of the chord being tested is the bottom note ; if test 450 is positive , test 480 is taken as described . however , if test 450 is negative , test 460 is taken to determine if the corresponding fifth of the chord being tested is the bottom note . if test 460 is positive , test 480 is taken as described . finally , if test 460 is negative , it has been determined that a major sixth chord is the preferred chord and the root is transposed up three semi - tones to correspond to the root of a major sixth rather than a minor seventh . this transposition occurs by function 470 . thereafter , test 480 , as previously described , is taken . as an example of the foregoing description of the cid system , consider the c major sixth chord which comprises the c , e , g , and a notes ( see fig3 ). if the chord is played with the c as the bottom note it is identified by the cid system as shown in table ii . table ii______________________________________test result remarks______________________________________320 positive root fifth interval identified360 negative four or more notes in chord370 positive major third identified380 positive sixth present390 positive root = bn ; sixth identified480 negative major chord confirmed______________________________________ likewise , consider the c minor seventh chord which comprises the c , d ♯, g and a ♯ notes ( see fig3 ). if the chord is played with the g as the bottom note it is identified by the cid process as shown by table iii . table iii______________________________________test / func - tion result remarks______________________________________320 negative root fifth interval is not identified . 330 transpose this transposes chord one semitone . - 340 positive new transposition found . repeat 320 - 330 - 340 this test / function sequence is iterated four more times until test 320 is positive . 320 positive root fifth interval identified . 360 negative four or more notes in chord370 negative no major third identified420 positive four notes in chord425 positive minor third identified430 negative no sixth present440 positive minor seventh identified450 negative assumed root not equal bn460 positive fifth = bn480 positive minor third identified ; minor chord identified______________________________________ as previously noted , once the cid system has identified the chord being played on the manual keyboard , a signal may be generated for the synthesis of music on the pedal keyboard which is compatible with the identified chord . such synthesis is fully and completely described in the tone generator system application , the harmony generator application , and the chords and sequences patent , all of which are referred to above . those skilled in the art will recognize that the preferred embodiment described above can be extended to other less common chords . thus , a so - called suspended chord can be identified . for example , a c suspended chord comprises a c root , a g fifth and an f fourth . if this chord were being played , the chord would be transposed in that loop of fig4 containing functions 320 , 330 and 340 until c or f appeared in the root position . test 360 would then be taken because of the presence of g or c . because of the presence of less than 4 notes , function 480 would be taken , followed by function 490 . as discussed with respect to fig4 the invention would identify a major third by setting both the minor and flatted fifth flags to zero . in order to identify a suspended chord it is desirable to provide certain additional test sequences . these additional tests are depicted in fig5 where function 480 is the same as that of fig4 . however , functions 355a , 490a and 500a are slight modifications of those disclosed in fig4 where the ability to set a 4th flag is included . tests 510 and 520 and flag setting routine 530 are also included . if the c / g - root / fifth pair is encountered first in the transposition sequence identified above , test 480 will be negative ; test 510 will be positive because of the presence of the f , and function 490a will set the 4th flag . if the f / c - root / fifth pair is encountered first in the transposition sequence , tests 480 , 510 and 520 will all be negative , and the program will return to the transposition sequence at function 330 ( fig4 ) and proceed until the c / g - root / fifth pair is encountered . as can be seen by the above example , the general procedure can be extended to new chords as required by the type of music synthesis systems being serviced by cid . thus , the general process of the present invention comprises iteratively transposing the chord to be identified until the number of notes and the interval relations of these notes match the chord types specified . if this is not possible , the lowest note is assumed to be the root and the chord type is identified based on that assumption . it should be appreciated that differing music synthesis systems may require more or less precise identification of the chord type . those skilled in the art will recognize that the preferred embodiments described above can be altered and modified without departing from the true spirit and scope of the invention as described above and defined in the following claims .