Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Specify Modules for Global Channel System #10

Open
gregsn opened this issue Jun 1, 2023 · 4 comments
Open

Specify Modules for Global Channel System #10

gregsn opened this issue Jun 1, 2023 · 4 comments
Assignees

Comments

@gregsn
Copy link
Member

gregsn commented Jun 1, 2023

No description provided.

@gregsn gregsn changed the title Specify Modules ofr Global Channel System Specify Modules for Global Channel System Jun 1, 2023
@joreg
Copy link
Member

joreg commented Jun 21, 2023

Place one OSCIn/OSCOut node per configuration. like this, the configuration itself can be dynamically set, e.g. via commandline arguments. When adding a binding in the Global Channels window, you can choose among the existing instances of the OSCIn/OSCOut by name.

OSCIn node with inputs:

  • Name
  • Listening IP
  • Port
  • Enabled

OSCOut node with inputs:

  • Name
  • Server IPs
  • Ports
  • Maximum Bundle Size
  • Enabled

In a binding you then choose:

  • Module (by name)
  • osc-address (could default to /name-of-channel)
  • for senders: bundled per frame (default true)

@gregsn
Copy link
Member Author

gregsn commented Jun 23, 2023

While discussing with Randall we came up with yet another approach.

The idea of having several OSCIn and OSCOut nodes in the user patch each of them having a name and a IP/Port configuration

  • is a little bit tricky to implement (we'd need to have some SUPEROSCModule in the background that all OSCIn nodes talk to - think SingleInstancePerApp)
  • it wouldn't allow adding a UI for configuration later on

That's why we came up with a superior approach:
There is one OSCModule node that has a second model input "Config", which I can connect something to (in order to do config programmatically after reading a config file) - or the UI can write to it, similar to how the bindings get stored in the model pin. (which maybe should be renamed to "Bindings" then)

we sketched this with the MIDI module, but this should apply to OSC as well:
grafik

The input of the Module:
grafik

@gregsn
Copy link
Member Author

gregsn commented Jun 23, 2023

In the patch you have the possibility to configure presets for OSC In & OSC Out via OSCInPreset, OSCOutPreset nodes, which you can feed into the OSCModule Config pin like seen above.

OSC UI:

  • You can choose between OSC In & OSC Out Modules
  • Once you select the type of module, in the Binding dialog you can pick from a list of presets
  • You are also allowed to modify the IP & Port manually, but the preset dropdown will reflect that this is not a preset anymore. You can't change the direction as you are configuring either an OSCIn or OSCOut binding.
  • As soon as you'd configure something manually that also is in the preset list, the preset dropdown would show you
  • The OSC address is something you always want to specify per binding. It's not part of neither OSCIn nor OSCOut presets.

In MIDI we thought:

  • you only get a MIDI option, not in & out when choosing the binding.
  • Inside you still can decide to send and/or receive
  • You select the device. In the case of bidirectional communication, the device will be the same for both. If you want different devices you need to create two individual bindings.
  • The preset nodes would be called MIDIPreset. They come with a Name, Device, Channel, and Direction.
  • Controller would only be configurable in the binding itself. (Same for the MIDINote if we decide to incorporate them in the future)

@ravazquez
Copy link
Contributor

After further consideration the following adaptations to the above came up:

OSC: Instead of displaying 'OSCIn' and 'OSCOut' options when creating the binding, we just display 'OSC', and the in the Binding UI the direction can be selected between In or Out (both cannot be enabled simultaneously in the same binding, think radio button behaviour)

This makes things consistent with the MIDI approach, and avoids new handling on the GlobalChannel viewer for separate module directionality. This also allows the UI to display directionality with arrow or other nicer UI elements.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants