MC Recipe 01: GenTargets

    The Max patch... (see notes below for parts 1-2 of the patch)
    The Max patch... (see notes below for parts 1-2 of the patch)
    ... and the mc.gen~ patch. (see notes below for parts 3-4 of the patch)
    ... and the mc.gen~ patch. (see notes below for parts 3-4 of the patch)
    application/zip 4.43 KB
    Download the patch used in this recipe.

    MC Concepts

    • Using mc.gen~ for multichannel effects
    • Use introspection for channel-specific processing


    In the last recipe, we used MC objects to target specific instances of an mc.reson~ filter. The mc.gen~ object also creates a gen~ instance for each channel, but two new Gen operators have been added that allow each instance to learn about its place in the MC environment. The Gen objects mc_channel and mc_channelcount allow for basic introspection - where a patch can interrogate itself.
    We use these objects to create a variation on a patch that was seen in the Max 8 promotional video: one that creates unique tones and delays for each processing channel.


    • mc.gen~ : an MC-capable version of the gen~ object
    • mc.channel : a gen object that outputs the channel number of the current instance
    • mc.channelcount : a gen object that outputs the total number of channels
    • jit.cellblock : display the contents of a multichannel signal

    Things to Note

    1. Pressing the space bar will produce a short 'blip' and send it into the mc.gen~ object. The output is sent to a meter~ (which auto-adjusts to the number of channels), and to an mc.gain~/mc.dac combination.
    2. The mc.gen~ object creates one instance of the gen~ object for each of the channels. The littleblips.gendsp patch has two additional outputs which allow us to display the calculated delay times for each of the channels
    3. mc_channel is used inside the gendsp patch to retrieve the channel for each instance. We use this to create a channel-specific pitch (for the cycle object) and delay times for the upward moving delays. Note that we subtract one from the channel number because we want to start with no delay.
    4. In order to get the downward moving delays, we subtract the current channel from the total number of channels. We then add the delay time for all channels (which is when the upward delays are playing).

    Additional Options

    Change the number of channels in the mc.gen~ to see (and hear) the Gen patch adapt to its changed environment. Note, however, that when you change the number of channels, you may need to restart the DSP to implement the change.

    by Darwin Grosse on
    Oct 9, 2018 8:05 PM

    • John Baylies's icon
      John Baylies's icon
      John Baylies
      Feb 25 2020 | 3:04 pm
      I'm excited
    • Matt Jackson's icon
      Matt Jackson's icon
      Matt Jackson
      Feb 26 2020 | 1:24 pm
      Is there a way to use MC inside of gen~? for example pretend I needed to use gen for a feedback system but in the system I want to embed a 32 channel parametric EQ using mc