Csound Csound-dev Csound-tekno Search About

[Csnd-dev] Csound Mixer Models? 8 x 2 and 2 x 8

Date2025-04-13 03:40
From"Dr. Richard Boulanger"
Subject[Csnd-dev] Csound Mixer Models? 8 x 2 and 2 x 8
Hello Csounders,

I am looking for mixer models to study, adapt, and use in CsoundMeta.

Might any of you have some that you could send me?  (or share in this thread)

I have a number in my collection, but none exactly fit the bill.

Currently, in CsoundMeta, we have unique effects on all our synthetic and sampling instruments - and these can be controllers and turned on and off

But now, we can do live processing and sampling from multiple USB-C mics connected wirelessly to the Quest 3 XR headsets, and so we are designing all sorts of live effects.
- and they sound cool and are a lot of fun, too.

Currently, we can patch from a live mic or any synth source (orb) in series - making an a nice effect chain in which each of the effects can be muted or controlled and can feed back into each other too.

Currently, we also have several 'multiFX instruments' that take the live inputs (or orb output) and mix them internally - tuning them on-off, controlling them, etc.

BUT... 

I am working on TWO live input (on the fly) mixers 
  - one that could patch effects, in parallel, from a single stereo source. 
  - the other, that could patch up to eight stereo sources to a single effect (or effect chain)

I have not tested this yet, but it might be that CsoundUnity supports multiple CSDs at Multiple numbers of channels. If that is the case, then I could design mixer csds in which I set nchnls = 8 while all the other csd in CsoundMeta (over 300 now) are in stereo, but I doubt that CsoundUnity (or UnityAudio) works this way.

Since these (multi-input and multi-output) mixers need to run as stereo csds (nchnls = 2), I am a little stumped because...

Mixer A needs:
- Up to Eight Stereo inputs (patched in [live - on the fly, literally;-)]) from the output of csds that are rendering audio in real time - as "ORBS"
- Two channels of Output
- Level control (linked) on each stereo input channel, and I would add limiters, compressors, and panning on each of the input channels too

Mixer B needs:
- One stereo Input (patched in [live - on the fly, literally;-)]) 
- Up to 8 stereo channels of output that can be patched to any of our effect instruments (delays, vocoders, flangers, distortions, resonators, etc.)

As I continue to study all of my models in The Csound Manual, The Floss Manual, The CsoundQt Examples, The Csound Catalog, The McCurdy Collection, The Heintz and Yi UDO Libraries, The Cabbage examples, and models in Jeanette and Dave Seidel's compositions and Instruments, I would love to look at any of your mixer solutions for clues and inspiration.

using globals
using arrays
using chnmix
using zak
using mixersend
using signalflowgraph
using OSC

Thank you for your time, consideration, and inspiration already...
I would be grateful and appreciate any advice or models that you might have to offer.

Thanks!

- Dr.B


Dr. Richard Boulanger

Professor

Electronic Production and Design

Berklee College of Music

Professional Writing & Technology Division


Date2025-04-13 11:21
From"Jeanette C."
SubjectRe: [Csnd] Csound Mixer Models? 8 x 2 and 2 x 8
Hello richard,
first I would like to ask you to share your effects, if possible, this sounds 
very interesting. Your multiFX instruments sound like a lot of fun and 
inspiration for further experimentation.

Then, I have a few mixers. Though I have separated the means of passing audio 
around and mixing it. There is a multi-mono to stereo mixer, using an a-rate 
array for audio inputs, a k-rate array for input volumes, one k-rate array for 
input panning and another one for muting. Internally it's just a while loop 
adding panned and amplified inputs to the audio outputs.

For passing audio around I use chn-opcodes. There is an example of that in the 
Scene Creator collection:
http://juliencoder.de/dream/scene_creator-0.5.zip

If your Csound can't run with more than two inputs/outputs, I'd possibly look 
at the JackO opcodes or one of the network-based ones, like OSC. If you can 
write an application around the Csound code, which can access your audio 
inputs, couldn't you use channels to pass in audio that way? Isn't that what 
Cabbage and other systems do? Get controls and audio from the outside and 
write them to Csound channels using the Csound API?

Best wishes,

Jeanette

-- 
  * Website: http://juliencoder.de - for summer is a state of sound
  * Youtube: https://www.youtube.com/channel/UCMS4rfGrTwz8W7jhC1Jnv7g
  * Audiobombs: https://www.audiobombs.com/users/jeanette_c
  * GitHub: https://github.com/jeanette-c

She's so lucky,
she's a star
But she cry, cry, cries in her lonely heart... <3
(Britney Spears)

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

Date2025-04-13 13:33
From"Dr. Richard Boulanger"
SubjectRe: [Csnd] Csound Mixer Models? 8 x 2 and 2 x 8
Dear Jeanette,

Thank you for sharing this and for sharing your advice, too.

Last night, before writing the email to the list, I spent a few hours studying your instrument library.
I am constantly discovering great things in your work and your collection!
One of my most often used live effects is your shimmer reverb csd!

We are sharing everything about CsoundMeta, including your beautiful music and sounds that render as csd files in there as well!

I will clean up all the effect instruments and share them separately over the next few weeks.

We are about to make the entire project available to everyone.

I am not sure exactly how Strong Bear handles the audio on the Unity side and was hoping to make less work for him by designing more instruments (including mixers) on the Csound side and just having him drop them into the system. (That is where the multi-effect csds work to achieve the parallelism I sometimes need and want, and I plan to make more of these if the mixers do not work in the current system.

I will keep you posted and in touch.

Thank you for all your amazing work in Csound and for this collection you have shared today.

- dB


Dr. Richard Boulanger

Professor

Electronic Production and Design

Berklee College of Music

Professional Writing & Technology Division



On Sun, Apr 13, 2025 at 6:21 AM Jeanette C. <julien@mail.upb.de> wrote:
Hello richard,
first I would like to ask you to share your effects, if possible, this sounds
very interesting. Your multiFX instruments sound like a lot of fun and
inspiration for further experimentation.

Then, I have a few mixers. Though I have separated the means of passing audio
around and mixing it. There is a multi-mono to stereo mixer, using an a-rate
array for audio inputs, a k-rate array for input volumes, one k-rate array for
input panning and another one for muting. Internally it's just a while loop
adding panned and amplified inputs to the audio outputs.

For passing audio around I use chn-opcodes. There is an example of that in the
Scene Creator collection:
http://juliencoder.de/dream/scene_creator-0.5.zip

If your Csound can't run with more than two inputs/outputs, I'd possibly look
at the JackO opcodes or one of the network-based ones, like OSC. If you can
write an application around the Csound code, which can access your audio
inputs, couldn't you use channels to pass in audio that way? Isn't that what
Cabbage and other systems do? Get controls and audio from the outside and
write them to Csound channels using the Csound API?

Best wishes,

Jeanette

--
  * Website: http://juliencoder.de - for summer is a state of sound
  * Youtube: https://www.youtube.com/channel/UCMS4rfGrTwz8W7jhC1Jnv7g
  * Audiobombs: https://www.audiobombs.com/users/jeanette_c
  * GitHub: https://github.com/jeanette-c

She's so lucky,
she's a star
But she cry, cry, cries in her lonely heart... <3
(Britney Spears)

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
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

Date2025-04-13 16:13
Fromthorin kerr
SubjectRe: [Csnd] Csound Mixer Models? 8 x 2 and 2 x 8
Attachmentsmixer-demo.csd  TKmixer-model.orc  
Hi Richard,
Here's a patch system I've used for live coding. It's simple to use... and supports 'on-the-fly' changes. There might be a bit of a catch though if you're looking at dropping in existing instruments.. *

Firstly, to use:
An 8x2 'Mixer A' patch would look like this:

patchsig "src1", "MixerA",0.5
patchsig "src2", "MixerA",0.3
... etc x 6
where "src(n)" is a named stereo instrument,  and the values, 0.5, 0.3 etc... are levels. "Mixer A" can be stereo out as expected.

Input effects can be chained before or after reaching Mixer A:

patchchain fillarray("src1","compressor",Mixer A")

As for a 2x8, 'MixerB',

patchspread "srcstereo", fillarray("delay","vocoder","flanger","distortion","resonator"),filarray(1,0.8,0.8,0.3,0.6)

Where "srcstereo" is a named stereo instrument that outputs to 5 other names instruments. The following array of values controls levels.

Of note: 
Channels, stereo, mono, ... quad or even 8 channels, is handled automatically. A mono source can go to a stereo effect, and it will autocopy the mono channel to both input channels in the effect.
Also patch chains don't care what order the instruments are in. No need to order by instrument number.

* Here's the catch....
 - You must use named instruments.
 - 'Source' Instruments output the audio using the 'send' UDO.
 - 'Effects' (instruments that have inputs), need to be wrapped in something called an EffectConstruct. See the attached example.
On the upside, effects can be 'hotswapped' while running and crossfade into the 'new version'.

I've attached an example. Just make sure TKmixer-model.orc is in the same folder as mixer-demo.csd, or your #INCDIR.
This demo is stereo, but it should work for 8 channel output, however you'll have to adjust nchnls, and the output instruments (299, and 301).

Thorin





On Sun, Apr 13, 2025 at 12:40 PM Dr. Richard Boulanger <rboulanger@berklee.edu> wrote:
Hello Csounders,

I am looking for mixer models to study, adapt, and use in CsoundMeta.

Might any of you have some that you could send me?  (or share in this thread)

I have a number in my collection, but none exactly fit the bill.

Currently, in CsoundMeta, we have unique effects on all our synthetic and sampling instruments - and these can be controllers and turned on and off

But now, we can do live processing and sampling from multiple USB-C mics connected wirelessly to the Quest 3 XR headsets, and so we are designing all sorts of live effects.
- and they sound cool and are a lot of fun, too.

Currently, we can patch from a live mic or any synth source (orb) in series - making an a nice effect chain in which each of the effects can be muted or controlled and can feed back into each other too.

Currently, we also have several 'multiFX instruments' that take the live inputs (or orb output) and mix them internally - tuning them on-off, controlling them, etc.

BUT... 

I am working on TWO live input (on the fly) mixers 
  - one that could patch effects, in parallel, from a single stereo source. 
  - the other, that could patch up to eight stereo sources to a single effect (or effect chain)

I have not tested this yet, but it might be that CsoundUnity supports multiple CSDs at Multiple numbers of channels. If that is the case, then I could design mixer csds in which I set nchnls = 8 while all the other csd in CsoundMeta (over 300 now) are in stereo, but I doubt that CsoundUnity (or UnityAudio) works this way.

Since these (multi-input and multi-output) mixers need to run as stereo csds (nchnls = 2), I am a little stumped because...

Mixer A needs:
- Up to Eight Stereo inputs (patched in [live - on the fly, literally;-)]) from the output of csds that are rendering audio in real time - as "ORBS"
- Two channels of Output
- Level control (linked) on each stereo input channel, and I would add limiters, compressors, and panning on each of the input channels too

Mixer B needs:
- One stereo Input (patched in [live - on the fly, literally;-)]) 
- Up to 8 stereo channels of output that can be patched to any of our effect instruments (delays, vocoders, flangers, distortions, resonators, etc.)

As I continue to study all of my models in The Csound Manual, The Floss Manual, The CsoundQt Examples, The Csound Catalog, The McCurdy Collection, The Heintz and Yi UDO Libraries, The Cabbage examples, and models in Jeanette and Dave Seidel's compositions and Instruments, I would love to look at any of your mixer solutions for clues and inspiration.

using globals
using arrays
using chnmix
using zak
using mixersend
using signalflowgraph
using OSC

Thank you for your time, consideration, and inspiration already...
I would be grateful and appreciate any advice or models that you might have to offer.

Thanks!

- Dr.B


Dr. Richard Boulanger

Professor

Electronic Production and Design

Berklee College of Music

Professional Writing & Technology Division

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
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

Date2025-04-13 17:50
From"Dr. Richard Boulanger"
SubjectRe: [Csnd] Csound Mixer Models? 8 x 2 and 2 x 8
Thorin,

Thank you so much.  Like all your work, this is awesome!

I will study it this afternoon.
I am sure that I will learn many new things as I study and explore and adapt.

I think that I understand some of the code and see how it might be used to patch in synthetic or sample-based instruments internally.  
I especially love how it automatically deals with mono or stereo inputs to the effect rack and adapts to the sources on the fly.  Super.

What I am wondering (and maybe you might have some additional suggestions or clues for me) is how it might accept stereo audio coming from another instrument that is running simultaneously and externally. If, in this csd, I were to add a 'live audio input' instrument - ("instr live2chInputAB", and then another "instr live2chInputCD", and then another "instr live2chInputCD", and then another "instr live2chInputEF") - without setting nchnls = 8?  Is that even possible?

