Skip to content

Brokezawa/daisysp_nim

Repository files navigation

DaisySP Nim Wrapper

Complete Nim bindings for the DaisySP audio DSP library - 73 modules for synthesis, effects, filters, and more.

Features

Complete Coverage: All 73 DaisySP modules wrapped
License Separation: LGPL and MIT modules in separate files
Zero Overhead: Direct C++ function calls
Type Safe: Nim's type system with C++ interop
Easy to Use: Simple, idiomatic Nim API
Well Documented: Examples, quick reference, and getting started guide

Quick Start

import daisysp_mit  # MIT-licensed modules only
# or: import daisysp_lgpl  # LGPL-licensed modules only  
# or: import daisysp  # All modules (LGPL + MIT)

# Create an oscillator
var osc: Oscillator
osc.init(48000.0)
osc.setFreq(440.0)
osc.setWaveform(WAVE_POLYBLEP_SAW)

# Process audio
let sample = osc.process()

Installation

  1. Clone with DaisySP submodule:
git clone --recursive https://github.com/Brokezawa/daisysp_nim
cd daisysp_nim
  1. Compile examples:
nim cpp -r example.nim          # LGPL modules test
nim cpp -r test_mit.nim          # MIT modules test  
nim cpp -r comprehensive_example.nim  # All modules test

Module Categories

LGPL Modules (18) - daisysp_lgpl.nim

  • Control: Line
  • Dynamics: Balance, Compressor
  • Effects: Bitcrush, Fold, ReverbSc
  • Filters: AllPass, Atone, Biquad, Comb, Mode, MoogLadder, NlFilt, Tone
  • Physical Modeling: Pluck, PolyPluck
  • Synthesis: BlOsc
  • Utility: Jitter, Port

MIT Modules (55+) - daisysp_mit.nim

  • Control: AdEnv, Adsr, Phasor
  • Drums: AnalogBassDrum, AnalogSnareDrum, HiHat, SynthBassDrum, SyntheticSnareDrum
  • Dynamics: CrossFade, Limiter
  • Effects: Autowah, Chorus, Decimator, Flanger, Overdrive, PitchShifter, Phaser, SampleRateReducer, Tremolo, Wavefolder
  • Filters: Fir, LadderFilter, OnePole, Svf, Soap
  • Noise: ClockedNoise, Dust, FractalNoise, Grainlet, Particle, WhiteNoise
  • Physical Modeling: Drip, KarplusString, ModalVoice, Resonator, StringVoice
  • Sampling: GranularPlayer
  • Synthesis: Fm2, FormantOsc, HarmonicOsc, Oscillator, OscillatorBank, VariableSawOsc, VariableShapeOsc, Vosim, ZOscillator
  • Utility: DcBlock, DelayLineFloat, Looper, Metro, MayTrig, SampleHold, SmoothRandom

License Compliance

Choose your import based on license needs:

# MIT-only (most permissive)
import daisysp_mit

# LGPL-only (if you need specific LGPL modules)
import daisysp_lgpl

# All modules (your project becomes LGPL)
import daisysp

See LICENSE.md for details.

Building

Use nim cpp (not nim c) to compile:

nim cpp -r your_project.nim

The daisysp.nim.cfg file automatically configures C++14 compilation.

Documentation

Examples

  • example.nim - Basic LGPL modules
  • test_mit.nim - MIT modules test
  • advanced_example.nim - Buffer processing
  • comprehensive_example.nim - All 73 modules

Requirements

  • Nim 1.6.0+
  • C++14 compatible compiler (GCC, Clang, or MSVC)
  • DaisySP source code (included as submodule)

Links

Contributing

Contributions welcome! Please ensure:

  • Code compiles with nim cpp
  • Examples run successfully
  • License attribution is maintained

Credits

  • DaisySP: Electrosmith (MIT / LGPL-2.1)
  • Nim Wrapper: Community contribution

Happy audio processing! 🎵

About

A Nim wrapper for the DaisySP DSP Library.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages