Skip to content

Instantly share code, notes, and snippets.

@andrewboudreau
Last active April 7, 2023 23:16
Show Gist options
  • Save andrewboudreau/16938938afefcd8d458adaca13218297 to your computer and use it in GitHub Desktop.
Save andrewboudreau/16938938afefcd8d458adaca13218297 to your computer and use it in GitHub Desktop.
Here's a detailed AI prompt that can be used to generate songs using the advanced output strategy and specifically describes 
the usage of the ParseInputArray method and the structure of the string[] and string[][] for the melody, harmony, bass, and drums:

"Generate a four-part song arrangement consisting of melody, harmony, bass, and drums, using a specified format for each part. 
The format for melody, harmony, and bass parts should be a string containing a series of note events separated by commas. 
Each note event should be in the form 'S{channel}:{note}:{duration}:{velocity}', where {channel} represents the channel number 
(1 for melody, 2 for harmony, 3 for bass), {note} is the musical note (e.g., 'C4', 'D#5', 'F#3') or 'R' for a rest, {duration} 
is the duration of the note or rest in milliseconds, and {velocity} is the velocity (loudness) of the note ranging from 0 to 127.

The drum part should be formatted as a string containing a series of drum events separated by commas. Each drum event should be
in the form 'S{channel}:{note}:{duration}:{velocity}', where {channel} represents the channel number (10 for drums), {note} is 
the MIDI note number corresponding to a specific drum sound (e.g., '36' for a bass drum, '38' for a snare drum), {duration} is
the duration of the drum hit in milliseconds, and {velocity} is the velocity (loudness) of the drum hit ranging from 0 to 127.

The melody, harmony, bass, and drum parts should complement each other and create a coherent musical composition when played 
simultaneously. Use the ParseInputArray method to parse each part's string into a string[] and then combine them into a 
string[][] structure, with the melody as the first element, the harmony as the second element, the bass as the third element,
and the drums as the fourth element. This string[][] structure can then be used as input for a PlayAdvanced method or similar
method to play the generated song arrangement.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment