src/
: standalone binaries and demossrc/graph/
: svg generation for the web interfacesrc/libsimplenn/
: the public interface of simplennsrc/nn/
: the core neural network code, including inference and trainingsrc/tests/
: unit testssrc/util/
: helpful classes/structures used elsewheresrc/audio/
: classes used for audio synthesis and talking to ALSA devicessrc/dbus/
: code to claim exclusive use of an audio devicesrc/stats/
: a task that periodically prints runtime info and timingsrc/frontend/
: user-invoked programs (originally part of the synthesizer)
- Clone the repo and enter it:
git clone [email protected]:stanford-stagecast/proleptic.git && cd proleptic
- Initialize CMake:
cmake -S . -B build
- Building:
cmake --build build
- Building in parallel:
cmake --build build --parallel
- Formatting:
cmake --build build --target format
- or use
git clang-format
when you have staged changes
- or use
- Testing:
cmake --build build --target check
- or run
ctest --test-dir build
- or run
- Running the audio synthesizer:
./build/src/frontend/synthesizer-test [device_prefix] [midi_device] [sample_directory]
- On the snr-piano machine:
- device_prefix: Scarlett
- midi_device: /dev/snd/midi*
- sample_directory: /usr/local/share/slender/samples/
- On the snr-piano machine:
If you want to use a compiler other than the default, delete your build
directory, then redo the initialization step with CC
and CXX
set
appropriately:
CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake -B build
CMake has the following configs set up:
Debug
Release
DebugASan
Current checks:
- tests pass in
DebugASan
andRelease
modes - code is correctly formatted, according to
clang-format
- linear history
- only branches with all checks passing can be pushed to main