SpinCAD-Designer
Hype41/100SpinCAD Designer is an open source Java project which allows creation of patches for the Spin FV-1 audio DSP chip.
SpinCAD-Designer is custom firmware for the Spin Semiconductor FV-1, by @HolyCityAudio. Open source under GPL-3.0, latest release 0.99-1070 (April 2026), 196 stars on GitHub.
forSpin Semiconductor FV-1·by@HolyCityAudio
Unclaimed. Is this yours? Sign in with GitHub as @HolyCityAudio to claim it.
SpinCAD-Designer-1070.jar· 5.7 MB
GPL-3.0· HolyCityAudio/SpinCAD-Designer·downloads come from the creator’s GitHub releases
0.99-1070SpinCAD Designer 0.99-1070Latest1 file
SpinCAD Designer 0.99-1070 Release Notes
New Blocks
- Oil Can Delay -- Delay with synced LFO modulation, pitch-constant modulation, ratio selector, dB feedback slider, and optional feedback input
- Single Delay -- Single-tap delay derived from the ThreeTap pattern
Block Changes
- RMS Limiter -- Simplified: removed Input Gain and diagnostic outputs; detection now at full scale; sidechain input is optional; added Makeup Gain slider
- Lim/Exp -- Added Makeup Gain slider
- Resonator -- Reworked Q range to 10-50; added QFACTOR slider mode
- Reverse Delay -- Added memory mode selector and feedback input
- Multi-tap delays -- Added subdivision snap feature to delay time sliders; dB sliders also snap to subdivisions
Bug Fixes
- Fixed LOG simulator returning wrong value for zero input
- Fixed subdivision snap incorrectly snapping existing slider values on panel open
- Fixed subdivision slider tick display causing panel cutoff
UI Changes
- Moved Special menu to appear after Instructions and before Simulator
- Renamed I/O-Mix menu to Mixers/Gain; renamed Pots menu to I/O-Pots
- Moved Root block to Control menu
- Converted all hand-written control panels from JFrame to JDialog (fixes hidden-behind-window issues)
File Format
- Patch files (.spcdj) now include a build number; loading a file saved by a newer version shows a warning
Infrastructure
- Added security scanning (deserialization/reflection vulnerability fixes)
- Added LICENSE (GPLv3), CONTRIBUTING.md, CODE_OF_CONDUCT.md
Documentation
- Added tutorials: Using SpinCAD Designer, Using Control Signals, Managing Headroom
- Added block reference pages: Special Blocks, Simulator
- Added example patches: Arpeggiator, Resonator, Tremolo
- Reorganized docs to match new menu structure with alphabetized block sections and index tables
0.99-1069SpinCAD Designer 0.99-1069Beta1 file
What's New
New Feature
- VU Meter block — Two-channel VU meter with dockable display and three meter modes
Bug Fixes
- Fixed broken negative pitch shift formula
- Fixed LPF4P/HPF2P to use control panel frequency
- Fixed stale LPF4P test assertion (passband 0dB not -6dB)
- Fixed instruction plots (MAXX, Root, LOG/EXP)
- Fixed SVF frequency response measurement (H1 estimator)
- Linearized phaser LFO sweep, fixed slider crash on out-of-range params
New Blocks & Block Changes
- CrossfadeAdj — New crossfade block with adjustable midpoint
- Parker Spring Reverb — New reverb block, likely to be deleted as it doesn't work very well
- Bassman '59 EQ — Rewritten with exact Yeh/Smith tone stack model
- Standardized Q/resonance across all filter blocks
- Updated all gain sliders to 0.1 dB resolution (mixer, delay, reverb, pitch)
- Reorganized menus, fixed Vee duplicate fields, added default pots on new patch
Documentation
- Comprehensive block documentation with simulated PNG plots for all menus: filters, delays, reverb, dynamics, modulation, pitch, oscillators, waveshapers, control blocks, instructions, I/O
- ~160 new PNG plot images
- Many new doc/test classes and shared PlotUtils utility
Test Infrastructure
- New doc/test classes: FilterDocTest, ReverbDocTest, PitchDocTest, ModulationDocTest, WaveShaperDocTest, DynamicsDocTest, OscillatorDocTest, ChirpDelayDocTest
- New PitchShiftFrequencyTest with parameterized frequency tests
- New ControlBlockSweepTest with sweep plots
0.99-1068Beta1 file
Release Notes: SpinCAD Designer 0.99-1068
New Blocks
- Reverb Designer — Algorithmic reverb with stereo I/O, input gain, pre-delay control pin, LFO modulation, and auto-detection of stereo output
- Gated RT Controller — Envelope-driven reverb time modulation for gated reverb effects
- Arpeggiator — Pattern generator combined with pitch shifter
- Adjustable Smoother — Pot-controlled smoothing speed
Improvements
- Optimizer hardened with SKP protection, shuttle-register generalization, and safety checks
- Simulator compared directly with Spin documentation - several discrepancies were resolved.
- Simulator display latency reduced; Scope probe time aligned with Output pins
- Shimmer Verb updated
- Window persistence and UI improvements (LFO sliders, control panel positioning)
Testing
- Optimizer simulation test added
- Tone burst test WAV for scope/audio latency testing
0.99-1067Bug fixes, new blocks - Scope, Pattern Generator, 4-phase S/H1 file
SpinCAD Designer 0.99-1067
New Features
- 4-Phase Sample/Hold block — Enabled in Controls menu. Uses sine LFO zero-crossing detection to sample input at 4 phase points (0, 90, 180, 270 degrees), producing 4 independent S/H outputs
- Pattern Generator — 8-step triggered sequencer with range control
- Scope Probe block — New block for simulator signal inspection
- Simulator Options dialog — Configure simulator behavior including real-time file simulation
- Audio file simulation — Play audio files through the simulator in real time
Bug Fixes
- Copy-paste-delete crash — Fixed crash when deleting pasted blocks
- Control panel lifecycle — Panels now reopen correctly after closing; positioned near their blocks; prevented duplicate panels on same block
- Stutter block — Fixed unity-gain crossfade and FILTTOTIME ms conversion
- Fade Filter — Fixed timeToFilt/filtToTime for zero values
- Dist and New Envelope — Multiple fixes to generated code
- JSON array serialization — Fixed for correct patch file save/load
- Java 8 compatibility — Replaced Map.of() calls and added startup version check
Optimizer
- Skip no-op SOF 1.0, 0 instructions
- Per-pin mute reworked to use tempDisconnect instead of instruction surgery
UI Improvements
- Simulator toolbar button states (channels, probes, Lin/dB, display mode) persist between runs
Testing & CI
- GitHub Actions updated to Node.js 24-compatible versions
0.99-1062Bug fixes, new features, test automation, oh my!1 file
Release Notes: SpinCAD Designer 0.99-1062
Changes since 0.99-1061
Bug Fixes
- Reverse Delay: Fixed crossfade envelopes to eliminate glitches; corrected ramp offset and merged into single blended output
- control_smoother: Fixed deserialization and pin name compatibility for legacy .spcd files; renamed from control_smootherA
- Pin name mismatches: Fixed 7 CADBlocks (BassmanEQ, PingPong, ThreeTap, New_Envelope, dist, PitchTest, PitchShiftFixed) with incorrect pin names or missing defaults causing NullPointerExceptions
- Optimizer Case 5: Restricted to srcWrScale=1.0 only to prevent incorrect optimizations; fixed savings count
New Features
- Execute command on hex save: New preference to run a shell command after hex save (supports %s path substitution)
- Cycle detection: Prevents circular connections with depth-first search; suggests feedback loop instead
- Disable optimizer preference: Checkbox to skip optimization during code generation
- Application icon: Added 256x256 icon to the main window
UI Improvements
- Block border colors: Updated colors across 30+ blocks for better visual distinction
- Block rendering: Gradient fill with darker border overlay
- Control panel management: Prevents opening multiple panels on the same block
- Feedback loop deletion: Deleting either FBInput or FBOutput removes both
- Patch info panel: Refreshes on patch switch; remembers window position
- About dialog: Fixed appearing on wrong monitor
- Pin name tooltip: Shows as mouse hover tooltip instead of status bar
- Model regeneration: Updates ASM listing and toolbar after block deletion
Testing & CI
- Automated test suite: 459 tests across 3 test classes (AllBlocksCodeGenTest, LegacyFileLoadTest, SimulatorBypassTest)
- Full round-trip test: Load bank -> save/reload patch -> ASM -> save/reload bank -> hex -> spin project
- Simulator bypass test: Validates signal passthrough for 149 patches
- Test summary: Per-class breakdown showing pass/fail/skip counts
- GitHub Actions CI: Gradle build with JUnit 5 on push/PR
- CodeQL: Fixed workflow to use JDK 17 with explicit Gradle build
0.99-1061SpinCAD Designer Release 0.99-1061 - Usability improvements1 file
SpinCAD Designer Release Notes - Version 0.99 Build 1061
Preferences Dialog
A new Preferences dialog is now available from the File menu:
- Auto-reload on startup: Automatically reloads the last saved or opened patch or bank when SpinCAD starts
- Default blocks for new patches: Optionally adds Input and Output blocks when creating a new patch via File > New Patch or CTRL-N
- Show Spin ASM: Displays the post-optimization Spin ASM program listing in real time on the right side of the main window
JSON File Format
New JSON-based file formats replace binary serialization as the default save format:
- Patch files: .spcdj format (replaces .spcd)
- Bank files: .spbkj format (replaces .spbk)
- Existing .spcd and .spbk files can still be opened
Control Panel Improvements
- All control panel sliders now have editable text fields showing precise parameter values
- Ctrl+drag on sliders enables fine adjustment
- Added LFO rate/width controls to Phaser panel with improved resonance display precision
- Oscillator max frequency increased to 5000 Hz; Ring Mod to 1200 Hz
- Replaced Smoother block with SmootherA; panel now shows rise time in milliseconds
Simulator Improvements
- Fixed scope display scaling and labels
- Added trigger control and Lin/dB toggle button for the scope display
Additional Updates
- Clarified LFO type labels throughout (SIN LFO 0/1 vs RAMP LFO 0/1)
- Fixed LFO usage detection in the toolbar resource display
- Fixed sample rate dialog behavior
- Fixed macOS simulator audio by resampling to 44100 Hz output
- Input pin mute via right-click context menu (Experimental)
Known Issues
- Previously saved .spcd/.spbk files may encounter compatibility issues; resave in the new JSON format (.spcdj/.spbkj) for best results
- Scope display may behave unexpectedly at very short time divisions
0.99-1056Mac simulation, revised scope, improved optimizerBeta1 file
SpinCAD Designer 0.99 Build 1056 — Release Notes
Simulator
- macOS audio fix — resolved CoreAudio deadlock that caused the simulator to stop after a few seconds; audio output now resamples to 44100 Hz to avoid issues with the non-standard 32768 Hz FV-1 rate
- New oscilloscope and level logger display — merged into a single switchable panel; toggle between scope (real-time waveform) and level logger (dB meter) views
- Dedicated audio writer thread — decouples DSP processing from audio I/O for smoother playback
Improved Optimizer
Bug Fixes
- Fixed unhandled exceptions in File I/O
- Control panel windows now dispose properly when their block is deleted
- ALT-F keyboard shortcut opens the File menu
- Removed 33 redundant classes from elmGen-0.5.jar that had source equivalents
Known Issues
- There have been some reports of incompatibility with downloaded SPCD files. To avoid this I am planning on changing to saving as JSON or XML in a future version.
- Scope doesn't behave properly at super short time divisions
0.98-1043Optimizer step 1Beta1 file
This is an update which expands the capabilities of the optimizer to both remove instructions and registers which are not ultimately necessary, and to compact the register list as much as possible in the case that optimization leaves holes in the list.
These code changes were performed by Claude and inserted manually, along with some needed modifications to specific instruction classes to handle the new feature.
The resource count and simulated patch are not optimized. The optimization occurs when you select "File->Save patch as Spin ASM". "Copy ASM to clipboard" is not optimized, so you can compare the 2 approaches if you want.
I am aware of at least one optimization which is not being performed, so please let me know if you can find any others.
0.98-1042Remove register limitsBeta1 file
I have been talking to some people associated with a programmable Eurorack module. They have developed a way to convert Spin ASM to C that can be compiled to run on this module. Since they are converting to C they do not have the same limitations as a real FV-1. This release removes limits on the number of registers that can be used in a single SpinCAD patch. Previously it would stop rendering after 32. You will still get a red resource bar on the bottom of the GUI which means "the generated patch will not work as-is with Spin ASM".
This change also lets you create SpinCAD patches which are "slightly over" the FV-1 limits in the hopes of being able to optimize some of them out. See: https://holy-city-audio.gitbook.io/spincad-designer/tips-and-tricks/optimizing-fv-1-assembly-code-generated-by-spincad-designer
0.98-1039Added ratio block, Triangle LFO Width control, several bug fixes.1 file
Enhancements
- The new "Ratio" block in the "Controls" menu is really handy for things like chorus, flanger, and oil-can delays, to create two control signals over a given range whose product remains constant.
- Added a "Tri Width" control to the Ramp LFO block. Now you don't have to mess with an external multiplier if you wish to have a pot control your triangle LFO width.
Bug fixes include:
- Simulation fix for Log and Exp instructions (this is down in code I didn't write originally, so let me know if there are any strange side effects).
- Hall Reverb block was missing a "@isPinConnected" for the 3rd control input. This meant that if nothing was connected there, it would not generate code properly.
- Simulator display redraws after each sweep (more improvements are possible here).
0.98-1038Fixed Crossfade 3, renamed pins on 2:1x2 mixer1 file
Crossfade 3, which is an attempt to create a "more" equal-power crossfade, wasn't working properly. But now it is! I've renamed the pins on the 2:1x2 mixer to make it more obvious which inputs get mixed to which outputs. Gitbook has also been updated accordingly.
0.98-1037Fixed Drum Delay.1 file
Fixed Drum Delay block. As SKP instructions don't work properly sometimes in SpinCAD Builder source, I generated the JAVA files and then edited those to make it work correctly.
0.98-1036Fixed Clip Control1 file
"Flip" and "Invert" were swapped. With both off or both on, it worked OK. Updated help link to open Gitbook reference site rather than Patreon.
0.98-1032Fix simulator, add Vee control block, update to audio mixer blocks1 file
- Fixed introduced bug (build 1030) in simulator. Simulator again works whether or not scope or level viewer is enabled.
- New "Vee" control block.
- Audio mixer blocks all have their lower level of "gain" preset at -18 dB rather than -24 dB.
- 4 to 2 mixer is now based on Spincad builder code and is consistent with the other audio mixers.
- Revised the "Instructions" menu to put Half wave and Absa (full wave) next to each other.
- Hooked up controls to ga_demo_wah to make it actually work with SpinCAD (for internal testing).
- Cleaned up some unused imports and removed deprecated Java code for Triple-Tap delay.
0.98-10300.98 build 10301 file
- ROM Reverb 1 control inputs 1 and 2 are now correctly assigned to input pins
- Single Delay and Coarse Delay blocks removed from the menu. Use the Triple-Tap block instead.
- Simulator scope settings are retained between runs.
- Simulator Pot sliders now have tick marks
- Chirp block can now allocate up to 30 chained all passes (up from 20)
- Controls menu reorganized to put "scale/offset" and "smoother" entries nearer the top as I use them so much.
- "LFO Chorus" block renamed to "1-voice Chorus".
- hover your mouse over the resource bars for instructions, registers, and delay RAM, it will give you the exact count.
- help link now points to https://www.patreon.com/holycityaudio
0,98-1027v0.98-10271 file
0.98 build 1027 is where I stopped developing for a long time. But now I'm making some improvements again and so I'm making a release for where it was, in case anyone needs to get back there.