Audulus does Physical Modelling!
  • In our quest to reach Synth-World-Domination with Audulus I am uploading patches that shows how one can use the new V1.10 features to create Physically Modelled pluck and bow sounds using the Delay node.
    I simply flipped the keyboard frequency output over, by dividing, so that I could use that signal to control the Delay node frequency with the keyboard and then built a little "driver" circuit from an Envelope and Noise node.
    Note that the actual "oscillator" sound comes from the Delay nodes and the Noise and Envelope just trigger the Delay resonance, modelling a string or tube. A constant node is used to set the Feedback of the Delay nodes which creates the "ringing" of the oscillators. It's possible, using the Crossfade Mixer node, to just use the Envelope node output to drive the delays creating plucked sounds. Mixing in some noise creates the bowed sounds.Multiple delay lines can be chained with filters in between to create damping and detuning.

    The first patch is a simple proof of concept to get the Delay node resonating and pitch controlled by the keyboard.

    (and yes, these will run polyphonically with enough CPU juice)
    Waveguide model.audulus
    158K
  • Awesome! I just tried it out. That will make a very nice sub-patch, especially when I'm finished with the custom sub-patch UI :-)
  • @Taylor – was the octave control for the on-screen performance keyboard in this latest update? I thought it was on your list, but I didn't see anything obvious like octave +/- buttons, and dragging it left or right doesn't work either. Not that it's a big deal now that I've got my external keys hooked up. Oh, and by the way – amazing update! Does it help to 5-star review the app after the update, even though I did one four days before it came out? If so I'll go back.
  • You should always update reviews after a new update since reviews for current version and earlier versions are displayed separately.
  • This is very cool, quite CPU friendly too given that its physical modelling.

    Great job :)
  • Yeah since it's just a delay line it's not to CPU heavy.
    The real interesting stuff comes later when I start to build my own feedback network so that we have control over decay values, like Karplus Strong.
  • This next patch is a plucked sound using four parallel Delay nodes, each detuned slightly, and with a tiny bit of velocity controlled pitch bend. Velocity is used to for volume and to filter the "exciter" which brightens the strike. Velocity is also used to lengthen the decay by controlling the Delay nodes feedback. gotta love V 1.10!)
    Waveguide Pluck.audulus
    412K
  • This one creates a nice string sound by using a chain of 4 Waveguide Delays, each with filtering, creating a much stronger resonance but with some damping. Velocity controlled filtered noise and envelope signal are used to excite the Delay nodes and a little detuning gives some natural sounding phasing. It's possible to detune each Delay node even more to get a more synth string sound. I was surprised at how similar to AAS String Studio I was able to get this.
    Waveguide Strings.audulus
    298K
  • And finally, a breath controlled model of a flute like sound. This model uses a chain of 3 Waveguides with filtering, detuned slightly, for the main body of the sound. Another Waveguide is tuned an octave lower, with much higher dampening, and is excited by low freq noise. The last Waveguide is tuned an octave up, is very resonant and is excited by high band noise. In order to play this patch you need to first play a note, so the keyboard sends a pitch, and then blow into the iPad mic. Because the patch is freq sensitive, it will respond to changes in the tone of the incoming breath and give you overblown effects. You can turn down the breath feature and mix in the envelope as well.
    Yes, this patch is a bitch to play! but I think it really demonstrates the power of Audulus!
    Waveguide Flute.audulus
    430K
  • I haven't really figured out how to do videos but I think some of these patches would make a great video.
    If anyone wants to give it a go, be my guest!
  • Sweeeet!! Those sound amazing.

    Also very useful examples of how to do physical modelling, i'm having fun unpicking these. Thanks for sharing :)

    Video's are quite easy if you have the mac version, screen recording can be done with the built in Quicktime Player and all you need is SoundFlower to record the audio: http://cycling74.com/soundflower-landing-page/.. Its all free, this video takes you through the setup:


  • Cool, if I ever stop building patches I will try it!
  • @Dcramer, great patches! I'm quite impressed all that is possible -- I haven't done any physical modeling previously. Looks like we're getting good use out of the variable-time delay :-)

    Also, as an added bonus, your patches helped me identify two bugs in my work-in-progress performance optimizations for the next version of Audulus! Many thanks!

    cheers
    - Taylor
  • @Dcramer

    good idea with the breath (mic) input. I didn't expect that it will work in the first attempt, and indeed it didn't. Maybe because I use the Tascam iU2. Will try another time.

    What I would like is to use my EWI wind controller to play Audulus patches. Can Audulus receive CC2 (breath)? Or other CC's?

    Edit: ah, just found the answer here: http://forum.audulus.com/discussion/125/midi-cc-osc. Still don't know how to map CC's, but it should work. No need to reply, I'll find it out myself.
  • Yup you're right it can, it's easy and you can do it directly to a knob through the pop up context menu, or to have more patching control you can assign a cc# to a constant node and then patch it where ever you like through any other range changing nodes.
    There are so many destinations available you could spend hours modulating that patch in different ways.
  • Hey Taylor question;
    You can see that to create these patches I flipped the keyboard output over to have it control the delay time.
    What I really want to do is creat my own feedback loop, ie; not using the feedback knob on the delay node, but wiring one up myself. The is that I can use modulated filtering of my choosing in the loop, greatly increasing my models realism. I tried it and it works but it screws up my key board scaling, as if the delay no longer at the same freq? Any ideas why?
  • Yes, it most likely has to do with a limitation of Audulus when it comes to feedback loops. Because Audulus processes audio in little chunks (which is how DAWs and plugins do it), each feedback loop will have an extra delay of that little chunk. Right now, each chunk is 128 samples for Audulus running as a stand-alone app. If its running as a plugin, it uses the host's chunk size.

    If your delay time is long enough, you could perhaps subtract off the extra feedback delay. 128/44100 on Mac standalone (for built-in audio).

    I'd really like to be able to have single-sample feedback loops. I've been experimenting with an idea that will accomplish that but all the nodes involved in the loop will run at a fraction of the speed (between 3x and 10x more CPU load). On Mac, I think I can eliminate the overhead, but on iOS, due to some security restrictions that prevent me from dynamically generating machine code (allowing a program to write new code at runtime increases security vulnerabilities), I can't eliminate the overhead.
  • holy crap! I'm gone from the forum for a month or so, I come back and Audulus does physical modeling!!

    You guys are monsters of patching. If you don't mind me asking ... how did you guys learn all these synth algorithms? Any recommended background reading?
  • I've done tons of synth programming in hardware and software and learned a lot in the 80s and 90s from music mags, books, and also software plugin manuals.
    I'm certainly not the math engineer that some of these guys are! But I love that Audulus is fast and flexible, allowing me to experiment.
  • Taylor; that makes sense. It's as if it adds little chunks of time to my feedback loops
  • Hello Taylor and evrybody,

    This thread is the reason I got audulus for my iPad. I am a little late to the game because of the ios6 requirement. After having lots of fun with sunvox in the AB effects slot I just had to have audulus and I am very happy with it allthough it eats a lot of my time...

    Years ago I used to play with CPS wich is very similar. In CPS you could make a one sample delayed loopback. It involved a audioToControl and a controlToAudio node and also an order node (some kind of stack that would give you the previous value when you store the next value).
    With this technique I was able to build a patch that resembled the schematics of the Dave Smith Evolver. That was a great effect for my wind synth.

    To bad that audulus does not do this trick yet because such fast loopbacks give you that analog feeling. Now I was wondering if you could use the math object to do physical modeling. Been looking at the formulas that involve finite elements but that is hard to understand.

    So I was wondering if you can add some functions under the hood to give us physical modelling like in CSound?

    Alfred
  • Hi Alfred, I'm no programmer but I think the current V 2.0 Math Exp doesn't allow you to use any kind of memory stack as of yet. However I'm sure I read somewhere that maybe Taylor is planning to allow for this in a second Exp node.
  • Hey @AlfredR, welcome! @Dcramer is right, the current math expression node is "stateless."

    I'm working on being able to control the number of samples of delay in a feedback loop. However, it can be fairly complex since on Mac, AU plugins expect to be given audio in decent size chunks. It may take me a couple versions to get single-sample feedback, but I'm rather determined :-)

    What's CPS?

    cheers
    - Taylor
  • Yeah, CPS (cycles per second) is a very interesting toolkit. I got into it because I was developing with Director. Sadly both those programs went the way of the dinosaurs...
    So now I am hoping CPS was the precursor of Audulus.
    If you have a pc or a powerpc Mac you all should check out cps because it has many sub patches that will easily translate to Audulus. It also has some ideas and functionality that would augment Audulus if adopted, like midi handling and tables.
    Taylor I am realy hoping you can make some PM node that you can send values like pitch, amplitude and lip pressure.
  • CPS looks really neat! Sorry, what's a PM node?

    cheers
    - Taylor
  • With a PM node I meant a way to do physical modeling with a formula instead off using all those comb filter tricks. In Csound there is a build in routine for that.
  • @AlfredR, ah, could you link me to that routine so I can learn more?

    cheers
    - Taylor
  • @AlfredR, cool, thanks for all the links! I was just going through the CPS documentation. Seems like getting single-sample feedback requires falling back to control rate right? (I was looking at http://cps.bonneville.nl/manual/chapt3.htm#_Toc475728472)
  • Well its more like upping the control rate to audio rate for that part of the circuit. It is a bit processor intensive but still it was working beautifully in stereo on a PIII 500.
  • @AlfredR, ah ok. I think you'll like how I'm going to do the single-sample feedback in Audulus :-) (it might take me a while to pull it off though)

    cheers
    - Taylor
  • Realy like Audulus allready, thank you.
  • Are these patches gone? My phone keeps saying they aren't there when I click em
  • @MacroMachines, these patches are for an older version and don't convert properly to v3 of Audulus. I managed to convert the waveguide model patch to v3 which I've attached. Not had a chance to the rest of them but they are based on this anyway.
    Waveguide model v3.audulus
    17K
  • Hi everyone, for some reason can't get these patches to play...am I missing some kind of mute button somewhere? Thank you for any help
  • @Ify23 do you see the post right above yours? Does that apply to you? Thanks!
  • Biminiroad thank you, yes that was silly of me! It is not the first time that this happens actually .... Apologise
  • @ify23 - no problem! Also, just fyi you have to use the @ symbol in front of people's names to get their attention - but I read all the posts so it doesn't matter for me :)
  • @afta8 thanks for creating a v3 version. It's a bit sad we can't use older versions but I am sure it was totally impractical...but a visualizer would have been nice. Sometimes I only need to look at it to crecreate it. Thanks!
  • @fferreres - the only saving grace is that not that many patches for v1-v2 were ever uploaded to the forum. There are 2-3 times as many patches for 3 as there ever were for the previous 2. If you want to do something in particular but can't remember how to do it, I'm sure you can just describe it and I or another forum member can help you reconstruct it.
  • Bimini, that's very positive then. I create patches more as confirmation, and learning, and I was wondering how a passable Vocoder might be constructed. I did one based on just instructions from SOS....here's the patch. Of course it cannot be any more rough, simple and probably flawed. But, I can recognize what I say. Hope patches stay compatible in the future.
    Vocoder SOS.audulus
    5M
  • @fferreres - thanks for sharing! And yes, the patches will be compatible in the future. This happened because Taylor switched from an interpreted programming language to programming in C++. The interpreted language had limits to how quickly it could process. C++ is a very elemental programming language that runs very quickly and there really wouldn't be a reason to change it in the future.