analogue vs digital / Real Modular


    Mar 12 2007 | 11:30 am
    Lately Ive been studying up on analogue synths and im trying to understand what it is that makes them sound better then most of my digital ones. Ive been impressed by two virtual analogue products, the MS20 KORG legacy, and the Arturia ARP modular. Im trying to bring this "analogue" sound quality into max and finding it rather difficult. Does anyone have any ideas on how to make MSP, the most digital of digital, sound more like analogue? Ive experimented a bit with subtle tuning instability and boosting the lows but thats not nearly enough.
    Ive been looking at a bunch of modular systems, like the doepfer and modcan, and of course buchla, and I notice a difference in the general sound quality of anything over a plain oscillator. I feel like since in the end my music will end up being a series of 1s and 0s anyway, that I should be able to create that sound quality in Max/msp.
    I would love to hear of anyones success in this area, or thoughts as to how to generally get a better tone quality. Warmpth?

    • Mar 12 2007 | 6:59 pm
      Im reading up a bit more about analogue oscillators. I think maybe the lookup table of the cycle is having a negative effect on the sound quality, especially when doing FM. Im curious if theres a way to get FM without aliasing?
    • Mar 12 2007 | 10:16 pm
      You could always do it higher res. Try phasor~ and then using a high
      quality wave~ with a cycle~ segment stored in it.
      Generally speaking, though the aliasing is not necessarily a bad thing.
      (particularly around the zero frequency axis...)
      Peter McCulloch
      On Mar 12, 2007, at 2:59 PM, Nicholas C. Raftis III wrote:
      >
      > Im reading up a bit more about analogue oscillators. I think maybe
      > the lookup table of the cycle is having a negative effect on the sound
      > quality, especially when doing FM. Im curious if theres a way to get
      > FM without aliasing?
      > --
      > -=ili!ili=- www.Axiom-Crux.net -=ili!ili=-
      >
      >
      www.petermcculloch.com
    • Mar 12 2007 | 11:30 pm
      My general recommendation is to reconsider everything that is stable in
      your system and make it all slightly unstable. As analog systems are
      slightly unstable, this will give a lot of warmth to your sound.
      For instance, portamento times should not be fixed, but should vary for
      each note. Presumably, it would take more time for the synth to glide
      when the notes are further apart, and the function object could help
      you create a lookup table for this.
      Often, you'll need multiple LFOs for a parameter. For instance, with
      pitch, I use a slow rand~ for slow drift, and a faster rand~ for
      immediate fluctuations in addition to a cycle~ for a period pitch
      fluctuation.
      Chebychev polynomials can give you a lot of mileage especially if you
      use adsr~ on the input to the waveshaping function. That way you get
      the timbral change with the envelope. (sounds way better than applying
      just the gain envelope after the lookup~)
      Also, a little judicious distorted lowpassing (using slide~ or
      rampsmooth~ with short up times and long down times e.g. slide~ 1 130)
      can give you a warmer sound. (basically it sawtooths your
      sinewaves...) Try subtracting the lowpassed sound from the original.
      That difference will be quite edgy... Allpass filters can introduce
      frequency dependent phase differences as well.
      Filtering is also really important. Try using cascade~ to do multiple
      copies of one filter, so that you get steeper rolloffs without steeper
      Q. Try using a separate adsr~ to handle the filter sweep. Also, try
      various math functions on the output of adsr~. Linear envelopes don't
      always sound so hot...
      Finally, a few carefully applied stereo ping-pong delays can thicken up
      the sound. Use relatively prime relationships for the delay times You
      don't need much feedback at all.
      Peter McCulloch
      On Mar 12, 2007, at 7:30 AM, Nicholas C. Raftis III wrote:
      >
      > Lately Ive been studying up on analogue synths and im trying to
      > understand what it is that makes them sound better then most of my
      > digital ones. Ive been impressed by two virtual analogue products,
      > the MS20 KORG legacy, and the Arturia ARP modular. Im trying to bring
      > this "analogue" sound quality into max and finding it rather
      > difficult. Does anyone have any ideas on how to make MSP, the most
      > digital of digital, sound more like analogue? Ive experimented a bit
      > with subtle tuning instability and boosting the lows but thats not
      > nearly enough.
      >
      > Ive been looking at a bunch of modular systems, like the doepfer and
      > modcan, and of course buchla, and I notice a difference in the general
      > sound quality of anything over a plain oscillator. I feel like since
      > in the end my music will end up being a series of 1s and 0s anyway,
      > that I should be able to create that sound quality in Max/msp.
      >
      > I would love to hear of anyones success in this area, or thoughts as
      > to how to generally get a better tone quality. Warmpth?
      >
      >
      > --
      > -=ili!ili=- www.Axiom-Crux.net -=ili!ili=-
      >
      >
      www.petermcculloch.com
    • Mar 13 2007 | 12:27 am
      A great, pioneering, and (as usual with his work) largely overlooked
      gem that's relevant to this discussion:
      James Tenney, Computer Music Experiences, 1961-1964
      In amongst the really fantastic descriptions of his pioneering work,
      there's a number of suggestions on getting digital oscillators,
      filters, etc., to have more 'liveliness' - i.e. have some randomness.
      He shows how small amounts of both periodic and aperiodic modulation
      of synthesis & processing control parameters can go a long way in
      this regard.
      Funny, later articles on this general topic seem to ignore Tenney's
      work. I recall a Chowning article in Perry Cook's 'Music, Cognition,
      and Computerized Sound' (MIT Press) that covers a lot of the same
      ground (over 35 years later) without even citing Tenney...
      On Mar 12, 2007, at 5:30 PM, Peter McCulloch wrote:
      > My general recommendation is to reconsider everything that is
      > stable in your system and make it all slightly unstable. As analog
      > systems are slightly unstable, this will give a lot of warmth to
      > your sound.
      >
      ----
      Steven M. Miller
      Home
      SFIFEM
      Atrium Sound Space
      OVOS
    • Mar 15 2007 | 7:32 pm
      Thanks, theres lots of great info here, sorry for my slow reply, been working alot lately.
      Im going to try out some of those techniques tonight. Im curious what you use for chebyshev? I have a nice TL object I think that does a good job, Is there a better one for using with envelopes?
      Whats a good way of generating a higher resolution sine wave?
      And finally, Anyone know how to maybe make a model of the fameous MS20 hp/lp filter with its beautifuly insane peak harshness?
      Thanks so much!
    • Mar 15 2007 | 8:00 pm
      Hi,
      Interesting thread. I too am a huge fan of the korg legacy stuff and I've had a mono/poly for decades. I couldn't resist the MS-20 VI. I know this isn't particularly helpful but I though I'd mention that I read somewhere that Korg programmed circuit models of the actual devices rather then tweaking DSP code. Apparently in the VIs is every component in the actual schematics- it really sounds amazing!
    • Mar 16 2007 | 6:22 pm
      > Im going to try out some of those techniques tonight. Im curious what
      > you use for chebyshev? I have a nice TL object I think that does a
      > good job, Is there a better one for using with envelopes?
      >
      I use lookup~. I've made an abstraction that generates chebychev
      polynomials. It's similar to the one in the example files except that
      it uses the cos and acos formula rather than the polynomial expansion.
      This allows for the arbitrary calculation of any set of partials.
      Attached at bottom.
      > Whats a good way of generating a higher resolution sine wave?
      Check out Joshua Kit Clayton's hr (hi-res) objects. There's one for
      phasor~ and one for wave~. Use hr.poke~ to store your hi-res sine or
      cos wave.
      >
      > And finally, Anyone know how to maybe make a model of the fameous MS20
      > hp/lp filter with its beautifuly insane peak harshness?
      >
      I don't know this one, but I saw an article in the Csound book on
      modelling a TB303 filter that had some interesting tips. IIRC, it
      recommended running a bandpass and lowpass filter with the same cutoff
      and Q. Subtract the bandpass from the lowpass and this is the dry
      sound, then run the bandpass through a waveshaping function for
      distortion, and add it back to dry sound. (so only the passband
      portion is waveshaped) I haven't done this one yet in Max, but it
      seems like it would be easy enough to.
      Peter McCulloch
      www.petermcculloch.com
      PM.Cheby:
      max v2;
    • Mar 17 2007 | 9:24 pm
      what about sinx~
      I just found this.. seems like its not limited resolution, just a streight calculation of sin on the input phasor? Maybe better then cycle?
      Thanks again for all the help, I think my new synths are going to turn out great now :D
    • Mar 17 2007 | 10:06 pm
      Heres my experiment with the simple sine osc, trying to find the best clean Frequency modulation sound. I cant even get the two wave~ based ones to work right (I must be thinking the wrong way). and so far as I notice the sinx~ sounds more interesting but not necessarily like a sine wave frequency modulation.
    • Mar 18 2007 | 3:35 am
      Beyond the obvious question about good antialiasing oscillator algorithms, I expect that you'll eventually notice that what you probably think makes analog sound "better" or whatever will, in no small measure, be due to the design of the filters, not the oscillators. There are several interesting articles and papers out there on modelling some of the "great" filters [the Moog lowpass comes to mind here] that I'm sure you can find with a little effort.
    • Mar 18 2007 | 7:35 am
      yeah that would be great too :D
      I guess Im starting from the oscillators, I noticed that the new built in rect~ saw~ and tri~ are all pretty good, now Im just finding the best sine for fm so I dont get aliasing. Then Ill move to filtes, and model as many as I can, and then Ill play with the unpredictability some more, the lfo smooth random fluctuations in everything.
      Im really curuious if this "component modelling" is possible in max. Maybe I should do a thread on that. That could be amazing, have things like cp.resistor~ or cp.20491chip~ or whatnot. And max is already structured like that.
      That could give way to a whole new use for max, could be huge.
    • Mar 18 2007 | 5:25 pm
      A more defined patch showing my attempts so far. Any insight onto the best source for alias free FM would be highly appreciated.
      Also If Joshua feels like stepping in, I cant seem to get anything modulated to come out of the hr objects, see the downloadable file.
      I still am really curious about the virtual modeled electronics components idea (ala ms20 legacy). Any thoughts on implementing that into max?
      Thanks again all!
    • Mar 19 2007 | 2:27 pm
      > Im really curuious if this "component modelling" is possible in max.
      Notice that the people doing the component modelling for the legacy stuff are the same people who made the original hardware unit, and thus the most likely persons to know preciesly what the specific nonlinearities associated with a general component would be. If no one seems excited about it, I wouldn't be surprised to learn that they realize what a labor-intensive task it would be, and uncertain of what it'd amount to, in the end[since I suspect that such a project would probably begin by focusing on a few specific and crucial components in the chain, and you'd want to know which ones, etc.]. I'm sure that everyone would be happy to play with whatever you chose to share with them, of course. :-)
    • Mar 19 2007 | 2:51 pm
      >Any insight onto the best source for alias free FM would be highly appreciated.
      The world is full of people who *prefer* aliasing oscillators when doing FM - better crunchiness up top where it counts. The judicious use of waveshaping at various points in the signal processing chain is a similar "secret sauce" undertaking.
      And if you're working with sine waves, then I'm not entirely sure that aliasing is that huge a problem....
      max v2;
    • Mar 19 2007 | 3:18 pm
      the sound of digital FM (what most of us think of when we think of FM)
      almost depends on aliasing and having sidebands fold back into the
      specturm at the extremes, especialy on the lower end.
      i'm assuming you don't want aliasing in this instance since you're
      trying to emulate analog FM, right (since you've been talking about
      analog)? in which case,the main problem doesn't have anything to do
      with your oscillators but rather the extreme sidebands you achieve
      with FM and your sampling rate. Since right when you start generating
      a modest amount of sidebands, you're probably going to be aliasing, at
      least in the lower frequencies (all depending on you carrier
      frequency, etc.).
      now, if you really want to FM without aliasing at all (like analog
      FM), it seems to me that you would have to upsample (how much depends
      on your modulation index, etc.) in a poly~, frequency shift up,
      perform your FM, filter the signal (both highs and lows) to get rid of
      the frequencies that will alias, frequency shift back down, and then
      downsample. i may be wrong, but i think this all right...
      is this what you want?
      mark
      On 3/19/07, Gregory Taylor wrote:
      >
      > >Any insight onto the best source for alias free FM would be highly appreciated.
      >
      > The world is full of people who *prefer* aliasing oscillators when doing FM - better crunchiness up top where it counts. The judicious use of waveshaping at various points in the signal processing chain is a similar "secret sauce" undertaking.
      >
      > And if you're working with sine waves, then I'm not entirely sure that aliasing is that huge a problem....
      >
      > max v2;
      > #N vpatcher 39 101 735 654;
      > #P origin 0 -7;
      > #P window setfont "Sans Serif" 9.;
      > #P window linecount 1;
      > #P comment 385 422 179 196617 Don't see much here , though.;
      > #P user ezdac~ 22 453 66 486 0;
      > #P hidden newex 226 158 48 196617 loadbang;
      > #P user spectroscope~ 385 255 248 155 20 0 1 0 0 1 0 0 0 0 0 0;
      > #X frgb 224 224 224;
      > #X brgb 255 255 255;
      > #X rgb2 0 0 0;
      > #X rgb3 243 204 204;
      > #X rgb4 255 0 0;
      > #X rgb5 184 184 184;
      > #X rgb6 0 0 0;
      > #X rgb7 0 0 0;
      > #X rgb8 255 255 255;
      > #X rgb9 255 0 0;
      > #X rgb10 255 191 0;
      > #X rgb11 0 191 127;
      > #X rgb12 127 0 127;
      > #X rgb13 0 0 0;
      > #X range 0. 1.2;
      > #X domain 0. 22050.;
      > #X done;
      > #P newex 22 158 38 196617 -~ 0.5;
      > #P newex 22 139 65 196617 phasor~ 200;
      > #P hidden message 240 209 39 196617 sono 1;
      > #P user spectroscope~ 22 255 248 155 20 0 1 0 0 1 0 0 0 0 0 0;
      > #X frgb 224 224 224;
      > #X brgb 255 255 255;
      > #X rgb2 0 0 0;
      > #X rgb3 243 204 204;
      > #X rgb4 255 0 0;
      > #X rgb5 184 184 184;
      > #X rgb6 0 0 0;
      > #X rgb7 0 0 0;
      > #X rgb8 255 255 255;
      > #X rgb9 255 0 0;
      > #X rgb10 255 191 0;
      > #X rgb11 0 191 127;
      > #X rgb12 127 0 127;
      > #X rgb13 0 0 0;
      > #X range 0. 1.2;
      > #X domain 0. 22050.;
      > #X done;
      > #P message 47 63 31 196617 down;
      > #P message 22 63 18 196617 up;
      > #N vpatcher 216 180 489 376;
      > #P window setfont "Sans Serif" 9.;
      > #P newex 26 111 65 196617 pow~ 22000;
      > #P message 158 68 27 196617 stop;
      > #P newex 26 46 209 196617 select up down stop;
      > #P inlet 26 26 15 0;
      > #P message 92 68 62 196617 0.53 10000;
      > #P message 26 68 50 196617 1. 10000;
      > #P newex 26 90 55 196617 line~ 0.53;
      > #P outlet 26 133 15 0;
      > #P connect 4 0 5 0;
      > #P connect 5 0 2 0;
      > #P fasten 6 0 1 0 163 86 31 86;
      > #P fasten 3 0 1 0 97 86 31 86;
      > #P connect 2 0 1 0;
      > #P connect 1 0 7 0;
      > #P connect 7 0 0 0;
      > #P connect 5 1 3 0;
      > #P connect 5 2 6 0;
      > #P pop 1;
      > #P newobj 22 86 56 196617 p sweeper;
      > #P newex 385 139 40 196617 cycle~;
      > #B color 5;
      > #P comment 22 423 179 196617 Here's what aliasing looks like.....;
      > #P fasten 3 0 2 0 27 77 27 77;
      > #P fasten 4 0 2 0 52 82 27 82;
      > #P connect 2 0 7 0;
      > #P connect 7 0 8 0;
      > #P hidden connect 6 0 5 0;
      > #P connect 8 0 5 0;
      > #P hidden connect 10 0 6 0;
      > #P connect 2 0 1 0;
      > #P connect 1 0 9 0;
      > #P hidden connect 6 0 9 0;
      > #P pop;
      >
      >
      > --
      > knowledge is not enough/science is not enough/Love is dreaming this equation
      >
    • Mar 19 2007 | 3:29 pm
      actually, wait, nevermind... an analog signal would have those
      negative frequency components too, wouldn't it? or wouldn't it?
      argh... i need some more coffee.
      On 3/19/07, Mark Cartwright wrote:
      > the sound of digital FM (what most of us think of when we think of FM)
      > almost depends on aliasing and having sidebands fold back into the
      > specturm at the extremes, especialy on the lower end.
      >
      > i'm assuming you don't want aliasing in this instance since you're
      > trying to emulate analog FM, right (since you've been talking about
      > analog)? in which case,the main problem doesn't have anything to do
      > with your oscillators but rather the extreme sidebands you achieve
      > with FM and your sampling rate. Since right when you start generating
      > a modest amount of sidebands, you're probably going to be aliasing, at
      > least in the lower frequencies (all depending on you carrier
      > frequency, etc.).
      >
      > now, if you really want to FM without aliasing at all (like analog
      > FM), it seems to me that you would have to upsample (how much depends
      > on your modulation index, etc.) in a poly~, frequency shift up,
      > perform your FM, filter the signal (both highs and lows) to get rid of
      > the frequencies that will alias, frequency shift back down, and then
      > downsample. i may be wrong, but i think this all right...
      >
      > is this what you want?
      >
      > mark
      >
      >
      >
      > On 3/19/07, Gregory Taylor wrote:
      > >
      > > >Any insight onto the best source for alias free FM would be highly appreciated.
      > >
      > > The world is full of people who *prefer* aliasing oscillators when doing FM - better crunchiness up top where it counts. The judicious use of waveshaping at various points in the signal processing chain is a similar "secret sauce" undertaking.
      > >
      > > And if you're working with sine waves, then I'm not entirely sure that aliasing is that huge a problem....
      > >
      > > max v2;
      > > #N vpatcher 39 101 735 654;
      > > #P origin 0 -7;
      > > #P window setfont "Sans Serif" 9.;
      > > #P window linecount 1;
      > > #P comment 385 422 179 196617 Don't see much here , though.;
      > > #P user ezdac~ 22 453 66 486 0;
      > > #P hidden newex 226 158 48 196617 loadbang;
      > > #P user spectroscope~ 385 255 248 155 20 0 1 0 0 1 0 0 0 0 0 0;
      > > #X frgb 224 224 224;
      > > #X brgb 255 255 255;
      > > #X rgb2 0 0 0;
      > > #X rgb3 243 204 204;
      > > #X rgb4 255 0 0;
      > > #X rgb5 184 184 184;
      > > #X rgb6 0 0 0;
      > > #X rgb7 0 0 0;
      > > #X rgb8 255 255 255;
      > > #X rgb9 255 0 0;
      > > #X rgb10 255 191 0;
      > > #X rgb11 0 191 127;
      > > #X rgb12 127 0 127;
      > > #X rgb13 0 0 0;
      > > #X range 0. 1.2;
      > > #X domain 0. 22050.;
      > > #X done;
      > > #P newex 22 158 38 196617 -~ 0.5;
      > > #P newex 22 139 65 196617 phasor~ 200;
      > > #P hidden message 240 209 39 196617 sono 1;
      > > #P user spectroscope~ 22 255 248 155 20 0 1 0 0 1 0 0 0 0 0 0;
      > > #X frgb 224 224 224;
      > > #X brgb 255 255 255;
      > > #X rgb2 0 0 0;
      > > #X rgb3 243 204 204;
      > > #X rgb4 255 0 0;
      > > #X rgb5 184 184 184;
      > > #X rgb6 0 0 0;
      > > #X rgb7 0 0 0;
      > > #X rgb8 255 255 255;
      > > #X rgb9 255 0 0;
      > > #X rgb10 255 191 0;
      > > #X rgb11 0 191 127;
      > > #X rgb12 127 0 127;
      > > #X rgb13 0 0 0;
      > > #X range 0. 1.2;
      > > #X domain 0. 22050.;
      > > #X done;
      > > #P message 47 63 31 196617 down;
      > > #P message 22 63 18 196617 up;
      > > #N vpatcher 216 180 489 376;
      > > #P window setfont "Sans Serif" 9.;
      > > #P newex 26 111 65 196617 pow~ 22000;
      > > #P message 158 68 27 196617 stop;
      > > #P newex 26 46 209 196617 select up down stop;
      > > #P inlet 26 26 15 0;
      > > #P message 92 68 62 196617 0.53 10000;
      > > #P message 26 68 50 196617 1. 10000;
      > > #P newex 26 90 55 196617 line~ 0.53;
      > > #P outlet 26 133 15 0;
      > > #P connect 4 0 5 0;
      > > #P connect 5 0 2 0;
      > > #P fasten 6 0 1 0 163 86 31 86;
      > > #P fasten 3 0 1 0 97 86 31 86;
      > > #P connect 2 0 1 0;
      > > #P connect 1 0 7 0;
      > > #P connect 7 0 0 0;
      > > #P connect 5 1 3 0;
      > > #P connect 5 2 6 0;
      > > #P pop 1;
      > > #P newobj 22 86 56 196617 p sweeper;
      > > #P newex 385 139 40 196617 cycle~;
      > > #B color 5;
      > > #P comment 22 423 179 196617 Here's what aliasing looks like.....;
      > > #P fasten 3 0 2 0 27 77 27 77;
      > > #P fasten 4 0 2 0 52 82 27 82;
      > > #P connect 2 0 7 0;
      > > #P connect 7 0 8 0;
      > > #P hidden connect 6 0 5 0;
      > > #P connect 8 0 5 0;
      > > #P hidden connect 10 0 6 0;
      > > #P connect 2 0 1 0;
      > > #P connect 1 0 9 0;
      > > #P hidden connect 6 0 9 0;
      > > #P pop;
      > >
      > >
      > > --
      > > knowledge is not enough/science is not enough/Love is dreaming this equation
      > >
      >
    • Mar 20 2007 | 2:44 am
      Both analog & digital FM implementations create sidebands above &
      below the carrier and/or modulator frequencies. The only way to make
      sure the carrier is the lowest spectral component (fundamental) is to
      make sure the modulator frequency is greater than or equal to twice
      the carrier frequency, with the exception being a C:M of 1:1.
      A good tutorial by Barry Truax, available online, that can help
      organize C:M ratios for intended spectral properties is at:
      You might also check out his article "Organizational Techniques for
      C:M Ratios in Frequency Modulation" (originally in CMJ 1/4 (1978),
      reprinted in 'Foundations of Computer Music' by Roads)
      On Mar 19, 2007, at 9:29 AM, Mark Cartwright wrote:
      > actually, wait, nevermind... an analog signal would have those
      > negative frequency components too, wouldn't it? or wouldn't it?
      > argh... i need some more coffee.
      >
      ----
      Steven M. Miller
      Home
      SFIFEM
      Atrium Sound Space
      OVOS
    • Mar 20 2007 | 3:39 am
      Quote: Axiom-Crux wrote on Mon, 12 March 2007 18:59
      ----------------------------------------------------
      > Im reading up a bit more about analogue oscillators. I think maybe the lookup table of the cycle is having a negative effect on the sound quality, especially when doing FM. Im curious if theres a way to get FM without aliasing?
      ----------------------------------------------------
      The way to avoid aliasing in every case is to avoid generating frequencies higher than SR/2, where SR is your sampling rate. In FM (unlike AM) you can generate an arbitrary number of sidebands. The higher the index of modulation, the more sidebands, and the more likely you are to be aliasing. If you want to tame your synthesis, you could put a spectral scope on the output and watch for when your sidebands march past the boundaries of 0 and SR/2 and then limit the index of modulation to those points.
      Or you could learn to stop worrying and love the aliasing :-)
      Eric
    • Mar 20 2007 | 3:09 pm
      Its not that I don't like the aliasing, I am just tired of it, and looking for new textures. I was going to buy a whole modular eurorack setup, which I still may, but I feel like I should be able to do these things in max and be able to take my laptop on the road with me and do them anywhere rather then have a wall of modules and unsaveable patches that costs a rediculous ammount just to get good clean analogue style synthesis.
      I also don't think that modelling a resistor or other electronic components would be that hard. Or maybe I just am driven and dont typically think of things as beign difficut, as Im used to spending months and years on projects. At the same time I dont' know C++ or the msp SDK enough to do so. I was just saying I think it would be a great idea and could lead to a whole new use for max (electronics prodotyping).
    • Mar 20 2007 | 3:23 pm
      > Or maybe I just am driven and dont typically think of things as beign difficut, as Im used to spending months and years on projects. At the same time I dont' know C++ or the msp SDK enough to do so.
      If you have no problem with investing time and if you
      really do care about doing this component modelling, then
      perhaps taking this as the opportunity to learn C++ and
      enough SDK to actually do what you describe would be a
      good idea. It's a perfect marriage of desire and incentive,
      and you'd probably make some interesting discoveries
      on the subject of whether or not you *do* underestimate
      the difficulties inherent in implementing an idea.
      Win-win.
      And making your work available to others? Win-win-win.
    • Mar 20 2007 | 7:52 pm
      Maybe one day I will get back into C++, but for now my plate is full. I have a full time job which typically goes from 9 am to 8 pm and I am also a musisican publishing albums and playing shows on a regular basis, as well as a visual artist doing installations and video artworks. I dont have enough time now to relearn C, which is a life long task, and do something like this myself. I don't by any means concider myself the person to do such a project. Im just mostly pointing out that you have responded in this way to many things Ive said as if they are improbable. Ive seen much more complex things come out of the max community.
    • Mar 20 2007 | 9:51 pm
      Quote: Axiom-Crux wrote on Tue, 20 March 2007 15:09
      ----------------------------------------------------
      > Its not that I don't like the aliasing, I am just tired of it, and looking for new textures.
      >
      It might be a good idea to try the same synthesis method at very low and very high sampling rates to determine if aliasing is really the main problem. (You might need Csound if you run out of processing power with MaxMSP.)
      > I also don't think that modelling a resistor or other electronic components would be that hard.
      >
      Neither did Max Mathews in 1957. That's why we have computer music today.
      :)
      Eric
    • Mar 21 2007 | 3:28 am
      > Im just mostly pointing out that you have responded in this way to many things Ive said as if they are improbable.
      I don't consider them improbable at all. I've merely pointed out a few basic caveats here and there, and described what I believe some of the scope of the work to be. I'm sorry that it doesn't interest you enough to do any work on it, but I'll wager that I didn't scare you off.
      >Ive seen much more complex things come out of the max community.
      Indeed. Done by people who decided they had the time, and - often - given freely to us all (may they be praised and prosper).
    • Mar 21 2007 | 3:37 am
      Im not sure how to take your responses sometimes.
      I do infact have the desire to create them, i just don't have the time, resources, and knowledge, which would require more time, so basically, if I were the one to do this it would probably be much later, and not so sure that it would be worth that much of a time investment for just that specific purpose. Now to learn c++ more in depth just for the sake of making my own softwares from scratch is more probable. However I feel that with max and most of the externals I have in my library I can do most everything I want, which brings me back to my original issue which is sound quality.
      I feel that the only problem Im having with max overall is possibly just that since your working with such base components you have to add more then you might think to get a particular sound quality.
      Does anyone know enough about electronics and the way that analogue oscillators work to give me a breakdown on how they might function differently then digital msp based ones? or for that matter filters? Maybe I could look up some schematics and try and translate some of the fameous filters. The most interesting oscillator to me right now is the cyndustries.com zeroscillator, and their sawtooth animator, both of which I hope to create something similar in max.
      At any rate, I like some of the things that are coming about in this thread. Im going to do some research and run through some of the suggestions and then post again.
    • Mar 21 2007 | 4:36 am
      You may want to check out SPICE (Simulation Program with Integrated Circuit Emphasis; http://en.wikipedia.org/wiki/SPICE) for help with modeling at the component level. It's not directly portable to Max/MSP, but the ideas involved might help you out a bit.
      Erik Gavriluk, the guy behind Bomb Factory (pre-Digidesign's buyout), said that most of the BF plugs were modeled down to the component level in SPICE.
      Hope that helps,
      EH
    • Mar 21 2007 | 6:36 pm
      Interesting, this spice, Ill have to look into it more. I don't know much about electronics, but Its yet another thing I would love to delve back into, haven't since I was a youngster.
      Thanks!
    • Mar 21 2007 | 6:46 pm
      It should be relatively straightforward, it seems, to implement some
      sort of 'limiter' on the mod index, tied to the Fc, C:M, & SR/2.
      I, personally, love the aliasing...
      On Mar 20, 2007, at 3:39 AM, Eric Lyon wrote:
      >
      > The way to avoid aliasing in every case is to avoid generating
      > frequencies higher than SR/2, where SR is your sampling rate. In FM
      > (unlike AM) you can generate an arbitrary number of sidebands. The
      > higher the index of modulation, the more sidebands, and the more
      > likely you are to be aliasing. If you want to tame your synthesis,
      > you could put a spectral scope on the output and watch for when
      > your sidebands march past the boundaries of 0 and SR/2 and then
      > limit the index of modulation to those points.
      >
      > Or you could learn to stop worrying and love the aliasing :-)
      >
      ----
      Steven M. Miller
      Home
      SFIFEM
      Atrium Sound Space
      OVOS
    • Mar 30 2007 | 7:55 pm
      so it ends up its all about the chebyshev. I tried so many things that everyone suggested and it sounds great now, I finally have a custom analoguishh max patch that sounds just as good as my friends 6 thousand dollar doepfer rack :D
      Yay for max!
      Thanks all so much for your help!!! Especially Peter!
    • Mar 31 2007 | 3:04 pm
      in my experiments with FM synthesis ive found that phase modulation is more stable and sounds clearer than frequency modulation, though that might not be desirable in all instances. I think the DX range all used PM rather than FM
    • Mar 31 2007 | 5:56 pm
      funny you should say that cause I used to use PM mostly, maybe Ill try that out too. Heres a demo of the two different sound qualities.
      NCRIII
    • Mar 31 2007 | 9:56 pm
      Quote: Gregory Taylor wrote on Mon, 19 March 2007 08:51
      ----------------------------------------------------
      > >Any insight onto the best source for alias free FM would be highly appreciated.
      i agree with those who said thats more about upsampling
      than about using [hr.]
      normally 88 or 96 khz (i.e [poly~ foo up 2] at 44.1) should
      be enough to produce clear HF content from a (non non-aliasing)
      sine wave frequency modulation another.
      but often i do FM synthesis using poly down 4 (resulting in 11
      khz), then appending lowpass filters in root.
      sometimes less is more.
      -110
    • Apr 06 2007 | 12:55 am
      Hey roman, can I see an example of your two suggestions for poly fm up and down?
    • Apr 06 2007 | 2:42 am
      Quote: Axiom-Crux wrote on Thu, 05 April 2007 18:55
      ----------------------------------------------------
      > Hey roman, can I see an example of your two suggestions for poly fm up and down?
      >
      ----------------------------------------------------
      couldnt find it its not here .. i rolled you a personal one now:
      -110
    • Apr 06 2007 | 6:03 am
      well I certainly hear the diffference with the down sample rate (sounds bit degraded) but with the up 2 sample rate I hear not much difference. Is there maybe a way to bandlimit the harmonics?
      At any rate the chebyshev did what I wanted, added some nice fatness, and the little bits of randomness I threw in my patch made it more alive and analogueish. Im happy with the tone quality Im getting now.
      Heres my reply test.
    • Apr 06 2007 | 5:26 pm
      Quote: Axiom-Crux wrote on Fri, 06 April 2007 00:03
      ----------------------------------------------------
      > well I certainly hear the diffference with the down sample rate (sounds bit degraded) but with the up 2 sample rate I hear not much difference. Is there maybe a way to bandlimit the harmonics?
      >
      > At any rate the chebyshev did what I wanted, added some nice fatness, and the little bits of randomness I threw in my patch made it more alive and analogueish. Im happy with the tone quality Im getting now.
      >
      > Heres my reply test.
      ----------------------------------------------------
      if the modulator cycle f comes near nyquist (around 21,000 Hz)
      there will be quite some difference between normal and poly~ up 4.
      and dont forget that we use sinewaves here, with tri waves you
      already have HF content when the nominal frerquency of main cycle
      is 100 Hz ...