Ask Your Question

How do I send MIDI on multiple MIDI channels

asked 2016-06-22 09:12:10 -0500

danielmkarlsson gravatar image

updated 2016-06-22 09:13:05 -0500

I want to use Tidal to control my Volca Sample. Each drum sample slot on the Volca Sample requires that midi note data be sent on it's own midi channel. I would like to sequence midi channels 1 through 10 independently. I am stuck at sending midi on just channel 1 which seems to be the default. I can't find any information on how to send midi on multiple midi channels. I was however able to find information stating that it is indeed possible.

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2016-06-22 09:59:34 -0500

lennart gravatar image

updated 2016-07-11 10:15:13 -0500

kindohm gravatar image

THe third parameter of midiSetters specifies the MIDI channel when connecting to a MIDI device, e.g.:

import Sound.Tidal.Context
import Sound.Tidal.MIDI.Stream
import Sound.Tidal.MIDI.Synth
(cps, getNow) <- cpsUtils
devs <- midiDevices
(m1,mt1) <- midiSetters devs "Volca Sample MIDI Port" 1 synthController getNow

In this case we connect to the MIDI Port named Volca Sample MIDI Port on channel 1 with a simple synth controller mapping (as of now there is no explicit mapping for Volca Sample, also note that the MIDI Port name is just guessed, as I have none of these devices to find out the correct name, use putStrLn =<< displayOutputDevices to check)

If you want to connect to different channels of the same device, you can simply create a new stream for another channel:

(m2, mt2) <- midiDevices devs "Volca Sample MIDI Port" 2 synthController getNow
(m3, mt3) <- midiDevices devs "Volca Sample MIDI Port" 3 synthController getNow

Will create two new streams connecting to channel 2 and 3 respectively. You can use them like any other tidal/tidal-midi stream:

m1 $ n "a e f"
m2 $ n "e f"
m3 $ n "f"

So for ten channels, you would have to repeat this until m10 and maybe store in a startup file for tidal.

edit flag offensive delete link more



i'd like to add that in order to `hush` these new *streams*, you need to add a line like this (to your `.emacs` file or your `.tidal` file) `let hush = mapM_ ($ silence) [m1,m2,m3,...,m10]`

lvm gravatar imagelvm ( 2016-06-22 10:53:34 -0500 )edit

The "import Sound.Tidal.Synth" should be "import Sound.Tidal.MIDI.Synth" in 0.8, correct?

kindohm gravatar imagekindohm ( 2016-06-22 18:21:40 -0500 )edit

(kinda late but) @kindohm: that's correct

lvm gravatar imagelvm ( 2016-06-30 09:46:27 -0500 )edit

@lvm Because I am not really sure where this line of code should be added, I have been using following solution to mute the MIDI tracks: m1 $ midinote "~" Kinda works for me :)

phlux gravatar imagephlux ( 2016-07-19 15:06:36 -0500 )edit

@phlux sorry if i wasn't clear enough but you can write that line in the tidal file you're using or in the configuration file for your editor (in emacs -> tidal.el, in Atom I don't remember, but there's a Q in this site about that). Hope this helps!

lvm gravatar imagelvm ( 2016-07-19 22:44:30 -0500 )edit

Question Tools


Asked: 2016-06-22 09:12:10 -0500

Seen: 956 times

Last updated: Jul 11 '16