Abstract:
A method and system for extracting melodic patterns by first recognizing musical “keywords” or themes. The invention searches for all instances of melodic (intervallic) repetition in a piece (patterns). This process generally uncovers a large number of patterns, many of which are either uninteresting or are only superficially prevalent. Filters reduce the number and/or prevalence of such patterns. Patterns are then rated according to characteristics deemed perceptually significant. The top ranked patterns correspond to important thematic or motivic musical content. The system operates robustly across a broad range of styles, and relies on no metadata on its input, allowing it to independently and efficiently catalog multimedia data.

Description:
STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT  
       [0001] This invention was made with government support under National Science Foundation Grant No. 9872057. The government has certain rights in the invention. 
     
    
     
       BACKGROUND OF THE INVENTION  
         [0002]    1. Field of the Invention  
           [0003]    This invention relates to methods and systems for extracting melodic patterns in musical pieces and computer-readable storage medium having a program for executing the method.  
           [0004]    2. Background Art  
           [0005]    Extracting the major themes from a musical piece: recognizing patterns and motives in the music that a human listener would most likely retain (i.e. “Thematic extraction”) has interested musician and AI researchers for years. Music librarians and music theorists create thematic indices (e.g., Köchel catalog) to catalog the works of a composer or performer. Moreover, musicians often use thematic indices (e.g., Barlow&#39;s  A Dictionary of Musical Themes ) when searching for pieces (e.g., a musician may remember the major theme, and then use the index to find the name or composer of that work). These indices are constructed from themes that are manually extracted by trained music theorists. Construction of these indices is time consuming and requires specialized expertise.  
           [0006]    Theme extraction using computers has proven very difficult. The best known methods require some ‘hand tweaking’ to at least provide clues about what a theme may be, or generate thematic listings based solely on repetition and string length. Yet, extracting major themes is an extremely important problem to solve. In addition to aiding music librarians and archivists, exploiting musical themes is key to developing efficient music retrieval systems. The reasons for this are twofold. First, it appears that themes are a highly attractive way to query a music-retrieval system. Second, because themes are much smaller and less redundant, by searching a database of themes rather than full pieces, one can simultaneously get faster retrieval (by searching a smaller space) and get increased relevancy. Relevancy is increased as only crucial elements, variously named “motives,” “themes,” “melodies” or “hooks,” are searched, thus reducing the chance that less important, but commonly occurring, elements will fool the system.  
           [0007]    There are many aspects to music, such as melody, harmony, and rhythm, each of which may affect what one perceives as major thematic material. Extracting themes is a difficult problem for many reasons, among these are the following:  
           [0008]    The major themes may occur anywhere in a piece. Thus, one cannot simply scan a specific section of piece (e.g., the beginning).  
           [0009]    The major themes may be carried by any voice. For example, in FIG. 1, the principal theme is carried by the viola, the third lowest voice. Thus, one cannot simply “listen” to the upper voices.  
           [0010]    There are highly redundant elements that may appear as themes, but should be filtered out. For example, scales are ubiquitous, but rarely constitute a theme. Thus, the relative frequency of a series of notes is not sufficient to make it a theme.  
           [0011]    The U.S. patent to Larson (U.S. Pat. No. 5,440,756) discloses an apparatus and method for real-time extraction and display of musical chord sequences from an audio signal. Disclosed is a software-based system and method for real-time extraction and display of musical chord sequences from an audio signal.  
           [0012]    The U.S. patent to Kageyama (U.S. Pat. No. 5,712,437) discloses an audio signal processor selectively deriving harmony part from polyphonic parts. Disclosed is an audio signal processor comprising an extracting device that extracts selected melodic part from the input polyphonic audio signal.  
           [0013]    The U.S. patent to Aoki (U.S. Pat. No. 5,760,325) discloses a chord detection method and apparatus for detecting a chord progression of an input melody. Of interest is a chord detection method and apparatus for automatically detecting a chord progression of input performance data. The method comprises the steps of detecting a tonality of the input melody, extracting harmonic tones from each of the pitch sections of the input melody and retrieving the applied chord in the order of priority with reference to a chord progression.  
           [0014]    The U.S. patent to Aoki (U.S. Pat. No. 6,124,543) discloses an apparatus and method for automatically composing music according to a user-inputted theme melody. Disclosed is an automated music composing apparatus and method. The apparatus and method includes a database of reference melody pieces for extracting melody generated data which are identical or similar to a theme melody inputted by the user to generate melody data which define a melody which matches the theme melody.  
           [0015]    The Japanese patent document of Igarashi (JP3276197) discloses a melody recognizing device and melody information extracting device to be used for the same. Described is a system for extracting melody information from an input sound signal that compares information with the extracted melody information registered in advance.  
           [0016]    The Japanese patent document of Kayano et al. (JP11143460) discloses a method for separating, extracting by separating, and removing by separating melody included in musical performance. The reference describes a method of separating and extracting melody from a musical sound signal. The sound signal for the melody desired to be extracted is obtained by synthesizing and adding the waveform based on the time, the amplitude, and the phase of the selected frequency component.  
           [0017]    U.S. Patent Nos. 5,402,339; 5,018,427; 5,486,646; 5,874,686; and 5,963,957 are of a more general interest.  
         SUMMARY OF THE INVENTION  
         [0018]    An object of the present invention is to provide an improved method and system for extracting melodic patterns in a musical piece and computer-readable storage medium having a program for executing the method wherein such extraction is performed from abstracted representations of music.  
           [0019]    Another object of the present invention is to provide a method and system for extracting melodic patterns in a musical piece and computer-readable storage medium having a program for executing the method, wherein the extracted patterns are ranked according to their perceived importance.  
           [0020]    In carrying out the above objects and other objects of the present invention, a method for extracting melodic patterns in a musical piece is provided. The method includes receiving data which represents the musical piece, segmenting the data to obtain musical phrases, and recognizing patterns in each phrase to obtain a pattern set. The method further includes calculating parameters including frequency of occurrence for each pattern in the pattern set and identifying desired melodic patterns based on the calculated parameters.  
           [0021]    The method may further include filtering the pattern set to reduce the number of patterns in the pattern set.  
           [0022]    The data may be note event data.  
           [0023]    The step of segmenting may include the steps of segmenting the data into streams which correspond to different voices contained in the musical piece and identifying obvious phrase breaks.  
           [0024]    The step of calculating may include the step of building a lattice from the patterns and identifying non-redundant partial occurrences of patterns from the lattice.  
           [0025]    The parameters may include temporal interval, rhythmic strength and register strength.  
           [0026]    The step of identifying the desired melodic patterns may include the step of rating the patterns based on the parameters.  
           [0027]    The step of rating may include the steps of sorting the patterns based on the parameters and identifying a subset of the input piece containing the highest-rated patterns.  
           [0028]    The melodic patterns may be major themes.  
           [0029]    The step of recognizing may be based on melodic contour.  
           [0030]    The step of filtering may include the step of checking if the same pattern is performed in two voices substantially simultaneously.  
           [0031]    The step of filtering may be performed based on intervallic content or internal repetition.  
           [0032]    Further, in carrying out the above objects and other objects of the present invention, a system for extracting melodic patterns in a musical piece is provided. The system includes means for receiving data which represents the musical piece, means for segmenting the data to obtain musical phrases, and means for recognizing patterns in each phrase to obtain a pattern set. The system further includes means for calculating parameters including frequency of occurrence for each pattern in the pattern set and means for identifying desired melodic patterns based on the calculated parameters.  
           [0033]    The system may further include means for filtering the pattern set to reduce the number of patterns in the pattern set.  
           [0034]    The means for segmenting may include means for segmenting the data into streams which correspond to different voices contained in the musical piece, and means for identifying obvious phrase breaks.  
           [0035]    The means for calculating may include means for building a lattice from the patterns and means for identifying non-redundant partial occurrences of patterns from the lattice.  
           [0036]    The means for identifying the desired melodic patterns may include means for rating the patterns based on the parameters.  
           [0037]    The means for rating may include means for sorting the patterns based on the parameters and means for identifying a subset of the input piece containing the highest-rated patterns.  
           [0038]    The means for recognizing may recognize patterns based on melodic contour.  
           [0039]    The means for filtering may include means for checking if the same pattern is performed in two voices substantially simultaneously.  
           [0040]    The means for filtering may filter based on intervallic content or internal repetition.  
           [0041]    Still further in carrying out the above objects and other objects of the present invention, a computer-readable storage medium is provided. The medium has stored therein a program which executes the steps of receiving data which represents a musical piece, segmenting the data to obtain musical phrases, and recognizing patterns in each phrase to obtain a pattern set. The program also executes the steps of calculating parameters including frequency of occurrence for each pattern in the pattern set and identifying desired melodic patterns based on the calculated parameters.  
           [0042]    The program may further execute the step of filtering the pattern set to reduce the number of patterns in the pattern set.  
           [0043]    The method and system of the invention automatically extracts themes from a piece of music, where music is in a “note” representation. Pitch and duration information are given, though not necessarily metrical or key information. The invention exploits redundancy that is found in music: composers will repeat important thematic material. Thus, by breaking a piece up into note sequences and seeing how often sequences repeat, the themes are identical. Breaking up involves examining all note sequence lengths of two to some constant. Moreover, because of the problems listed earlier, one examines the entire piece and all voices. This leads to very large numbers of sequences, thus the invention uses a very efficient algorithm to compare these sequences.  
           [0044]    Once repeating sequences have been identified, they are characterized with respect to various perceptually important features in order to evaluate their thematic value. These features are weighed for the thematic value function. For example, the frequency of a pattern is a stronger indication of thematic importance than pattern register. Hill-climbing techniques are implemented to learn weights across features. The resulting evaluation function then rates the sequence patterns uncovered in a piece.  
           [0045]    The above objects and other objects, features, and advantages of the present invention are readily apparent from the following detailed description of the best mode for carrying out the invention when taken in connection with the accompanying drawings.  
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0046]    [0046]FIG. 1 is a graph of pitch versus time of the opening phrase of Antonin Dvorak&#39;s  “American” Quartet;    
         [0047]    [0047]FIG. 2 is a diagram of a pattern occurrence lattice for the first phrase of Mozart&#39;s  Symphony No.  40;  
         [0048]    [0048]FIG. 3 is a description of a lattice construction algorithm of the present invention;  
         [0049]    [0049]FIG. 4 is a description of a frequency determining algorithm of the present invention;  
         [0050]    [0050]FIG. 5 is a description of an algorithm of the present invention for calculating register;  
         [0051]    [0051]FIG. 6 is a graph of pitch versus time for a register, example piece;  
         [0052]    [0052]FIG. 7 is a description of an algorithm of the present invention for identifying doublings;  
         [0053]    [0053]FIG. 8 is a graph of value versus iterations to illustrate hill-climbing results; and  
         [0054]    [0054]FIG. 9 is a representation of three major musical themes. 
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS  
       [0055]    Input to the method and system of the present invention is a set of note events making up a musical composition N={n 1 , n 2  . . . n 3 }. A note event is a triple consisting of an onset time, an offset time and a pitch (in MIDI note numbers, where 60=‘Middle C’ and the resolution is the semi-tone): n i =&lt;onset, offset, pitch&gt;. Several other valid representations of a musical composition exists, taking into account amplitude, timbre, meter and expression markings among others. However, pitch is reliably and consistently stored in MIDI files—the most easily accessible electronic representation for music—and voice contour may be a measure of redundancy.  
         [0056]    However, it is to be understood that the method and system of the invention is capable of using input data that are not strictly notes but are some abstraction of notes to represent a musical composition or piece. For example, instead of saying the pitch C4 (middle C on the piano) lasting for 1 beat, one could say X lasting for about N time units. Consequently, other representations other than the particular input data described herein are not only possible but may be desirable.  
         [0057]    Algorithm  
         [0058]    In this section the operation of an algorithm of the present invention is described. This includes identifying patterns and process of computing pattern characteristics, such that “interesting” patterns can be identified.  
         [0059]    The algorithm extracts “melodic motives,” characteristic sequences of non-concurrent note events. Much of the input material however contains concurrent events, which must be divided into “streams,” corresponding to “voices” in the music. In both notated and MIDI form, music is generally grouped by instrument, so that musical streams have been identified in advance. FIG. 1 shows a relatively straightforward example of segmentation, from the opening of Dvorak&#39;s “ American” Quartet,  where four voices are present. In cases where several concurrent voices are present in one instrument, for example in piano music, only the top sounding voice is dealt with. This is clearly a compromise solution, as certain events are disregarded. Although some existing analysis tools perform stream segregation on abstracted music, (i.e., note event representation), they have trouble with overlapping voices, as seen between the middle voices in FIG. 1.  
         [0060]    Stream Segregation  
         [0061]    Events are thus indexed according to stream number and position in stream, so that the fifth event of the fourth stream will be notated as follows, using the convention that the first element is indicated by index 0: e 3,4 . For instance, the first stream contains events e 0 ={e 0,0 , e 0,1 , . . . , e 0,|n−1| }.  
         [0062]    Identifying Patterns  
         [0063]    The invention is primarily concerned with melodic contour as an indicator of redundancy. Contour is defined as the sequence of pitch intervals across a sequence of note events in a stream. For instance, the stream consisting of the following event sequence e s ={&lt;0, 1, 60&gt;, &lt;1, 2, 62&gt;, &lt;2, 3, 64&gt;, &lt;3, 4, 62&gt;, &lt;4, 5, 60&gt;} has contour c s ={+2, +2, −2, −2}. The invention considers contour in terms of “simple interval,” which means that although the sign of an interval (+/−) is considered, octave is not. As such, an interval of +2 is considered equivalent to an interval of +14=(+2+octave=+2+12). Each interval corresponding to an event, i.e., the interval between that event and its successor, is normalized to the range [−12,+12]: 
         real_interval s,i =Pitch[ e   s,i+1 ]−Pitch[ e   s,i ]               c     s   ,   i       =     {             real_interval     s   ,   i       ,             if   -   12     ≤     real_interval     s   ,   i       ≤     +   12                   -     mod   12       -     real_interval     s   ,   i                 if                   real_interval     s   ,   i         ≤     -   12                   mod   12          real_interval     s   ,   i             otherwise                   (   1   )                                 
         [0064]    To efficiently uncover patterns, or repeating interval sequences, a key k(m) is assigned to each event in the piece that uniquely identifies a sequence of m intervals. Length refers to the number of intervals in a pattern, not the number of events. The keys must exhibit the following property: 
           k   p     1     ,i     1   ( m )= k   p     2     ,i     2   ( m )⇄{ c   p     1     ,i     1     ,c   p     1     ,i     1     +1   , . . . ,c   p     1     ,i     1     +m−1   }={c   p     2     ,i     2     ,c   p     2     ,i     2     +1   , . . . ,c   p     2     ,i     2     +m−1 } 
         [0065]    Since only 25 distinct simple intervals exist, one can refer to intervals in radix-26 notation, reserving a digit (0) for the ends of streams. An m-digit radix-26 number, where each digit corresponds to an interval in sequence, thus uniquely identifies that sequence of intervals, and key values can then be calculated as follows, re-mapping intervals to the range [1,25]:  
                 k     p   ,   i            (   m   )       =       ∑     j   =   0       m   -   1              (       c     i   +   j       +   12     )     *     26     M   -   j   -   1                   (   2   )                               
 
         [0066]    The following derivations allow one to more efficiently calculate the value of k p,i : 
           k   p,i (1)= c   i +13  (3)                  k     p   ,     i   +   1              (   n   )       =     {               26   *       k     p   .   i            (     n   -   1     )         +       k     p   ,     i   +   n   -   1              (   1   )         ,             if                 n     ≤            c   p          -   i                     k     p   ,   i            (            c   p          -   i     )       *     26     (     n   -          c   p          +   i     )                 if                 n     &gt;            c   p          -   1                       (   4   )                               
  k   p,i+1 ( n−   1 )= k   p,i ( n )−( c   i   +13 )* 26   n−1   ( 5 ) 
           k   p,i+1 ( n )=26* k   p,i+1 ( n− 1)+ k   p,i+n (1)  (6) 
         [0067]    Using formulae 3 and 4, one can calculate the key of the first event in a phrase in linear time with respect to the maximum pattern length, or the phrase length, whichever is smaller (this is essentially an application of Horner&#39;s Rule). Formulae 5 and 6 allow one to calculate the key of each subsequent event in constant time (as with the Rabin-Karp algorithm). As such, the overall complexity for calculating keys is Θ(n) with respect to the number of events.  
         [0068]    One final derivation is employed in the pattern identification:  
               ∀   m     ,       0   &lt;   m   ≤     n   :       k     p   ,   i            (   m   )           =     ⌊         k     p   ,   i            (   n   )         24     n   -   m         ⌋               (   7   )                               
 
         [0069]    Events are then sorted on key so that pattern occurrences are adjacent in the ordering. A pass is made through the list for pattern lengths from m=[n . . . 2], resulting in a set of patterns, ordered from longest to shortest. The procedure is straightforward: during each pass through the list, keys are grouped together for which the value of k(m)—calculated using Formula 7—is invariant. Such groups are consecutive in the sorted list. Occurrences of a given pattern are then ordered according to onset time, a necessary property for later operations.  
         [0070]    Consider the following simple example for n=4, a single phrase from Mozart&#39;s  Symphony No.  40: e 0 ={&lt;0, 1, 48&gt;, &lt;1, 2, 47&gt;, &lt;2, 4, 47&gt;, &lt;4, 5, 48&gt;, &lt;5, 6, 47&gt;, &lt;6, 8, 47&gt;, &lt;8, 9, 48&gt;, &lt;9, 10, 47&gt;, &lt;10, 12, 47&gt;, &lt;12, 16, 55&gt;}. This phrase has intervals: c 0 ={−1, 0, 1, −1, 0, 1, −1, 0, 8}.  
         [0071]    First, one calculates the key value for the first event (k 0 (4)), using Formulae 3 and 4 recursively. 
           k   0,0 (1)=12 
           k   0,0 (2)=26* k   0,0 (1)+ k   0,1 (1)=26*12+13=325 
           k   0,0 (3)=26* k   0,0 (2)+ k   0,2 (1)=26*325+14=8464 
           k   0,0 (4)=26* k   0,0 (3)+ k   0,3 (1)=26*8464+12=22076 
         [0072]    Then the remaining key values are calculated using Formulae 5 and 6: 
           k   0,1 (3)= k   0,0 (4)−12*26 3   
           k   0,1 (4)=26* k   0,1 (3)+ k   0,4 (1)=26*9164+13=238277 
           k   0,2 (4)=254528  k   0,3 (4)=220076  k   0,4 (4)=238277  k   0,5 (4)=254535 
           k   0,6 (4)=220246  k   0,7 (4)=242684  k   0,8 (4)=369096  k   0,9 (4)=0 
         [0073]    Sorting these keys, one gets: {k 0,9 , k 0,0 , k 0,3 , k 0,6 , k 0,1 , k 0,4 , k 0,7 , k 0,2 , k 0,5 , k 0,8 } 
         [0074]    On a first pass through the list, for m=4, patterns {k 0,0 , k 0,3 } and {k 0,1 , k 0,4 } and {k 0,2 , k 0,5 }, noting that └k 0,2 /26 4−3 ┘=└k 0,5 /26 4−3 ┘, which entails that an additional pattern of length 3 exists. Similarly, the following patterns are identified for m=2: {k 0,0 , k 0,3 , k 0,6 }, {k 0,1 , k 0,4 } and {k 0,2 , k 0,5 }. The patterns are shown in Table 1.  
                             TABLE 1                           Patterns in opening phrase of Mozart&#39;s Symphony No. 40                    Characteristic       Pattern   Occurrences at   interval pattern               P 0     e 0,0 , e 0,3     {−1, 0, +1, −1}       P 1     e 0,1 , e 0,4     {0, +1, −1, 0}       P 2     e 0,0 , e 0,3     {−1, 0, +1}       P 3     e 0,1 , e 0,4     {0, +1, −1}       P 4     e 0,2 , e 0,5     {+1, −1, 0}       P 5     e 0,0 , e 0,3 , e 0,6     {−1, 0}       P 6     e 0,1 , e 0,4     {0, +1}       P 7     e 0,2 , e 0,5     {+1, −1}                  
 
         [0075]    A vector of parameter value V i =&lt;v 1 , v 2 , . . . , v l &gt; and a sequence of occurrences are associated to each pattern. Length, v length , is one such parameter. The assumption was made that longer patterns are more significant, simply because they are less likely to occur by chance.  
         [0076]    Frequency of Occurrence  
         [0077]    Frequency of occurrence is one of the principal parameters considered by the invention in establishing pattern importance. All other things being equal, higher occurrence frequency is considered an indicator of higher importance. The definition of frequency is complicated by the inclusion of partial pattern occurrences. For a particular pattern, characterized by the interval sequence {C 0 , C 1 , . . . , C v     length     −1 }, the frequency of occurrences is defined as follows:  
               ∑     l   =     v   length       2            ∑     j   =   0         v   length     -   l                    non   -     redundant                 occurrences                 of                 {       C   j     ,     C     j   +   1       ,   …              ,     C     j   +   l   +   1         }             length   /     v   l                   (   8   )                               
 
         [0078]    An occurrence is considered non-redundant if it has not already been counted, or partially counted (i.e., it contains part of another occurrence that is longer or precedes it.) Consider the piece consisting of the following interval sequence, in the stream e 0 : c 0 ={−2,2, −2,2, −5,5, −2,2, −2,2, −5,5, −2,2, −2,2}, and the pattern {−2,2, −2,2, −5}. Clearly, there are two complete occurrences at e 0,0  and e 0,6 , but also a partial occurrence of length 4 at the e 0,12 . In this case, the frequency is equal to  
       2                     4   5     .                           
 
         [0079]    To efficiently calculate frequency, one first constructs a set of pattern occurrence lattices, on the following binary occurrence relation (         ):  
         [0080]    Given occurrences o 1  and o 2  characterized by intervals 
           C[o   1   ]={c   1     1     ,c   1     2     , . . . ,c   1     n   } 
           C[o   2   ]={c   2     1   ,c 2     2     , . . . ,c   2     m   }  (9) 
         [0081]    One has the following relation: 
         
       C[o 
       1 
       ]⊂C[o 
       2 
       ]⇄o 
       1 
                 o 
       2 
     
         [0082]    As such, in establishing occurrence frequency for pattern P, one need consider only those patterns covered by occurrences in P in the lattices. Two properties of the data facilitate this construction:  
         [0083]    [0083] 1  1. The pattern identification procedure adds patterns in reverse order of pattern length.  
         [0084]    2. For any pattern occurrence of length n&gt;2, there are two occurrences of length n−1, one sharing the same initial event, one sharing the same final event. Clearly, these shorter occurrences also constitute patterns. The lattices then have a branching factor of 2.  
         [0085]    The following language is used to describe the lattice: given a node representing an occurrence of a pattern o with length l, the left child is an occurrence of length l−1 beginning at the same event. The right child is an occurrence of length l−1 beginning at the following event. The left parent is an occurrence of length l+1 beginning at the previous event, and the right parent is an occurrence of length l+1 beginning at the same event. Consider the patterns the Mozart excerpt (see Table 1): P 0 &#39;s first occurrence, with length 4 and at e 0,0 , directly covers two other occurrences of length 3: P 2 &#39;s first occurrence at e 0,0  (left child) and P 3 &#39;s first occurrence at e 0,1  (right child). The full lattice is shown in FIG. 2. See FIG. 3 for a full description of the algorithm.  
         [0086]    The lattice construction approach is θ(n) with respect to the number of pattern occurrences identified, which is in turn O(m*n) with respect to the maximum pattern length and the number of events in the piece, respectively.  
         [0087]    Consider the patterns identified in the short Mozart example (Table 1), from which the lattice in FIG. 2 is built. When the first occurrence of pattern P 4  is inserted, o left =the first occurrence of P 3 , and o right =null. Since P 3  has the same length as P 4 , one checks the right parent of the o left , and updates the link between that occurrence of P 1  and o. Other links are updated in a more straightforward manner.  
         [0088]    From this lattice, non-redundant partial occurrences of patterns are identified (see FIG. 4). Take for instance pattern P 2  in the Mozart example. By breadth-first traversal, starting from either occurrence of P 2 , we add the following elements to Q: P 2 , P 5 , P 6 . First, we add the two occurrence of P 2 , tagging events e 0,0 , e 0,1 , . . . , e 0,5 , and setting  
       f   ←     2   *       3   3     .                             
 
         [0089]    The first two occurrences of P 5  contain tagged events, so one rejects them, but the third occurrence at e 0,6  is un-tagged, so one tags e 0,6 , e 0,7 , e 0,8  and sets  
       f   ←     2   +       2   3     .                             
 
         [0090]    All occurrences of P 6  are tagged, so frequency of P 2  is equal to  
       2                     2   3     .                           
 
         [0091]    Register  
         [0092]    Register is an important indicator of perceptual prevalence: one listens for higher pitched material. For the purposes of this application, register is defined in terms of the “voicing,” so that for a set of n concurrent note events, the event with the highest pitch is assigned a register of 1, and the event with the lowest pitch is assigned a register value of n. For consistency across a piece, one maps register values to the range [0, 1] for any set of concurrent events, such that 0 indicates the highest pitch, 1 the lowest.  
         [0093]    One also needs to define the notion of concurrency more precisely. Two events with intervals I 1 =[s 1 , e 1 ] and I 2 =[s 2 , e 2 ] are considered concurrent if there exists a common interval I c =[s c , e c ] such that s c &lt;e c  and I c   ⊂ I 1 ΛI c   ⊂ I 2 . The simplest way of computing these values is to walk through the event set ordered on onset time, maintaining a list of active events (see FIG. 5).  
         [0094]    Consider the example piece in FIG. 2. The register values assigned to each event at each iteration are shown in Table 2.  
                                                         TABLE 2                           Register values at each iteration of register algorithm            Adding   e 0,0     e 0,1     e 0,2     e 0,3     e 0,4     e 0,5     e 0,6     e 0,7     Active List L               e 0,0     0   —   —   —   —   —   —   —   {e 0,0 }       e 0,1     1   0   —   —   —   —   —   —   {e 0,0 , e 0,1 }               e 0,2     1   0           1   2                             —   —   —   —   —   {e 0,0 , e 0,1 , e 0,2 }               e 0,3     1   0   1   0   —   —   —   —               e 0,4 , e 0,5     1   0   1           2   3                                     1   3                             0   —   —   {e 0,2 , e 0,3 , e 0,4 , e 0,5 }               e 0,6 , e 0,7     1   0   1           2   3                                     1   3                             0           1   2                             1   {e 0,4 , e 0,6 , e 0,7 }                  
 
         [0095]    Given these values, the register strength for a pattern P with occurrences o 0 , o 1 , . . . , o n−1  is:  
               Register        [   P   ]       ←         ∑     i   =   0       n   -   1              ∑     j   =   0       Length        [   P   ]              Register        [     e       Phrase        [     o   1     ]       ,       Index        [     o   1     ]       +   j         ]             n   *     (       Length        [   P   ]       +   1     )                 (   10   )                               
 
         [0096]    The register of a pattern is then simply the average register of each event in each occurrence of that pattern.  
         [0097]    Intervallic Content  
         [0098]    Early experiments with the system of the present invention indicated that sequences of repetitive, simple pitch interval patterns dominate given the parameters outlined thus far. For instance, in the Dvorak example (see FIG. 1) the melody is contained in the second voice from the bottom, but highly consistent, redundant figurations exist in the upper two voices. Intervallic variety provides a means of distinguishing these two types of line, and tends to favor important thematic material since that material is often more varied in terms of contour.  
         [0099]    Given that intervallic variety is a useful indicator of how interesting a particular passage appears, one counts the number of distinct intervals observed within a pattern, not including 0. One calculates two interval counts: one in which intervals of +n or −n are considered equivalent, the other taking into account interval direction. Considering the entire Mozart, which is indeed a pattern within the context of the whole piece, there are three distinct directed intervals, −1, +1 and 8, and two distinct undirected intervals, 1 and 8.  
         [0100]    Duration  
         [0101]    The duration parameter is an indicator of the temporal interval over which occurrences of a pattern exist. For a given occurrence o, with initial event e s     1     ,i     1    and final event e s     F     ,i     F   , the duration D(o)=Offset[e s     F     ,i     F   ]−Onset[e s     1     ,i     1   ]. For a pattern P, with occurrences o 0 , o 1 , . . . , o n−1 , the distance parameter is calculated to be the average duration of all occurrences:  
               Duration        [   P   ]       ←         ∑     i   =   0       n   -   1            D        (     o   i     )         n             (   11   )                               
 
         [0102]    Rhythmic Distance  
         [0103]    For the purposes of this application, rhythm is characterized in terms of inter-onset interval (IOI) between successive events. One calculates the distance between a pair of occurrences as the angle difference between the vectors built from the IOI values of each occurrence. For an occurrence o with events e 0 , e 1 , . . . , e n , where n is the pattern length, the IOI vector is V(o)=&lt;onset[e 1 ]−onset[e 0 ], onset[e 2 ]−onset[e 1 ], . . . , onset[e n ]−onset[e n−1 ]&gt;. The rhythmic distance between a pair of occurrences o a  and o b  is then the angle difference between the vectors V(o a ) and v(o b ):  
               D        (       o   a     ,     o   b       )       =       cos     -   1       (         V        (     o   a     )       ·     V        (     o   b     )                  V        (     o   a     )                      V        (     o   b     )                          (   12   )                               
 
         [0104]    One takes the average of the distances between all occurrence (o 0 , o 1 , . . . , o n−1 ) pairs for a pattern P to calculate its rhythmic distance:  
               Distance        [   P   ]       ←         ∑     i   =   0       n   -   2              ∑     j   =     i   +   1         n   -   1            D        (       V        (     o   i     )       ,     V        (     o   j     )         )               n        (     n   -   1     )       2               (   13   )                               
 
         [0105]    This value is a measure of how similar different occurrences are with respect to rhythm. Two occurrences with the same notated rhythm presented at different tempi have a distance of 0. Consider the case where o a  has k times the temp of o b . In this case, V(o b )=kV(o a ), and V(o a )=&lt;i 0 , i 1 , . . . i n−1 &gt;:  
                     D        (       o   a     ,     o   b       )       =       cos     -   1       (         ki   0   2     +     ki   1   2     +                +     ki     n   -   1     2                 (     ki   0     )     2     +       (     ki   1     )     2     +         (     ki       n   2     -   1       )     2              i   0   2     +     i   1   2     +     i     n   -     1   2                     )                 =       cos     -   1       (         ki   0   2     +     ki     1   -     2     +     ki     n   -   1     2               k   2     (       i   0   2     +     i   1   2     +     …                   i     n   -   1     2                      i   0   2     +       i     1   -     2          i     n   -   1     2               )                 =       cos     -   1            (   1   )                   =   0                 (   14   )                               
 
         [0106]    Occurrences with similar rhythmic profiles have low distance, so this approach is robust with respect to performance and compositional variation, such as rubato, expansion and so forth.  
         [0107]    For instance, in the  Well - Tempered Clavier,  Bach often repeats fugue subjects at half speed. The rhythm vectors for the main subject statement and the subsequent expanded statement will thus have the same angle.  
         [0108]    Doublings  
         [0109]    Doublings are a special case in the invention. A “doubled” passage occurs where two or more voices simultaneously play the same line. In such instances, only one of the simultaneous occurrences is retained for a particular pattern, the highest sounding to maintain the accuracy of the register measure.  
         [0110]    One must provide a definition of simultaneity to clearly describe this parameter. To provide for inexact performance, one allows for a looser definition: two occurrences o a  and o b , with initial events e s     a     ,i     a    and e s     b     ,i     b    respectively, and length m, are considered simultaneous if and only if ∀j, 0≦j≦m, e s     a     ,i     a+j    overlaps e s     b     ,i     b+j   . Two events e s     1     ,i     1    and e s     2     ,i     2    are, in turn, considered overlapping if they strictly intersect. It is easier to check for the non-intersecting relations—using the conventions and notations of Beek&#39;s  The Design and Experimental Analysis of Algorithms for Temporal Reasoning —e 2     1     ,i     1    before (b) e s     2     ,i     2    or the inverse (bi) (see FIG. 7):  
                     Intersects        (       e       s   1     ,     i   1         ,     e       s   2     ,     i   2           )       =                     (       b        (       e       s   1     ,     i   1         ,     e       s   2     ,     i   2           )       ⋁     bi        (       e       s   1     ,     i   1         ,     e       s   2     ,     i   2           )         )                   =                       (       Offset        [     e       s   1     ,     i   1         ]       &lt;     Onset        [     e       s   2     ,     i   2         ]         )     ⋀                                     (       Onset        [     e       s   1     ,     i   1         ]       &gt;     Offset        [     e       s   2     ,     i   2         ]         )                     (   15   )                               
 
         [0111]    Each occurrence of a pattern is checked against every other occurrence. Since occurrences are sorted on onset, one knows that if o i  and o j  are not doublings, where j&gt;i, o i  cannot double o k  for all k&gt;j. This provides a way of curtailing searches for doublings in the algorithm of the present invention (see FIG. 7).  
         [0112]    This doubling filtering occurs before all other calculations, and thus influences frequency. One, however, retains the doubling information, as it is a musical emphasis technique.  
         [0113]    Pattern Position  
         [0114]    Noting that significant themes are often introduced near the start of a piece, one also characterizes patterns according to the onset time of their first occurrence, or Onset[e stream[o     0     ],Index[o     0     ] ].  
         [0115]    Rating Patterns  
         [0116]    For each pattern P, parameter values are calculated. One is interested in comparing the importance of these patterns, and a convenient means of doing this is to calculate percentile values for each parameter in each pattern, corresponding to the percentage of patterns over which a given pattern is considered stronger for a particular parameter. These values are stored in a feature vector:  
                     F        (   P   )       =                〈     Plength   ,   Pduration   ,   PintervalCount   ,                                PundirectedIntervalCount   ,   Pdoublings   ,   Pfrequency   ,                              PrythmicDistance   ,   Pregister   ,   Pposition     〉                 (   16   )                               
 
         [0117]    One defines “stronger” as either “less than” or “greater than” depending on the parameter. Higher values are considered desirable for length, duration, interval counts, doublings and frequency; lower values are desirable for rhythmic distance, pattern position and register.  
         [0118]    The rating of pattern P, given some weighting of parameters W, is: 
         Rating[ P]←W·F ( P )  (17) 
         [0119]    Patterns are then sorted according to their Rating field. This sorted list is scanned from the highest to the lowest rated pattern until some pre-specified number (k) of note events has been returned. Often, the present invention (i.e., MME) will rate a sub-sequence of an important theme highly, but not the actual theme, owing to the fact that parts of a theme are more faithfully repeated than others. As such, MME will return an occurrence of a pattern with an added margin on either end, corresponding to some ratio g of the occurrences duration, and some ratio of the number of note events h, whichever ratio yields the tightest bound.  
         [0120]    In order to return a high number of patterns within k events, one uses a greedy algorithm to choose occurrences of patterns when they are added: whichever occurrence adds the least number of events is used.  
         [0121]    Output from MME is then a MIDI file consisting of a single channel of monophonic (single voice) note events, corresponding to important thematic material in the input piece.  
         [0122]    As described above, the method and system of the present invention rapidly searches digital score representations of music (e.g., MIDI) for patterns likely to be perceptually significant to a human listener. These patterns correspond to major themes in musical works. However, the invention can also be used for other patterns of interest (e.g., scale passages or “quotes” of other musical works within the score being analyzed). The method and system perform robustly across a broad range of musical genres, including “problematic” areas such as large-scale symphonic works and impressionistic music. The invention allows for the abstraction of musical data for the purposes of search, retrieval and analysis. Its efficiency makes it a practical tool for the cataloging of large databases of multimedia data.  
         [0123]    While embodiments of the invention have been illustrated and described, it is not intended that these embodiments illustrate and describe all possible forms of the invention. Rather, the words used in the specification are words of description rather than limitation, and it is understood that various changes may be made without departing from the spirit and scope of the invention.