MIDI sync
Nodalin supports MIDI input through the Web MIDI API, allowing you to control node properties with hardware controllers, sync to MIDI clock, and respond to note events in real-time.
Quick Start
1. Enable MIDI Access
Click the MIDI icon in the toolbar
Click "Request MIDI Access" when prompted
Grant permission in your browser when asked
Once enabled, Nodalin will automatically detect and connect to available MIDI devices.
2. Select Your MIDI Device
Open MIDI Settings from the toolbar
Your connected MIDI devices will appear in the list
Select the device you want to use by clicking its radio button
The active device will be highlighted
3. Use MIDI CC Nodes
Add a MIDI CC node from the Streams category
Configure the CC number to match your controller (e.g., CC 1 for mod wheel)
Set the min and max range to map MIDI values (0-127) to your desired output range
Connect the MIDI CC node to any property input
Setting Up Virtual MIDI Buses
Virtual MIDI buses allow you to send MIDI from DAWs (like Ableton Live, Logic Pro, FL Studio) or other software directly to Nodalin.
macOS
macOS includes a built-in virtual MIDI bus called IAC Driver:
Open Audio MIDI Setup (Applications > Utilities)

Go to Window > Show MIDI Studio

Double-click the IAC Driver icon
Check "Device is online" and click "Apply"

The IAC bus will now appear in Nodalin's MIDI device list and in your DAW's MIDI output options.

Windows
Windows requires third-party software for virtual MIDI buses:
Download and install loopMIDI (free): https://www.tobias-erichsen.de/software/loopmidi.html
Launch loopMIDI
Click "+" to create a new virtual port
Name it (e.g., "Nodalin MIDI")
The port will appear in Nodalin's MIDI device list
Alternative: MIDI Yoke (older, part of MIDI-OX suite) provides similar functionality.
Linux
Linux users can use ALSA or JACK to create virtual MIDI connections:
Using ALSA:
Using JACK:
Connecting Your DAW
Once you've set up a virtual MIDI bus:
In Your DAW:
Create a MIDI track
Set the track's MIDI output to your virtual bus (e.g., "IAC Driver Bus 1" or "loopMIDI Port")
Add MIDI clips or automation to send CC messages
In Nodalin:
Open MIDI Settings
Select the virtual bus from the device list
The "Detected Control Changes" section will show incoming CC messages
Use these CC numbers in your MIDI CC nodes

Troubleshooting
No MIDI Devices Found
Check browser support: Web MIDI API works in Chrome, Edge, and Opera (not Firefox or Safari)
Reconnect hardware: Unplug and replug your MIDI controller
Refresh permissions: Reload the page and grant MIDI access again
Virtual Bus Not Appearing
macOS: Ensure IAC Driver is "online" in Audio MIDI Setup
Windows: Check that loopMIDI is running and the port is created
All platforms: Restart Nodalin after creating the virtual bus
CC Values Not Responding
Check CC number: Verify it matches your controller's output (use CC Detection)
Verify device selection: Ensure the correct device is selected in MIDI Settings
Check min/max range: Ensure the range makes sense for your property
DAW Not Sending MIDI
Enable MIDI track: Ensure the track is armed/enabled
Check routing: Verify MIDI output is set to the virtual bus
Test with notes: Send MIDI notes to verify the connection works
Best Practices
Use descriptive ranges: Set min/max to match the property you're controlling (e.g., 0-360 for rotation)
Monitor in MIDI Settings: Keep the panel open while setting up to see live CC values
Save your mappings: Nodalin remembers your MIDI CC node configurations
Test incrementally: Connect one MIDI CC node at a time to verify behavior
Example Workflows
Audio-Reactive Visuals with Ableton Live
Set up IAC Driver (macOS) or loopMIDI (Windows)
In Ableton, create a MIDI track with CC automation
Route the track to your virtual bus
In Nodalin, use MIDI CC nodes to control colors, positions, or effects
Press play in Ableton to see your visuals sync
Hardware Controller Performance
Connect your MIDI controller via USB
Select it in Nodalin's MIDI Settings
Map knobs to Wave frequencies, Color hues, or Blur radii
Perform live by tweaking your controller in real-time
Last updated