throbber
(12)
`
`United States Patent
`Iwamura
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`US 6,188,010 B1
`Feb. 13, 2001
`
`US006188010B1
`
`(54) MUSIC SEARCH BY MELODY INPUT
`
`6,031,174 * 2/2000 Takabayashi ......................... .. 84/609
`
`(75) Inventor: Ryuichi Iwamura, San Diego, CA (US)
`_
`_
`(73) Asslgnees: Sony Corporatlon, Tokyo (JP); Sony
`Electronics, Inc., Park Ridge, NJ (US)
`
`OTHER PUBLICATIONS
`MIDISOFT Desktop Sheet Music 2.0 and MIDISOFT Stu
`dio 6.0 http://WWW.midisoft.com/upgrade.htm Apr. 10,
`1999'
`
`( * ) Notice:
`
`Under 35 U.S.C. 154(b), the term of this
`t
`t h 11 b
`t d d f
`0 d
`.
`pa en S a
`6 6X en 6
`or
`ays
`(21) Appl. NO.Z 09/429,260
`
`* cited by examiner
`
`Primary Examiner—Stanley J. WitkoWski
`74 Attorne , A em, or Firm—Blakel , Sokoloff, Ta lor &
`(Zagman LLPy g
`y
`y
`
`(51) Int. Cl. ............................ .. G09B 15/04, ClOH 1/26
`
`7
`
`.
`
`
`
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. (58) Field of Search ................... .. 84/609—614, 634—638, R
`
`
`
`Amethod to enable one to Search for a Song title When only
`
`
`
`An user to enter the melody in an easy to understand mannen A
`
`(56)
`
`84/477 R 478; 434/307 A remote music database With melody information is searched
`_
`for the melody entered by the user. using, for example, a
`References Clted
`peak or differential matching algorithm. Upon receiving a
`US PATENT DOCUMENTS
`search request, a database server, i.e., a remote computer,
`_
`WhlCh can be accessed by the user via a client PC, sends a
`5:402:39 * 3/1995 Nakashlma ct a1~ -
`Web page, for example, in HTML or Java containing the
`Z’WOJZO
`9/1997 Gr_eW1: ct al'l """""""""""" " 84/609
`search results to the client PC. The client PC receives and
`s’ggz’gmlg *
`41” 1998 Wms .y et a‘ '
`displays the search results on the monitor and exchanges
`,
`,
`/1999 Contois ............................ .. 84/609 X
`d t
`.th th
`S
`d
`1
`b 1
`d th
`h th
`5,895,876 * 4/1999 Moriyama . . . . .
`. . . . .. 84/609
`a a W1
`6 Server' on“ may a so 6 P aye
`mug 6
`5,925,843 * 7/1999 Miller 6161. ..
`.. 84/609
`Sound Card 10 Connected Speakers
`5,969,283 * 10/1999 Looney et al.
`.. 84/609
`5,986,200 * 11/1999 Curtin .................................. .. 84/609
`
`40 Claims, 8 Drawing Sheets
`
`SEARCH WINDOW
`
`Melody Search
`
`(
`
`PLAY ’
`
`(
`
`CLEAR ’
`
`2
`(SEARCH ’
`
`3
`
`4
`
`5
`
`Search Result
`
`Traiimerei R. Schumann
`
`f6
`
`Google Ex. 1012
`
`

`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 1 0f 8
`
`US 6,188,010 B1
`
`FIG- 1 SEARCH WINDOW
`
`Melody Search
`
`1
`
`Search Result
`Tra'Limerei R. Schumann
`
`[6
`
`Google Ex. 1012
`
`

`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 2 0f 8
`
`US 6,188,010 B1
`
`Jib
`
`"5.
`
`H1 .
`
`
`
`
`
`5oz .230 .EEEEtm .m
`
`7 v
`
`1 _ l
`
`IDFU.
`
`wv
`
`E
`J L l
`
`Google Ex. 1012
`
`

`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 3 0f 8
`
`US 6,188,010 B1
`
`PIANO ROLL wmnow (FUR ELISE)
`
`FIG. 4
`
`PIANO ROLL WINDOW (TRAUMEREI)
`
`FIG. 5
`
`Google Ex. 1012
`
`

`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 4 0f 8
`
`US 6,188,010 B1
`
`TRAUMEREI IN PIANO ROLL NOTATION
`
`O PEAK Q DIP
`
`6
`
`USER INPUT (TRAUMEREI)
`
`o PEAK 0 DIP
`
`F|G_ 7
`
`Google Ex. 1012
`
`

`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 5 0f 8
`
`US 6,188,010 B1
`
`Fla_ 8
`
`'
`
`|
`
`2
`
`Google Ex. 1012
`
`

`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 6 0f 8
`
`US 6,188,010 B1
`
`TRAUMEREI IN PIANO ROLL NOTATION
`
`17(F4)
`16(E4)
`
`FIG. 11
`
`USER INPUT (TRAUMEREI)
`
`FIG. 12
`
`Google Ex. 1012
`
`

`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 7 of 8
`
`US 6,188,010 B1
`
`
`
`_H_..%_$:.§_>>GH
`
`
`
`
`
`_sz.:3<s2__ue_a§§\$__.aozmofiflezmexoomGsun.2S_E_EEoca.253Emgm
`
`
`
`
`
`2.83»:.23.._2.=_<..:3...
`
`
`
`
`
`
`
`new>E=8mE_._n_SmoflmzcewmmmEo_._u8_omU.=~>>._on_xomm
`
`
`
`
`
`
`
`__+__________§__§_=,_=__fl__=_§___a
`
`EEEE
`
`I-
`
`
`
`‘xx _H__H=n_
`
`
`
`
`
`:m>o£$m.>4$__m=:EammEzmmm
`
`Google Ex. ‘I012
`
`Google Ex. 1012
`
`

`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 8 0f 8
`
`US 6,188,010 B1
`
`3. .2"
`
`ID
`
`VEME PmF\>
`
`Google Ex. 1012
`
`

`
`US 6,188,010 B1
`
`1
`MUSIC SEARCH BY MELODY INPUT
`
`BACKGROUND OF THE INVENTION
`
`1. Field of the Invention
`The present invention is directed to a mechanism for
`enabling the searching of songs by their melodies in sound
`?les such as midi ?les.
`2. Description of the Related Art
`In the prior art, if one knoWs a song melody, but not the
`artist or title, about the only Way to determine the title Would
`be to ask a person having knoWledge of the melody and title
`such as a person Who Works in a retail record/compact disc
`store. Existing music search capability available utiliZing the
`Internet usually requires at least a part of its title or com
`poser’s name.
`In US. Pat. No. 5.739.451. a hand held music reference
`device is described With song segments, typically stored as
`compressed MIDI ?les. as Well as titles, lyrics, artists and
`the like. HoWever, searching is generally performed by
`entering at least one of the title. lyrics, artist or the like Which
`is then searched. Reference is made to note structure com
`parator 62 and performing a melody line search utiliZing a
`note structure entered via directional keys. A note structure
`is de?ned as a series of relative note or pitch values. i.e., a
`melody line Which is rising, falling or remaining the same in
`pitch value. Comparator 62 operates to locate songs Which
`have the inputted note structure. Apparently, comparator 62
`is a microprocessor Which has been programmed to perform
`this function, the details of Which are not set forth as
`searching by note structure does not appear to be the
`preferred mechanism for performing a search. Also, the
`entering of a note structure as described in this patent
`provides a limited mechanism for enabling the comparator
`to locate a desired song since basing a search on rising,
`falling or remaining the same pitch values provides only
`limited information.
`In US. Pat. No. 5,402,339, a more sophisticated mecha
`nism is described for performing a search based on a
`melody. HoWever, to perform the search, a user must enter
`a string of note data items Which is a period and scale level
`of a single sound identi?ed by a musical note. To do this, the
`user must possess a high level of music knoWledge and
`sophistication, making the described mechanism unsuitable
`for use by the average person having a limited knoWledge of
`music. Further, period, i.e., note duration is very dif?cult to
`estimate, even for a user having a high level of music
`knoWledge.
`
`SUMMARY OF THE INVENTION
`
`A method and apparatus is disclosed to enable one to
`search for a song title When only its melody is knoWn. The
`invented music search alloWs a user to search a database and
`thereby obtain the title of the Work only With its melody as
`input to a search engine and a minimal knoWledge of music.
`The invention uses a piano roll music notation interface or
`a piano keyboard interface Which alloWs the user to enter the
`melody in an easy to understand manner. This invention
`assumes a user has access to a remote music database
`through, for eXample, the Internet using a personal computer
`(PC) Which functions as a client, With a PC keyboard,
`monitor, preferably a sound card, optionally a microphone
`and Internet or other netWork connection. Upon receiving a
`search request, the database server i.e., a remote computer,
`Which can be accessed by the user via the client PC, sends
`a Web pages for eXample, in HTML or Java containing the
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`2
`search results to the client PC. The client PC receives and
`displays the search results on the monitor and eXchanges
`data With the server. Sound may also be played through the
`sound card to connected speakers.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 shoWs a piano roll grid onto Which a melody may
`be entered.
`FIG. 2 is a portion of the Work entitled Fiir Elise in
`standard music notation.
`FIG. 3 is a portion of the Work entitled Traumerei in
`standard music notation.
`FIG. 4 illustrates a piano roll WindoW for the melody (F
`iir Elise) shoWn in FIG. 2.
`FIG. 5 illustrates a piano roll WindoW for the melody (Tr
`aumerei) shoWn in FIG. 3.
`FIG. 6 illustrates Traumerei in piano roll notation.
`FIG. 7 illustrates user input for Traumerei in piano roll
`notation.
`FIG. 8 illustrates a portion of the piano roll WindoW
`shoWing the selection of a particular block representing a
`note.
`FIG. 9 illustrates a portion of the piano roll WindoW
`shoWing the selection of a particular block representing a
`note With a duration tWice as long as the note shoWn in FIG.
`8.
`FIG. 10 illustrates a portion of the piano roll WindoW
`shoWing the selection of a particular block representing a
`note tWice as long as the note shoWn in FIG. 8 With a
`folloWing note With the same pitch.
`FIG. 11 illustrates user input for Traumerei in piano roll
`notation.
`FIG. 12 illustrates user input for Traumerei in piano roll
`notation.
`FIG. 13 illustrates an alternate interface for inputting a
`melody using a representation of a piano keyboard.
`FIG. 14 illustrates a melody having a repeated pattern
`
`DETAILED DESCRIPTION OF THE
`INVENTION
`
`FIG. 1 shoWs an eXample of a search interface according
`to the present invention. The interface includes piano roll
`grid 1, mouse or other pointing device cursor 2, play button
`3, clear button 4, search button 5, and search result WindoW
`6. Piano roll grid I has vertical scroll button 1a and hori
`Zontal scroll button 1b. Even if a user does not knoW
`traditional musical notation, With this piano roll input, the
`user can easily input a melody to search. This kind of music
`input interface is already used in existing music notation
`softWare. For eXample, a commercially available product
`knoWn as Midisoft Studio 6.0 utiliZes a piano roll input
`interface. See, http://WWW.midisoft.cornmupgrade.htm. In
`this case hoWever, the interface is used to create and edit
`music rather than to perform searches.
`The horiZontal aXis of the grid represents time and the
`vertical aXis of the grid indicates pitch. Each block repre
`sents a note. One block above represents a half note. If the
`current block is C, its upper block is C#.
`The user moves cursor 2 to a block to select it and then
`presses the mouse button. If the selected boX pitch is C4, a
`tone of C4 Will be generated by the soundcard of the PC and
`the user hears the tone. This tone feedback alloWs the user
`to correct the pitch easily. If the pitch is correct, the user
`
`Google Ex. 1012
`
`

`
`US 6,188,010 B1
`
`3
`releases the mouse button and that block is ?xed. If the pitch
`is Wrong, the user moves cursor 2 upward or doWnWard to
`?nd the correct pitch. To correct a ?xed block, the user
`moves the cursor onto the block and drags-and-drops it onto
`another block to correct the pitch. By dragging cursor 2 to
`the right, the user can prolong the duration of a note. For
`example, in FIG. 8, a block is chosen by moving cursor 2
`onto it. In FIG. 9, by continuing to press the mouse button,
`the user drags cursor 2 to the next rightmost block and
`releases the button. These tWo blocks, Which are solid,
`represent one note With duration 2. In FIG. 10, the third
`block is clicked. Because the mouse button has been
`released, this block, Which is hatched, is detected as a
`folloWing note With the same pitch. In this manner, the user
`inputs each note in the melody to search.
`When the user ?nishes the melody input, play button 3 is
`clicked. The Whole melody Which has been entered is
`generated by the soundcard in the PC and is heard through
`connected speakers. If the melody is correct, search button
`5 is selected to start the search. If the user Wants to delete all
`entries made in the piano roll grid, clear button 4 is clicked.
`In this search system, the duration of each note is ignored
`because it is difficult, if not impossible, for a user to input the
`correct duration. No rests (period of silence) are considered,
`either. For this reason, the user does not have to be con
`cerned about the duration of each note. HoWever, since it is
`easier for some users to enable each note to have at least an
`approximate duration to playback their input melody, if the
`user desires to input duration. such capability is provided.
`HoWever, duration information is not used to perform a
`search.
`FIG. 2 is the famous melody in “Fiir Elise” by L. V.
`Beethoven. FIG. 4 shoWs an example of piano roll notation
`for “Fiir Elise”. FIG. 3 is another example melody. “Tr
`aumerei” by R. Schumann. FIG. 5 is the piano roll notation
`for this melody. The user may input the melody in any key.
`The invented search system automatically shifts its key to ?t
`the data in the database as described in detail beloW. The
`user need only be concerned With pitch distance betWeen
`each note.
`For those Who are familiar With music notation, there are
`alternative input methods. A piano keyboard and a music
`sheet are displayed as shoWn in FIG. 13. The user chooses
`a key on keyboard 17 by pointing to the desired key With a
`cursor and clicking a mouse button. A corresponding note
`appears on the sheet 19. This kind of traditional input
`method may alternatively be employed. In this case, if a
`MIDI instrument is available. for example, a MIDI
`keyboard, it may be connected to the PC, and the user may
`enter a melody from the keyboard.
`The invented keyboard (or piano arid) interface is
`designed for on-line access. In order to generate a tone of
`each piano key, the netWork server sends the sound ?les to
`the client computer over the netWork. The client computer
`does not have to store the sound ?les. They Will be sent on
`demand in the preferred embodiment. There are several
`choices for sound ?les. One is a MIDI data ?le. The MIDI
`?le has only a pitch and duration values. So its siZe is very
`compact. It can be accessed over a netWork relatively
`quickly. A disadvantage is that the client computer must
`have a MIDI sound generator. Most UNIX computers have
`no MIDI generator. Thus, although a MIDI ?le is small,
`using MIDI limits the number of clients that can be used.
`Another solution is a Waveform ?le like a .au or .Wav ?le
`Which are Well knoWn sound ?le formats. Each Waveform
`?le is several Kbytes. 60-key data is about 250 kbytes. It is
`
`10
`
`15
`
`25
`
`45
`
`55
`
`65
`
`4
`larger than a MIDI Flle and thus takes more time to send.
`HoWever, no MIDI sound generator is required. Compared
`With a MIDI ?le, more clients can handle the Waveform ?les.
`Also, instead of a keyboard or piano grid input interface,
`a microphone can be used. The microphone receives the
`user’s voice (e.g., by humming) and converts it to an
`electronic signal. The signal is ampli?ed and analog-to
`digital converted. The digitiZed signal is analyZed in a CPU
`by a FFT (Fast Fourier Transform) algorithm according to
`Well knoWn techniques in Which FFT is used to analyZe
`sound by obtaining frequency spectrum information from
`Waveform data. The frequency of the voice is obtained and
`?nally a musical note that has the nearest pitch is selected.
`This kind of interface is already in practical use. For
`example, the folloWing Web pages describe softWare prod
`ucts With such an interface.
`http://WWW.medianavi.co.jp/product/hana/tk9907.html
`http://WWW.medianavi.co.jp/product/hana/step.html
`http://WWW.medianavi.co.jp/product/hana/step2.html
`http://WWW.medianavi.co.jp/product hana/step3.html
`Regardless of the input method employed, in the preferred
`embodiment. a user uses a broWser, such as Netscape
`Navigator available from America on Line installed on the
`client computer and performs the folloWing steps to do a
`search.
`(1) The client requests the search engine Web page (e,g.,.
`Java applet) over a netWork (e.g., the Internet).
`(2) The Web server receives the request and sends back the
`Web page data Which includes the user interface described
`above, Which is for example a Java applei and sound ?les.
`(3) T he client computer displays the Web page. The user
`enters the melody to search using any of the above
`described techniques or anv other suitable mechanism to
`enter the melody. The client computer sends the melody
`data to the Web server.
`(4) The Web server passes the melody data to a CGI
`(Common GateWay Interface) script. The CGI script is,
`for example, a Perl (Practical Extraction Report
`Language) script, an example of Which folloWs:
`
`# Melody Search Program
`if($ENV{QUERYiSTRING}) {
`$entered = $ENV{QUERYiSTRING};
`
`@searchiresult = ‘melodyisearchexe @melody’;
`print “Content-type: text/html\n\n”;
`print “<html>\n”;
`print “<head>\n”;
`print “<title>Melody Search Result</title>\n”;
`print “</head>\n”;
`print “<body>”;
`print “<H2>Melody Search Result </H2>\n”;
`print “<br>”;
`if($ENV{QUERYiSTRING}) {
`print “@searchiresult \n”;
`
`}
`
`(5) The CGI script calls the search program (the invented
`peak search program described beloW) and gives the
`melody data to it.
`(6) The search program searches the database and obtains
`the information about the entered melody.
`(7) The search program returns the search result to the CGI
`script.
`(8) The CGI script passes the result to the Web server.
`
`Google Ex. 1012
`
`

`
`US 6,188,010 B1
`
`5
`(9) The Web server returns the search result to the client. The
`client browser displays it.
`Most of the existing online search engines have a similar
`search process. The search engine as described is novel at
`least as to the following points.
`(a) The Web server provides a Java applet and sound ?les.
`So, the user can enter a melody While listening to play
`back. The user can use any Java-ready computer.
`(b) Fast Peak search. The peaks in all the melodies stored in
`the databases are marked in advance. For melody
`matching, the entered melody is time-shifted, as explained
`beloW, so that its peak matches each peak in the reference
`melody.
`The Music Melody Database
`A composer’s name and a music title are stored With its
`melody data in the database. If necessary, related
`information, for example, performers, history, background,
`can be linked to the database.
`The melody data may be stored as a MIDI ?le. When
`searched, its melody is extracted from the MIDI ?le and
`compared With the input melody. If search speed does not
`matter, this is a good solution because the user listens to the
`searched music by playing the MIDI ?le. The melody stored
`in the database could be not only the beginning of the
`melody, but also one or more famous phrases in the middle
`of the music.
`The folloWing is an example of a database structure for
`storing the foregoing information in C language notation.
`Each melody data is grouped With its composer ID and its
`title ID as folloWs. Here, up to 64 notes are stored for a
`melody. Of course, the siZe of the array used to store the
`melody may be adjusted up or doWn as desired, depending
`on the amount of storage available.
`
`struct melodyidatabase {
`int composeriID:
`int titleiID;
`int m[64]:
`
`Thus, a music database for that has 5000 classical melo
`dies Would be de?ned as folloWs:
`struct melodyidatabase DB[5000];
`Key Shift and Pattern Matching
`Composer-ID list and Title-ID list are shoWn beloW.
`DB[0] is assigned for “Traumerei”.
`3650 is stored in DB[0].composeriID. DB[0].titleiID is
`1720. The search engine ?nds that the entered melody
`matches DB[0] and obtains these tWo Ids. Then they are
`referred to the lists and the composer’s name “Schumann”
`and the title “Traumerei” are obtained.
`
`Composer-ID list
`
`Composer
`
`SCHEIN, Johann Hermann (1586-1630)
`SCHLICK, Arnolt (0. 1460-0. 1517)
`SCHOENBERG, Arnold (1874-1951)
`SCHUBERT, Franz Peter (1797-1828)
`SCHUBERT, Franz (1808-78)
`SCHUMANN, Robert Alexander (1810-56)
`SCHUTZ, Heinrich (1585-1672)
`SCRIABIN, Alexander (1872-1915)
`SERMISY, Claudin de (01490-1562)
`SGAMBATI, Giovanni (1841-1914)
`
`ID
`
`3600
`3610
`3620
`3630
`3640
`3650
`3660
`3670
`3680
`3690
`
`6
`
`-continued
`
`Title-ID list
`
`ID
`
`Title
`
`1710
`1720
`1730
`1740
`1750
`1760
`
`Toccata, Op. 7
`Traumerei (Kinderszenen Op. 15)
`Fantasia in C, Op. 17
`Arabeske, Op. 18
`Novelettes No. 6, Op. 21
`Romance No. 2, Op. 28
`
`Apitch number is assigned to each key as shoWn in Table
`1.
`
`TABLE 1
`
`Key
`
`Value Key
`
`Value Key
`
`Value Key
`
`Value
`
`C1
`C #1
`D1
`D #1
`E1
`F1
`F #1
`G1
`G #1
`A1
`A #1
`B1
`
`36
`37
`38
`39
`40
`41
`42
`43
`44
`45
`46
`47
`
`C2
`C #2
`D2
`D #2
`E2
`F2
`F #2
`G2
`G #2
`A2
`A #2
`B2
`
`48
`49
`50
`51
`52
`53
`54
`55
`56
`57
`58
`59
`
`C3
`C #3
`D3
`D #3
`E3
`F3
`F #3
`G3
`G #3
`A3
`A #3
`B3
`
`60
`61
`62
`63
`64
`65
`66
`67
`68
`69
`70
`71
`
`C4
`C #4
`D4
`D #4
`E4
`F4
`F #4
`G4
`G #4
`A4
`A #4
`B4
`
`72
`73
`74
`75
`76
`77
`78
`79
`80
`81
`82
`83
`
`Peak Search
`Traumerei starts With C3. Which has value 60. The ?rst 21
`notes are represented as A[0][0 .
`.
`. 21]={60, 65, 64, 65, 69,
`72, 77, 77, 76, 74, 72, 77, 67, 69, 70, 74, 65, 67, 69, 72, 67}.
`Note that these absolute pitch values need not be stored in
`the database. A difference betWeen tWo adjacent notes is
`stored to DB[
`(When no index is given to an array m[
`], it indicates the entire data of the array.) If the database has
`absolute pitch data, an entered melody must be key-shifted
`to each melody in the database. This is very time
`consuming. To avoid key-shift, absolute pitch data is con
`verted to relative pitch data and used for matching. Relative
`pitch data is obtained by the next formula.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`Absolute pitch data: a[i]
`
`Where 0 s i < m and m is the length of the melody.
`
`Relative pitch data: r[i] : a[i + l] — a[i] Where 0 s i < m — l.
`
`50
`
`55
`
`60
`
`65
`
`Traumerei’s relative pitch data is stored from DB[0].m[0]
`to DB[0].m[20].
`DB[0].m[0 .
`.
`. 20]={5, —1, 1, 4, 3, 5, 0, —1, —2, —2, 5, —10,
`2, 1, 4, —9, 2, 2, 3, —5}.
`In DB[0].m[21] and later, ?ll data such as 9999, is stored.
`The length of melody in the database is ?exible, Which in the
`example, is up to 64 bytes. It should be long enough to
`uniquely identify the melody.
`Peak notes are also detected and marked When the data
`base is built. Apeak note is de?ned as the note that is higher
`than or equal to each of the adjacent notes. When both of left
`and right note are equal to the note, ie when three con
`secutive notes have the same pitch, the center (second) note
`is not regarded as a peak. In FIGS. 6 and 7, a White dot
`indicates a peak note. In relative pitch notation, if the next
`value is positive or Zero and the next value is negative or
`Zero, the current value is marked as a peak. In case of a series
`
`Google Ex. 1012
`
`

`
`US 6,188,010 B1
`
`7
`of zeroes, only the ?rst Zero is marked. In the next
`representation, a peak is marked With an asterisk.
`DB[0].m[0 .
`.
`. 20]={*5, —1, 1, 4, 3, *5, *0, —1, —2, —2,
`*5, —10, 2, 1, 4, —9, 2, 2, 3, —5}.
`Similarly, the absolute pitch data of Fiir Elise is repre
`sented as
`. 16]={76, 75, 76, 75, 76, 71, 74, 72, 69, 60, 64,
`A[1][0. .
`69, 71, 64, 68, 71, 72}. DB[1].m[0 .
`.
`. 15] Will be DB[1].m
`bx;1[0...15]={—1, *1, —1, *1, —5, *3, —2, —2, —9, 4, 5, *2,
`—7, 4, 3, 1}.
`Assume that the user inputs a part of Traumerei into the
`piano roll grid as shoWn in FIG. 7. The user may enter a
`melody in any key. The ?rst note in FIG. 7 is C3, Which is
`60. (The actual pitch is F3.) Note that the user does not
`alWays enter a melody from the beginning correctly. In this
`case, the user has dropped the ?rst three notes. The pitch data
`of the entered melody is as folloWs.
`Ain[O .
`.
`. 10]={60, 64, 67, 72, 72, 71, 69, 67, 72, 62, 64}.
`The relative pitch data of Ain[ ] Will be
`
`15
`
`Next, Rin[ ] is time-shifted for matching. Rin[ ] Will be
`compared to DB[0].m[ Since the ?rst peak in Rin[ ] is
`Rin[2].,Rin[ ] is time-shifted (i.e, moving the array to the left
`or right, as appropriate) so that Rin[2] locates in the position
`of DB[0].m[0].
`
`25
`
`Each value beloW the line is an absolute difference of the
`tWo associated values. The values in un-overlapped area are
`neglected. The total absolute difference is
`
`When the tWo melodies completely match, the total absolute
`difference Will be Zero. The goal is to ?nd a reference
`melody that gives the least total absolute difference. Again,
`Rin[ ] is time-shifted (in this case, moved to the right) so that
`Rin[2] and DB[0].m[5] match.
`
`This time, the total absolute difference is Zero. The tWo
`melodies completely match. DB[O] is the melody the user is
`looking for. DB[0].composeriID and DB[0].titleiID are
`returned as a search result. The result is indicated in search
`result WindoW 6 in FIG. 1. In this manner, the entered
`melody is shifted to each peak in each reference melody and
`compared. The reference melody that gives the least differ
`ence is returned as a search result.
`To accelerate the search, computation of the total absolute
`difference can be stopped When it exceeds a certain limit.
`Linked Features
`If this database is linked to a music database that has
`complete music score data, searched music may be played
`automatically. For example, DB[0].titleiID may be linked
`to the MIDI ?le of Traumerei . The server sends the MIDI
`?le to the client PC and the client PC play it. Moreover, the
`result can be linked to the list Compact Disc on on-line CD
`shop. For example, all the CDs that includes Traumerei are
`shoWn on the display. By clicking one of them, it is sent to
`the shopping cart of on-line purchaser.
`
`35
`
`45
`
`55
`
`65
`
`8
`
`Variations
`Instead of a peak, a dip can be used. Adip note is indicated
`With a black dot in FIGS. 6 and 7.
`Also both peaks and dips may be used together. The
`number of peaks and dips in each reference melody are
`detected beforehand and a ?ag indicates Which are feWer in
`number. Before matching, this ?ag is detected and it is
`decided Which is to be used, peaks or dips. If dips are feWer
`than peaks, the entered melody is shifted so that the dip in
`the entered melody locates in the position of the dip in the
`reference melody. This method Will save computation time
`because search time greatly depends on the number of
`matching peaks or dips required to be made.
`Moreover, in order to further accelerate the search, the
`order of comparison may be considered for search speed
`improvement. It is most probable that the highest peak in the
`entered melody matches the highest one in the reference
`melody. Therefore, the highest peak is ?rst compared With
`the highest one in the reference melody and next compared
`With the second highest peak. For example, in Traumerei,
`there are four peaks, DB[0].m[0], DB[0].m[5], DB[0].m[6],
`and DB[0].m[10]. Their absolute pitch value are A[0][1],
`A[0][6], A[0][7],A[0][11]. They are respectively, 65, 77, 77,
`and 77. The highest peak in Traumerei is DB[0].m[5],
`DB[0].m[6], and DB[0].m[10]. DB[0].m[0] is the second
`highest. The height order is stored in the database before
`hand. The highest peak in the entered melody Rin[ ] is
`Rin[2], Rin[3], and Rin[7] are the highest and they are 72.
`For matching, the entered melody is shifted so that the
`Rin[2] locates in the same position of the highest peak
`DB[0].m[5], DB[0].m[6] and DB[0].m[10] respectively.
`After this match, the entered melody is shifted to the second
`highest peak DB[0].m[0].
`Instead of using a peak , a differential betWeen notes may
`also be used. The largest step-up in the input melody is
`detected. In relative pitch data DB[
`], the largest value
`indicates the largest step-up. In case of Traumerei,
`DB[0].m[15] is the largest step-up, Which is marked With a
`pound. The second largest step-up is marked With a double
`pound. In this Way, each step-up in the database is numbered
`in large step-up order.
`DB[0].m[0 .
`.
`. 20]={##5, —1, 1, 4, 3, ##5, 0, —1, —2, —2,
`##5, —10, 2, 1, 4, #9, 2, 2, 3, 5}
`Each step-up in the entered melody is also marked in the
`same Way When it is entered.
`Rin[O .
`.
`. 11]={4, 3, #5, 0, —1, —2, —2, #5, —10, 2}.
`The entered melody is shifted so that the largest entered
`step-up locates at the largest step-up in the reference melody.
`The absolute difference betWeen the tWo melodies are com
`puted as described above. If the largest step-up is done, the
`entered melody is shifted to the second largest step-up
`(marked With a double-pound) in the reference melody. In
`this Way, the entered melody is shifted to each step-up and
`compared. FIGS. 11 and 12 illustrate this step-up search.
`These ?gures have the same pattern as FIGS. 6 and 7
`respectively. Solid arroWs indicate the largest step-up in
`FIG. 12. It is ?ve steps. Instead of step-up, step-doWn data
`can be used. In FIGS. 11 and 12, a dotted arroW indicates the
`largest step-doWn.
`Instead of relative pitch data, the original absolute pitch
`data can be stored in the database and used for matching.
`The input melody is key-shifted so that the peaks in the input
`melody have the same pitch as each peak in the reference
`melody. This is done by comparing peaks in the input
`melody and reference melody, and then subtracting the
`difference from each subsequent note until the next peak,
`and then repeating for the second and each subsaequent
`
`Google Ex. 1012
`
`

`
`US 6,188,010 B1
`
`10
`Instead of the using these techniques to perform a string
`search, these search algorithms may be applied to
`perform melody searches.
`Further Search With A Wildcard
`When a regular search does not result in a good match,
`further searches using Wildcards can be performed. In a
`string search, a Wildcard like “?” is used instead of an
`uncertain character. The character “?” matches any charac
`ter. For example, if it desired to ?nd a three-letter Word
`Which starts With “a” and ends With “d”, the search keyWord
`entered Would be “a?d”. As a search result, “add”, “aid”,
`“and”, etc. Would be returned. Such a Wildcard can be
`introduced to music search according to the present inven
`tion. A problem is that the user may not knoW What note of
`the entered melody is Wrong. So, it is desirable that a search
`engine automatically searches With the modi?ed input
`melody. The invented search engine also has such input fault
`tolerance capability.
`First, in the case When string-search algorithm is used,
`assume that the user entered n notes as folloWs.
`
`. a[n])
`.
`(a[1], a[2], a[3] .
`The index of the array starts With 1 for simplicity. (Note
`that actual search uses not a[ ], but a relative difference
`betWeen tWo adjacent notes.)
`(1) Correction of a Wrong Pitch
`The search engine assumes one of the n notes has a Wrong
`pitch. The search engine replaces one of them With a
`Wildcard and tries a search. There are n variations. The
`database is searched n times. The modi?ed input melody is
`represented as follows.
`
`(‘2, a[2], a[3], .
`(a[1], ?, a[3], .
`
`.
`.
`
`. a[n])
`. a[n])
`
`peak. Adisadvantage of absolute pitch data is that a key-shift
`is required for every matching. An advantage is original
`absolute pitch data can be stored Without modi?cation. Also
`a MIDI ?le, Which includes pitch, duration, and other data,
`can be used although it takes time to analyZe MIDI format.
`Advantages of Peak Search
`(1) Search Speed
`Peak notes are approximately 20% of the total number of
`notes in a typical melody. That means search speed using
`peak notes is 20% of a brute force search Which shifts the
`entered melody, note by note. Also because relative pitch
`data is used, no key-shift is required to compare With each
`reference melody.
`(2) No Restriction on Incomplete Input
`The entered melody is shifted based on a peak note in the
`melody. Therefore, the user can start a melody With any note.
`In the above example, an exact result Was obtained even
`though the ?rst three notes of the melody Were dropped . The
`only restriction is that an entered melody must include at
`least one peak.
`(3) Input Fault Tolerance
`The user does not alWays enter the melody Without
`mistakes. Some notes could be dropped or given a Wrong
`pitch. So a search engine should have some input fault
`tolerance. If a peak note is correctly entered, this search
`engine Will ?nd the closest melody from the database. Even
`if a peak has a Wrong pitch, another peak can be used for the
`search. In the above example, assume Rin[2] has the Wrong
`pitch. In this case, no exact result is obtained. So, another
`search Will be done With the second peak Rin[7]. When
`Rin[7] is shifted to DB[0].m[10], the total absolute differ
`ence Will be a minimum and the correct result Will be
`obtained. (As described above, a dip can be used instead of
`a Wrong peak.) For these reasons, a correct search can be
`obtained notWithstanding inaccurate input from the user.
`(4) Flexibility on Search Area
`Some melodies have a repeated pattern as shoWn in FIG.
`14. In this melody, the second measure is identical to the ?rst
`one. TWo peaks are in the melody, but the secon

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket