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

route MIDI device channels #415

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

ReinBentdal
Copy link

I am the creator of this physical MIDI device: https://wavyindustries.com/monkey
It heavily relies on MIDI channels, and routing them to their own Track/Instrument.

  • Updated the code to make it such that the MIDI coming from external MIDI device is routed to the Track or Tracks corresponding to this MIDI channel

Possible improvements:

  • If no instrument is routed to the MIDI channel of the selected device, there is no feedback in the GUI.
    => Add some sort of visual feedback of incoming (and perhaps outgoing) MIDI events

  • Only the messages which are sent to the selected MIDI track is visualised in the Piano Roll. Add some effect to the track to indicate it is receiving MIDI events, such that it's possible to visualise which of the tracks are receiving the events

  • notes in piano roll are not released when switching over to a new Track, which makes them hanging in GUI

Demo, everything is recorded on device, only using Signal to "transform MIDI to sound"
https://github.com/user-attachments/assets/ec2ee251-c1fd-4e19-9dbc-e49328d367df

Copy link

vercel bot commented Oct 23, 2024

@ReinBentdal is attempting to deploy a commit to the Ryohei Kameyama's projects Team on Vercel.

A member of the Team first needs to authorize it.

@ReinBentdal
Copy link
Author

Since my device is a Bluetooth MIDI device, it is possible to stretch the feature set further by integrating Bluetooth MIDI connections directly in the app

@ReinBentdal
Copy link
Author

All channels seems to have an initial instrument loaded, including drums on channel 10.
Thus, when opening Signal, it's directly usable now without loading in Tracks.
But this conflicts with recording. When recording, the notes are only recorded to tracks which are created and not to the "ghost" tracks.

This might not be intuitive.

Solution not obvious to me. Might be to just keep as is, because recording might be thought of as a feature for people above "complete beginner", and will likely then understand why certain parts are not being recorded

@ryohey
Copy link
Owner

ryohey commented Oct 23, 2024

@ReinBentdal Very cool hardware! Excellent.

BTW, there is a difficult decision-making issue here: since signal is a composition-first application, it makes sense that it would record to the track being displayed, regardless of the channel entered from the MIDI keyboard.
But there is also great value in having an integrated experience with hardware like your device.

So I have come up with a solution. Adding the following features would help you achieve your use case:

  1. allow each track to specify the channel of the recording source. The current behavior defaults as Omni mode, which accepts input from any channel
  2. add a setting to record simultaneously on all tracks

This change would increase flexibility. And your use case will be accomplished like this: add 16 tracks and assign each input and output channel to Ch1 to 16. Also set the recording setting to “all tracks”.

However I understand that this procedure is somewhat cumbersome for you. So we may need more features. For example, how about a “MONKEY mode” that pops up when your device is connected and automatically generates these 16 tracks? :)

In any case, it will take a little time, but I will try to implement them one by one on my end. If you want, send me your hardware so I can implement it more correctly!

@ReinBentdal
Copy link
Author

Hi @ryohey , sound good and I understand your dilemma.
I will think some more about how it might be solved as well!

And adding Bluetooth support directly within SIgnal would also be a great addition. For example, dealing with MIDI bluetooth devices on Windows is a bit cumbersome. Being able to connect MONKEY directly to the app using Bluetooth would greatly improve on ease-of-use. I think it should be relatively easy to implement, the web bluetooth API is relatively simple. Just would have to slightly modify how the input ports are handled, to accept both web midi and web bluetooth as endpoint

@ReinBentdal
Copy link
Author

I sent you an email earlier today. Feel free to provide your address and I will look into sending you a unit!

@ryohey
Copy link
Owner

ryohey commented Oct 30, 2024

Hi @ReinBentdal, I am working on this with Pull-Request here #417. We can now specify an input MIDI channel for each track.

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

Successfully merging this pull request may close these issues.

2 participants