From c219b4efab5223f0de969d27f0f9eb0c6025fdf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Forment?= Date: Wed, 25 Feb 2026 22:08:08 +0100 Subject: [PATCH] Add indications for cross building --- BUILDING.md | 91 ++++++++++++++++++++++++++++++++++ CHANGELOG.md | 54 ++++++++++++++++++++ Cross.toml | 5 ++ cross/aarch64-linux.Dockerfile | 15 ++++++ 4 files changed, 165 insertions(+) create mode 100644 BUILDING.md create mode 100644 Cross.toml create mode 100644 cross/aarch64-linux.Dockerfile diff --git a/BUILDING.md b/BUILDING.md new file mode 100644 index 0000000..5bfd0ea --- /dev/null +++ b/BUILDING.md @@ -0,0 +1,91 @@ +# Building Cagire + +## Prerequisites + +**Rust** (stable toolchain): https://rustup.rs + +## System Dependencies + +### macOS + +```bash +brew install cmake +``` + +cmake is required by `rusty_link` (Ableton Link C++ bindings). Xcode Command Line Tools provide the C++ compiler. CoreAudio and CoreMIDI are built-in. The desktop build needs no additional dependencies on macOS (Cocoa/Metal are provided by the system). + +### Linux (Debian/Ubuntu) + +```bash +sudo apt install cmake g++ pkg-config libasound2-dev libjack-jackd2-dev +``` + +For the desktop build (egui/eframe), also install: + +```bash +sudo apt install libgl-dev libxkbcommon-dev libx11-dev libxcursor-dev libxrandr-dev libxi-dev libwayland-dev +``` + +### Linux (Arch) + +```bash +sudo pacman -S cmake gcc pkgconf alsa-lib jack2 +``` + +For the desktop build: + +```bash +sudo pacman -S libxkbcommon libx11 libxcursor libxrandr libxi wayland mesa +``` + +### Linux (Fedora) + +```bash +sudo dnf install cmake gcc-c++ pkgconf-pkg-config alsa-lib-devel jack-audio-connection-kit-devel +``` + +For the desktop build: + +```bash +sudo dnf install libxkbcommon-devel libX11-devel libXcursor-devel libXrandr-devel libXi-devel wayland-devel mesa-libGL-devel +``` + +### Windows + +Install Visual Studio Build Tools (MSVC) and CMake. Everything else is provided by the Windows SDK. + +## Build + +Terminal (default): + +```bash +cargo build --release +``` + +Desktop (egui window): + +```bash +cargo build --release --features desktop --bin cagire-desktop +``` + +## Run + +Terminal (default): + +```bash +cargo run --release -- [OPTIONS] +``` + +Desktop (egui window): + +```bash +cargo run --release --features desktop --bin cagire-desktop +``` + +| Flag | Description | +|------|-------------| +| `-s, --samples ` | Sample directory (repeatable) | +| `-o, --output ` | Output audio device | +| `-i, --input ` | Input audio device | +| `-c, --channels ` | Output channel count | +| `-b, --buffer ` | Audio buffer size | diff --git a/CHANGELOG.md b/CHANGELOG.md index fd6398c..341a789 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,60 @@ All notable changes to this project will be documented in this file. ## [0.1.0] +### Forth Language + +**Bracket syntax `[ ... ]`** +- `[ v1 v2 v3 ]` pushes all items plus their count. Sugar for `v1 v2 v3 3`. + +**New words:** +- `index` — select item at explicit index (wraps with modulo). +- `pbounce` — ping-pong cycle keyed by pattern iteration (vs `bounce` which is step-keyed). +- `except` — inverse of `every`: run quotation on all iterations except every nth. +- `every+` / `except+` — `every`/`except` with a phase offset. +- `all` / `noall` — apply current params globally to all emitted sounds; clear global params. +- `linmap` / `expmap` — linear and exponential range mapping. +- `rec` / `overdub` (`dub`) — toggle recording/overdubbing master audio to a named sample. +- `orec` / `odub` — toggle recording/overdubbing a single orbit to a named sample. + +**Harmony and voicing words:** +- `key!` — set tonal center for scale operations. +- `triad` / `seventh` — diatonic triad/seventh from scale degree (follows a scale word). +- `inv` / `dinv` — chord inversion / down inversion. +- `drop2` / `drop3` — drop-2 / drop-3 voicings. +- `tp` — transpose all ints on stack by N semitones. + +**New chord types:** +- `pwr`, `augmaj7`, `7sus4`, `9sus4`, `maj69`, `min69`, `maj11`, `maj13`, `min13`, `dom7s11`. + +**Ducking compressor params:** +- `comp`, `compattack`/`cattack`, `comprelease`/`crelease`, `comporbit`/`corbit`. + +### Engine +- SF2 soundfont support: auto-scans sample directories for `.sf2` files and loads them. +- Audio stream errors surfaced as flash messages instead of printing to stderr. + +### UI / Visualization +- Lissajous XY scope: stereo phase display using Braille characters, togglable via Options. +- Gain boost (1x–16x) and normalize toggle for scope/lissajous/spectrum. +- Pattern description field: editable via `d` on Patterns page, shown in pattern row and properties. +- Mute/solo on main page now apply immediately (no staging). +- 10 bundled demo projects loaded on fresh startup (togglable in Options). + +### Themes +- 5 new themes: Iceberg, Everforest, Fauve, Tropicalia, Jaipur. + +### Desktop (egui) +- Fixed Alt/Option key on macOS (dead-key composition now works). +- Fixed multi-character text paste. +- Extended function key support (F13–F20). + +### Fixed +- CycleList + ArpList index collision: arp uses timing index, cycle uses polyphony slot. +- Scope widget not drawing completely in some terminal sizes. + +### Documentation +- New tutorials: Recording (`docs/tutorials/recording.md`), Soundfonts (`docs/tutorials/soundfont.md`). + ### UI / UX (breaking cosmetic changes) - **Options page**: Each option now shows a short description line below when focused, replacing the static header box. - **Dictionary page**: Removed the Forth description box at the top. The word list now uses the full page height. diff --git a/Cross.toml b/Cross.toml new file mode 100644 index 0000000..bb0fdf4 --- /dev/null +++ b/Cross.toml @@ -0,0 +1,5 @@ +[build] +volumes = ["/Users/bubo/doux:/Users/bubo/doux"] + +[target.aarch64-unknown-linux-gnu] +dockerfile = "./cross/aarch64-linux.Dockerfile" diff --git a/cross/aarch64-linux.Dockerfile b/cross/aarch64-linux.Dockerfile new file mode 100644 index 0000000..cc3188f --- /dev/null +++ b/cross/aarch64-linux.Dockerfile @@ -0,0 +1,15 @@ +FROM ghcr.io/cross-rs/aarch64-unknown-linux-gnu:main + +RUN dpkg --add-architecture arm64 && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + cmake \ + libclang-dev \ + libasound2-dev:arm64 \ + libjack-dev:arm64 \ + libxcb-render0-dev:arm64 \ + libxcb-shape0-dev:arm64 \ + libxcb-xfixes0-dev:arm64 \ + libxkbcommon-dev:arm64 \ + libgl1-mesa-dev:arm64 \ + && rm -rf /var/lib/apt/lists/*