Audiofab Easy Spin (FV-1) Programming Extension
A comprehensive Visual Studio Code extension for developing audio effects code for the FV-1 DSP from Spin Semiconductor. This extension provides both traditional assembly programming and a modern visual block diagram editor for the Audiofab Easy Spin guitar pedal.
Features
📝 Assembly Language Support
Full support for traditional FV-1 assembly programming:
- Syntax highlighting for
.spn files and the FV-1 instruction set
- Real-time diagnostics showing errors and warnings as you type
- Hover information with instruction documentation and register/memory details
- Go to definition (Ctrl+Click) for user-defined symbols
- Built-in assembler

🎨 Visual Block Diagram Editor
Create FV-1 programs visually by connecting blocks together - no assembly code required! The block diagram editor provides:
- Drag-and-drop block palette with categorized blocks
- Real-time compilation with live error checking and resource usage tracking
- View generated assembly to see the code produced from your diagram
- Code optimizer that tries to optimize the generated assembly to save program space
- Instantly program the current diagram into any one of the 8 slots on your Audiofab Easy Spin pedal

📊 Resource Usage Tracking
Monitor your program's resource consumption in real-time in the taskbar:
- Instructions: Visual indicator showing usage out of 128 instructions
- Registers: Track usage of 32 available registers (currently for block diagrams only)
- Delay Memory: Monitor usage out of 32768 words

🏦 Program Bank Management
Organize and deploy multiple programs to your Easy Spin pedal:
- Visual bank editor for managing all 8 program slots
- Drag-and-drop assignment from File Explorer to bank slots or create new files right from the bank editor
- Mix and match
.spn assembly and .spndiagram block diagram files
- Program individual slots or the entire bank at once
- Automatic compilation/assembly of all files when programming
- Export to Intel HEX if you want to use this tool with your own pedal/programmer

Convenient sidebar in the Activity Bar with quick access to:
- Create new block diagram
- Create new program bank
- Backup pedal (saves entire EEPROM to an Intel HEX file)

💾 Hardware Programming
Direct integration with the Audiofab USB Programmer:
- Program to any slot (1-8) on your Easy Spin pedal
- Automatic verification of written data
- Backup entire pedal to Intel HEX format
- Load HEX files to EEPROM
- Export banks to HEX for use with other tools or archival purposes
Installation
- Install Visual Studio Code
- Open the Extensions view (
Ctrl+Shift+X)
- Search for "Audiofab FV-1"
- Click Install
For hardware programming, you'll need the Audiofab USB Programmer connected to your Easy Spin pedal.
Getting Started
Creating Your First Block Diagram
- Open the Quick Actions sidebar (click the Audiofab icon in the Activity Bar)
- Click "New Block Diagram"
- Choose a location and filename
- Drag blocks from the palette onto the canvas
- Connect blocks by clicking output ports and dragging to input ports
- Program directly to a program slot on your Audiofab Easy Spin (Ctrl+Shift+P > FV-1: Assemble current file and load to EEPROM), or create a program bank and add it there
NOTE: After programming ensure you rotate the Program select switch off of the current program and back to have the FV-1 reload the new program contents from EEPROM
Creating Your First Program Bank
- Open the Quick Actions sidebar (click the Audiofab icon in the Activity Bar)
- Click "New Program Bank"
- Choose a location and filename
- Drag
.spn or .spndiagram files from the File Explorer onto bank slots (hold Shift to drop into a slot)
- Click "Program Bank" to load all programs to your pedal
NOTE: After programming ensure you rotate the Program select switch off of the current program and back to have the FV-1 reload the new program contents from EEPROM
Commands
Access these commands via the Command Palette (Ctrl+Shift+P):
Assembly File Commands (.spn)
- FV-1: Assemble current file - Compile and check for errors (not really required as this is always performed in the background anyway)
- FV-1: Assemble current file and load to EEPROM - Compile and program to pedal (
Ctrl+Shift+F5)
- FV-1: Assemble current file to an Intel HEX file - Export to HEX format (
Ctrl+Alt+F5)
Block Diagram Commands (.spndiagram)
- FV-1: Assemble current file and load to EEPROM - Compile diagram, assemble generated assembly and program to pedal (
Ctrl+Shift+F5)
- FV-1: Assemble current file to an Intel HEX file - Export compiled diagram to HEX
Intel HEX Commands (.hex)
- FV-1: Load HEX to EEPROM - Program HEX file to pedal (
Ctrl+Shift+F6)
Utility Commands
- FV-1: Backup pedal - Save entire EEPROM (all 8 slots) to HEX file
- FV-1: Create
.spnbank - Create a new bank of programs
- FV-1: Create new block diagram - Create a new visual program
Block Diagram Editor
Supported Blocks
The current list of supported blocks is small, but this is the first release! Now that the machinery is in place, we will be porting over as many blocks as possible from the most excellent SpinCAD Designer.
Editor Features
- Parameters panel: Click on a block to modify its parameters
- Lasso selection: Ctrl+click and drag on empty canvas to select multiple blocks
- Multi-select: Hold Ctrl and click blocks to add to selection
- Delete: Press Delete or Backspace to remove selected blocks/connections
- Pan: Click and drag empty canvas to move view
- Zoom: Mouse wheel to zoom in/out
- Undo: If you delete something by accident, press Ctrl+Z to bring it back
- Connection validation: Invalid connections are rejected with helpful error messages
Settings
Configure the extension in VS Code Settings (File > Preferences > Settings or Ctrl+,), then select Extensions > Audiofab FV-1.
General Settings
fv1.autoShowOutputWindow - Automatically show Output panel on assembly (default: true)
fv1.verbose - Show detailed assembly output including machine code (default: false)
Hardware Settings
fv1.i2cAddress - I2C address of EEPROM in hex (default: 80 / 0x50)
fv1.writePageSize - EEPROM page write size in bytes (default: 32)
fv1.verifyWrites - Verify EEPROM contents after writing (default: true)
fv1.mcp2221VendorId - USB Vendor ID for MCP2221 (default: "04D8")
fv1.mcp2221ProductId - USB Product ID for MCP2221 (default: "00DD")
Compatibility Settings
fv1.spinAsmMemBug - Emulate SpinASM IDE memory allocation bug for compatibility (default: true)
fv1.clampReals - Emulate SpinASM IDE behaviour and clamp out of range real values (default: true)
Troubleshooting
No MCP2221 device found
- Ensure the Audiofab USB Programmer is connected
- Check that drivers are installed (should be automatic on most systems?)
- Try a different USB port or cable
Error programming EEPROM
- Ensure the Audiofab USB Programmer is connected to the pedal and the pedal is powered on
- If on battery power, ensure an jack is plugged into the input jack
Assembly errors
- Check the Output panel (
View > Output, select "FV-1 Assembler")
- Hover over problematic lines for detailed error information
- For block diagrams, check connection validation messages
Program doesn't sound right
- Ensure you rotate the Program select switch off of the current program and back to have the FV-1 reload the new program contents from EEPROM
- Verify resource usage isn't exceeding limits (red indicators in status bar)
- There could be a bug in the assembler - file an issue!
Contributing
Found a bug or have a feature request? Please use the Issue Tracker.
If you find a program that fails to assemble or a block diagram that doesn't compile correctly, please include the file contents in your issue report.
Resources
License
MIT License - See LICENSE file for details