- C++ 63.9%
- Swift 19.2%
- Python 9.1%
- C 4.9%
- Shell 2.1%
- Other 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| clap | ||
| Imported/LittleGPTracker | ||
| o1nk | ||
| o1nk.xcodeproj | ||
| opsl | ||
| presets/hexawe | ||
| scripts | ||
| tests/lgpt | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
o1nk
o1nk is an AUv3 sampler project built around tracker tables.
Current shape
- iOS standalone wrapper app
- AUv3 instrument extension
- Minimal table-driven audio unit shell
- Imported LittleGPTracker instrument sources kept under
Imported/LittleGPTracker/for reference and future porting
License
o1nk is licensed under the GNU General Public License v3.0 (see LICENSE).
It includes LittleGPTracker sources (Imported/LittleGPTracker/, GPLv3)
and a LittleGPTracker instrument engine ported to Swift
(o1nk/AudioUnitExtension/LGPTVoice.swift). The HEXAWE patches and samples
under presets/hexawe/ are CC BY 3.0 works of their artists; see
presets/hexawe/CREDITS.md.
Next steps
- Port the imported sample and SoundFont logic into the AUv3 engine layer
- Replace the placeholder oscillator with sample playback
- Add Piggy
.insand SF2 import flows
OPSL parity
o1nk/AudioUnitExtension/O1NKParameters.swift declares the O1NKParam tree
(identifier, default value, range/enum, and section grouping per parameter)
to mirror the OPSL device schema
for o1nk, so hosts and MoveMap controllers can address parameters by the same
semantic names and defaults the AU exposes. The OPSL documents for o1nk are
vendored under opsl/:
opsl/toilville-o1nk.sampler.device.json— therole: initdevice (factory defaults and parameter domains)opsl/toilville-o1nk-punchy-drums.device.json— arole: patchdevice (same params, a non-default state)opsl/toilville-o1nk-default.movemap.layout.json— the MoveMap controller layout (section/page/slot assignments)opsl/toilville-o1nk-demo.movemap.bundle.json— a demo bundle tying the device, layout, and patch togetheropsl/VERSION— the opsl-public tag + commit these were vendored from
Running the parity check
python3 scripts/opsl_parity.py
This parses O1NKParameters.swift (via regex over its very regular
case .x: return y switch statements — see the docstring in
scripts/opsl_parity.py for why a regex parse was chosen over a Swift
script or a Swift unit test) and compares every O1NKParam case against
opsl/toilville-o1nk.sampler.device.json and
opsl/toilville-o1nk-default.movemap.layout.json for:
- identifier membership (both directions)
- numeric range / step, or enum value count, vs the device param's
domain defaultValuevs the init device'sstate.param_values[identifier].value(enum params: the Swift side stores an index, OPSL stores a string/bool — mapped positionally throughdomain.values)- section grouping (
O1NKParam.Section) vs the device param'ssection_hint, cross-checked against where the movemap layout actually places that param
The script exits non-zero if it finds a mismatch that isn't listed in
scripts/opsl_parity_allowlist.json. Known, undecided mismatches (where the
AU and the OPSL doc disagree and it isn't obvious which one is wrong) are
recorded there with a note explaining the open question, so the check stays
green while the disagreement stays visible — add a new mismatch to the
allowlist only once someone has actually looked at it, not as a way to
silence the check.
Updating the vendored OPSL documents
- In
opsl-public, find the tag/commit you want (the examples live underexamples/toilville-o1nk*.json). - Re-export the four files, e.g.:
(repeat forgit -C /path/to/opsl-public show <tag>:examples/toilville-o1nk.sampler.device.json \ > opsl/toilville-o1nk.sampler.device.jsontoilville-o1nk-punchy-drums.device.json,toilville-o1nk-default.movemap.layout.json, andtoilville-o1nk-demo.movemap.bundle.json) - Update
opsl/VERSIONto<tag> <short-sha>. - Run
python3 scripts/opsl_parity.pyand resolve or allowlist whatever it reports.