MIDI.js icon indicating copy to clipboard operation
MIDI.js copied to clipboard

Implementing a MIDI mixer

Open ea2973929 opened this issue 9 years ago • 5 comments

Hi,

I'm thinking of implementing a web based MIDI mixer that would allow me to

  • mute / unmute / solo individual tracks
  • individually set volume on each track

Would this be possible using MIDI.js? Do you have any ideas about the general approach I could take?

ea2973929 avatar Mar 27 '15 09:03 ea2973929

Hi- I'm currently working with library on a project and currently on this feature. I'm interested in this as well and will post back here with my findings.

All the best, Diran O. http://dreamthinkdesign.com

mrogunlana avatar Apr 02 '15 22:04 mrogunlana

Sounds cool,

I've been playing around with it a bit. Seems like MIDI.setVolume(channel, volume) is available to set the volume on an individual channel. However, none of the plugins seems to implement it properly, just using a master volume and ignoring the channel argument.

So far I've looked into the Web Audio plugin and implementing it there would be really simple.

ea2973929 avatar Apr 05 '15 08:04 ea2973929

Has anyone had luck implementing this? It's still on my TODO list. I'm thinking if there's a way to run as node through audioContext, this would be pretty simple.

mb2140 avatar Sep 27 '15 15:09 mb2140

I experimented a bit. Now my memory is getting a bit fuzzy about what I did though. I looked at making it an audioContext node but came to the conclusion that it could just as well be a scaling factor like masterVolume, but kept for individual channels - in that case the implementation could more or less be the same for all plugins. Is there somewhere natural to place shared code between plugins?

Then about keeping track of the individual channels - would the best thing there be to keep it in root.channels[channel].volume?

Or should there be some sort of separate "mixer settings"?

ea2973929 avatar Oct 19 '15 13:10 ea2973929

A workaround--a hassle-full kind--would be to split the channel so there is only 1 track per channel.

An application that can do this would be Logic Pro (for OS X). Dunno for Windows though.

tjvg91 avatar Jan 21 '16 07:01 tjvg91