What I am wondering is how it might be adapted to take live 'stereo audio' in from multiple sources (multiple ORBS rendering pieces by Thorin Kerr and Michael Gogins, and John ffitch, and generative foley instruments by Rory Walsh, for example.  

I am wondering, is it possible to accept more input channels in the csd, like 8 shown above, when I have specified nchnls = 2?

- Dr.B


Dr. Richard Boulanger

Professor

Electronic Production and Design

Berklee College of Music

Professional Writing & Technology Division



On Sun, Apr 13, 2025 at 11:13 AM thorin kerr <thorin.kerr@gmail.com> wrote:
Hi Richard,
Here's a patch system I've used for live coding. It's simple to use... and supports 'on-the-fly' changes. There might be a bit of a catch though if you're looking at dropping in existing instruments.. *

Firstly, to use:
An 8x2 'Mixer A' patch would look like this:

patchsig "src1", "MixerA",0.5
patchsig "src2", "MixerA",0.3
... etc x 6
where "src(n)" is a named stereo instrument,  and the values, 0.5, 0.3 etc... are levels. "Mixer A" can be stereo out as expected.

Input effects can be chained before or after reaching Mixer A:

patchchain fillarray("src1","compressor",Mixer A")

As for a 2x8, 'MixerB',

patchspread "srcstereo", fillarray("delay","vocoder","flanger","distortion","resonator"),filarray(1,0.8,0.8,0.3,0.6)

Where "srcstereo" is a named stereo instrument that outputs to 5 other names instruments. The following array of values controls levels.

Of note: 
Channels, stereo, mono, ... quad or even 8 channels, is handled automatically. A mono source can go to a stereo effect, and it will autocopy the mono channel to both input channels in the effect.
Also patch chains don't care what order the instruments are in. No need to order by instrument number.

* Here's the catch....
 - You must use named instruments.
 - 'Source' Instruments output the audio using the 'send' UDO.
 - 'Effects' (instruments that have inputs), need to be wrapped in something called an EffectConstruct. See the attached example.
On the upside, effects can be 'hotswapped' while running and crossfade into the 'new version'.

I've attached an example. Just make sure TKmixer-model.orc is in the same folder as mixer-demo.csd, or your #INCDIR.
This demo is stereo, but it should work for 8 channel output, however you'll have to adjust nchnls, and the output instruments (299, and 301).

Thorin





On Sun, Apr 13, 2025 at 12:40 PM Dr. Richard Boulanger <rboulanger@berklee.edu> wrote:
Hello Csounders,

I am looking for mixer models to study, adapt, and use in CsoundMeta.

Might any of you have some that you could send me?  (or share in this thread)

I have a number in my collection, but none exactly fit the bill.

Currently, in CsoundMeta, we have unique effects on all our synthetic and sampling instruments - and these can be controllers and turned on and off

But now, we can do live processing and sampling from multiple USB-C mics connected wirelessly to the Quest 3 XR headsets, and so we are designing all sorts of live effects.
- and they sound cool and are a lot of fun, too.

Currently, we can patch from a live mic or any synth source (orb) in series - making an a nice effect chain in which each of the effects can be muted or controlled and can feed back into each other too.

Currently, we also have several 'multiFX instruments' that take the live inputs (or orb output) and mix them internally - tuning them on-off, controlling them, etc.

BUT... 

I am working on TWO live input (on the fly) mixers 
  - one that could patch effects, in parallel, from a single stereo source. 
  - the other, that could patch up to eight stereo sources to a single effect (or effect chain)

I have not tested this yet, but it might be that CsoundUnity supports multiple CSDs at Multiple numbers of channels. If that is the case, then I could design mixer csds in which I set nchnls = 8 while all the other csd in CsoundMeta (over 300 now) are in stereo, but I doubt that CsoundUnity (or UnityAudio) works this way.

Since these (multi-input and multi-output) mixers need to run as stereo csds (nchnls = 2), I am a little stumped because...

Mixer A needs:
- Up to Eight Stereo inputs (patched in [live - on the fly, literally;-)]) from the output of csds that are rendering audio in real time - as "ORBS"
- Two channels of Output
- Level control (linked) on each stereo input channel, and I would add limiters, compressors, and panning on each of the input channels too

Mixer B needs:
- One stereo Input (patched in [live - on the fly, literally;-)]) 
- Up to 8 stereo channels of output that can be patched to any of our effect instruments (delays, vocoders, flangers, distortions, resonators, etc.)

As I continue to study all of my models in The Csound Manual, The Floss Manual, The CsoundQt Examples, The Csound Catalog, The McCurdy Collection, The Heintz and Yi UDO Libraries, The Cabbage examples, and models in Jeanette and Dave Seidel's compositions and Instruments, I would love to look at any of your mixer solutions for clues and inspiration.

using globals
using arrays
using chnmix
using zak
using mixersend
using signalflowgraph
using OSC

Thank you for your time, consideration, and inspiration already...
I would be grateful and appreciate any advice or models that you might have to offer.

Thanks!

- Dr.B


Dr. Richard Boulanger

Professor

Electronic Production and Design

Berklee College of Music

Professional Writing & Technology Division

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
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
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