Effects, instruments and custom DSP

Start from 60 named effects and a library of working instruments, recompose them in Studio, with your assistant or in code, and write custom DSP only when you need something new.

Most effects and instruments are new combinations of familiar parts: a drive before a filter, a delay with saturation in its feedback, a reverb that follows the input level. Maru gives you those parts as working, tested source, so you can spend your time on the sound and the feel instead of on plumbing.

Start from what exists

  • 60 named effects. The MultiFX chain offers drive, modulation, filter, dynamics, delay and reverb algorithms you can place in any order: from chorus, phaser and rotary speaker to bitcrusher, four-band EQ, gate with hold and several reverbs, including a Dattorro plate.
  • Instruments and MIDI tools. The module library has synthesizers, physical-modeling instruments, samplers, arpeggiators, sequencers and chord tools. Each one is editable source you can start from.
  • Sound building blocks. The DSP library covers filters and EQ, dynamics, distortion, delays, modulation, reverbs, spectral processing, oscillators, physical models and voices.

When you want something new, the first question is whether it is one combination away.

How recomposing works

A module declares its parameters and connects building blocks into its sound path. Recomposing means changing that path: adding a stage, reordering it, exposing a new control or changing a range. The interface and presets follow the parameters, so a new Drive control appears in the face, in automation and in saved presets from one definition.

You can do this three ways:

  • In Studio. Describe the change to the Studio agent: "Put a tape-style saturation inside the delay's feedback and add a Wear control."
  • With your coding agent. Ask for the same change in a local starter project; the agent edits the source and checks it. See Working with coding agents.
  • In code. Open the module declaration and compose the building blocks yourself. See the Audio SDK.

Whichever way you choose, the result is the same kind of editable project. A good habit for agents and people alike is to ask "which existing module or effect is closest?" before writing anything new. Agents can answer that themselves: maru dsp effects (the maru_list_effects MCP tool) lists the named effects by family, and maru module list lists the modules.

Instruments from your own sounds

For an instrument built from recordings, you may not need DSP at all. A sampler bank maps your samples across keys or pads, with velocity layers and presets, and plays in Maru Sampler. Build one in Studio, or generate the sounds first and map them into a bank.

When to write custom DSP

Write a new algorithm when no combination of existing parts gives you the sound: a new kind of distortion curve, an unusual resonator, a specific analog behavior. You can still ask an agent to write it, then listen and direct the result. A new building block can sit next to the library ones in the same module.

Technical details

Custom DSP is written as a restricted-TypeScript Processor that composes maruaudio/dsp/... leaves. The restrictions are what let one source compile to WebAssembly for the browser and to native plug-in builds:

  • the audio callback allocates no memory, takes no lock and performs no I/O;
  • persistent state is prepared before processing, and controls change through named setters;
  • each parameter declares its range and response curve, which the interface, host automation and MIDI CC all share.

DSP library explains leaves and focused imports. Audio SDK covers declarations, Processors and parameters. Check, build and export covers checking, building and the targets a module supports. If you are coming from JUCE or another framework, Choosing Maru compares the approaches.