FM/PM Piano Patch
  • I am pretty pleased with this. I had tried an earlier piano model attempt that was crazy complicated. This is a basic phase modulation synthesis, and I consider it very good to my ears for a non sampled piano. I also am shocked at how this surpasses the multi oscillator monster I created with a simple modulation and carrier oscillator pair.

    The only improvement I might add would be an additional mapper to control the resonance of the filter as a function of velocity. Maybe have the same map effect the reverb in some way was well.

    Anyway enjoy.

    FM Piano.audulus
  • Very nice.
    Why not put the poly-mono just before the reverb? Then the processing works independently on each of 4 voices.
  • Oh, yeah that is definitely a good suggestion there. I will add that tonight.

  • But I will mention that would be an additional poly mono on audio out. The places I put the poly mono like for controlling the filter envelope really are the sensible way to do that. But I would lower CPU usage being mono before entering dsp stages.

  • So my update to it adds an additional poly to mono just before the audio input to the Filter. I will post it later as I consider other tweaks.

  • But if you keep the patch poly until the last stage, you get 4 independent filter envelopes, each controlled by the pitch it is playing. In your configuration, the first voice determines the filter parameters for the other 3.
  • @devillock76 - Ken, nicely done! I like how its bundled into a little sub-patch :-)

    I'm with @JDRaoul -- try using only one PolyToMono before the Reverb.
  • The problem with that is the result isn't very good or that different. I will play around with it some more though.

    I bundle everything I do a s a sub patch, in part for easy portability, but also to then later combine sub patches into a performance patch.

  • I have made some updates, but I am holding off on a new version till I can really test this in a more expressive playing environment. As in hooking up my actual controller keyboard and putting the patch through realistic playing practice across the range of a piano. I have been slightly distracted working more on methods of implementing FM/PM synthesis in audulus to expand the range of sounds I can create. And the goal of this is actually for realistic instrument synthesis not just spacey effects. One of the things I have noticed though is true FM is not really creating the results I want so I am trying to read more about the DX7 architecture and the PM synthesis it used (even though they labeled it as FM it was indeed PM). I want to see how efficiently I can chain and rearrange operators in a visual and easy to modify version of a DX7.

    I think doing this combined with the filter and audio processing powers of Audulus could yield some very interesting results.

    And this is also pushing me that I need to shell out for the Expression module as creating a lot of this will be much easier with that module in my available tool set.

  • OK after some experimenting as much as the fixed slave osc frequency work in the range of the audulus on screen keyboard it does not scale well either direction. Fixed it somewhat, but I may kill this whole thread till I get more of the FM/PM stuff sorted out in audulus.

  • Shell, by all means.
    My recent preliminary experiments with sin(sin) type FM look like this.
  • Off of lunch break but will look at that later. I also just grabbed two other FM patches that users had in the new patches thread. By all means this patch is just turning into a osc sync piano like the last one but I think I am cleaning up some things about it.

    My problem with pure FM style experiments is I am having issues setting up "musical" examples. Trying to start from just a plain 2 operator setup but I find that the results are either unmusical, or untweakable, if that makes sense.

  • Ok experiment evolving but I am pretty happy with this two operator fm sub patch. A note the sub patch puts out a pretty hot volume so you will need to bring it down with a level node. The tone in this example is somewhat of a steel drum or something, to really, just the best I can describe it.

    One thing though I am getting a bit of a click at the beginning of the sound. Any idea why. Oh and sharing this via drop box link since I am on my ipad. Op FM.audulus

  • Next version of this will be hopefully with the following. Carrier oscillator frequency feedback is one. That will be in the sub patch with an input to control it. The other will be combining three of these sub patches into a DX7 pseudo piano recreation.

  • Ok the click was from using the gate as the oscillator sync. It is unnecessary so I removed that.
  • Upping the game. So here is a new version. But used in a 6 operator format. Inside the patch there are three of the previous 2 operator fm sub patches. These are improved. First of all the extra gate that served as an oscillator sync has been removed, this fixed the clicking issue. Next off there is a feedback circuit and control on the carrier oscillator.

    As for the overall patch, this is meant to kind of model the DX 7 piano, going towards realism. I think in the middle range it does well but does not scale all that well. But I am pretty pleased with the results. No filters used for processing. Just some reverb on the final.

    Again a Dropbox link. Piano.audulus

    Enjoy. My next version will be an attempt at as realistic a piano as I can get but probably with a hybrid system.

  • Just an explanation of the controls for the 2 Operator FM sub patch. Starting from the bottom. This could be helpful to those not familiar with how FM synthesis is done. This is modeled after a DX7, well as close as my brain could make it without the Expression node. All "oscillators" are a chained pair of phasor into sin node.

    1. Pitch - this should be self explanatory, but in short it controls the carrier frequency, and will be used to relationally affect the modulation frequency.

    2. C:M - I should have written this as M:C as it is the value of M/C and in short the multiplier of the Modulation frequency in relation to the Carrier frequency determined by the pitch input. So a value of 2 will be that the modulator is twice the frequency of the carrier. Now a quick FM primer. A value of 1 and rolling modulation ratio up to full will be a saw wave, value of 2, more like a square wave. Sub 0 values and other decimal values will create inharmonic side bands. The number basically is the spacing of the side bands.

    3. Mod Ratio - This is the impact of the modulation on the carrier. Basically the delta. Ranges from 0-12 will be most useful. It can act almost as a filter sweep as well. To explain that lower values will bring the sound more towards the base sine wave, higher values add harmonics from the modulator. So you could in effect use it like a self contained LP filter. The number here is relational to the frequency, so delta is based on this number times base frequency of the carrier. Not sure if this is how it is done in the DX but this created the most usable and scalable results in my experimentation. This number is basically the amplitude of the side bands.

    4. Mod Env/Gate - At minimum you need to hook velocity to this or you could just set a default at 1. However I would recommend ADSR values get sent to it. It works in conjunction with Mod Ratio. Mod Ratio sets the maximum modulation possible and this is used to determine how to cycle it. Additionally you could hook up an LFO to it or some other control to vary modulation over time. Yes I know I could have combined this with Mod Ratio but it seemed to me to make it easier for FM newbies to have it configured this way for better control to create musical results.

    5. Env/Gate - Overall envelope, at minimum you need to hook velocity to this but again an ADSR value will be most useful. You could chain an ADSR and LFO, have fun with it. But this is an overall amplitude control.

    6. Carrier FB - This opens up control of a Feedback circuit on the carrier oscillator. This is not relational to carrier pitch. Look in the patch and you will see that is nothing more than a level that hooks the output of the carrier oscillator back into an add node before going back in the oscillator. This loop will bring us into not harmonic and very metallic to almost noise type sounds. Higher values will be very harsh. I have found a range from 100-300 yields the most usable musical results. Higher values and some tweaking could make this interesting for percussion sounds. In a hybrid piano patch I am working on I have an ADSR node hooked into a Multiplication node, which sets my max FB value and then into this control input. The purpose is to give it a bit of percussion to the front of a piano sound. I think this could also be interesting as a function of velocity using say a mapper node output.

    7. Output - single output, polyphonic out if polyphonic in, nothing fancy here. There are no effects or true filters before hitting this output. So you could add those afterwards. You can also chain these operators. I will mention the nature of this sub patch can create some really hot output if you are not careful. So you might want to tame the level down before hitting an actual audio out and even before going into any effect nodes. I left it like this as despite the hot output it makes chaining these modules easier if you wish to create 4 operator, 6 operator, and on type programs.

    Anyway enjoy. I did this as I wanted a quick shortcut for building FM patches but I wanted to make controlling the FM patches very straight forward and easy whether someone understood the concept or not. I find this really opens up more possibilities than what can be done with the existing analog style oscillators with great oscillator stability and low overhead.

    If anyone has some good ideas to improve this let me know, or post your own version. Their are two many WAY sharper than me minds in this forum that I am sure could improve on what I have done so far.

  • JD Raul, I still need to look at the patch you posted. But I was so caught up in the DX piano patch last night I didn't get to it. My apologies I will look a little later.

  • That patch I posted is just a demo of potential FM-type routing. Your patch does more or less the same thing in a more controlled/controllable and elegant way. I believe the only trick mine has to offer is the multiplier on the envelope input.
  • When I take a look at it maybe the ideas can be married. I always felt FM synthesis had a lot of superiority to offer. I often feel it can be far deeper and more interesting than the virtual analog world. The trick really is programming it and that pretty much all the dedicated FM hardware there has ever been had few real time control options. The only exception to that was the dx200.

  • I agree about FM. I spent a lot of time peering into a dx7 display and it's the only keyboard I still own. But the richness of possibility is hard to get at, very technical, difficult to control, anti-intuitive. For all the hours I spent, I could never get a feel for its parameters, never develop any but the coarsest intuitions.
    But working with Audulus-based FM may prove different, in that you build it from the ground up and have a chance to explore the possibilities of each stage as you add it.
  • Just downloaded your patch, nice.

    You ought to consider downloading Hester which is dssi DX7 emulation. It will use dx7 patches and I think saves to a dx7 friendly patch format. It is just much easier to edit.

  • Any chance we get an Audulus 3 version of this patch?
  • @biminiroad - i rebuild devilocks76´s patch for v3 shortly after i got v3 from ya :D
    hope it still works.. didnt play around with it but its def an exact copy of the v2 patch
    FM Piano.audulus
  • Right on!!! Thanks @Phal_anx