Quick Basic PLAY function parameter syntax. Example: PLAY "MSe8f#4f#8f#8g8a8b4.a4.g4.f#4.o0b8o1e8e8e4d8e2."

Many older BASIC dialects supported playing sounds and music using PLAY function. The string passed as a parameter has certain syntax which describes notes, their duration etc. For pure academic purposes I am looking for a documentation on exact and most complete syntax of the string passed as parameter to PLAY function. By googling I found some examples like this:

PLAY "MSe8f#4f#8f#8g8a8b4.a4.g4.f#4.o0b8o1e8e8e4d8e2."

but no documentation.


  • A quick google search brings up:

    You need to practice your Google-Fu!

    Looks like pretty standard musical notation too - dotted notes, sharps etc

    In the interests of making this answer make sense in case wikibooks explodes:

    Whitespaces are ignored inside the string expression. There are also codes that set the duration, octave and tempo. They are all case-insensitive. PLAY executes the commands or notes the order in which they appear in the string. Any indicators that change the properties are effective for the notes following that indicator.

    • Ln Sets the duration (length) of the notes. The variable n does not indicate an actual duration amount but rather a note type; L1 - whole note, L2 - half note, L4 - quarter note, etc. (L8, L16, L32, L64, ...). By default, n = 4. For triplets and quintets, use L3, L6, L12, ... and L5, L10, L20, ... series respectively. The shorthand notation of length is also provided for a note. For example, L4 CDE L8 FG L4 AB can be shortened to L4 CDE F8G8 AB. F and G play as eighth notes while others play as quarter notes.
    • On Sets the current octave. Valid values for n are 0 through 6. An octave begins with C and ends with B. Remember that C- is equivalent to B.
    • < > Changes the current octave respectively down or up one level.
    • Nn Plays a specified note in the seven-octave range. Valid values are from 0 to 84. (0 is a pause.) Cannot use with sharp and flat. Cannot use with the shorthand notation neither.
    • MN Stand for Music Normal. Note duration is 7/8ths of the length indicated by Ln. It is the default mode.
    • ML Stand for Music Legato. Note duration is full length of that indicated by Ln.
    • MS Stand for Music Staccato. Note duration is 3/4ths of the length indicated by Ln.
    • Pn Causes a silence (pause) for the length of note indicated (same as Ln).
    • Tn Sets the number of "L4"s per minute (tempo). Valid values are from 32 to 255. The default value is T120.
    • . When placed after a note, it causes the duration of the note to be 3/2 of the set duration. This is how to get "dotted" notes. "L4 C#." would play C sharp as a dotted quarter note. It can be used for a pause as well.
    • MB MF Stand for Music Background and Music Foreground. MB places a maximum of 32 notes in the music buffer and plays them while executing other statements. Works very well for games. MF switches the PLAY mode back to normal. Default is MF.