v0.0.1 — first preview
Pre-release
Pre-release
First tagged preview of VZenit, a native macOS voice editor for the Casio VZ-1, VZ-10M, and VZ-8M synthesizers.
Code-stable preview, not hardware-verified. The codec, library, editor, and SysEx pipeline all compile and pass 28 tests, but no part of this has yet been exercised against a real VZ synth. Treat as ready to test, not ready to use.
What works
- Bit-accurate 336-byte VZ voice codec with full encode → decode round-trip equality on the default patch
- CoreMIDI manager with hot-plug-aware port discovery and SysEx F0…F7 streaming
- Voice editor: signal-flow routing diagram (M1–M8 across Lines A–D), per-module DCO + DCA + key-follow editing
- Canvas-based drag-to-edit envelope editor — 8 steps with movable sustain and end markers
- Patch library with JSON persistence + multi-patch
.syximport/export - Constrained random patch generator (🎲 button next to + in the library sidebar)
- 28 unit tests across the codec and randomizer, including a property test that any random patch round-trips losslessly
- App Sandbox + USB + Audio Input + user-selected files entitlements
What's not yet tested
- Anything involving a real synth. No bytes have flowed between this app and physical VZ hardware.
- Real-world multi-patch
.syxfiles from the wild (only synthetic round-trip tested) - Code signing / notarization — local builds only
Build it yourself
```bash
git clone git@github.com:iraaron/VZenit.git
cd VZenit
brew install xcodegen # one-time
xcodegen generate
open VZenit.xcodeproj
```
In Xcode, set Signing & Capabilities → Team to your Apple ID (or use Sign to Run Locally if you don't have one), then ⌘R.
Requires macOS 14 Sonoma or later, Xcode 15+, and a USB-MIDI interface connected to your VZ.
Known limitations
- No app icon yet
- No Operation Editor (multi-timbral mode)
- No undo/redo, on-screen keyboard, patch compare/morph
- 64-patch bank dump/restore not yet implemented
- Local-build-only — no notarized binaries in this release