default: bacon -sj test tui: cargo run --example tui cloc: for src in {cli,edn/src,input/src,jack/src,midi/src,output/src,plugin/src,sampler/src,tek/src,time/src,tui/src}; do echo; echo $src; cloc --quiet $src; done test: cargo test --workspace --exclude jack cov: rm -rf target/coverage/html || true export CARGO_INCREMENTAL=0 export RUSTFLAGS='-Cinstrument-coverage' export RUSTDOCFLAGS='-Cinstrument-coverage' export LLVM_PROFILE_FILE='cov/cargo-test-%p-%m.profraw' time cargo test --workspace --exclude jack --profile coverage #export LLVM_PROFILE_FILE='cov/cargo-doctest-%p-%m.profraw' #time cargo test --workspace --exclude jack --profile coverage --doc time grcov . --llvm --threads 2 --binary-path ./target/coverage/deps/ -s . -t html --ignore-not-existing --ignore '../*' --ignore "/*" --ignore 'target/*' -o target/coverage/html llcov: time cargo llvm-cov --workspace --exclude jack --profile coverage --no-report time cargo llvm-cov --workspace --exclude jack --profile coverage --no-report --doc time cargo llvm-cov report --doctests --html #--output-path target/coverage/html prof: CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph -- arranger status: cargo c cloc --by-file src/ git status doc: cargo doc --document-private-items upstreams := "codeberg origin" # TODO! amend: git commit --amend push: git push -u codeberg main && git push -u origin main tpush: git push --tags -u codeberg && git push --tags -u origin fpush: git push -fu codeberg main && git push -fu origin main ftpush: git push --tags -fu codeberg && git push --tags -fu origin debug := "reset && cargo run --" release := "reset && cargo run --release --" name := "-n tek" bpm := "-b 174" midi-in := "-i 'Midi-Bridge:.*nanoKEY.*:.*capture.*'" midi-out := "-o 'Midi-Bridge:.*playback.*'" audio-in := "-l 'Komplete Audio 6 Pro:capture_AUX1' -r 'Komplete Audio 6 Pro:capture_AUX1'" audio-out := "-L 'Komplete Audio 6 Pro:playback_AUX1' -R 'Komplete Audio 6 Pro:playback_AUX1'" firefox-in := "-l 'Firefox:output_FL' -r 'Firefox:output_FR'" # TODO: arranger track mappings #-i "1=Midi-Bridge:nanoKEY Studio 2:(capture_0) nanoKEY Studio nanoKEY Studio _" #-o "1=Midi-Bridge:Komplete Audio 6 1:(playback_0) Komplete Audio 6 MIDI 1" #-i "2=Midi-Bridge:nanoKEY Studio 2:(capture_0) nanoKEY Studio nanoKEY Studio _" #-o "2=Midi-Bridge:Komplete Audio 6 1:(playback_0) Komplete Audio 6 MIDI 1" #-i "3=Midi-Bridge:nanoKEY Studio 2:(capture_0) nanoKEY Studio nanoKEY Studio _" #-o "3=Midi-Bridge:Komplete Audio 6 1:(playback_0) Komplete Audio 6 MIDI 1" #-i "4=Midi-Bridge:nanoKEY Studio 2:(capture_0) nanoKEY Studio nanoKEY Studio _" #-o "4=Midi-Bridge:Komplete Audio 6 1:(playback_0) Komplete Audio 6 MIDI 1" run: {{debug}} release: {{release}} clock: {{debug}} {{name}} {{bpm}} clock clock-release: {{release}} {{name}} {{bpm}} clock arranger: {{debug}} {{name}} {{bpm}} arranger arranger-ext: {{debug}} {{name}} {{bpm}} {{midi-in}} {{midi-out}} arranger arranger-release: {{release}} {{name}} {{bpm}} arranger arranger-release-ext: {{release}} {{name}} {{bpm}} {{midi-in}} {{midi-out}} arranger groovebox: {{debug}} {{name}} {{bpm}} groovebox groovebox-ext: reset {{debug}} {{name}} {{bpm}} {{midi-in}} {{midi-out}} {{audio-in}} {{audio-out}} groovebox groovebox-release: {{release}} {{name}} {{bpm}} groovebox groovebox-release-ext: {{release}} {{name}} {{bpm}} {{midi-in}} {{midi-out}} {{audio-in}} {{audio-out}} groovebox groovebox-release-ext-browser: {{release}} {{name}} {{bpm}} {{midi-in}} {{firefox-in}} {{audio-out}} groovebox sequencer: {{debug}} {{name}} {{bpm}} sequencer sequencer-ext: {{debug}} {{name}} {{bpm}} {{midi-in}} {{midi-out}} sequencer sequencer-release: {{release}} {{name}} {{bpm}} sequencer sequencer-release-ext: {{release}} {{name}} {{bpm}} {{midi-in}} {{midi-out}} sequencer mixer: {{debug}} mixer track: {{debug}} track sampler: {{debug}} sampler plugin: {{debug}} plugin