[Csnd] More than 16 MIDI channels
Date | 2019-12-17 05:48 |
From | Josh Moore |
Subject | [Csnd] More than 16 MIDI channels |
Is there a way to map more than one MIDI port to csound? Ie, channel 1-16 being one MIDI port and channel 17-32 being the second?
Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here
|
Date | 2019-12-17 06:37 |
From | Victor Lazzarini |
Subject | Re: [Csnd] More than 16 MIDI channels |
Not possible, you can only have one port at a time. Prof. Victor Lazzarini
Maynooth University
Ireland
|
Date | 2019-12-17 06:51 |
From | Josh Moore |
Subject | Re: [Csnd] More than 16 MIDI channels |
I guess if I have more than 16 instruments, OSC it is then. :P On Mon, Dec 16, 2019 at 10:37 PM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
|
Date | 2019-12-17 06:58 |
From | Victor Lazzarini |
Subject | Re: [Csnd] More than 16 MIDI channels |
yes, or straight UDP.
We discussed this situation before and Csound would require main surgery to allow for more than one port. We could look at it again for 7 if there is enough interest.
Prof. Victor Lazzarini
Maynooth University
Ireland
|
Date | 2019-12-17 13:51 |
From | Bernard Geyer |
Subject | Re: [Csnd] More than 16 MIDI channels |
I think it's not so much to have more than 16 channels, that to have access to the midi device. This is one thing I miss from supercollider: var port = MIDIIn.findPort(deviceName, portName) This should really be implemented! In the moment (because I need multiple devices, but not to much channels) I use Midi Patchbay from Pete Yandell to redirect multiple midi inputs to Iac Driver, by assigning different devices to other channels. There are equivalent programs for Windows and Linux. Of course, that is not enough if we want to use f.e. some midi controllers + Role Seaboard -- Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2019-12-17 13:58 |
From | Victor Lazzarini |
Subject | Re: [Csnd] More than 16 MIDI channels |
That's something not possible with the current midi implementation in Csound. It's much higher level than that, but it has some benefits, for instance, the seamlessness of instantiation and de-instantiation. I think we'll do well to have ports mapped to channels > 16, which will allow us to keep the very useful mechanisms we have in the system. Prof. Victor Lazzarini Maynooth University Ireland > On 17 Dec 2019, at 13:35, Bernard Geyer |
Date | 2019-12-17 17:06 |
From | Bernard Geyer |
Subject | Re: [Csnd] More than 16 MIDI channels |
> I think we'll do well to have ports mapped to channels > 16, which will allow us to keep the very useful mechanisms we have in the system. Yes, I understand, this system is very useful. In this case, it's just about organizing code differently, for example putting channel offsets in global variables. -- Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2019-12-20 22:36 |
From | Partev Sarkissian <0000060b2ef1338e-dmarc-request@LISTSERV.HEANET.IE> |
Subject | Re: [Csnd] More than 16 MIDI channels |
Roland XV5080 rack synth had an A-16 & B-16 porting to get 32 MIDI channels.
MIDI select pull-down menu on a DAW, would come up as an A & B selection.
Been a while since we used that function. You might want to check it out on the
Roland site, get some idea how they implemented that and try to do the equivalent
on Csound. Came in handy on a couple of film scores we did.
-PBS
==========================
-----Original Message-----
From: Bernard Geyer <micamusic2@GMAIL.COM> To: CSOUND <CSOUND@LISTSERV.HEANET.IE> Sent: Tue, Dec 17, 2019 8:49 am Subject: Re: [Csnd] More than 16 MIDI channels > I think we'll do well to have ports mapped to channels > 16, which will
allow us to keep the very useful mechanisms we have in the system. Yes, I understand, this system is very useful. In this case, it's just about organizing code differently, for example putting channel offsets in global variables. -- Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2019-12-21 04:57 |
From | Josh Moore |
Subject | Re: [Csnd] More than 16 MIDI channels |
Yes, this works by setting --port=10000 as a flag in the csd. Now I can have 32-64 audio channels with 4 MIDI ports and OSC/HID interface if I really want it, with live coding/rapid prototyping. Instead of writing and re-initializing every time I make a code change (or in cabbage having to re-render plugins), just add some invalues and pd controls with init settings to the instruments and not only is it done on the fly, it's instant recall. I can just spawn csds with csound6~ and vim edit them at will, and then write when I'm done and save the patch. ****ing killer. ---------------------- Oh yeah, lots of stuff supports multiple MIDI ports. Personally, I like Pure Data's implementation of virtual MIDI ports. It will create however many you like and the channels go from 1-n, so port 1 ch 1 would start at 17 and so on. Really easy to manage. I usually choose four in that environment for 64 channels. Csound~ works so theoretically I could just use Pure Data (and I do quite a bit of that) but lately I've been using just vim and terminal because it allows me to code instruments quick on the fly and send notes and automation. And now I'm wondering if live coding works in csound~ and I'm going to have to try that now. On Fri, Dec 20, 2019 at 2:36 PM Partev Sarkissian <0000060b2ef1338e-dmarc-request@listserv.heanet.ie> wrote:
|
Date | 2019-12-21 10:00 |
From | Victor Lazzarini |
Subject | Re: [Csnd] More than 16 MIDI channels |
I had a look at the portmidi backend code and it appears we could map each device messages to ports > 16 by a small change in the code, as we can already read data from all devices using ‘a’. I wonder what was the issue I had when I looked at this before. I’ll see if I can do some tests here. ======================== Prof. Victor Lazzarini Maynooth University Ireland > On 21 Dec 2019, at 04:57, Josh Moore |
Date | 2019-12-21 10:10 |
From | Victor Lazzarini |
Subject | Re: [Csnd] More than 16 MIDI channels |
I see now what the issue is. Csound uses a byte array to store msgs coming from the midi device. We’ll need to make it an int. That’ll change the interface and the API, and so that’s why I thought Csound 7. ======================== Prof. Victor Lazzarini Maynooth University Ireland > On 21 Dec 2019, at 10:00, Victor Lazzarini |
Date | 2019-12-21 11:59 |
From | Josh Moore |
Subject | Re: [Csnd] More than 16 MIDI channels |
Yeah in the meantime this seems to be a decent workaround, I can still see uses for it for some people but for my environment I'm pretty happy with it, if I need more than 16 instruments I can just spawn more instances with different port numbers and the multiple processes can be mixed on the same audio chain wrapped in that manner since they all talk to the same audio driver. I'm not too fond of JACK's performance so I usually use the raw sound card output with high priority. It also works for Cabbage as well. I created a blank cabbage instrument with just csound console for GUI and 32 channels output, saved it as a VST, and I've got vim talking to it and I got raw MIDI going to it so I can live code in the DAW even. Pretty neat. On Sat, Dec 21, 2019 at 2:10 AM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote: I see now what the issue is. Csound uses a byte array to store msgs coming from the midi device. |
Date | 2019-12-21 12:11 |
From | Victor Lazzarini |
Subject | Re: [Csnd] More than 16 MIDI channels |
Good. I am not quite sure how you’re making it work, but sounds interesting. How are you using the UDP server to enable it? ======================== Prof. Victor Lazzarini Maynooth University Ireland > On 21 Dec 2019, at 11:59, Josh Moore |
Date | 2019-12-21 12:46 |
From | Josh Moore |
Subject | Re: [Csnd] More than 16 MIDI channels |
Well, Steven Yi's Csound plugin uses port 10000, but he allows changing of it by :call Csound_set_port(n) per the documentation.
I use this template for live coding, and modify flags to suit my needs, I've included the copypasta from Cabbage but anyway... It's a matter of just setting the flags in CsOptions to enable the UDP server. You just have to reflect the csd with the port vim is sending to is all. The worst that can happen is Csound won't bind to the port if it's already in use. The first 16 instruments map to Csound's MIDI port channels 1-16, and I've got the rest always on in case I want to add effects sends/returns to the template using zak. Certainly not a documented thing. I tried it on a whim basically. in theory I might be able to use an include and hard link the cabbage plugin to the external csd so that when I save the coded csd and re-open the project it will re-call the instruments and settings. I also might be able to create some global cabbage controls to have higher precision automation for things that need it. ------------------------------------------------------- <Cabbage> form caption("Untitled") size(800, 600), colour(58, 110, 182), pluginid("def1") csoundoutput bounds(0, 0, 800, 600) </Cabbage> <CsoundSynthesizer> <CsOptions> -+rtmidi=NULL -M0 --port=10000 </CsOptions> <CsInstruments> ksmps = 16 nchnls = 32 0dbfs = 1 instr 1 endin instr 2 endin instr 3 endin instr 4 endin instr 5 endin instr 6 endin instr 7 endin instr 8 endin instr 9 endin instr 10 endin instr 11 endin instr 12 endin instr 13 endin instr 14 endin instr 15 endin instr 16 endin instr 17 endin instr 18 endin instr 19 endin instr 20 endin instr 21 endin instr 22 endin instr 23 endin instr 24 endin </CsInstruments> <CsScore> i 17 0 z i 18 0 z i 19 0 z i 20 0 z i 21 0 z i 22 0 z i 23 0 z i 24 0 z </CsScore> </CsoundSynthesizer> On Sat, Dec 21, 2019 at 4:11 AM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote: Good. I am not quite sure how you’re making it work, but sounds interesting. How are you using the UDP server to |
Date | 2019-12-21 14:55 |
From | Victor Lazzarini |
Subject | Re: [Csnd] More than 16 MIDI channels |
I see, good solution.
I actually think I've found a way of enabling mapping of multiple ports without breaking the API.
Prof. Victor Lazzarini
Maynooth University
Ireland
|
Date | 2019-12-22 12:19 |
From | Christian Bacher <000005d2745f1ec0-dmarc-request@LISTSERV.HEANET.IE> |
Subject | [Csnd] OSC support was Re: [Csnd] More than 16 MIDI channels |
I am using OSC to solve this problem. In implementing this some feature requests popped up: - adding native string split S[],SS and join S,S[]S opcodes for processing osc paths - may be also useful for other things. - a default parameter in chnget: the channel name and the osc path equal i.e. in the instrument i can write kfreq chnget "/instr1/freq" and the osc handler (based on OSCraw) calls ' chnset val, "/instr1/freq" ' anyway when it receives the osc message "/instr1/freq" val note - this is a nice to have to avoid having a lot of chnset calls for setting defaults in the global space - i am working with up to 40 instruments each with 20+ parameters however to go a step further i can imagine a native osc support similar to midi (tbd): 1. there is a default port listening to osc messages 2. whenever a message /instr1/note 1 <note> <vel> is received the instrument named "instr1" is activated with (note=p4,vel=p5) and with /instr1/note 0 <note> <vel> it is turned off.here also further parameters mapped to p6,p7,p8 etc could be added. 3. an opcode "oscget" for single valued messages: kfreq oscget
"/instr1/freq",5000 -- an opcode which does the same as my
implementation with the channel system (see above) and providing a
default value. 4. some configuration possibilities e.g. defining the noteon /
noteoff path format An example would be having an analog synth which can make pads/basses/leads depending on the krate parameters. Using the OSC stuff the solution here was to add a "variant"
information to the control and noteon messages (p6 = variant). I
wonder how to do in csound without that?
On 12/17/19 7:58 AM, Victor Lazzarini
wrote:
yes, or straight UDP. |
Date | 2019-12-23 12:15 |
From | Josh Moore |
Subject | Re: [Csnd] More than 16 MIDI channels |
Nice, that might be interesting for headless stuff over network. Here is kind of a random track I threw together testing all of this in Cabbage. Pretty much all the synths except the 303 is Csound, plus the kick drum, the rest is just samples, and there's some re-sampling as well going on in the project. I've got some ideas for Rory too like a standard vst (or object) that comes with cabbage in which you can load a .csd from within it, live code to it, write, and then the location could also possibly be saved with the project. I'll wait a couple of days to see if he sees this thread and then if not I'll just post to the Cabbage forum. On Sat, Dec 21, 2019 at 6:55 AM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
|
Date | 2019-12-23 17:11 |
From | Victor Lazzarini |
Subject | Re: [Csnd] More than 16 MIDI channels |
I’ve implemented a “m” device in the portmidi backend (-Mm) to map all existing ports into higher channels. It seems to be OK with normal single port operation, so I don’t think I broke anything, but I need to test with multiple ports. ======================== Prof. Victor Lazzarini Maynooth University Ireland > On 23 Dec 2019, at 12:15, Josh Moore |
Date | 2019-12-24 10:35 |
From | Josh Moore |
Subject | Re: [Csnd] More than 16 MIDI channels |
I've done those GUI object modifications and got 64 gui objects that I can call at will from a live code, giving me high resolution automation. Renoise has some really nice LFO controls and things like that. The demo of this in action is here... So everyone knows this also works. :) On Mon, Dec 23, 2019 at 9:11 AM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote: I’ve implemented a “m” device in the portmidi backend (-Mm) to map all existing ports into higher channels. |
Date | 2019-12-24 13:09 |
From | Victor Lazzarini |
Subject | Re: [Csnd] More than 16 MIDI channels |
I have added a portmidi device “m” which will allow all devices to be mapped to higher number channels, up to 64 separate devices (1024 channels). To use it all just pass -Mm to select the mapping mode, and the devices will be mapped in the order given by portmidi. For example ./csound -odac midiprint.csd -Mm ... 0: IAC Driver Bus 1 (portmidi) 1: Network Session 1 (portmidi) 2: VMPK Output (portmidi) PortMIDI: Activated input device 0: 'IAC Driver Bus 1' (CoreMIDI) Device mapped to channels 1 to 16 PortMIDI: Activated input device 1: 'Network Session 1' (CoreMIDI) Device mapped to channels 17 to 32 PortMIDI: Activated input device 2: 'VMPK Output' (CoreMIDI) Device mapped to channels 33 to 48 MIDI channels in Csound then should work as usual but will not be limited to 16. I’ll write to devel list to give the details of the mechanism for anyone wanting to use it. ======================== Prof. Victor Lazzarini Maynooth University Ireland > On 23 Dec 2019, at 17:11, Victor Lazzarini |
Date | 2019-12-24 13:10 |
From | Victor Lazzarini |
Subject | Re: [Csnd] More than 16 MIDI channels |
This is in git develop now, btw. ======================== Prof. Victor Lazzarini Maynooth University Ireland > On 24 Dec 2019, at 13:09, Victor Lazzarini |
Date | 2019-12-24 13:29 |
From | Josh Moore |
Subject | Re: [Csnd] More than 16 MIDI channels |
nice! On Tue, Dec 24, 2019 at 5:10 AM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote: This is in git develop now, btw. |
Date | 2020-05-06 16:15 |
From | Chuckk Hubbard |
Subject | Re: [Csnd] More than 16 MIDI channels |
This is amazing. I've been asking about multiple MIDI devices for over a decade! I mentioned the PD method, too, in 2007, if not earlier. Wondering if this works for MIDI out as well as in?? -Chuckk On Sat, Dec 21, 2019 at 6:57 AM Josh Moore <kh405.7h30ry@gmail.com> wrote:
-- Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |