Features
This section provides a detailed exploration of SweejTech MetaSound MIDI's features and how they work together to create interactive audio experiences.
MIDI Device Management
Device Discovery and Selection
The plugin automatically detects connected MIDI devices and makes them available for selection:
- System scans for available MIDI devices on startup and when requested
- Devices can be selected through Project Settings
Device Status Monitoring
The plugin tracks the connection status of MIDI devices:
- Available devices are marked as such in the settings
- Disconnected devices are shown as "Not Available"
- The system can refresh the device list to detect newly connected hardware
MIDI Interfaces
Simple MIDI Interface
The Simple MIDI interface provides basic note event handling:
- Note On - Triggered when a key is pressed
- Note On Number - The MIDI note number (0-127)
- Note On Velocity - The velocity value (0-127)
- Note Off - Triggered when a key is released
- Note Off Number - The MIDI note number being released
- Note Off Velocity - The release velocity value (0-127)
This interface is ideal for basic sound triggering and simple control scenarios. It's the easiest entry point for using MIDI with MetaSound.
Watch Demo: Simple MIDI Interface
Control Change Interface
The Control Change interface provides access to knobs, sliders, and other controllers:
- On Update - Triggered when any control value changes
- Values - Array containing all current CC values
- MIDI Map Control Change patch - Helper for accessing specific CC indices
This interface is particularly useful for controlling sound parameters in real-time. Each knob or slider on your MIDI controller corresponds to a specific CC value that can be mapped to parameters in your MetaSound.
Watch Demo: Control Change Interface
Voices Interface
The Voices interface provides comprehensive support for polyphonic MIDI control:
- ActiveValues - Boolean array indicating which voices are currently active
- ChannelValues - MIDI channel for each voice
- NoteNumberValues - Note numbers (0-127) for each voice
- NoteOffValues - Boolean triggers when notes are released for each voice
- NoteOnValues - Boolean triggers when notes are pressed for each voice
- NoteVelocityValues - Velocity values (0-127) for each voice
- OnUpdate - Event triggered when voice data changes
Voice management efficiently allocates sound resources:
- Configurable voice count (1-32) in project settings
- Voice stealing for when polyphony exceeds available voices
- Efficient resource sharing to minimize performance impact
This advanced interface is designed for more sophisticated use cases like synthesizers or complex sound design where multiple independent voices are needed.
Pitch Bend Interface
The Pitch Bend interface provides data about the Pitch Bend wheel:
- On Update - Triggered when pitch bend value changes
- Value - Raw pitch bend value ranging from 0 to 16383, with center position at 8192
- Scaled - Normalized float value between -1.0 and 1.0, making it easier to use for pitch control
This interface allows for expressive control over pitch and other continuous parameters. The pitch bend wheel offers more precise control than standard keys and is ideal for vibrato effects, portamento, or other continuous parameter modulation. The normalized Scaled value is particularly useful as it can be directly multiplied by a range value to control pitch shifting in semitones or other parameter ranges.
MIDI Logging and Debugging
Real-time Message Logging
The MIDI Logger provides detailed information about incoming MIDI events:
- Note On/Off events with note number and velocity
- Control Change events with controller number and value
- Pitch Bend events with value
- Timestamp information for precise timing analysis
This logging mechanism is essential for debugging and understanding the MIDI data flow, especially when working with unfamiliar controllers.
Example Content
MIDI Map Control Change Patch
The MIDI Map Control Change patch simplifies the process of mapping specific controllers to parameters
- Add the patch: Right-click in MetaSound editor and search for "SweejTech MIDI Map Control Change"
- Connect "On Update" from the Control Change interface to the patch's "On Update" input
- Connect "Values" from the Control Change interface to the patch's "Values" input
- Specify CC number: Set the "Index" parameter to the CC number you want to access. Use the MIDI Monitor log to identify which CC number corresponds to your desired knob/slider
- Use the output: Connect the "Value" output to any parameter you want to control
Learning Resources
The plugin includes example MetaSounds that demonstrate key concepts:
- Basic note triggering
- Control change mapping
- Voice allocation
- Complex parameter control
These examples serve as valuable learning tools and starting points for your own projects.
Synthesizer Example
The plugin includes a synthesizer example that demonstrates advanced MIDI integration:
- Key triggering with polyphony
- Parameter control with CC values
- Real-time sound design capabilities
- Modulation and effect control