Replies: 3 comments
|
i just made https://fun.catsandsolenoids.eu/ as i wanted to explore shaders + knobs, authorise midi, type "c" for config and select an interface click learn / configure some midi cc and move things ! |
|
another idea i want to toy with would be ... lfo, we can get the clock via midi and beat synced lfo with up / low limit would be nice to have to animate parameters, I'll probably have a round of test in my fun playground, and will propose things when i have a state i'm happy with. |
|
well this is WAY too much fun, I made an alternative loader / controller for nw_wrld module and I have to say that i'm now missing them in the real nw_wrld :) demo here https://fun.catsandsolenoids.eu/particles/?module=fragment-shader |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
A question came up about adding MIDI Control Change (CC) support to nw_wrld, and I wanted to open this up for discussion before diving into implementation. This would be a significant architectural change, so I'd like to hear from the community about whether this is something you'd actually use.
What's Being Proposed
Right now, nw_wrld is built around a trigger-based system. When you hit a MIDI note (or send an OSC message), it fires a channel, which executes methods with pre-configured parameter values. Everything is discrete: you trigger something, and it happens with the parameters you've set up in the dashboard.
What's being requested is support for continuous control via MIDI CC messages. This would allow you to:
Think of it like the difference between triggering a visual effect with a drum pad vs. tweening a parameter with a knob.
Current Architecture
The existing system works like this:
color: #FF0000,duration: 2000)This is all handled through
InputManager.js, which currently only listens fornoteonevents on specific MIDI channels:There's no listener for
controlchangeevents, and there's no mechanism to dynamically update parameter values after methods have been configured.What Would Need to Change
To support MIDI CC, we'd need to implement:
CC Message Handling: Add
controlchangeevent listeners inInputManager.jsalongside the existingnoteonlistenersParameter Binding Layer: Create a system to map CC controllers to method parameters. This would need:
userData.json)Real-Time Parameter Updates: Modify the method execution flow in
Projector.jsto support two modes:Method Categorization: Potentially distinguish between methods that make sense for continuous control vs. discrete triggering. Some examples:
color,opacity,scale,rotation,zoomLevel,cameraSpeedshow,hide,clearAll,viewDirection(discrete states)Starter Module Updates: Update existing modules to handle continuous parameter updates gracefully (right now they assume parameters are set once per trigger)
Two Possible Approaches
Option A: Hybrid System
Option B: Separate "Continuous Control" Mode
Examples of What This Would Enable
Example 1: Live Color Tweening
hueparameter of acolormethodExample 2: Dynamic Camera Control
zoomLevelcameraSpeedMy Take
I've always preferred trigger-based systems because they're simpler and encourage more deliberate compositional choices. With that said, I can absolutely see the value for live performance; especially if you're coming from TouchDesigner or other VJ tools where continuous control is standard.
This is a reasonably large feature that would touch multiple parts of the codebase. I'd want to make sure it's something people would actually use. If enough people are interested, we can prioritise it. If not, we can keep the system trigger-based and focus on stabilisation and other features.
Opening this Poll for both discussion and as a decision.
6 votes ·
All reactions