Logo

Making music on GBA

Hugo -

Nano-daw’s note editor showing a three-note melody, captured from the GBA ROM
The DAW’s note editor.

I spent my weekend making a tiny DAW running on Game Boy Advance. Small, but it works!

Play in your browser

Write your first melody

Six tracks: kick, clap, hats, bass, lead and chord. Each pattern has 16 steps. The default tempo is 120 BPM, but you can change it.

Start plays/stops. Use L / R (shoulder buttons) to switch views. Select opens the menu.

  1. From RACK, press R to open NOTES.
  2. Move with the D-pad and press A to place notes.
  3. Press Start to play your melody.
Notes, patterns & arrangement
Nano-daw: NOTES: pitch vertically, time horizontally
NOTES: pitch vertically, time horizontally
Nano-daw: ARRANGE: the order your patterns play
ARRANGE: the order your patterns play

A pattern contains 16 steps across all six tracks. ARRANGE sets the order your patterns play in.

RACK
Up/Down selects a track. A adds/removes a note. B + Up mutes the selected track; B + Down opens its note editor.
NOTES
Move with the D-pad. Press A to place a note, or press again to erase it.
Hold B while pressing:
  • Left/Right: note length (1–16 steps).
  • A: note volume (four levels).
  • Up/Down: change track.
Patterns
B + L / R changes the pattern you edit. Use Select → Copy Pattern / Paste Pattern to duplicate all six tracks. Clear Pattern empties the current pattern.
ARRANGE
Left/Right: choose a song position (1–16). Up/Down: choose a pattern. A: switch between looping one pattern and playing the whole song. B + Left/Right on the D-pad: tempo (70–180 BPM). Start begins from the selected position; the arrangement repeats after position 16.

Select → Follow Playback makes the editor follow the playing pattern. Adding a note or selecting another pattern turns following off.

One note per track per step; lead and bass play one note at a time. The chord track turns each note into a three-note chord (easier than building chords by hand).

Mixer & synth sounds
Nano-daw: MIXER: track levels and mutes
MIXER: track levels and mutes
Nano-daw: SYNTH: shaping a square wave
SYNTH: shaping a square wave
MIXER
Left/Right: track. Up/Down: level. A: mute/unmute. B: cycle the master delay amount, including off.
SYNTH
Up/Down: row. Left/Right: value. The top row selects lead, bass or chord. A: audition. B: reset the selected parameter.

Wave: sound shape. Tone: brightness. Attack / Release: fade-in / tail. Drive: distortion. Delay: echo send (also needs master delay). For chords, Quality chooses auto/major/minor; Voicing changes the inversion.

Saving & managing projects
Nano-daw: Ten project slots, five per page
Ten project slots, five per page

Press Select, choose with Up/Down, confirm with A; B goes back.

  • Save Project updates the active slot; a new project's first save opens the slot picker.
  • Save Project As… saves into another slot. Load Project restores a saved project.
  • In the picker: Up/Down selects; L / R changes page; A saves/loads. Confirm overwriting a save or discarding unsaved changes with A; cancel with B.
  • New Empty Project clears notes, mutes and arrangement, keeping tempo and sound settings. Your saved slots remain.

Save before quitting or starting another project. Otherwise, your next hit is gone lol.

Conclusion

The GBA is surprisingly capable of processing audio! It took a few optimization passes, but it can now play a song with all six tracks at 59 fps without issues.

Right now, there is only one built-in instrument per track, and I think it's totally possible to push it further with some EQs and multiple instruments per track before reaching the hardware limitations of the GBA (using an AGS-101 here).

Get my next notes & experiments