Bubba Machine

Development

Requirements

On Windows the Python command is py -3; on Linux and macOS, python3.

Commands

py -3 tools/build.py assets   # font, kits, waves, factory loops and logo (core/gen/)
py -3 tools/build.py test     # builds and runs the PC tests; screenshots in assets/screens/
py -3 tools/build.py web      # emulator: web/bm.js
py -3 tools/build.py site     # website documentation pages: web/docs/ and web/en/docs/
py -3 tools/build.py all      # all of the above

The tests (tests/test_core.c) go through the firmware the way a person would: boot, press buttons, record, save, power off and on again. They also check sequencer timing, the screen budget and that the flash is never written while playing.

Layout

core/        the firmware, C99 with no hardware: audio, sequencer, interface and storage
core/gen/    data generated by tools/: font, kits, waves, loops and logo
hal/         hardware layers: sim (PC and web), web (WebAssembly) and fm1 (port)
web/         website: home page, emulator (emulador.html) and docs (docs/, en/)
docs/        manual, spec, design and guides (source of the website); docs/en/ in English
tests/       automated tests
tools/       generators and build
assets/      logo, screenshots, factory loops

Core rules

Sounds and factory loops

py -3 tools/gen_loops.py --local

A build made with --local must not be published: neither web/bm.js nor binaries. Before pushing, generate again without --local.

The website

Branches

BranchFor
devDay-to-day work. Pull requests go here
qaWhat is about to be released, under test: emulator and, once it exists, the FM-1
mainWhat is released. Every version comes from here and the website is published from here

Changes move one way only: dev › qa › main.

Continuous integration

.github/workflows/ci.yml runs the tests on every push and every pull request.

Versions

This page is generated from docs/en/DEVELOPMENT.md. Spotted a mistake? Edit the file and send a pull request.