introduction to game boy music and lsdj
TRANSCRIPT
introduction to Game Boy music and LSDJAlive Dead Media, spring 2020
Aalto Media Lab
miranda kastemaahttps://pulusound.fi
May 20, 2020
Nintendo Game Boy
• 8-bit handheld game console• launched in 1989 (JP, NA), 1990 (EU)• custom Sharp LR35902 CPU running at
4.19 MHz• 8 KB internal RAM (can be extended
up to 32 KB by cartridges)• 8 KB video RAM• 256-byte bootstrap ROM• up to 8 MB ROM on cartridges• 160×144 pixel LCD display with 2-bit
color (four shades of grey)• 4-channel sound chip with stereo output
music in Game Boy games
• Aquatic Ambienceby David WiseDonkey Kong Land (1995)https://youtu.be/Ny7QFgBvQnY
• Coo the Owlby Hirokazu Ando and Tadashi IkegamiKirby’s Dream Land (1995)https://youtu.be/BE5lSQ0SRFs
• Dragon’s Denby Junichi MasudaPokémon Gold/Silver (1999)https://youtu.be/tlWPp0ayjsc
GBT Player
• converts .mod files to a format the Game Boy can play• compose with your favorite tracker• can be embedded in games• https://github.com/AntonioND/gbt-player• https://www.gbstudio.dev/docs/music/
nanoloop
• visual step sequencer with lots of livetweaking possibilities
• created by Oliver Wittchow in 1998• originally a study project at the
University of Fine Arts of Hamburg• sold as a custom cartridge since 1999• later adapted to Game Boy Advance,
smartphones, mini analog synth in aGame Boy cart...
• https://nanoloop.com
Little Sound DJ (LSDJ)
• tracker with advanced sequencingfeatures
• created by Johan Kotlinski in 2000• used to be sold on custom cartridges,
now ROM only• https://www.littlesounddj.com
mGB
• turns the Game Boy into aMIDI-controlled sound module
• created by Timothy “trash80” Lamb in2008
• requires additional hardware such as theArduinoboy or nanoloop USB-MIDIadapter
• https://github.com/trash80/mGB
and more...
• many other sequencers and synthesizers have been developed for the Game Boy:https://chipmusic.org/forums/topic/5574/complete-gameboy-trackers-sequencers-synths-list/
Game Boy sound
• the sound system has 4 channels:• pulse (2×): square wave with adjustable pulse width• wave: programmable wave table• noise: pseudo-random noise generator
• simple stereo panning: left/center/right• Game Boy models sound quite different from each other• original DMG-01 is popular for its clean and bassy sound• many modifications have been developed to improve sound quality• more information:
• https://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware• https://aquellex.ws/goodies/tutorial/game-boy-comparison/
LSDJ: foreword
• LSDJ has a ton of features crammed into a system with a small display and limitedcontrols
• most numbers are displayed in hexadecimal to save space• navigating the interface effectively requires memorizing button combinations• it can take a while to get used to... :)• the manual is very detailed!
https://www.littlesounddj.com/lsd/latest/documentation/
LSDJ: screens
• the LSDJ interface is divided into ninescreens, arranged in two dimensions:
project groove
song chain phrase instr table
synth wave
• the map in the lower right corner of thescreen shows where you are:
SELECT + ←/↓/↑/→ switch between screens
LSDJ: song screen
• a song is a collection of chains• each column (channel) has a list of
chains to play
←/↓/↑/→ move cursor
A add chain
A + ←/↓/↑/→ edit chain number
SELECT + → open selected chain in chainscreen
B + A remove chain
START play song
LSDJ: editing numbers
• most numbers in LSDJ are displayed inhexadecimal format (base 16)
• A = 10, B = 11, C = 12,D = 13, E = 14, F = 15
• e.g. 2C = 2 · 16 + 12 = 44• but in some cases the two digits are
separate numbers
A + ←/→ decrement/increment by 1
A + ↓/↑ decrement/increment by 16
LSDJ: song structure
songs are made of chains are made of phrases are made of notes,commands
LSDJ: chain screen
• a chain contains up to 16 phrases• phrases can be transposed up or down
←/↓/↑/→ move cursor
A add phrase
A + ←/↓/↑/→ edit phrase number/transpose
SELECT + → open selected phrase inphrase screen
B + A remove phrase
START play chain
LSDJ: phrase screen
• a phrase is a 16-step sequence• steps can have a note and/or command• each note is assigned to an instrument• commands add various effects
←/↓/↑/→ move cursor
A add note/instr/cmd
A + ←/↓/↑/→ edit parameter
B + A remove note/instr/cmd
START play phrase
A, A (on a command) show help
LSDJ: instrument screen
• there are five instrument types:• pulse (PU1, PU2 channels)• noise (NOI channel)• kit (WAV channel)• wave (WAV channel)• speech (WAV channel, instrument 40)
←/↓/↑/→ move cursor
A + ←/↓/↑/→ edit parameter
B + ←/↓/↑/→ switch between instruments
LSDJ: common instrument parameters
• some parameters are supported bymultiple instrument types:
• instrument name• output (left/right/both/off)• sound length• transpose on/off• pitch detuning• pitch command behavior• chord and retrig command rate• table to run when playing notes
LSDJ: pulse instrument
• the iconic 8-bit bleep• four different waveforms: 12.5%, 25%,
50% or 75% pulse width• ADSR envelope for amplitude• frequency sweep — good for drum
sounds
LSDJ: ADSR envelope
(from the LSDJ manual)
LSDJ: noise instrument
• noise generator• shape parameter changes timbre• ADSR envelope for amplitude
LSDJ: kit instrument
• two-channel sample player• several different sample kits• playback offset, speed and looping• volume• distortion mode• samples can be replaced with custom
ones: https://github.com/jkotlinski/lsdpatch
LSDJ: wave instrument
• plays back waves generated in the synthscreen (or hand-drawn in the wavescreen)
• synth number• volume• playback speed and looping
LSDJ: synth screen
• generates waves based on parameters• each synth sound uses 16 waves• fixed settings:
• waveform• filter type• distortion mode• phasing mode
←/↓/↑/→ move cursor
A + ←/↓/↑/→ edit parameter
B + ←/↓/↑/→ switch between synths
LSDJ: synth screen (2)
• time-varying settings:• volume• filter resonance• filter cutoff frequency• signal vertical shift• limiting• phase
LSDJ: wave screen
• wave display and editor• each wave consists of 32 samples• samples can be edited individually to
create custom waveforms
←/→ select sample
↓/↑ edit sample
B + ←/↓/↑/→ switch between waves
LSDJ: speech instrument
• speech synthesizer• only available on instrument 40• i just found out about this one, haven’t
explored it much yet...• can combine short speech sounds
(allophones) to form words
LSDJ: commands
“Commands can be used to do all sorts of things in phrases and tables.”
- LSDJ manual
A: Table Start/Stop H: Hop S: Sweep/ShapeB: MayBe K: Kill Note T: TempoC: Chord L: Slide V: VibratoD: Delay M: Master Volume W: WaveE: Amplitude Envelope O: Set Output Z: RandomiZeF: Wave Frame/Finetune P: Pitch BendG: Groove Select R: Retrig/Resync
LSDJ: commands — C: Chord
• plays arpeggiated chords• adds up to 2 specified semitones, for example:
• C47: 0, 4, 7, 0, 4, 7, . . . (major chord)• C37: 0, 3, 7, 0, 3, 7, . . . (minor chord)• C10: 0, 1, 0, 1, . . .
• arpeggiation speed is controlled by the cmd/rate instrument setting
LSDJ: commands — V: Vibrato
• modulates the instrument’s pitch• first digit: speed• second digit: depth• modulation speed and shape are
controlled by the pitch instrumentsetting
depth semitones0 0.1251 0.252 0.3753 0.54 0.755 16 1.57 28 2.59 3A 3.5B 4C 5D 6E 7F 8
LSDJ: commands — B: MayBe
• plays a note some of the time• first digit: probability for left kit• second digit: probability for right kit• 0 = never play, F = always play• for non-kit instruments, the higher digit applies
LSDJ: learning commands
• remember that you can press A, A ona command to view a short help textfor it
• experiment!
LSDJ: table screen• a table is a sequence of volume
changes, transposes and commands• can run on every note of an instrument
or be started with the A command• instruments have two table modes:
• play: advance through the table at aconstant rate (can be changed withthe G command)
• step: advance one step for every noteplayed
←/↓/↑/→ move cursor
A + ←/↓/↑/→ edit parameter
B + ←/↓/↑/→ switch between tables
LSDJ: project screen
• global settings and song management• tempo• global transpose• synchronize to other devices
↓/↑ move cursor
A + ←/→ edit parameter
A perform action
LSDJ: project screen (2)
• chain cloning mode• interface look• key repeat• note prelisten• help screen• duplicate song and instrument cleanup• song loading and saving
LSDJ: file screen
• load, save and erase songs• start a new song by loading (empty)• “blocks used” shows how much of the
available space is in use
←/↓/↑/→ move cursor
A perform action
B return to project screen
LSDJ: groove screen
• allows creating different rhythms• a groove defines how long each step is• can be applied to phrases and tables (G
command)• phrases use groove 0 by default
←/↓/↑/→ move cursor
A + ←/↓/↑/→ edit parameter
A + ↓/↑ edit swing %
B + ←/↓/↑/→ switch between grooves
LSDJ: copy and paste
• most screens support copying and pasting:
B + A cut value at cursor
SELECT + B, ←/↓/↑/→ highlight block
SELECT + (B, B) highlight column or row
SELECT + (B, B, B) highlight entire screen
B (when highlighted) copy
SELECT + A (when highlighted) cut
SELECT + A paste
LSDJ: cloning
• chains, phrases, instruments and phrases can be cloned• useful for making variations• two clone modes (set in project screen):
• deep: cloning a chain clones the phrases in it• slim: cloning a chain reuses the same phrases
SELECT + (B, A) clone item at cursor
LSDJ: going further
• manual:https://www.littlesounddj.com/lsd/latest/documentation/
• fandom wiki:https://littlesounddj.fandom.com/wiki/Little_Sound_Dj
• extra tools:https://www.littlesounddj.com/lsd/latest/