Add indications for cross building
This commit is contained in:
91
BUILDING.md
Normal file
91
BUILDING.md
Normal file
@@ -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 <path>` | Sample directory (repeatable) |
|
||||||
|
| `-o, --output <device>` | Output audio device |
|
||||||
|
| `-i, --input <device>` | Input audio device |
|
||||||
|
| `-c, --channels <n>` | Output channel count |
|
||||||
|
| `-b, --buffer <size>` | Audio buffer size |
|
||||||
54
CHANGELOG.md
54
CHANGELOG.md
@@ -4,6 +4,60 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
## [0.1.0]
|
## [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)
|
### UI / UX (breaking cosmetic changes)
|
||||||
- **Options page**: Each option now shows a short description line below when focused, replacing the static header box.
|
- **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.
|
- **Dictionary page**: Removed the Forth description box at the top. The word list now uses the full page height.
|
||||||
|
|||||||
5
Cross.toml
Normal file
5
Cross.toml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[build]
|
||||||
|
volumes = ["/Users/bubo/doux:/Users/bubo/doux"]
|
||||||
|
|
||||||
|
[target.aarch64-unknown-linux-gnu]
|
||||||
|
dockerfile = "./cross/aarch64-linux.Dockerfile"
|
||||||
15
cross/aarch64-linux.Dockerfile
Normal file
15
cross/aarch64-linux.Dockerfile
Normal file
@@ -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/*
|
||||||
Reference in New Issue
Block a user