Writing plugins
Our general attitude is: find a compatible plugin wrapper SDK that offers the capabilities you need and go with it.
No one plugin format offers every capability of Armstrong, except in the very rare cases a plugin belongs in the core plugin set.
So as to picking a plugin format, there are the following things to consider:
VST
- Custom GUI allowed
- Multi-IO (VST 2.x, not 3)
- Receive MIDI
- Allows saving custom data in presets
- Parameters support byte values in the range 0..127
Buzz
- Custom GUI allowed
- Multi-IO (Newbuzz)
- Custom pattern editors (newbuzz)
- Does input mixing
- Receive MIDI
Psycle and LADSPA
- Cross platform - no GUI
- Stereo only
- No MIDI capabilities
Lunar
- Cross platform
- Multi-IO
- Interval, value and note controllers (native peer)
- Send/receive MIDI
- Supports OpenGL for GUI
- Minimal environment and libraries support
Native plugins
- Native plugins support everything supported by Armstrong and the host OS
- Should not depend on any specific GUI toolkits, beyond supporting wrapped plugin GUIs
- Compiled directly into the Armstrong shared library, no external plugin DLLs supported
- Should be essential and/or versatile - getting included in the core should be hard