Songs¶
A song contains all the information about its notes and the instruments that control how the notes sound. It also contains settings related to how LSDJ should play the song.
Notes¶
A song is defined by its sequence. A sequence consists of a number of sequence steps. Each step specifies a chain for each of the Game Boy’s four audio channels (pulse 1, pulse 2, wave, and noise). See Chains for more information on how Chains are structured.
A song’s sequence is stored in its sequence field as a two-dimensional dictionary of chains.
Usage Examples¶
from pylsdj import Sequence
# Get the chain in step $3 of PU2 from the sequence
curr_chain = song.sequence[Sequence.PU2][0x3]
# Get that same chain from the global chains table
curr_chain_another_way = song.chains[curr_chain.index]
# Get chain $2D from the global chain table
chain_two_d = song.chains[0x2d]
Instruments¶
The sound of a note is determined by an instrument. An instrument can also refer to a synth or a macro table to control how it behaves over time.
A song contains global tables for instruments, synths and macro tables. These are stored in the song’s instruments, synths and tables fields, resp.
Appearance and Playback Behavior¶
Songs also have a number of fields that control the appearance of LSDJ and its synchronization setting. A complete overview of what all these settings do is out of this document’s scope; see the API documentation below for a list of supported settings.
API Documentation¶
- class pylsdj.Song(song_data)¶
A song consists of a sequence of chains, one per channel.
- bookmarks¶
list of screen bookmarks
- chains¶
the song’s chain table, represented as a list of Chain objects
- clock¶
the amount of time LSDJ has been used since the last memory reset, represented as a Clock object
- clone¶
chain cloning depth; one of "deep", "slim"
- colorset¶
the selected LSDJ colorset
- file_changed¶
1 if the file has changed since last save, 0 otherwise
- font¶
the selected LSDJ font
- global_clock¶
the amount of time LSDJ has been used total, represented as a Clock object
- grooves¶
the song’s groove table
- instruments¶
the song’s instrument table, represented as a list of Instrument objects
- key_delay¶
the delay before key repeat is activated for Game Boy buttons
- key_repeat¶
the key repeat speed for Game Boy buttons
- phrases¶
the song’s phrase table, represented as a list of Phrase objects
- prelisten¶
if non-zero, play notes and instruments while entering them
- sequence¶
the song’s sequence, showing the order in which chains are played on each of the four channels
- song_version¶
the song’s version number
- speech_instrument¶
the song’s speech instrument settings, represented as a SpeechInstrument object
- sync_setting¶
LSDJ’s sync setting; one of "off", "slave", "master", "midi", "nano", and "keyboard"
- tables¶
the song’s table of macro tables, represented as Table objects
- tempo¶
the song’s tempo