Stephane et al, Gentle nudge here: any more thoughts on this MIDI channel issue, or is the best approach for now to work (or hack) around it?
Aaron Krister Johnson Music, etc.: https://soundcloud.com/aaron-krister-johnson https://soundcloud.com/filtercreed https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg https://aaronkristerjohnson.bandcamp.com/ http://www.untwelve.org Code: https://github.com/akjmicro <http://www.untwelve.org> On Sun, Sep 21, 2025 at 9:29 AM Aaron Krister Johnson <[email protected]> wrote: > I guess this is a hack, but for keyOn and keyOff coming from the polyphony > code (which I traced from looking for `freq` references) I'm thinking > changing these in `poly-dsp.h` to further filter by channel at compile time > would be key? > > // MIDI API > MapUI* keyOn(int channel, int pitch, int velocity) > { > if (checkPolyphony()) { > int voice = getFreeVoice(); > fVoiceTable[voice]->keyOn(pitch, velocity, > fVoiceTable[voice]->fCurNote == kLegatoVoice); > return fVoiceTable[voice]; > } else { > return 0; > } > } > > void keyOff(int channel, int pitch, int velocity = 127) > { > if (checkPolyphony()) { > int voice = getPlayingVoice(pitch); > if (voice != kNoVoice) { > fVoiceTable[voice]->keyOff(); > } else { > fprintf(stderr, "Playing pitch = %d not found\n", > pitch); > } > } > } > > Change to: > > // MIDI API > MapUI* keyOn(int channel, int pitch, int velocity) > { > if (checkPolyphony() & (channel == 1)) { // to respond only > to MIDI channel 2, actual number is MIDI channel - 1 > int voice = getFreeVoice(); > fVoiceTable[voice]->keyOn(pitch, velocity, > fVoiceTable[voice]->fCurNote == kLegatoVoice); > return fVoiceTable[voice]; > } else { > return 0; > } > } > > void keyOff(int channel, int pitch, int velocity = 127) > { > if (checkPolyphony() & (channel == 1)) { // to respond only > to MIDI channel 2, actual number is MIDI channel - 1 > int voice = getPlayingVoice(pitch); > if (voice != kNoVoice) { > fVoiceTable[voice]->keyOff(); > } else { > fprintf(stderr, "Playing pitch = %d not found\n", > pitch); > } > } > } > > But yes, would be better to allow the polyphony/voice-table architecture > to be more standards compliant about channels, I'm thinking. I'll test > this, for now it will do if it works. > > Aaron Krister Johnson > Music, etc.: > https://soundcloud.com/aaron-krister-johnson > https://soundcloud.com/filtercreed > https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg > https://aaronkristerjohnson.bandcamp.com/ > http://www.untwelve.org > Code: > https://github.com/akjmicro <http://www.untwelve.org> > > > On Sun, Sep 21, 2025 at 8:26 AM Aaron Krister Johnson <[email protected]> > wrote: > >> Is this MIDI channel filtering option being considered? If not, would the >> dev team welcome a patch if I tried my hand at it? >> >> ~AKJ >> >> Aaron Krister Johnson >> Music, etc.: >> https://soundcloud.com/aaron-krister-johnson >> https://soundcloud.com/filtercreed >> https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg >> https://aaronkristerjohnson.bandcamp.com/ >> http://www.untwelve.org >> Code: >> https://github.com/akjmicro <http://www.untwelve.org> >> >> On Fri, Sep 12, 2025, 13:31 Aaron Krister Johnson <[email protected]> >> wrote: >> >>> Ah, so it seems others have bumped into this limitation. >>> >>> Please, Faust devs, implement this! :D >>> >>> Aaron Krister Johnson >>> Music, etc.: >>> https://soundcloud.com/aaron-krister-johnson >>> https://soundcloud.com/filtercreed >>> https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg >>> https://aaronkristerjohnson.bandcamp.com/ >>> http://www.untwelve.org >>> Code: >>> https://github.com/akjmicro <http://www.untwelve.org> >>> >>> >>> On Thu, Sep 11, 2025 at 2:17 AM <[email protected]> wrote: >>> >>>> Additional reading here: >>>> https://github.com/grame-cncm/faust/discussions/696 >>>> >>>> All of this must be carefully considered... >>>> >>>> Stéphane >>>> >>>> > Le 10 sept. 2025 à 19:26, Aaron Krister Johnson <[email protected]> >>>> a écrit : >>>> > >>>> > P.S. -- and if this is implemented, covering key/vel/velocity, too :D >>>> > >>>> > Aaron Krister Johnson >>>> > Music, etc.: >>>> > https://soundcloud.com/aaron-krister-johnson >>>> > https://soundcloud.com/filtercreed >>>> > https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg >>>> > https://aaronkristerjohnson.bandcamp.com/ >>>> > http://www.untwelve.org >>>> > Code: >>>> > https://github.com/akjmicro >>>> > >>>> > >>>> > On Wed, Sep 10, 2025 at 10:23 AM Aaron Krister Johnson < >>>> [email protected]> wrote: >>>> > Thanks, Stephane, yes, it would be most useful to have a Faust synth >>>> only respond on a declared channel, and `0` (or no specification) being >>>> "listen on all channels". >>>> > >>>> > Would this be in the "options" header, then? >>>> > >>>> > Aaron Krister Johnson >>>> > Music, etc.: >>>> > https://soundcloud.com/aaron-krister-johnson >>>> > https://soundcloud.com/filtercreed >>>> > https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg >>>> > https://aaronkristerjohnson.bandcamp.com/ >>>> > http://www.untwelve.org >>>> > Code: >>>> > https://github.com/akjmicro >>>> > >>>> > >>>> > On Wed, Sep 10, 2025 at 9:00 AM Stéphane Letz <[email protected]> wrote: >>>> > Hi Aaron, >>>> > >>>> > MIDI metadata for standard MIDI control can use MIDI channel: >>>> https://faustdoc.grame.fr/manual/midi/#configuring-midi-in-faust >>>> > >>>> > But it is currently not possible to set a given channel for >>>> polyphony, you can see that the channel info is not used in the polyphonic >>>> code for now: >>>> > >>>> > >>>> https://github.com/grame-cncm/faust/blob/f5c23da4fe6e09fa55667ae588f4b6ef9c226cae/architecture/faust/dsp/poly-dsp.h#L900 >>>> > >>>> > Should we extend/revisit the syntax of freq/gate/gain convention for >>>> something like [freq: chan], [gate: chan], [gain: chan], with the >>>> convention chan = 0 would mean « receive on all channels», like for other >>>> MIDI messages ? >>>> > >>>> > Stéphane >>>> > >>>> > > Le 10 sept. 2025 à 17:35, Aaron Krister Johnson <[email protected]> >>>> a écrit : >>>> > > >>>> > > I notice in the manual, certain MIDI slider metadata operations can >>>> be filtered by a certain MIDI channel, like `keyon` uses the velocity of a >>>> given key on a given channel. >>>> > > >>>> > > But IMO, these kinds of operations seem geared towards a >>>> non-standard way of using a MIDI signal. Most useful mono- or poly- synths >>>> would want to use the general >>>> > > keywords with special meaning: `freq/key`, `gain/vel`, and `gate` >>>> to drive the usually needed MIDI parameters in, for instance, a synthesizer >>>> signal chain. >>>> > > >>>> > > The problem I am having is: I'd like to pair a custom Faust synth >>>> with an outboard analog monosynth. Ideally, I could assign Faust to listen >>>> only on a certain MIDI channel. >>>> > > As it is, it seems like I have to do the opposite: Faust will >>>> respond to _all_ channels (not ideal) and I make the hardware synth respond >>>> to MIDI channel 2. They are isolated only >>>> > > by the fact that they are listening on different MIDI ports >>>> (otherwise, the Faust synth would be "hearing" both channels and trying to >>>> respond to both). What I have works for now, >>>> > > but let's say I want 2 Faust synths -- they'd both be responding to >>>> all channels that particular virtual port is listening on. >>>> > > >>>> > > So, in short: is there an easy way to make a running Faust synth >>>> instance listen only to a particular MIDI channel when it's designed to use >>>> the keywords `freq`, `gain`, and `gate`, >>>> > > per the docs? How easy would it be to hack Faust or add a feature >>>> for users for this if not? >>>> > > >>>> > > Aaron Krister Johnson >>>> > > Music, etc.: >>>> > > https://soundcloud.com/aaron-krister-johnson >>>> > > https://soundcloud.com/filtercreed >>>> > > https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg >>>> > > https://aaronkristerjohnson.bandcamp.com/ >>>> > > http://www.untwelve.org >>>> > > Code: >>>> > > https://github.com/akjmicro >>>> > > _______________________________________________ >>>> > > Faudiostream-users mailing list >>>> > > [email protected] >>>> > > https://lists.sourceforge.net/lists/listinfo/faudiostream-users >>>> > >>>> >>>>
_______________________________________________ Faudiostream-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/faudiostream-users
