Check and Windows preview / check (anvil) (push) Successful in 2m1s
Check and Windows preview / check (crucible) (push) Successful in 1m31s
Check and Windows preview / check (knurl) (push) Successful in 2m4s
Check and Windows preview / check (lathe) (push) Successful in 1m27s
Check and Windows preview / check (patina) (push) Successful in 1m54s
Check and Windows preview / check (rivet) (push) Successful in 1m30s
Check and Windows preview / check (temper) (push) Successful in 1m31s
Check and Windows preview / check (weld) (push) Successful in 2m31s
Check and Windows preview / previews (push) Successful in 1m26s
Independent plugin release / plan (push) Successful in 7s
Check and Windows preview / windows (push) Successful in 2m26s
Independent plugin release / build (push) Successful in 3m0s
Independent plugin release / publish (push) Successful in 8s
Knurl follows the played note and treats every cycle of the wave on its own: a repeating level pattern over 1-16 cycles makes subharmonics in tune with every note, random level and timing per cycle add rattle, and a noise burst per cycle, highpassed at a multiple of f0, adds grit. Amounts are counted in cycles, so the texture is the same on F1 and on C2. - Cycle clock from the shared note tracker, restarted at each note; the audio is delayed by the lookahead plus 4.2 ms of timing-jitter headroom. - Per-cycle randomness from a hash of the cycle number: Same every note or Free. - Patterns Off, Double, Triple, Fry (default), Gallop, Stutter or drawn; grit switchable per step. Pattern persisted as knurl-pattern. - Editor: last eight cycles overlaid, pattern bars with the playing step. - Tests match the prototype: Double gives f0/2 at -8.19 dB, Triple f0/3 at -10.68 dB, equal on F1 and C2, no added clicks, bit-exact when off, no allocation on the audio thread.
104 lines
4.3 KiB
YAML
104 lines
4.3 KiB
YAML
name: Check and Windows preview
|
|
on:
|
|
push:
|
|
branches: ["**"]
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
env:
|
|
CARGO_HOME: ${{ gitea.workspace }}/.cargo-ci
|
|
RUSTUP_HOME: ${{ gitea.workspace }}/.rustup-ci
|
|
CARGO_TERM_COLOR: always
|
|
# Incremental data is not reused between CI runs; it only inflates the cache.
|
|
CARGO_INCREMENTAL: "0"
|
|
|
|
jobs:
|
|
check:
|
|
runs-on: ubuntu-latest
|
|
container: node:22-bookworm
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
plugin: [rivet, patina, anvil, crucible, lathe, temper, weld, knurl]
|
|
steps:
|
|
- uses: https://github.com/actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.GITEA_TOKEN }}
|
|
persist-credentials: false
|
|
- uses: ./.gitea/actions/setup
|
|
with:
|
|
cache-name: check-${{ matrix.plugin }}
|
|
target-paths: |
|
|
target
|
|
plugins/${{ matrix.plugin }}/plugin/target
|
|
- run: python3 -m unittest discover -s scripts/tests -v
|
|
- run: python3 scripts/check-plugin.py --plugin "${{ matrix.plugin }}"
|
|
|
|
previews:
|
|
runs-on: ubuntu-latest
|
|
container: node:22-bookworm
|
|
steps:
|
|
- uses: https://github.com/actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.GITEA_TOKEN }}
|
|
persist-credentials: false
|
|
- uses: ./.gitea/actions/setup
|
|
with:
|
|
cache-name: previews
|
|
target-paths: tools/editor-check/target
|
|
- run: |
|
|
cargo fmt --all -- --check
|
|
cargo fmt --manifest-path tools/editor-check/Cargo.toml -- --check
|
|
mkdir -p target/editor
|
|
cargo run --manifest-path tools/editor-check/Cargo.toml --locked -- target/editor/rivet.png --plugin rivet
|
|
cargo run --manifest-path tools/editor-check/Cargo.toml --locked -- target/editor/patina.png --plugin patina
|
|
cargo run --manifest-path tools/editor-check/Cargo.toml --locked -- target/editor/patina-compact.png --plugin patina --compact
|
|
cargo run --manifest-path tools/editor-check/Cargo.toml --locked -- target/editor/anvil.png --plugin anvil
|
|
cargo run --manifest-path tools/editor-check/Cargo.toml --locked -- target/editor/crucible.png --plugin crucible
|
|
cargo run --manifest-path tools/editor-check/Cargo.toml --locked -- target/editor/lathe.png --plugin lathe
|
|
cargo run --manifest-path tools/editor-check/Cargo.toml --locked -- target/editor/temper.png --plugin temper
|
|
cargo run --manifest-path tools/editor-check/Cargo.toml --locked -- target/editor/weld.png --plugin weld
|
|
cargo run --manifest-path tools/editor-check/Cargo.toml --locked -- target/editor/knurl.png --plugin knurl
|
|
- uses: https://github.com/actions/upload-artifact@v3-node20
|
|
with:
|
|
name: editor-previews
|
|
path: target/editor/*.png
|
|
retention-days: 7
|
|
|
|
windows:
|
|
needs: [check, previews]
|
|
runs-on: ubuntu-latest
|
|
container: node:22-bookworm
|
|
env:
|
|
CARGO_TARGET_DIR: ${{ gitea.workspace }}/target/windows
|
|
steps:
|
|
- uses: https://github.com/actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.GITEA_TOKEN }}
|
|
persist-credentials: false
|
|
- uses: ./.gitea/actions/setup
|
|
with:
|
|
windows: "true"
|
|
cache-name: windows-preview
|
|
target-paths: target/windows
|
|
- run: |
|
|
python3 scripts/build-plugin.py --plugin rivet --target x86_64-pc-windows-gnu
|
|
python3 scripts/build-plugin.py --plugin patina --target x86_64-pc-windows-gnu
|
|
python3 scripts/build-plugin.py --plugin anvil --target x86_64-pc-windows-gnu
|
|
python3 scripts/build-plugin.py --plugin crucible --target x86_64-pc-windows-gnu
|
|
python3 scripts/build-plugin.py --plugin lathe --target x86_64-pc-windows-gnu
|
|
python3 scripts/build-plugin.py --plugin temper --target x86_64-pc-windows-gnu
|
|
python3 scripts/build-plugin.py --plugin weld --target x86_64-pc-windows-gnu
|
|
python3 scripts/build-plugin.py --plugin knurl --target x86_64-pc-windows-gnu
|
|
python3 scripts/package-windows.py
|
|
- uses: https://github.com/actions/upload-artifact@v3-node20
|
|
with:
|
|
name: bass-foundry-windows-x86_64
|
|
path: |
|
|
dist/bass-foundry-windows-x86_64.zip
|
|
dist/bass-foundry-windows-x86_64.zip.sha256
|
|
retention-days: 30
|