Simple k-rate opcode
The LFSR (Linear Feedback Shift Register) opcode is a clean example of a k-rate opcode with state:Opcodes/lfsr.cpp
Opcodes/lfsr.cpp
- Uses static type strings (
otypes,itypes) for self-defined argument types - Implements state variables for algorithm
- Checks
in_count()for optional arguments - Separates business logic (
_process()) from framework methods
Template-based array operations
The array opcodes demonstrate template-based design for code reuse:Opcodes/arrayops.cpp
Opcodes/arrayops.cpp
- Template parameters for operation functions
- Code reuse across many similar opcodes
- STL algorithms (
std::transform) for clean array processing - Proper array initialization and length validation
- Executes at init-time if no perf-time processing needed
Reduction operation
The dot product opcode shows reduction operations:Opcodes/arrayops.cpp
- Arrays as input, scalar as output
- STL algorithm
std::inner_productfor dot product - Length validation for array inputs
Variable argument opcode
The trigger envelope opcodes demonstrate variable argument handling:Opcodes/trigEnvSegs.cpp
Opcodes/trigEnvSegs.cpp
Plugin<1, 64>allows up to 64 argumentsin_count()returns actual argument count- Argument type
"km"means k-rate followed by variable args - Uses
std::vectorto store parsed arguments - Same opcode class for both k-rate and a-rate variants
outargs(0)[i]syntax for a-rate array access
Common patterns
Initialization patterns
Processing patterns
Registration patterns
Next steps
Creating opcodes
Step-by-step tutorial for writing your own opcodes
API reference
Complete framework documentation