Developing LV2 Plugins for the Isla S2400 DSP Card: A Case Study

The Isla S2400 is a powerful hardware sampler that has gained popularity among electronic music producers for its vintage-inspired workflow and modern capabilities. One of its most exciting features is the DSP card expansion, which allows users to add LV2 plugins for audio processing. This article documents our journey of modifying and enhancing an existing LV2 plugin to work with the S2400 DSP card, specifically adding a drive effect to a TB-303 style synthesizer.

The Isla S2400 Hardware and Workflow

The S2400 is a dedicated hardware sampler with a small LCD display for user interface. Unlike a computer, it doesn't offer in-depth programming capabilities for end users. The DSP card is an addon that extends the S2400's functionality by allowing the use of LV2 plugins.

Understanding the S2400's workflow is crucial for plugin development. Here's how plugins are transferred to the device:

  1. Plugins must be compiled elsewhere (not on the sampler itself)
  2. The S2400 must be put in MCU mode when connected to a computer
  3. When in MCU mode, the S2400 appears as a hard drive on the connected computer
  4. The compiled LV2 plugin folder is transferred to a designated "dspcard" folder
  5. After exiting MCU mode (by pressing the "back" button), the user enters "sync files" mode
  6. If new plugins are detected, the sampler offers an update option
  7. After rebooting, plugins can be accessed via the busmixer by selecting a bus channel and choosing "add plugin"

This unique workflow presents specific challenges for plugin development, as testing requires physical access to the hardware and follows a multi-step process.

The Challenge: Adding a Drive Effect to a TB-303 Style Synthesizer

Our project began with a TB-303 style synthesizer LV2 plugin called "squeal2400" that was working correctly on the S2400. The goal was to enhance this plugin by adding a drive effect inspired by another synth called BlackBird, while maintaining compatibility with the S2400 DSP card.

Initial attempts to rename the plugin encountered an "insert error" when loaded on the S2400. This led us to adopt an incremental approach: instead of making multiple changes at once, we decided to keep the original plugin name and structure while adding just the drive effect.

Technical Implementation

The drive effect implementation involved several key components:

1. The DriveProcessor Class

We created a DriveProcessor class inspired by the BlackBird synth that applies amplification and soft clipping to the audio signal:

cpp

2. Integration into the Signal Chain

The drive processor was integrated into the main synthesizer processing chain, after the filter but before the final output stage:

cpp

3. Parameter Exposure

We added a new control port for the drive parameter in the LV2 descriptor:

ttl

And mapped it to MIDI CC #80 for external control:

ttl

Compilation Process

Compiling LV2 plugins for the S2400 requires cross-compilation for the AArch64 architecture. We set up a build environment with:

  1. The build-essential package
  2. The AArch64 cross-compiler (gcc-aarch64-linux-gnu)
  3. LV2 development headers (lv2-dev)

Our Makefile was configured to use the cross-compiler:

makefile

Lessons Learned

Our journey provided several valuable insights for S2400 plugin development:

  1. Incremental approach is key: Making one small change at a time and testing after each modification helps isolate issues.

  2. URI format matters: The S2400 is sensitive to the URI format used in LV2 plugins. Maintaining consistency with working plugins is crucial.

  3. Resource constraints: The S2400 DSP card has limited resources, so optimizing plugin performance is important.

  4. File naming consistency: Ensuring all files use consistent naming conventions helps prevent loading errors.

  5. Testing workflow: The multi-step process of transferring and testing plugins on the S2400 requires patience and methodical approach.

The Result: A Working TB-303 Style Synth with Drive Effect

After implementing the drive effect and compiling the plugin, we successfully installed it on the S2400. The drive parameter provides a range of tonal options:

The drive effect enhances the classic TB-303 sound while maintaining the character that makes it recognizable, giving producers more sonic options directly within the S2400 environment.

Acknowledgements

This project would not have been possible without the contributions of many individuals:

Conclusion

Developing LV2 plugins for the Isla S2400 presents unique challenges but offers rewarding possibilities for expanding the device's capabilities. By understanding the hardware's constraints and following a methodical, incremental approach, we were able to successfully enhance an existing plugin with new functionality.

This case study demonstrates that with the right approach, even complex audio processing features can be added to the S2400 ecosystem, opening up new creative possibilities for musicians and producers using this unique hardware sampler.