US8847054B2 - Generating a synthesized melody - Google Patents

Generating a synthesized melody Download PDF

Info

Publication number
US8847054B2
US8847054B2 US13/887,076 US201313887076A US8847054B2 US 8847054 B2 US8847054 B2 US 8847054B2 US 201313887076 A US201313887076 A US 201313887076A US 8847054 B2 US8847054 B2 US 8847054B2
Authority
US
United States
Prior art keywords
tones
interpolation
guide
chord
generating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
US13/887,076
Other versions
US20140208924A1 (en
Inventor
Dhroova Aiylam
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US13/887,076 priority Critical patent/US8847054B2/en
Publication of US20140208924A1 publication Critical patent/US20140208924A1/en
Application granted granted Critical
Publication of US8847054B2 publication Critical patent/US8847054B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/36Accompaniment arrangements
    • G10H1/38Chord
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/0008Associated control or indicating means
    • G10H1/0025Automatic or semi-automatic music composition, e.g. producing random music, applying rules from music theory or modifying a musical piece
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2210/00Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
    • G10H2210/101Music Composition or musical creation; Tools or processes therefor
    • G10H2210/145Composing rules, e.g. harmonic or musical rules, for use in automatic composition; Rule generation algorithms therefor
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2210/00Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
    • G10H2210/571Chords; Chord sequences
    • G10H2210/576Chord progression
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2240/00Data organisation or data communication aspects, specifically adapted for electrophonic musical tools or instruments
    • G10H2240/171Transmission of musical instrument data, control or status information; Transmission, remote access or control of music data for electrophonic musical instruments
    • G10H2240/281Protocol or standard connector for transmission of analog or digital data to or from an electrophonic musical instrument
    • G10H2240/295Packet switched network, e.g. token ring
    • G10H2240/305Internet or TCP/IP protocol use for any electrophonic musical instrument data or musical parameter transmission purposes

Definitions

  • Algorithmic composition is a technique of using algorithms to generate music.
  • Various types of algorithms may be used in the generation of music, including, stochastic algorithms.
  • a stochastic algorithm includes a process that uses a collection of random variables to generate a random value.
  • stochastic algorithms including, e.g., Markov chains and Gaussian distributions.
  • a method performed by one or more processing devices includes receiving information indicative of an input chord progression, with the input chord progression comprising a plurality of chords; identifying chord changes in the plurality of chords; identifying, based on the chord changes, moving tones in the input chord progression; selecting, from the moving tones, guide tones that provide an outline of a harmony to be used in generating a synthesized melody; generating, based on the selected guide tones and one or more interpolation operations, interpolation tones for interpolation among the guide tones; and generating, based on interpolation of the interpolation tones with the guide tones, the synthesized melody.
  • generating the interpolation tones for interpolation among the guide tones comprises: generating, for a particular chord in the input chord progression, one or more interpolation tones for the particular chord in the input chord progression; and wherein the one or more interpolation tones generated for the particular chord are consonant with original tones included the particular chord.
  • the method includes identifying harmonic attributes of the chord progression; wherein selecting, from the moving tones, the guide tones comprises: selecting, from the moving tones, the guide tones; and selecting, from the harmonic attributes, guide attributes; and wherein generating, based on the interpolation of the interpolation tones with the guide tones, the synthesized melody comprises: generating, based on interpolation of the interpolation tones with the guide tones and based on one or more of the guide attributes, the synthesized melody.
  • the harmonic attributes comprise one or more of scale degrees and types of the plurality of chords in the chord progression and detected tension in the plurality of chords in the chord progression.
  • the input chord progression is for jazz music.
  • the method includes applying one or more interpolation operations to the guide tones; wherein generating, based on the selected guide tones, the interpolation tones for interpolation among the guide tones comprises: generating, based on applying the one or more interpolation operations to the guide tones, the interpolation tones for interpolation among the guide tones.
  • the one or more interpolation operations comprise one or more of a tone based interpolation operation, a harmonic based interpolation operation, a chord based interpolation operation, and a scale based interpolation operation.
  • the method includes retrieving a plurality of musical rules that promote melodious musical quality; applying the plurality of musical rules to attributes of the synthesized melody; determining, based on applying, a quality level value of the synthesized melody; and determining that the quality level value of the synthesized melody satisfies a quality threshold value.
  • one or more machine-readable media are configured to store instructions that are executable by one or more processing devices to perform operations including receiving information indicative of an input chord progression, with the input chord progression comprising a plurality of chords; identifying chord changes in the plurality of chords; identifying, based on the chord changes, moving tones in the input chord progression; selecting, from the moving tones, guide tones that provide an outline of a harmony to be used in generating a synthesized melody; generating, based on the selected guide tones and one or more interpolation operations, interpolation tones for interpolation among the guide tones; and generating, based on interpolation of the interpolation tones with the guide tones, the synthesized melody. Implementations of this aspect of the present disclosure can include one or more of the foregoing features.
  • an electronic system includes one or more processing devices; and one or more machine-readable media configured to store instructions that are executable by the one or more processing devices to perform operations including: receiving information indicative of an input chord progression, with the input chord progression comprising a plurality of chords; identifying chord changes in the plurality of chords; identifying, based on the chord changes, moving tones in the input chord progression; selecting, from the moving tones, guide tones that provide an outline of a harmony to be used in generating a synthesized melody; generating, based on the selected guide tones and one or more interpolation operations, interpolation tones for interpolation among the guide tones; and generating, based on interpolation of the interpolation tones with the guide tones, the synthesized melody. Implementations of this aspect of the present disclosure can include one or more of the foregoing features.
  • All or part of the foregoing can be implemented as a computer program product including instructions that are stored on one or more non-transitory machine-readable storage media, and that are executable on one or more processing devices. All or part of the foregoing can be implemented as an apparatus, method, or electronic system that can include one or more processing devices and memory to store executable instructions to implement the stated functions.
  • generated music outlines an input harmony (e.g., an input chord progression).
  • a user interface for implementing these techniques promotes user manageability.
  • the generated music sounds harmonious over various (e.g., specified) chord changes.
  • the generated music is distinct and varied over time.
  • FIGS. 1-3 illustrate examples of chords.
  • FIG. 4 is a block diagram of an example of a network environment for generating a synthesized melody.
  • FIG. 5 is a block diagram showing examples of components of a network environment for generating a synthesized melody.
  • FIG. 6 is a flowchart showing an example of a process for generating a synthesized melody.
  • FIG. 7 is a flowchart showing an example of a process for verifying the quality of a synthesized melody.
  • music includes a chord progression.
  • a chord progression includes a series of chords that are concatenated together.
  • a chord includes a collection of notes of a specific degree in a scale.
  • a note includes a symbol for a tone that indicates pitch of the tone by a position on a staff and duration of the tone by a shape of the note.
  • a scale includes a series of notes differing in pitch according to a specific scheme (e.g., within an octave).
  • a degree in a scale includes a name of a particular note of a scale in relation to a tonic (e.g., a note of the scale that is considered the most important, relative to importance of other notes in the scale).
  • the tonic is considered to be the first degree of the scale.
  • the major chord is built on the root (1 st tone), 3 rd (tone) and 5 th of the major scale.
  • the C major chord comprises the notes C, E, G.
  • the minor chord is built on the root, 3 rd and 5 th of the minor scale.
  • the C minor chord comprises the notes C, Eb, G.
  • the system performs harmonic analysis on an input chord progression, e.g., a chord progression that is input into the system. Based on the harmonic analysis, the system identifies moving tones in the chord changes for the input chord progression.
  • a moving tone includes a note whose motion characterizes a particular chord change in the progression.
  • a chord change includes a progression from one chord to another chord and may occur on an accented beat, so that chord changes may contribute to rhythm, meter and musical form of a chord progression.
  • the system selects guide tones.
  • a guide tone includes a tone that is used in generation of synthesized music. Using the selected guide tones, the system interpolates music through these guide tones.
  • the interpolated music includes interpolation tones, e.g., notes for interpolation among the guide tones.
  • interpolation tones are other notes to be inserted between guide tones.
  • the interpolation tones may include discrete tones and/or scale notes e.g., based on tensions detected in the input chord and results of the harmonic analysis on the input chord progression. Tensions are an attribute of the chord, not the progression.
  • the system for each chord in the input chord progression, the system generates interpolation tones that are a function of the guide tones, e.g., based on one or more guide tones for the chord. In this example, the system generates interpolation tones that are consonant with the corresponding chords.
  • the system By interpolating between the guide tones with the interpolation tones, the system generates a synthesized melody.
  • the synthesized melody differs from the input chord progression and sounds harmonious and reflects attributes of the input chord progression.
  • the input chord progression differs from an output chord progression.
  • the system confirms the quality of the synthesized melody by comparing attributes of the synthesized melody to various musical rules.
  • an attribute includes a quality and/or a characteristic.
  • a musical rule includes an instruction for determining whether an attribute of a melody or chord progression promotes various criteria for evaluating music, e.g., melodious harmony and so forth.
  • chord progression 100 includes chords 102 , 104 , 106 , 108 , 110 , 112 .
  • each of chords 102 , 104 , 106 , 108 , 110 , 112 include various notes.
  • each of chords 102 , 104 , 106 , 108 , 110 , 112 is a four note chord.
  • chord 102 includes notes 114 , 116 , 118 , 120 .
  • Chord 104 includes notes 130 , 132 , 134 , 136 .
  • Chord 106 includes notes 122 , 124 , 126 , 128 .
  • Chord 108 includes notes 138 , 140 , 142 , 144 .
  • Chord 110 includes notes 150 , 152 , 154 , 156 .
  • Chord 112 includes notes 158 , 160 , 162 , 164 .
  • chord progression 100 is an input chord progression that is used by the above-described system in generating a synthesized melody.
  • a guide note includes a visualization of a guide tone, e.g., a symbol that represents a guide tone.
  • guide notes 202 , 204 , 206 , 208 , 210 , 212 are selected.
  • guide notes 202 , 204 , 206 , 208 , 210 , 212 are the same as notes 114 , 130 , 122 , 138 , 150 , 158 , respectively.
  • synthesized melody 300 is generated using guide notes 202 , 204 , 206 , 208 , 210 , 212 .
  • Synthesized melody 300 includes guide notes 202 , 204 , 206 , 208 , 210 , 212 and interpolation notes 314 , 316 , 318 , 320 , 322 , 324 , 326 , 328 , 330 , 332 , 334 , 336 , 338 , 340 , 342 , 344 , 346 , 348 , 350 , 352 , 354 , 356 , 358 , 360 , 362 , 364 , 366 , 368 , 370 .
  • Synthesized melody 300 includes chords 302 , 304 , 306 , 308 , 310 , 312 .
  • chord 302 one or more of guide notes 202 , 204 , 206 , 208 , 210 , 212 are used in generating interpolation notes 314 , 316 , 318 and interpolating interpolation notes 314 , 316 , 318 relative to one or more of guide notes 202 , 204 , 206 , 208 , 210 , 212 .
  • Interpolation notes 314 , 316 , 318 , 320 , 322 , 324 , 326 , 328 , 330 , 332 , 334 , 336 , 338 , 340 , 342 , 344 , 346 , 348 , 350 , 352 , 354 , 356 , 358 , 360 , 362 , 364 , 366 , 368 , 370 are interpolated with guide notes 202 , 204 , 206 , 208 , 210 , 212 by determining a placement of the interpolation notes relative to guide notes and inserting these interpolation notes into chord progression 300 in accordance with the determined placement, as described in further detail below.
  • network environment 400 includes client device 402 , network 408 , improvisation system 410 , and data repository 424 .
  • Network environment 400 may include many thousands of data repositories, client devices, and improvisation systems, which are not shown.
  • client device 402 is associated with user 404 .
  • user 404 uses client device 402 to select input chord progression 406 .
  • client device 402 transmits input chord progression 406 (and/or information indicative of input chord progression 406 ) to improvisation system 410 .
  • Input chord progression 406 and information indicative of input chord progression 406 may collectively be referred to as input chord progression 406 , for purposes of convenience, and without limitation.
  • Client device 402 also transmits, to improvisation system 410 , a request to use input chord progression 406 in music synthesis, e.g., by generating synthesized melody 428 .
  • improvisation system 410 is configured to detect, in input chord progression, various musical elements, including, e.g., chords, notes, keys, scales, and so forth. In this example, improvisation system 410 detects various chord changes in input chord progression 406 . In an example, improvisation system 410 represents the various chord changes as a string of information, e.g., as a JFugue string (as described in further detail below). In this example, improvisation system 410 also detects a key of the input chord progression 406 . Changes in chord and key are passed as input to improvisation system 410 . Using the key and chord changes, improvisation system 410 performs harmonic analysis on input chord progression 406 .
  • various musical elements including, e.g., chords, notes, keys, scales, and so forth.
  • improvisation system 410 detects various chord changes in input chord progression 406 .
  • improvisation system 410 represents the various chord changes as a string of information, e.g., as a JFugue string
  • improvisation system 410 identifies attributes of input chord progression 406 and moving tones 430 of the various chord changes.
  • input chord progression 406 includes a set of tones.
  • moving tones 430 includes a subset of the tones in the set of tones in input chord progression 406 .
  • improvisation system 410 identifies moving tones 430 by comparing consecutive chord changes that are present in input chord progression 406 . When a pair of consecutive chords is voiced, several of the notes remain the same while other move slightly; these are the moving tones. In this example, improvisation system 410 uses moving tones 430 to determine how to voice chords with the left hand.
  • Improvisation system 410 also uses moving tones 430 in selecting guide tones 426 .
  • guide tones 426 provide an outline of a harmony to be used by improvisation system 410 in generating synthesized melody 428 .
  • improvisation system 410 also identifies various types of attributes of input chord progression 406 . Attributes include the scale degrees and chord types of the chords in progression 406 . Improvisation system 410 identifies the scale degrees from the key of input chord progression 406 . Scale degrees are identified from the key as follows. Within a given key, a note (and thus the root notes of the chords) have a corresponding scale degree. Based on the harmonic analysis, improvisation system 410 identifies the chords used in input chord progression 406 , scales that are harmonious over the chords used in input chord progression 406 , and the key of input chord progression 406 .
  • improvisation system 410 identifies guide tones 426 , e.g., from moving tones 430 included in input chord progression 406 .
  • guide tones 426 include a subset of a set of tones included in moving tones 430 .
  • improvisation system 410 synthesizes music that reflects the harmonic analysis.
  • improvisation system 410 generates synthesized melody 428 , which includes synthesized music that reflects the harmonic analysis of input chord progression 406 .
  • improvisation system 410 interpolates lines through guide tones 426 .
  • the line is the melodic line (sequence of notes) that the system generates.
  • interpolating among lines includes a process of fitting a series of appropriate notes between two guide tones.
  • the lines serve as a synthesized melody outline for synthesized melody 428 .
  • improvisation system 410 executes interpolation operations to generate interpolation tones.
  • an interpolation operation includes a series of instructions for generation of an interpolation tone.
  • an interpolation tone includes a tone that is at least partly based on a guide tone and that is interpolated between guide tones.
  • Interpolation tones are used to musically connect guide tones.
  • Improvisation system 410 executes various types of interpolation operations, including, e.g., a tone based interpolation operation, a chromatic interpolation operation, a chord based interpolation operation, a scale based interpolation operation, and so forth.
  • a tone based interpolation operation includes an interpolation operation, which selects interpolation tones from chord tones and chord tensions of a particular chord in the progression.
  • improvisation system 410 may execute a tone based interpolation operation that generates an interpolation tone by using chord tones and/or tensions to connect consecutive guide tones included in a particular chord and/or included in a series of chords.
  • the guide tones are connected by choosing some set of intermediary chord tones and tensions.
  • interpolation system 410 may execute a tone based interpolation operation that selects the guide tones at random and based on a closeness (e.g., a proximity) of the guide tones to each other.
  • the proximity of guide tones to each other is indicative of how musically relevant the guide tones are to a particular chord in input chord progression 406 .
  • the generated interpolation tones include chord tones and/or available tensions in chords of input chord progression 406 .
  • a chord based interpolation operation builds intervals and triads from chord and scale notes.
  • improvisation system 410 uses guide tones 426 in building triads on a chord scale of one of the chords in input chord progression 406 .
  • a triad includes a chord of three tones.
  • improvisation system 410 selects a plurality of guide tones 426 (e.g., three of guide tones 426 ), e.g., in a particular chord or among a series of chords.
  • improvisation system 410 builds the triad by chromatically connecting the selected guide tones.
  • Triads are built from a single guide note; the other notes of the triad are chosen from the chord scale.
  • the chord based interpolation operation is used to give a fuller sound to a synthesized melody.
  • a scale based interpolation operation includes an interpolation operation of generating interpolation notes by connecting guide tones using scales that are harmonious over a chord.
  • the guide tones are specific tones in a chord (e.g., a chord of input chord progression 406 ) and are included in a chord scale and in other functional scales.
  • Interpolation system 410 splits the chord scale into constituent tones, randomly rearranges the tones, and connects the tones to each other to generate a phrase (e.g., a series) of interpolation tones.
  • a chromatic interpolation operation includes an interpolation operation for generating an interpolation note for placement between guide tones.
  • improvisation system 410 selects as the interpolation note a note that may be played in phrase with the guide tones for a particular chord.
  • improvisation system 410 selects the chromatic interpolation operation when intervals among guide tones in a chord are small, e.g., relative to intervals among other guide tones in other chords. Based on the size of the interval between guide tones, different methods are used to interpolate harmonically. Methods for interpolation include the use of the chord scale, chromatic (stepwise) motion, chord tensions, and triads/intervals built from the chord scale.
  • improvisation system 410 selects interpolation operations (from a set of interpolation operations) by applying weighting rules 432 to the various interpolation operations.
  • weighting rules 432 are stored in data repository 424 and include a set of instructions for assigning a weighted value to an interpolation operation tone.
  • a weighted value (“weight”) includes information specifying an importance of one type of information relative to the importance of other types of information.
  • interpolation operations include interpolation operation 1, interpolation operation 2, interpolation operation 3, interpolation operation 4, and interpolation operation 5.
  • weighting rules 432 include an assignment of weights to the interpolation operations, as shown in the below Table 1.
  • the weights in the above Table 1 specify a percentage of the time in which particular interpolation operations are selected for use in generation interpolation tones, e.g., out of a predefined number of times that improvisation system 410 selects interpolation operations.
  • interpolation operation 1 is assigned a weight that specifies that interpolation operation 1 should be selected fifty percent of the times that synthesizer system 410 selects interpolation operations.
  • Interpolation operations 2 and 3 are assigned weights that specify that interpolation operation 2 and/or interpolation operation 3 should be selected thirty percent of the times that improvisation system 410 selects interpolation operations.
  • Interpolation operations 4 and 5 are assigned weights that specify that interpolation operation 4 and/or interpolation operation 5 should be selected twenty percent of the times that improvisation system 410 selects interpolation operations.
  • improvisation system 410 executes weighting rules 432 to assign weights to interpolation operations.
  • weights are assigned to interpolation operations in accordance with weighting rules 432 , as specified in Table 1.
  • improvisation system 410 selects an interpolation operation for use in generating an interpolation tone.
  • a particular interpolation operation is selected in accordance with the weights assigned to the interpolation operations, e.g., to promote a selection of interpolation operations that is in accordance with the percentages specified in Table 1.
  • improvisation system 410 reserves portions of synthesized melody 428 for rests and articulation.
  • articulation includes a musical direction performance technique that affects the transition or continuity on a single note or between multiple notes or sounds.
  • Some articulation marks include a slur, a phrase mark, staccato, staccatissimo, accent, sforzando, rinforzand, and legato.
  • Each articulation is represented by a different symbol placed above or below the note (depending on its position on the staff).
  • improvisation system 410 replaces a reserved portion in synthesized melody 428 with either a rest or an articulation symbol. Improvisation system 410 randomly selects whether to insert a rest or an articulation symbol into the reserved portion.
  • improvisation system 410 identifies the various chords included in input chord progression 406 . For each chord, improvisation system 410 identifies one or more guide tones. Using the identified one or more guide tones, improvisation system 410 generates interpolation tones for each of the chords. Improvisation system 410 generates the interpolation tones by implementing one or more of a tone based interpolation operation, a chromatic interpolation operation, a chord based interpolation operation, and a scale based interpolation operation. In an example, improvisation system 410 randomly selects one of the interpolation operations for execution. In another example, improvisation system 410 selects one of the interpolation operations for execution based on results of the harmonic analysis. Interpolation methods are pseudorandom, e.g., depending in part on the length of the interval (gap) between the two guide tones.
  • improvisation system 410 determines a total number of interpolation tones to be generated based on a time signature of input chord progression 406 . For each chord in input chord progression 406 , improvisation system 410 determines a number of interpolation tones for the chord. For each pair of consecutive guide tones, improvisation system 410 generates the determined number of interpolation tones for use between those guide tones.
  • improvisation system 410 uses guide tones 426 in generating interpolation tones.
  • improvisation system 410 interpolates lines through guide tones 426 .
  • improvisation system 410 interpolates the lines by choosing an interpolation method (to be described in more detail later) and following the appropriate procedure.
  • improvisation system 410 generates a synthesized melody by combining the interpolation tones and the guide tones into a melody, e.g., in accordance with a specified order for the interpolation tones and the guide tones.
  • improvisation system 410 implements a library (not shown) for causing synthesized melody 428 to be played for user 404 .
  • the library may include the Java programming language and JFugue libraries.
  • improvisation system 410 may generate a JFugue string, e.g., a string of information representative of tones that is formatted in accordance with specifications for the JFugue libraries.
  • the library converts a string of information (e.g., a JFugue string) into audible sound.
  • the string of information that is passed to the library represents synthesized melody 428 .
  • the string may include the following information: C5maj7w, which specifies various chords and notes to be played.
  • improvisation system 410 is configured to determine a quality of synthesized melody 428 , e.g., by comparing synthesized melody 428 against a set of musical rules that dictate improvisation.
  • improvisation system 410 verifies that synthesized melody 428 possesses a predefined amount of harmonic quality (e.g., sounds good) and further verifies that synthesized melody 428 possesses a predefined amount of musical variation (e.g., a lack of repetition in the chords and tones used in synthesized melody 428 ).
  • improvisation system 410 retrieves, from data repository 424 , a plurality of musical rules that promote melodious musical quality.
  • the musical rules promote melodious musical quality by specifying various criteria, including, e.g., a synthesized melody sounds good, a synthesized melody is varied relative to other synthesized melody, a synthesized melody reflects the chord changes of an input chord progression, and so forth.
  • the musical rules include instructions for evaluating each of these criteria for a synthesized melody and for selecting attributes of a synthesized melody that may be used in evaluating these criteria.
  • improvisation system 410 applies the plurality of musical rules to attributes of synthesized melody 428 .
  • Improvisation system 410 determines, based on applying the musical rules, a quality level value of synthesized melody 428 .
  • the musical rules may include instructions for generating an overall quality level value, e.g., based on assessment of the individual criteria.
  • Improvisation system 410 also determines whether the quality level value of synthesized melody 428 satisfies a quality threshold value, e.g., a value indicative of a predefined amount of quality. If the quality level value satisfies the quality threshold value, improvisation system 410 causes synthesized melody 428 to be played for user 404 .
  • a quality threshold value e.g., a value indicative of a predefined amount of quality.
  • improvisation system 410 If the quality level value fails to satisfy the quality threshold value, improvisation system 410 generates another synthesized melody, e.g., by selecting different moving tones and/or to harmonic attributes. In this example, improvisation system 410 selects guide tones that differ from guide tones 426 , e.g., based on selection of different moving tones. Using the different guide tones, improvisation system 410 generates a new synthesized melody that differs from synthesized melody 428 . Using the above-described techniques, improvisation system 410 determines if the quality level value of the new synthesized melody satisfies the quality threshold value.
  • the quality level value may be a value based on one or more of the individual criteria.
  • a quality level value may be indicative of an amount of repetition in a synthesized melody.
  • the quality threshold value is indicative of an amount of repetition that may occur in a chord progression.
  • jazz music is appropriate for use as an input chord progression in generating a synthesized melody.
  • Various attributes of jazz music make jazz music appropriate.
  • jazz music is inherently an improvisational style; a standard jazz recording will play through the (short) melody once, maybe twice, and then have the performers improvise solos for the vast majority of the remaining time.
  • FIG. 5 is a block diagram showing examples of components of network environment 400 for generating a synthesized melody.
  • Client device 402 can be any sort of computing device capable of taking input from a user and communicating over network 408 with improvisation system 410 and/or with other client devices.
  • client device 402 can be a mobile device, a desktop computer, a laptop, a cell phone, a personal digital assistant (“PDA”), a server, an embedded computing system, and so forth.
  • PDA personal digital assistant
  • Improvisation system 410 can be any of a variety of computing devices capable of receiving data, such as a server, a distributed computing system, a desktop computer, a laptop, a cell phone, a rack-mounted server, and so forth. Improvisation system 410 may be a single server or a group of servers that are at a same location or at different locations.
  • Improvisation system 410 can receive data from client device 402 via input/output (“I/O”) interface 500 .
  • I/O interface 500 can be any type of interface capable of receiving data over a network, such as an Ethernet interface, a wireless networking interface, a fiber-optic networking interface, a modem, and so forth.
  • Improvisation system 410 also includes a processing device 506 and memory 502 .
  • a bus system 504 including, for example, a data bus and a motherboard, can be used to establish and to control data communication between the components of improvisation system 410 .
  • the illustrated processing device 506 may include one or more microprocessors. Generally, processing device 506 may include any appropriate processor and/or logic that is capable of receiving and storing data, and of communicating over a network (not shown).
  • Memory 502 can include a hard drive and a random access memory storage device, such as a dynamic random access memory, or other types of non-transitory machine-readable storage devices.
  • Memory 502 stores computer programs (not shown) that are executable by processing device 506 to perform the techniques described herein.
  • FIG. 6 is a flowchart showing an example of process 600 for generating a synthesized melody, including, e.g., synthesized melody 428 .
  • improvisation system 410 receives ( 602 ) an input chord progression.
  • improvisation system 410 receives input chord progression 406 from client device 402 .
  • improvisation system 410 identifies ( 604 ) moving tones and harmonic attributes in input chord progression 406 .
  • improvisation system 410 retrieves ( 606 ) weighted values from data repository 424 , e.g., by retrieving weighting rules 432 .
  • Improvisation system 410 applies ( 608 ) the weighted values to various interpolation operations.
  • improvisation system 410 selects ( 610 ) an interpolation operation. Improvisation system 410 also selects one or more of the moving tones as guide tones and one or more of the harmonic attributes as guide attributes, using the above-described techniques. Using the guide tones and the selected interpolation operation, improvisation system 410 generates ( 612 ) interpolation tones for interpolation among the guide tones and one or more the guide attributes. In this example, improvisation system 410 generates synthesized melody 428 through combining (e.g., interpolating) the interpolation tones, the guide tones and one or more the guide attributes.
  • FIG. 7 is a flowchart showing an example of a process 700 for verifying the quality of a synthesized melody.
  • improvisation system 410 accesses ( 702 ), from data repository 424 , musical rules. Improvisation system 410 also compares ( 704 ) attributes of the synthesized melody to the musical rules. Based on the comparison, improvisation system 410 determines ( 706 ) a quality level value of the synthesized melody. In this example, improvisation system 410 determines ( 708 ) whether the quality level value satisfies the quality threshold value. In an example, improvisation system 410 determines that the quality level value fails to satisfy the quality threshold value.
  • improvisation system 410 re-generates ( 710 ) the synthesized melody, e.g., by varying the weighted values applied to the interpolation operations and/or by selecting different moving tones and/or the harmonic attributes. In another example, improvisation system 410 determines that the quality level value satisfies the quality threshold value. In this example, improvisation system 410 causes ( 718 ) a rendering (e.g., a playing) of the synthesized melody for a user of improvisation system 410 .
  • a rendering e.g., a playing
  • a system is configured to perform harmonic analysis on an input chord progression. Based on results of the harmonic analysis, the system is further configured to identify moving tones and harmonic attributes of the input chord progression. From the moving tones, the system identifies one or more guide tones. The system generates a synthesized melody by interpolating tones among the guide tones and by using one or more of the harmonic attributes to select the interpolation tones.
  • Embodiments can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations thereof.
  • An apparatus can be implemented in a computer program product tangibly embodied or stored in a machine-readable storage device for execution by a programmable processor; and method actions can be performed by a programmable processor executing a program of instructions to perform functions by operating on input data and generating output.
  • the embodiments described herein, and other embodiments of the invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device.
  • Each computer program can be implemented in a high-level procedural or object oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language.
  • processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer.
  • a processor will receive instructions and data from a read-only memory or a random-access memory or both.
  • the essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data.
  • a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks.
  • Computer readable media for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks.
  • semiconductor memory devices e.g., EPROM, EEPROM, and flash memory devices
  • magnetic disks e.g., internal hard disks or removable disks
  • magneto optical disks e.g., CD ROM and DVD-ROM disks.
  • the processor and the memory can be supplemented by, or incorporated in special purpose logic circuitry. Any of the foregoing can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
  • ASICs application-specific integrated circuits
  • embodiments can be implemented on a computer having a display device, e.g., a LCD (liquid crystal display) monitor, for displaying data to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer.
  • a display device e.g., a LCD (liquid crystal display) monitor
  • a keyboard and a pointing device e.g., a mouse or a trackball
  • Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
  • Embodiments can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of embodiments, or any combination of such back end, middleware, or front end components.
  • the components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet.
  • LAN local area network
  • WAN wide area network
  • the system and method or parts thereof may use the “World Wide Web” (Web or WWW), which is that collection of servers on the Internet that utilize the Hypertext Transfer Protocol (HTTP).
  • HTTP is a known application protocol that provides users access to resources, which may be data in different formats such as text, graphics, images, sound, video, Hypertext Markup Language (HTML), as well as programs.
  • the client computer Upon specification of a link by the user, the client computer makes a TCP/IP request to a Web server and receives data, which may be another Web page that is formatted according to HTML. Users can also access other pages on the same or other servers by following instructions on the screen, entering certain data, or clicking on selected icons.
  • any type of selection device known to those skilled in the art such as check boxes, drop-down boxes, and the like, may be used for embodiments using web pages to allow a user to select options for a given component.
  • Servers run on a variety of platforms, including UNIX machines, although other platforms, such as Windows 2000/2003, Windows NT, Sun, Linux, and Macintosh may also be used.
  • Computer users can view data available on servers or networks on the Web through the use of browsing software, such as Firefox, Netscape Navigator, Microsoft Internet Explorer, or Mosaic browsers.
  • the computing system can include clients and servers.
  • a client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

Abstract

A method performed by one or more processing devices includes receiving information indicative of an input chord progression, with the input chord progression comprising a plurality of chords; identifying chord changes in the plurality of chords; identifying, based on the chord changes, moving tones in the input chord progression; selecting, from the moving tones, guide tones that provide an outline of a harmony to be used in generating a synthesized melody; generating, based on the selected guide tones and one or more interpolation operations, interpolation tones for interpolation among the guide tones; and generating, based on interpolation of the interpolation tones with the guide tones, the synthesized melody.

Description

CLAIM OF PRIORITY
This application claims priority under 35 U.S.C. §119(e) to provisional U.S. Patent Application 61/759,005, filed on Jan. 31, 2013, the entire contents of which are hereby incorporated by reference.
BACKGROUND
Algorithmic composition is a technique of using algorithms to generate music. Various types of algorithms may be used in the generation of music, including, stochastic algorithms. Generally, a stochastic algorithm includes a process that uses a collection of random variables to generate a random value. There are various types of stochastic algorithms, including, e.g., Markov chains and Gaussian distributions.
SUMMARY
In one aspect of the present disclosure, a method performed by one or more processing devices includes receiving information indicative of an input chord progression, with the input chord progression comprising a plurality of chords; identifying chord changes in the plurality of chords; identifying, based on the chord changes, moving tones in the input chord progression; selecting, from the moving tones, guide tones that provide an outline of a harmony to be used in generating a synthesized melody; generating, based on the selected guide tones and one or more interpolation operations, interpolation tones for interpolation among the guide tones; and generating, based on interpolation of the interpolation tones with the guide tones, the synthesized melody.
Implementations of the disclosure can include one or more of the following features. In some implementations, generating the interpolation tones for interpolation among the guide tones comprises: generating, for a particular chord in the input chord progression, one or more interpolation tones for the particular chord in the input chord progression; and wherein the one or more interpolation tones generated for the particular chord are consonant with original tones included the particular chord. In other implementations, the method includes identifying harmonic attributes of the chord progression; wherein selecting, from the moving tones, the guide tones comprises: selecting, from the moving tones, the guide tones; and selecting, from the harmonic attributes, guide attributes; and wherein generating, based on the interpolation of the interpolation tones with the guide tones, the synthesized melody comprises: generating, based on interpolation of the interpolation tones with the guide tones and based on one or more of the guide attributes, the synthesized melody.
In other implementations, the harmonic attributes comprise one or more of scale degrees and types of the plurality of chords in the chord progression and detected tension in the plurality of chords in the chord progression. In still other implementations, the input chord progression is for jazz music. In some implementations, the method includes applying one or more interpolation operations to the guide tones; wherein generating, based on the selected guide tones, the interpolation tones for interpolation among the guide tones comprises: generating, based on applying the one or more interpolation operations to the guide tones, the interpolation tones for interpolation among the guide tones. In still other implementations, the one or more interpolation operations comprise one or more of a tone based interpolation operation, a harmonic based interpolation operation, a chord based interpolation operation, and a scale based interpolation operation.
In some implementations, the method includes retrieving a plurality of musical rules that promote melodious musical quality; applying the plurality of musical rules to attributes of the synthesized melody; determining, based on applying, a quality level value of the synthesized melody; and determining that the quality level value of the synthesized melody satisfies a quality threshold value.
In still another aspect of the disclosure, one or more machine-readable media are configured to store instructions that are executable by one or more processing devices to perform operations including receiving information indicative of an input chord progression, with the input chord progression comprising a plurality of chords; identifying chord changes in the plurality of chords; identifying, based on the chord changes, moving tones in the input chord progression; selecting, from the moving tones, guide tones that provide an outline of a harmony to be used in generating a synthesized melody; generating, based on the selected guide tones and one or more interpolation operations, interpolation tones for interpolation among the guide tones; and generating, based on interpolation of the interpolation tones with the guide tones, the synthesized melody. Implementations of this aspect of the present disclosure can include one or more of the foregoing features.
In still another aspect of the disclosure, an electronic system includes one or more processing devices; and one or more machine-readable media configured to store instructions that are executable by the one or more processing devices to perform operations including: receiving information indicative of an input chord progression, with the input chord progression comprising a plurality of chords; identifying chord changes in the plurality of chords; identifying, based on the chord changes, moving tones in the input chord progression; selecting, from the moving tones, guide tones that provide an outline of a harmony to be used in generating a synthesized melody; generating, based on the selected guide tones and one or more interpolation operations, interpolation tones for interpolation among the guide tones; and generating, based on interpolation of the interpolation tones with the guide tones, the synthesized melody. Implementations of this aspect of the present disclosure can include one or more of the foregoing features.
All or part of the foregoing can be implemented as a computer program product including instructions that are stored on one or more non-transitory machine-readable storage media, and that are executable on one or more processing devices. All or part of the foregoing can be implemented as an apparatus, method, or electronic system that can include one or more processing devices and memory to store executable instructions to implement the stated functions.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Various advantages are associated with the techniques described herein. For example, generated music outlines an input harmony (e.g., an input chord progression). A user interface for implementing these techniques promotes user manageability. The generated music sounds harmonious over various (e.g., specified) chord changes. Also the generated music is distinct and varied over time. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
FIGS. 1-3 illustrate examples of chords.
FIG. 4 is a block diagram of an example of a network environment for generating a synthesized melody.
FIG. 5 is a block diagram showing examples of components of a network environment for generating a synthesized melody.
FIG. 6 is a flowchart showing an example of a process for generating a synthesized melody.
FIG. 7 is a flowchart showing an example of a process for verifying the quality of a synthesized melody.
DETAILED DESCRIPTION
A system consistent with this disclosure improvises over and performs harmonic analysis on music (e.g., jazz music). In an example, music includes a chord progression. Generally, a chord progression includes a series of chords that are concatenated together. Generally, a chord includes a collection of notes of a specific degree in a scale. Generally, a note includes a symbol for a tone that indicates pitch of the tone by a position on a staff and duration of the tone by a shape of the note. Generally, a scale includes a series of notes differing in pitch according to a specific scheme (e.g., within an octave). Generally, a degree in a scale includes a name of a particular note of a scale in relation to a tonic (e.g., a note of the scale that is considered the most important, relative to importance of other notes in the scale). In an example, the tonic is considered to be the first degree of the scale. For example, the major chord is built on the root (1st tone), 3rd (tone) and 5th of the major scale. The C major chord comprises the notes C, E, G. The minor chord is built on the root, 3rd and 5th of the minor scale. The C minor chord comprises the notes C, Eb, G.
In an example, the system performs harmonic analysis on an input chord progression, e.g., a chord progression that is input into the system. Based on the harmonic analysis, the system identifies moving tones in the chord changes for the input chord progression. Generally, a moving tone includes a note whose motion characterizes a particular chord change in the progression. Generally, a chord change includes a progression from one chord to another chord and may occur on an accented beat, so that chord changes may contribute to rhythm, meter and musical form of a chord progression. From the moving tones, the system selects guide tones. Generally, a guide tone includes a tone that is used in generation of synthesized music. Using the selected guide tones, the system interpolates music through these guide tones. In an example, the interpolated music includes interpolation tones, e.g., notes for interpolation among the guide tones. In an example, interpolation tones are other notes to be inserted between guide tones. For example, the interpolation tones may include discrete tones and/or scale notes e.g., based on tensions detected in the input chord and results of the harmonic analysis on the input chord progression. Tensions are an attribute of the chord, not the progression. In an example, for each chord in the input chord progression, the system generates interpolation tones that are a function of the guide tones, e.g., based on one or more guide tones for the chord. In this example, the system generates interpolation tones that are consonant with the corresponding chords.
By interpolating between the guide tones with the interpolation tones, the system generates a synthesized melody. The synthesized melody differs from the input chord progression and sounds harmonious and reflects attributes of the input chord progression. In an example, the input chord progression differs from an output chord progression. In an example, the system confirms the quality of the synthesized melody by comparing attributes of the synthesized melody to various musical rules. Generally, an attribute includes a quality and/or a characteristic. Generally, a musical rule includes an instruction for determining whether an attribute of a melody or chord progression promotes various criteria for evaluating music, e.g., melodious harmony and so forth.
Referring to FIG. 1, chord progression 100 includes chords 102, 104, 106, 108, 110, 112. In this example, each of chords 102, 104, 106, 108, 110, 112 include various notes. In the example of FIG. 1, each of chords 102, 104, 106, 108, 110, 112 is a four note chord. For example, chord 102 includes notes 114, 116, 118, 120. Chord 104 includes notes 130, 132, 134, 136. Chord 106 includes notes 122, 124, 126, 128. Chord 108 includes notes 138, 140, 142, 144. Chord 110 includes notes 150, 152, 154, 156. Chord 112 includes notes 158, 160, 162, 164. In this example, chord progression 100 is an input chord progression that is used by the above-described system in generating a synthesized melody.
From the notes in chords 102, 104, 106, 108, 110, 112 of chord progression 100, various guide notes are selected. Generally, a guide note includes a visualization of a guide tone, e.g., a symbol that represents a guide tone. Referring to FIG. 2, guide notes 202, 204, 206, 208, 210, 212 are selected. In this example, guide notes 202, 204, 206, 208, 210, 212 are the same as notes 114, 130, 122, 138, 150, 158, respectively.
Referring to FIG. 3, synthesized melody 300 is generated using guide notes 202, 204, 206, 208, 210, 212. Synthesized melody 300 includes guide notes 202, 204, 206, 208, 210, 212 and interpolation notes 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370. Synthesized melody 300 includes chords 302, 304, 306, 308, 310, 312. For chord 302, one or more of guide notes 202, 204, 206, 208, 210, 212 are used in generating interpolation notes 314, 316, 318 and interpolating interpolation notes 314, 316, 318 relative to one or more of guide notes 202, 204, 206, 208, 210, 212. Interpolation notes 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370 are interpolated with guide notes 202, 204, 206, 208, 210, 212 by determining a placement of the interpolation notes relative to guide notes and inserting these interpolation notes into chord progression 300 in accordance with the determined placement, as described in further detail below.
Referring to FIG. 4, network environment 400 includes client device 402, network 408, improvisation system 410, and data repository 424. Network environment 400 may include many thousands of data repositories, client devices, and improvisation systems, which are not shown.
In the example of FIG. 4, client device 402 is associated with user 404. In this example, user 404 uses client device 402 to select input chord progression 406. Following the selection, client device 402 transmits input chord progression 406 (and/or information indicative of input chord progression 406) to improvisation system 410. Input chord progression 406 and information indicative of input chord progression 406 may collectively be referred to as input chord progression 406, for purposes of convenience, and without limitation. Client device 402 also transmits, to improvisation system 410, a request to use input chord progression 406 in music synthesis, e.g., by generating synthesized melody 428.
In an example, improvisation system 410 is configured to detect, in input chord progression, various musical elements, including, e.g., chords, notes, keys, scales, and so forth. In this example, improvisation system 410 detects various chord changes in input chord progression 406. In an example, improvisation system 410 represents the various chord changes as a string of information, e.g., as a JFugue string (as described in further detail below). In this example, improvisation system 410 also detects a key of the input chord progression 406. Changes in chord and key are passed as input to improvisation system 410. Using the key and chord changes, improvisation system 410 performs harmonic analysis on input chord progression 406. In performing harmonic analysis, improvisation system 410 identifies attributes of input chord progression 406 and moving tones 430 of the various chord changes. In an example, input chord progression 406 includes a set of tones. In this example, moving tones 430 includes a subset of the tones in the set of tones in input chord progression 406. In an example, improvisation system 410 identifies moving tones 430 by comparing consecutive chord changes that are present in input chord progression 406. When a pair of consecutive chords is voiced, several of the notes remain the same while other move slightly; these are the moving tones. In this example, improvisation system 410 uses moving tones 430 to determine how to voice chords with the left hand. Voicing a chord is choosing an arrangement of its notes (possibly including tensions) to play. Improvisation system 410 also uses moving tones 430 in selecting guide tones 426. As described in further detail below, guide tones 426 provide an outline of a harmony to be used by improvisation system 410 in generating synthesized melody 428.
During harmonic analysis, improvisation system 410 also identifies various types of attributes of input chord progression 406. Attributes include the scale degrees and chord types of the chords in progression 406. Improvisation system 410 identifies the scale degrees from the key of input chord progression 406. Scale degrees are identified from the key as follows. Within a given key, a note (and thus the root notes of the chords) have a corresponding scale degree. Based on the harmonic analysis, improvisation system 410 identifies the chords used in input chord progression 406, scales that are harmonious over the chords used in input chord progression 406, and the key of input chord progression 406.
Based on results of the harmonic analysis, improvisation system 410 identifies guide tones 426, e.g., from moving tones 430 included in input chord progression 406. In an example, guide tones 426 include a subset of a set of tones included in moving tones 430.
Using guide tones 426, improvisation system 410 synthesizes music that reflects the harmonic analysis. In an example, improvisation system 410 generates synthesized melody 428, which includes synthesized music that reflects the harmonic analysis of input chord progression 406.
In the example of FIG. 4, improvisation system 410 interpolates lines through guide tones 426. The line is the melodic line (sequence of notes) that the system generates. In an example, interpolating among lines includes a process of fitting a series of appropriate notes between two guide tones. The lines serve as a synthesized melody outline for synthesized melody 428. Using guide tones 426 and the interpolated lines, improvisation system 410 executes interpolation operations to generate interpolation tones. Generally, an interpolation operation includes a series of instructions for generation of an interpolation tone. Generally, an interpolation tone includes a tone that is at least partly based on a guide tone and that is interpolated between guide tones. Interpolation tones are used to musically connect guide tones. Improvisation system 410 executes various types of interpolation operations, including, e.g., a tone based interpolation operation, a chromatic interpolation operation, a chord based interpolation operation, a scale based interpolation operation, and so forth. Generally, a tone based interpolation operation includes an interpolation operation, which selects interpolation tones from chord tones and chord tensions of a particular chord in the progression.
For example, improvisation system 410 may execute a tone based interpolation operation that generates an interpolation tone by using chord tones and/or tensions to connect consecutive guide tones included in a particular chord and/or included in a series of chords. In this example, the guide tones are connected by choosing some set of intermediary chord tones and tensions. In another example, interpolation system 410 may execute a tone based interpolation operation that selects the guide tones at random and based on a closeness (e.g., a proximity) of the guide tones to each other. In an example, the proximity of guide tones to each other is indicative of how musically relevant the guide tones are to a particular chord in input chord progression 406. The generated interpolation tones include chord tones and/or available tensions in chords of input chord progression 406.
Generally, a chord based interpolation operation builds intervals and triads from chord and scale notes. In this example, improvisation system 410 uses guide tones 426 in building triads on a chord scale of one of the chords in input chord progression 406. Generally, a triad includes a chord of three tones. For example, improvisation system 410 selects a plurality of guide tones 426 (e.g., three of guide tones 426), e.g., in a particular chord or among a series of chords. Using the guide tones, improvisation system 410 builds the triad by chromatically connecting the selected guide tones. Triads are built from a single guide note; the other notes of the triad are chosen from the chord scale. In this example, the chord based interpolation operation is used to give a fuller sound to a synthesized melody. Generally, a scale based interpolation operation includes an interpolation operation of generating interpolation notes by connecting guide tones using scales that are harmonious over a chord. In an example, the guide tones are specific tones in a chord (e.g., a chord of input chord progression 406) and are included in a chord scale and in other functional scales. Interpolation system 410 splits the chord scale into constituent tones, randomly rearranges the tones, and connects the tones to each other to generate a phrase (e.g., a series) of interpolation tones.
Generally, a chromatic interpolation operation includes an interpolation operation for generating an interpolation note for placement between guide tones. In this example, improvisation system 410 selects as the interpolation note a note that may be played in phrase with the guide tones for a particular chord. In an example, improvisation system 410 selects the chromatic interpolation operation when intervals among guide tones in a chord are small, e.g., relative to intervals among other guide tones in other chords. Based on the size of the interval between guide tones, different methods are used to interpolate harmonically. Methods for interpolation include the use of the chord scale, chromatic (stepwise) motion, chord tensions, and triads/intervals built from the chord scale.
In an example, improvisation system 410 selects interpolation operations (from a set of interpolation operations) by applying weighting rules 432 to the various interpolation operations. Generally, weighting rules 432 are stored in data repository 424 and include a set of instructions for assigning a weighted value to an interpolation operation tone. Generally, a weighted value (“weight”) includes information specifying an importance of one type of information relative to the importance of other types of information.
In an example, interpolation operations include interpolation operation 1, interpolation operation 2, interpolation operation 3, interpolation operation 4, and interpolation operation 5. In this example, weighting rules 432 include an assignment of weights to the interpolation operations, as shown in the below Table 1.
TABLE 1
Interpolation operation Weight
Interpolation operation 1 50%
Interpolation operations 2 and 3 30%
Interpolation operations 4 and 5 20%
The weights in the above Table 1 specify a percentage of the time in which particular interpolation operations are selected for use in generation interpolation tones, e.g., out of a predefined number of times that improvisation system 410 selects interpolation operations. For example, as shown in the above Table 1, interpolation operation 1 is assigned a weight that specifies that interpolation operation 1 should be selected fifty percent of the times that synthesizer system 410 selects interpolation operations. Interpolation operations 2 and 3 are assigned weights that specify that interpolation operation 2 and/or interpolation operation 3 should be selected thirty percent of the times that improvisation system 410 selects interpolation operations. Interpolation operations 4 and 5 are assigned weights that specify that interpolation operation 4 and/or interpolation operation 5 should be selected twenty percent of the times that improvisation system 410 selects interpolation operations.
In an example, improvisation system 410 executes weighting rules 432 to assign weights to interpolation operations. In this example, weights are assigned to interpolation operations in accordance with weighting rules 432, as specified in Table 1. Based on the various weights assigned to interpolation operations, improvisation system 410 selects an interpolation operation for use in generating an interpolation tone. A particular interpolation operation is selected in accordance with the weights assigned to the interpolation operations, e.g., to promote a selection of interpolation operations that is in accordance with the percentages specified in Table 1.
In an example, improvisation system 410 reserves portions of synthesized melody 428 for rests and articulation. Generally, articulation includes a musical direction performance technique that affects the transition or continuity on a single note or between multiple notes or sounds. There are many types of articulation, with each having a different effect on how a note is played. Some articulation marks include a slur, a phrase mark, staccato, staccatissimo, accent, sforzando, rinforzand, and legato. Each articulation is represented by a different symbol placed above or below the note (depending on its position on the staff). In this example, improvisation system 410 replaces a reserved portion in synthesized melody 428 with either a rest or an articulation symbol. Improvisation system 410 randomly selects whether to insert a rest or an articulation symbol into the reserved portion.
In an example, improvisation system 410 identifies the various chords included in input chord progression 406. For each chord, improvisation system 410 identifies one or more guide tones. Using the identified one or more guide tones, improvisation system 410 generates interpolation tones for each of the chords. Improvisation system 410 generates the interpolation tones by implementing one or more of a tone based interpolation operation, a chromatic interpolation operation, a chord based interpolation operation, and a scale based interpolation operation. In an example, improvisation system 410 randomly selects one of the interpolation operations for execution. In another example, improvisation system 410 selects one of the interpolation operations for execution based on results of the harmonic analysis. Interpolation methods are pseudorandom, e.g., depending in part on the length of the interval (gap) between the two guide tones.
In an example, improvisation system 410 determines a total number of interpolation tones to be generated based on a time signature of input chord progression 406. For each chord in input chord progression 406, improvisation system 410 determines a number of interpolation tones for the chord. For each pair of consecutive guide tones, improvisation system 410 generates the determined number of interpolation tones for use between those guide tones.
Using guide tones 426, improvisation system 410 generates synthesized music that reflects the harmonic analysis of input chord progression 406. As previously described, improvisation system 410 uses guide tones 426 in generating interpolation tones. As also previously described, improvisation system 410 interpolates lines through guide tones 426. In this example, improvisation system 410 interpolates the lines by choosing an interpolation method (to be described in more detail later) and following the appropriate procedure. In this example, improvisation system 410 generates a synthesized melody by combining the interpolation tones and the guide tones into a melody, e.g., in accordance with a specified order for the interpolation tones and the guide tones.
In an example, improvisation system 410 implements a library (not shown) for causing synthesized melody 428 to be played for user 404. In an example, the library may include the Java programming language and JFugue libraries. Using the JFugue libraries, improvisation system 410 may generate a JFugue string, e.g., a string of information representative of tones that is formatted in accordance with specifications for the JFugue libraries. In this example, the library converts a string of information (e.g., a JFugue string) into audible sound. In this example, the string of information that is passed to the library represents synthesized melody 428. For example, the string may include the following information: C5maj7w, which specifies various chords and notes to be played. In an example, improvisation system 410 is configured to determine a quality of synthesized melody 428, e.g., by comparing synthesized melody 428 against a set of musical rules that dictate improvisation. In this example, improvisation system 410 verifies that synthesized melody 428 possesses a predefined amount of harmonic quality (e.g., sounds good) and further verifies that synthesized melody 428 possesses a predefined amount of musical variation (e.g., a lack of repetition in the chords and tones used in synthesized melody 428). In this example, improvisation system 410 retrieves, from data repository 424, a plurality of musical rules that promote melodious musical quality. In this example, the musical rules promote melodious musical quality by specifying various criteria, including, e.g., a synthesized melody sounds good, a synthesized melody is varied relative to other synthesized melody, a synthesized melody reflects the chord changes of an input chord progression, and so forth. In this example, the musical rules include instructions for evaluating each of these criteria for a synthesized melody and for selecting attributes of a synthesized melody that may be used in evaluating these criteria.
In this example, improvisation system 410 applies the plurality of musical rules to attributes of synthesized melody 428. Improvisation system 410 determines, based on applying the musical rules, a quality level value of synthesized melody 428. For example, the musical rules may include instructions for generating an overall quality level value, e.g., based on assessment of the individual criteria. Improvisation system 410 also determines whether the quality level value of synthesized melody 428 satisfies a quality threshold value, e.g., a value indicative of a predefined amount of quality. If the quality level value satisfies the quality threshold value, improvisation system 410 causes synthesized melody 428 to be played for user 404.
If the quality level value fails to satisfy the quality threshold value, improvisation system 410 generates another synthesized melody, e.g., by selecting different moving tones and/or to harmonic attributes. In this example, improvisation system 410 selects guide tones that differ from guide tones 426, e.g., based on selection of different moving tones. Using the different guide tones, improvisation system 410 generates a new synthesized melody that differs from synthesized melody 428. Using the above-described techniques, improvisation system 410 determines if the quality level value of the new synthesized melody satisfies the quality threshold value.
In still another example, the quality level value may be a value based on one or more of the individual criteria. For example, a quality level value may be indicative of an amount of repetition in a synthesized melody. In this example, the quality threshold value is indicative of an amount of repetition that may occur in a chord progression.
In an example, jazz music is appropriate for use as an input chord progression in generating a synthesized melody. Various attributes of jazz music make jazz music appropriate. Jazz music is inherently an improvisational style; a standard jazz recording will play through the (short) melody once, maybe twice, and then have the performers improvise solos for the vast majority of the remaining time.
FIG. 5 is a block diagram showing examples of components of network environment 400 for generating a synthesized melody. Client device 402 can be any sort of computing device capable of taking input from a user and communicating over network 408 with improvisation system 410 and/or with other client devices. For example, client device 402 can be a mobile device, a desktop computer, a laptop, a cell phone, a personal digital assistant (“PDA”), a server, an embedded computing system, and so forth.
Improvisation system 410 can be any of a variety of computing devices capable of receiving data, such as a server, a distributed computing system, a desktop computer, a laptop, a cell phone, a rack-mounted server, and so forth. Improvisation system 410 may be a single server or a group of servers that are at a same location or at different locations.
Improvisation system 410 can receive data from client device 402 via input/output (“I/O”) interface 500. I/O interface 500 can be any type of interface capable of receiving data over a network, such as an Ethernet interface, a wireless networking interface, a fiber-optic networking interface, a modem, and so forth. Improvisation system 410 also includes a processing device 506 and memory 502. A bus system 504, including, for example, a data bus and a motherboard, can be used to establish and to control data communication between the components of improvisation system 410.
The illustrated processing device 506 may include one or more microprocessors. Generally, processing device 506 may include any appropriate processor and/or logic that is capable of receiving and storing data, and of communicating over a network (not shown). Memory 502 can include a hard drive and a random access memory storage device, such as a dynamic random access memory, or other types of non-transitory machine-readable storage devices. Memory 502 stores computer programs (not shown) that are executable by processing device 506 to perform the techniques described herein.
FIG. 6 is a flowchart showing an example of process 600 for generating a synthesized melody, including, e.g., synthesized melody 428. In operation, improvisation system 410 receives (602) an input chord progression. For example, improvisation system 410 receives input chord progression 406 from client device 402. In this example, improvisation system 410 identifies (604) moving tones and harmonic attributes in input chord progression 406. In the example of FIG. 6, improvisation system 410 retrieves (606) weighted values from data repository 424, e.g., by retrieving weighting rules 432. Improvisation system 410 applies (608) the weighted values to various interpolation operations.
Based on application of the weighted values, improvisation system 410 selects (610) an interpolation operation. Improvisation system 410 also selects one or more of the moving tones as guide tones and one or more of the harmonic attributes as guide attributes, using the above-described techniques. Using the guide tones and the selected interpolation operation, improvisation system 410 generates (612) interpolation tones for interpolation among the guide tones and one or more the guide attributes. In this example, improvisation system 410 generates synthesized melody 428 through combining (e.g., interpolating) the interpolation tones, the guide tones and one or more the guide attributes.
FIG. 7 is a flowchart showing an example of a process 700 for verifying the quality of a synthesized melody. In operation, improvisation system 410 accesses (702), from data repository 424, musical rules. Improvisation system 410 also compares (704) attributes of the synthesized melody to the musical rules. Based on the comparison, improvisation system 410 determines (706) a quality level value of the synthesized melody. In this example, improvisation system 410 determines (708) whether the quality level value satisfies the quality threshold value. In an example, improvisation system 410 determines that the quality level value fails to satisfy the quality threshold value. In this example, improvisation system 410 re-generates (710) the synthesized melody, e.g., by varying the weighted values applied to the interpolation operations and/or by selecting different moving tones and/or the harmonic attributes. In another example, improvisation system 410 determines that the quality level value satisfies the quality threshold value. In this example, improvisation system 410 causes (718) a rendering (e.g., a playing) of the synthesized melody for a user of improvisation system 410.
Using the techniques described herein, a system is configured to perform harmonic analysis on an input chord progression. Based on results of the harmonic analysis, the system is further configured to identify moving tones and harmonic attributes of the input chord progression. From the moving tones, the system identifies one or more guide tones. The system generates a synthesized melody by interpolating tones among the guide tones and by using one or more of the harmonic attributes to select the interpolation tones.
Embodiments can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations thereof. An apparatus can be implemented in a computer program product tangibly embodied or stored in a machine-readable storage device for execution by a programmable processor; and method actions can be performed by a programmable processor executing a program of instructions to perform functions by operating on input data and generating output. The embodiments described herein, and other embodiments of the invention, can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program can be implemented in a high-level procedural or object oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language.
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random-access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. Computer readable media for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in special purpose logic circuitry. Any of the foregoing can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
To provide for interaction with a user, embodiments can be implemented on a computer having a display device, e.g., a LCD (liquid crystal display) monitor, for displaying data to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
Embodiments can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of embodiments, or any combination of such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet.
The system and method or parts thereof may use the “World Wide Web” (Web or WWW), which is that collection of servers on the Internet that utilize the Hypertext Transfer Protocol (HTTP). HTTP is a known application protocol that provides users access to resources, which may be data in different formats such as text, graphics, images, sound, video, Hypertext Markup Language (HTML), as well as programs. Upon specification of a link by the user, the client computer makes a TCP/IP request to a Web server and receives data, which may be another Web page that is formatted according to HTML. Users can also access other pages on the same or other servers by following instructions on the screen, entering certain data, or clicking on selected icons. It should also be noted that any type of selection device known to those skilled in the art, such as check boxes, drop-down boxes, and the like, may be used for embodiments using web pages to allow a user to select options for a given component. Servers run on a variety of platforms, including UNIX machines, although other platforms, such as Windows 2000/2003, Windows NT, Sun, Linux, and Macintosh may also be used. Computer users can view data available on servers or networks on the Web through the use of browsing software, such as Firefox, Netscape Navigator, Microsoft Internet Explorer, or Mosaic browsers. The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
Other embodiments are within the scope and spirit of the description claims. Additionally, due to the nature of software, functions described above can be implemented using software, hardware, firmware, hardwiring, or combinations of any of these. Features implementing functions may also be physically located at various positions, including being distributed such that portions of functions are implemented at different physical locations. The use of the term “a” herein and throughout the application is not used in a limiting manner and therefore is not meant to exclude a multiple meaning or a “one or more” meaning for the term “a.” Additionally, to the extent priority is claimed to a provisional patent application, it should be understood that the provisional patent application is not limiting but includes examples of how the techniques described herein may be implemented.
A number of exemplary embodiments of the invention have been described. Nevertheless, it will be understood by one of ordinary skill in the art that various modifications may be made without departing from the spirit and scope of the invention.

Claims (20)

What is claimed is:
1. A method performed by one or more processing devices, comprising:
receiving, by one or more computer systems, information indicative of an input chord progression, with the input chord progression comprising a plurality of chords;
identifying, by the one or more computer systems, chord changes in the plurality of chords;
identifying, by the one or more computer systems based on the chord changes, moving tones in the input chord progression;
selecting, by the one or more computer systems from the moving tones, guide tones that guide formation of a synthesized variation of the input chord progression;
generating, by the one or more computer systems based on the guide tones, an outline of a harmony for a synthesized melody;
wherein the outline comprises (i) the guide tones, and (ii) areas between the guide tones, with the areas between the guide tones being designated for insertion of interpolation tones;
generating, by the one or more computer systems based on the selected guide tones and one or more interpolation operations, the interpolation tones for interpolation among the guide tones;
populating the areas in the outline that are between the guide tones with the interpolation tones to interpolate the interpolation tones among the guide tones in the outline; and
generating, based on interpolation of the interpolation tones with the guide tones, the synthesized melody.
2. The method of claim 1, wherein generating the interpolation tones for interpolation among the guide tones comprises:
generating, for a particular chord in the input chord progression, one or more interpolation tones for the particular chord in the input chord progression;
wherein the one or more interpolation tones generated for the particular chord are consonant with original tones included the particular chord.
3. The method of claim 1, further comprising:
identifying harmonic attributes of the chord progression;
wherein selecting, from the moving tones, the guide tones comprises:
selecting, from the moving tones, the guide tones; and
selecting, from the harmonic attributes, guide attributes; and
wherein generating, based on the interpolation of the interpolation tones with the guide tones, the synthesized melody comprises:
generating, based on interpolation of the interpolation tones with the guide tones and based on one or more of the guide attributes, the synthesized melody.
4. The method of claim 3, wherein the harmonic attributes comprise one or more of scale degrees and types of the plurality of chords in the chord progression and detected tension in the plurality of chords in the chord progression.
5. The method of claim 1, wherein the input chord progression is for jazz music.
6. The method of claim 1, further comprising:
applying one or more interpolation operations to the guide tones;
wherein generating, based on the selected guide tones, the interpolation tones for interpolation among the guide tones comprises:
generating, based on applying the one or more interpolation operations to the guide tones, the interpolation tones for interpolation among the guide tones.
7. The method of claim 6, wherein the one or more interpolation operations comprise one or more of a tone based interpolation operation, a harmonic based interpolation operation, a chord based interpolation operation, and a scale based interpolation operation.
8. The method of claim 1, further comprising:
retrieving a plurality of musical rules that promote melodious musical quality;
applying the plurality of musical rules to attributes of the synthesized melody;
determining, based on applying, a quality level value of the synthesized melody; and
determining that the quality level value of the synthesized melody satisfies a quality threshold value.
9. One or more machine-readable media storing instructions that are executable by one or more processing devices to perform operations comprising:
receiving information indicative of an input chord progression, with the input chord progression comprising a plurality of chords;
identifying chord changes in the plurality of chords;
identifying, based on the chord changes, moving tones in the input chord progression;
selecting, from the moving tones, guide tones that guide formation of a synthesized variation of the input chord progression;
generating, based on the guide tones, an outline of a harmony for a synthesized melody;
wherein the outline comprises (i) the guide tones, and (ii) areas between the guide tones, with the areas between the guide tones being designated for insertion of interpolation tones;
generating, based on the selected guide tones and one or more interpolation operations, the interpolation tones for interpolation among the guide tones;
populating the areas in the outline that are between the guide tones with the interpolation tones to interpolate the interpolation tones among the guide tones in the outline; and
generating, based on interpolation of the interpolation tones with the guide tones, the synthesized melody.
10. The one or more machine-readable media of claim 9, wherein generating the interpolation tones for interpolation among the guide tones comprises:
generating, for a particular chord in the input chord progression, one or more interpolation tones for the particular chord in the input chord progression; and
wherein the one or more interpolation tones generated for the particular chord are consonant with original tones included the particular chord.
11. The one or more machine-readable media of claim 9, wherein the operations further comprise:
identifying harmonic attributes of the chord progression;
wherein selecting, from the moving tones, the guide tones comprises:
selecting, from the moving tones, the guide tones; and
selecting, from the harmonic attributes, guide attributes; and
wherein generating, based on the interpolation of the interpolation tones with the guide tones, the synthesized melody comprises:
generating, based on interpolation of the interpolation tones with the guide tones and based on one or more of the guide attributes, the synthesized melody.
12. The one or more machine-readable media of claim 11, wherein the harmonic attributes comprise one or more of scale degrees and types of the plurality of chords in the chord progression and detected tension in the plurality of chords in the chord progression.
13. The one or more machine-readable media of claim 9, wherein the input chord progression is for jazz music.
14. The one or more machine-readable media of claim 9, wherein the operations further comprise
applying one or more interpolation operations to the guide tones;
wherein generating, based on the selected guide tones, the interpolation tones for interpolation among the guide tones comprises:
generating, based on applying the one or more interpolation operations to the guide tones, the interpolation tones for interpolation among the guide tones.
15. An electronic system comprising:
one or more processing devices; and
one or more machine-readable media storing instructions that are executable by the one or more processing devices to perform operations comprising:
receiving information indicative of an input chord progression, with the input chord progression comprising a plurality of chords;
identifying chord changes in the plurality of chords;
identifying, based on the chord changes, moving tones in the input chord progression;
selecting, from the moving tones, guide tones that guide formation of a synthesized variation of the input chord progression;
generating, based on the guide tones, an outline of a harmony for a synthesized melody;
wherein the outline comprises (i) the guide tones, and (ii) areas between the guide tones, with the areas between the guide tones being designated for insertion of interpolation tones;
generating, based on the selected guide tones and one or more interpolation operations, the interpolation tones for interpolation among the guide tones;
populating the areas in the outline that are between the guide tones with the interpolation tones to interpolate the interpolation tones among the guide tones in the outline; and
generating, based on interpolation of the interpolation tones with the guide tones, the synthesized melody.
16. The electronic system of claim 15, wherein generating the interpolation tones for interpolation among the guide tones comprises:
generating, for a particular chord in the input chord progression, one or more interpolation tones for the particular chord in the input chord progression; and
wherein the one or more interpolation tones generated for the particular chord are consonant with original tones included the particular chord.
17. The electronic system of claim 15, wherein the operations further comprise:
identifying harmonic attributes of the chord progression;
wherein selecting, from the moving tones, the guide tones comprises:
selecting, from the moving tones, the guide tones; and
selecting, from the harmonic attributes, guide attributes; and
wherein generating, based on the interpolation of the interpolation tones with the guide tones, the synthesized melody comprises:
generating, based on interpolation of the interpolation tones with the guide tones and based on one or more of the guide attributes, the synthesized melody.
18. The electronic system of claim 17, wherein the harmonic attributes comprise one or more of scale degrees and types of the plurality of chords in the chord progression and detected tension in the plurality of chords in the chord progression.
19. The electronic system of claim 15, wherein the input chord progression is for jazz music.
20. The electronic system of claim 15, wherein the operations further comprise
applying one or more interpolation operations to the guide tones;
wherein generating, based on the selected guide tones, the interpolation tones for interpolation among the guide tones comprises:
generating, based on applying the one or more interpolation operations to the guide tones, the interpolation tones for interpolation among the guide tones.
US13/887,076 2013-01-31 2013-05-03 Generating a synthesized melody Expired - Fee Related US8847054B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/887,076 US8847054B2 (en) 2013-01-31 2013-05-03 Generating a synthesized melody

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361759005P 2013-01-31 2013-01-31
US13/887,076 US8847054B2 (en) 2013-01-31 2013-05-03 Generating a synthesized melody

Publications (2)

Publication Number Publication Date
US20140208924A1 US20140208924A1 (en) 2014-07-31
US8847054B2 true US8847054B2 (en) 2014-09-30

Family

ID=51221506

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/887,076 Expired - Fee Related US8847054B2 (en) 2013-01-31 2013-05-03 Generating a synthesized melody

Country Status (1)

Country Link
US (1) US8847054B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132983B2 (en) 2014-08-20 2021-09-28 Steven Heckenlively Music yielder with conformance to requisites

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201411601A (en) * 2012-09-13 2014-03-16 Univ Nat Taiwan Method for automatic accompaniment generation based on emotion
US10002597B2 (en) * 2014-04-14 2018-06-19 Brown University System for electronically generating music
US10409814B2 (en) * 2017-01-26 2019-09-10 International Business Machines Corporation Network common data form data management
JP7069819B2 (en) * 2018-02-23 2022-05-18 ヤマハ株式会社 Code identification method, code identification device and program

Citations (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4926737A (en) * 1987-04-08 1990-05-22 Casio Computer Co., Ltd. Automatic composer using input motif information
US4982642A (en) 1989-05-26 1991-01-08 Brother Kogyo Kabushiki Kaisha Metronome for electronic instruments
US5179240A (en) * 1988-12-26 1993-01-12 Yamaha Corporation Electronic musical instrument with a melody and rhythm generator
US5200566A (en) * 1989-12-26 1993-04-06 Yamaha Corporation Electronic musical instrument with ad-lib melody playing device
US5218153A (en) * 1990-08-30 1993-06-08 Casio Computer Co., Ltd. Technique for selecting a chord progression for a melody
US5278348A (en) * 1991-02-01 1994-01-11 Kawai Musical Inst. Mfg. Co., Ltd. Musical-factor data and processing a chord for use in an electronical musical instrument
US5281754A (en) * 1992-04-13 1994-01-25 International Business Machines Corporation Melody composer and arranger
US5375501A (en) * 1991-12-30 1994-12-27 Casio Computer Co., Ltd. Automatic melody composer
US5418322A (en) * 1991-10-16 1995-05-23 Casio Computer Co., Ltd. Music apparatus for determining scale of melody by motion analysis of notes of the melody
US5451709A (en) * 1991-12-30 1995-09-19 Casio Computer Co., Ltd. Automatic composer for composing a melody in real time
US5627335A (en) * 1995-10-16 1997-05-06 Harmonix Music Systems, Inc. Real-time music creation system
US5663517A (en) * 1995-09-01 1997-09-02 International Business Machines Corporation Interactive system for compositional morphing of music in real-time
US5760325A (en) * 1995-06-15 1998-06-02 Yamaha Corporation Chord detection method and apparatus for detecting a chord progression of an input melody
US5859379A (en) * 1996-07-18 1999-01-12 Kabushiki Kaisha Works Zebra Method of and apparatus for composing a melody by switching musical phrases, and program storage medium readable by the apparatus for composing a melody
US5990407A (en) * 1996-07-11 1999-11-23 Pg Music, Inc. Automatic improvisation system and method
US6100462A (en) * 1998-05-29 2000-08-08 Yamaha Corporation Apparatus and method for generating melody
US6124543A (en) * 1997-12-17 2000-09-26 Yamaha Corporation Apparatus and method for automatically composing music according to a user-inputted theme melody
US6194647B1 (en) * 1998-08-20 2001-02-27 Promenade Co., Ltd Method and apparatus for producing a music program
US6255577B1 (en) * 1999-03-18 2001-07-03 Ricoh Company, Ltd. Melody sound generating apparatus
US20010020412A1 (en) * 2000-01-25 2001-09-13 Eiichiro Aoki Apparatus and method for creating melody data having forward-syncopated rhythm pattern
US6294720B1 (en) * 1999-02-08 2001-09-25 Yamaha Corporation Apparatus and method for creating melody and rhythm by extracting characteristic features from given motif
US20010045154A1 (en) * 2000-05-23 2001-11-29 Yamaha Corporation Apparatus and method for generating auxiliary melody on the basis of main melody
US20020007721A1 (en) * 2000-07-18 2002-01-24 Yamaha Corporation Automatic music composing apparatus that composes melody reflecting motif
US20020011145A1 (en) * 2000-07-18 2002-01-31 Yamaha Corporation Apparatus and method for creating melody incorporating plural motifs
US20020177997A1 (en) * 2001-05-28 2002-11-28 Laurent Le-Faucheur Programmable melody generator
EP1265221A1 (en) * 2001-06-08 2002-12-11 Sony France S.A. Automatic music improvisation method and device
US6506969B1 (en) * 1998-09-24 2003-01-14 Medal Sarl Automatic music generating method and device
US6867358B1 (en) * 1999-07-30 2005-03-15 Sandor Mester, Jr. Method and apparatus for producing improvised music
US20060075881A1 (en) * 2004-10-11 2006-04-13 Frank Streitenberger Method and device for a harmonic rendering of a melody line
US7034217B2 (en) * 2001-06-08 2006-04-25 Sony France S.A. Automatic music continuation method and device
US7053291B1 (en) * 2002-05-06 2006-05-30 Joseph Louis Villa Computerized system and method for building musical licks and melodies
US7435891B2 (en) * 2003-05-30 2008-10-14 Perla James C Method and system for generating musical variations directed to particular skill-levels
US20080289480A1 (en) * 2007-05-24 2008-11-27 Yamaha Corporation Electronic keyboard musical instrument for assisting in improvisation
US20090025540A1 (en) * 2006-02-06 2009-01-29 Mats Hillborg Melody generator
US7960638B2 (en) * 2004-09-16 2011-06-14 Sony Corporation Apparatus and method of creating content
US8097801B2 (en) * 2008-04-22 2012-01-17 Peter Gannon Systems and methods for composing music
USRE43379E1 (en) * 2003-10-09 2012-05-15 Pioneer Corporation Music selecting apparatus and method
US20120269344A1 (en) * 2011-04-25 2012-10-25 Vanbuskirk Kel R Methods and apparatus for creating music melodies
US20130125732A1 (en) * 2011-11-21 2013-05-23 Paul Nho Nguyen Methods to Create New Melodies and Music From Existing Source
US8487176B1 (en) * 2001-11-06 2013-07-16 James W. Wieder Music and sound that varies from one playback to another playback

Patent Citations (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4926737A (en) * 1987-04-08 1990-05-22 Casio Computer Co., Ltd. Automatic composer using input motif information
US5179240A (en) * 1988-12-26 1993-01-12 Yamaha Corporation Electronic musical instrument with a melody and rhythm generator
US4982642A (en) 1989-05-26 1991-01-08 Brother Kogyo Kabushiki Kaisha Metronome for electronic instruments
US5200566A (en) * 1989-12-26 1993-04-06 Yamaha Corporation Electronic musical instrument with ad-lib melody playing device
US5218153A (en) * 1990-08-30 1993-06-08 Casio Computer Co., Ltd. Technique for selecting a chord progression for a melody
US5278348A (en) * 1991-02-01 1994-01-11 Kawai Musical Inst. Mfg. Co., Ltd. Musical-factor data and processing a chord for use in an electronical musical instrument
US5418322A (en) * 1991-10-16 1995-05-23 Casio Computer Co., Ltd. Music apparatus for determining scale of melody by motion analysis of notes of the melody
US5375501A (en) * 1991-12-30 1994-12-27 Casio Computer Co., Ltd. Automatic melody composer
US5451709A (en) * 1991-12-30 1995-09-19 Casio Computer Co., Ltd. Automatic composer for composing a melody in real time
US5281754A (en) * 1992-04-13 1994-01-25 International Business Machines Corporation Melody composer and arranger
US5760325A (en) * 1995-06-15 1998-06-02 Yamaha Corporation Chord detection method and apparatus for detecting a chord progression of an input melody
US5663517A (en) * 1995-09-01 1997-09-02 International Business Machines Corporation Interactive system for compositional morphing of music in real-time
US5627335A (en) * 1995-10-16 1997-05-06 Harmonix Music Systems, Inc. Real-time music creation system
US5990407A (en) * 1996-07-11 1999-11-23 Pg Music, Inc. Automatic improvisation system and method
US5859379A (en) * 1996-07-18 1999-01-12 Kabushiki Kaisha Works Zebra Method of and apparatus for composing a melody by switching musical phrases, and program storage medium readable by the apparatus for composing a melody
US6124543A (en) * 1997-12-17 2000-09-26 Yamaha Corporation Apparatus and method for automatically composing music according to a user-inputted theme melody
US6100462A (en) * 1998-05-29 2000-08-08 Yamaha Corporation Apparatus and method for generating melody
US6194647B1 (en) * 1998-08-20 2001-02-27 Promenade Co., Ltd Method and apparatus for producing a music program
US6506969B1 (en) * 1998-09-24 2003-01-14 Medal Sarl Automatic music generating method and device
US6294720B1 (en) * 1999-02-08 2001-09-25 Yamaha Corporation Apparatus and method for creating melody and rhythm by extracting characteristic features from given motif
US6255577B1 (en) * 1999-03-18 2001-07-03 Ricoh Company, Ltd. Melody sound generating apparatus
US6867358B1 (en) * 1999-07-30 2005-03-15 Sandor Mester, Jr. Method and apparatus for producing improvised music
US20010020412A1 (en) * 2000-01-25 2001-09-13 Eiichiro Aoki Apparatus and method for creating melody data having forward-syncopated rhythm pattern
US6486390B2 (en) * 2000-01-25 2002-11-26 Yamaha Corporation Apparatus and method for creating melody data having forward-syncopated rhythm pattern
US6392134B2 (en) * 2000-05-23 2002-05-21 Yamaha Corporation Apparatus and method for generating auxiliary melody on the basis of main melody
US20010045154A1 (en) * 2000-05-23 2001-11-29 Yamaha Corporation Apparatus and method for generating auxiliary melody on the basis of main melody
US6395970B2 (en) * 2000-07-18 2002-05-28 Yamaha Corporation Automatic music composing apparatus that composes melody reflecting motif
US6403870B2 (en) * 2000-07-18 2002-06-11 Yahama Corporation Apparatus and method for creating melody incorporating plural motifs
US20020011145A1 (en) * 2000-07-18 2002-01-31 Yamaha Corporation Apparatus and method for creating melody incorporating plural motifs
US20020007721A1 (en) * 2000-07-18 2002-01-24 Yamaha Corporation Automatic music composing apparatus that composes melody reflecting motif
US20020177997A1 (en) * 2001-05-28 2002-11-28 Laurent Le-Faucheur Programmable melody generator
US6965069B2 (en) * 2001-05-28 2005-11-15 Texas Instrument Incorporated Programmable melody generator
EP1265221A1 (en) * 2001-06-08 2002-12-11 Sony France S.A. Automatic music improvisation method and device
US7034217B2 (en) * 2001-06-08 2006-04-25 Sony France S.A. Automatic music continuation method and device
US8487176B1 (en) * 2001-11-06 2013-07-16 James W. Wieder Music and sound that varies from one playback to another playback
US7053291B1 (en) * 2002-05-06 2006-05-30 Joseph Louis Villa Computerized system and method for building musical licks and melodies
US7435891B2 (en) * 2003-05-30 2008-10-14 Perla James C Method and system for generating musical variations directed to particular skill-levels
USRE43379E1 (en) * 2003-10-09 2012-05-15 Pioneer Corporation Music selecting apparatus and method
US7960638B2 (en) * 2004-09-16 2011-06-14 Sony Corporation Apparatus and method of creating content
US20060075881A1 (en) * 2004-10-11 2006-04-13 Frank Streitenberger Method and device for a harmonic rendering of a melody line
US20090025540A1 (en) * 2006-02-06 2009-01-29 Mats Hillborg Melody generator
US7671267B2 (en) * 2006-02-06 2010-03-02 Mats Hillborg Melody generator
US20080289480A1 (en) * 2007-05-24 2008-11-27 Yamaha Corporation Electronic keyboard musical instrument for assisting in improvisation
US7825320B2 (en) * 2007-05-24 2010-11-02 Yamaha Corporation Electronic keyboard musical instrument for assisting in improvisation
US8097801B2 (en) * 2008-04-22 2012-01-17 Peter Gannon Systems and methods for composing music
US8581085B2 (en) * 2008-04-22 2013-11-12 Peter Gannon Systems and methods for composing music
US20120269344A1 (en) * 2011-04-25 2012-10-25 Vanbuskirk Kel R Methods and apparatus for creating music melodies
US20130125732A1 (en) * 2011-11-21 2013-05-23 Paul Nho Nguyen Methods to Create New Melodies and Music From Existing Source

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
Chen, "Compuuter Improvisation of Jazz Solos". 1992, retrieved Oct. 3, 2011 from https://titdml.rit.edu/bitstream/handle/1850/11088/DChenThesis07-13-1992.pdf.sequence=1.
Franz, Markov Chains As Tools for Jazz improvisation, 1998, retrieved Oct. 31, 2011 from http://scholar.lib.vt.edu/theses/available/etd-61098-131249/unrestricted/dmfetd.pdf.
Introduction to Jazz (n.d.) retrieved Oct. 15, 2011 from http://jazz.about.com/.
Introduction to Music Theory (n.d.) retrieved Oct. 18, 2011 from http://www.8notes.com/theory/.
Kays and Intervals (n.d.) retrieved Oct. 28, 2011 from http://library.thinkquest.org/15413/theory/intervals.html.
Koelle, "The Complete Guide to JFugue Programming Music in Java", 2008, retrieved from http://www.jfugue.org.
Laird Baird. Charlie Parker, performed 1956, transcribed by Jamey Aebersold in "Charlie Parker Omnibook" Published by Atlantic Music Corp. in 1978. *
Popular Chord Changes (n.d.) retrieved Oct. 13, 2011 from http://www.guitar-chord-theory.com/images/chordprog2.jpg.

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132983B2 (en) 2014-08-20 2021-09-28 Steven Heckenlively Music yielder with conformance to requisites

Also Published As

Publication number Publication date
US20140208924A1 (en) 2014-07-31

Similar Documents

Publication Publication Date Title
US8847054B2 (en) Generating a synthesized melody
US9251776B2 (en) System and method creating harmonizing tracks for an audio input
US8779268B2 (en) System and method for producing a more harmonious musical accompaniment
US8785760B2 (en) System and method for applying a chain of effects to a musical composition
EP3059886B1 (en) Virtual production of a musical composition by applying chain of effects to instrumental tracks.
US9372925B2 (en) Combining audio samples by automatically adjusting sample characteristics
EP3047479B1 (en) Automatically expanding sets of audio samples
JP5454317B2 (en) Acoustic analyzer
JP2009162818A (en) Music displaying apparatus and music displaying program
US20180122260A1 (en) Musical performance evaluation system and method
WO2013039610A1 (en) System and method for providing audio for a requested note using a render cache
CA2929213A1 (en) System and method for enhancing audio, conforming an audio input to a musical key, and creating harmonizing tracks for an audio input
Marchini et al. The sense of ensemble: a machine learning approach to expressive performance modelling in string quartets
US11948542B2 (en) Systems, devices, and methods for computer-generated musical note sequences
Şentürk et al. Linking scores and audio recordings in makam music of Turkey
US20180315452A1 (en) Generating audio loops from an audio track
CA2843438A1 (en) System and method for providing audio for a requested note using a render cache
JP2006201278A (en) Method and apparatus for automatically analyzing metrical structure of piece of music, program, and recording medium on which program of method is recorded
JP7120468B2 (en) SOUND ANALYSIS METHOD, SOUND ANALYZER AND PROGRAM
US6093881A (en) Automatic note inversions in sequences having melodic runs
JP5131130B2 (en) Follow-up evaluation system, karaoke system and program
JP2007240552A (en) Musical instrument sound recognition method, musical instrument annotation method and music piece searching method
WO2022244403A1 (en) Musical score writing device, training device, musical score writing method and training method
Müller et al. Tempo and Beat Tracking
Gotham Hierarchy and position usage in ‘mixed’metrical structures

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.)

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: MICROENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Expired due to failure to pay maintenance fee

Effective date: 20180930