Is it possible to build a RingMod on the Aleph

  • I'm pretty green when it comes to programming in Max and Aleph... Is Ring Modulation possible on the Aleph with the current set of operators and DSP? Would someone be willing to share an code example if, so using lines?

  • i think you would need to roll your own dsp for that. you could do amplitude modulation with a triangle wave in lines, though, i think

  • @raja put some good notes about making a ringmod in this thread

    it's a little beyond my aleph skill set though (can't work out how you would add an osc into Lines)

  • to perform ring modulation, you simply multiply an oscillator (or whatever modulator signal) by the source.

    to implement this, i would take the 'waves' module as a starting place.

    at the end of the calc_frame() function in waves, there are two subroutines: mix_voice() and mix_adc(). these sum the oscillators and the input busses to the output busses, respectively. comment those out, and replace them with some code to place your desired modulation results on whatever output busses as you see fit.

    bear in mind that the datatype is fract32 and it's best to use the blackfin intrinsics for arithmetic operations.

    so, for a full example, let's say you want to modulate input 0 by the output of oscillator 0 and write it to output 0:

    out[0] = mult_fr1x32x32( voiceOut[0], in[0]) );

    [edit: sorry, you don't need to subtract the input, not sure what weird context i was thinking of. just don't *mix* the direct input unless you want especially crunchy enharmonics.]

    hope that helps.

  • i wouldn't expect all too much from the DSP tutorial document. it is mostly a short collection of things that already READMEs, forum posts, and code comments, with a few extra tips thrown in.

    it will help you set up the toolchain and understand the file structure, data types, and the blackfin arithmetic intrinsics.

    it is very very helpful, but not a substantial intorduction to DSP algorithms in general, or to C programming in general.

    you will still have to just dive in to the code at some point. looking at the 'mix' module is the simplest place to start.

    [edit] oh! i saw another draft and there is more tutorial material than i thought. still. there's no substitute for diving in.