1. IMPORTANT:
    We launched a new online community and this space is now closed. This community will be available as a read-only resources until further notice.
    JOIN US HERE

Sound University?

Discussion in 'REAKTOR' started by Jeff Brown, Jul 28, 2008.

Thread Status:
Not open for further replies.
  1. Jeff Brown

    Jeff Brown Forum Member

    Messages:
    377
    I think this is simultaneously the most flexible and the least user friendly ensemble I know about. The second quality was not part of my intentions. I don't know if anyone will find it useful or not; here's hoping ...

    What it does
    ============
    This is a synth in which everything can be plugged into everything, and everything can control everything, more or less. Controlling signals include the key velocity, a bunch of envelopes, and 6 LFOs (3 random, 3 deterministic). There are 3 oscillators; each one can have its pitch affected by a separate LFO, a separate Attack envelope, and a separate Release envelope. So for instance, if you want it to rise 8 semitones over the course of 2 seconds at the attack, then fall 2 octaves over the course of 10 seconds for the release, all the while wiggling back and forth between + and - 1 semitone, you can. The oscillators' widths are also controllable by all that stuff, as well as by the Key velocity.

    Each filter and each delay can accept up to 3 separate input signals, with each input mixed according to its own envelope and LFO characteristics. Feedback is possible and desired. Instability is also possible, although less desirable.

    The LFO pitch and resonance can be modulated very much like the oscillator pitch and widths.

    The Delay parameters can be tweaked in rather complicated ways, because I had physical modeling in mind. See the attached instructions for details.

    Where I want to take it next
    ============================
    The 1-shaper and 2-shaper sections have yet to be made. I want to include excitation junction logic (e.g. reeds, bows) for the 2-shaper section. This is the most exciting part, for me.

    I also want to create a DIY MIDI matrix, as described in the thread of the same name. That way snapshots can hold different assignments of controls to parameters. I'm rather dreading the process.

    The oscillators can't do FM synthesis yet.

    I'm going to plug the synth into a monophonic distortion.

    After that, all that will remain is the creation of snapshots.

    Problems I recognize
    ====================
    It's not thoroughly commented. I know what's going on, but it won't be obvious to someone else by just looking at it. For instance, the fact that the LFOs and Envelopes and key velocity can all modulate any parameter sounds fine in theory, but there are many ways in practice for that to happen. I had to choose one.

    When you choose the source for a Receive to listen to, it looks like there are 4 of each type -- 4 oscillators, 4 filters, etc. In fact there are only 3, because again there wasn't room on the screen for a fourth.

    The names of many controls have been hidden, because screen real estate was at a premium. (I wish stacked macros could be four times as big as they can be.)

    The names of the sends, although I tried to keep them uniform, are out of order in some places. Particularly the envelopes.

    It would be nice if one LFO could modulate another one's frequencies, ala the Hammond B3. Easy to kludge, but it's not obvious how to do this elegantly. I'll probably skip the idea.
     

    Attached Files:

  2. herw

    herw NI Product Owner

    Messages:
    6,421
    never skip such ideas - just the impossibilty brings creativity forward :)
    your "to do document" is a first step - don't think of such a project in hours, days, weeks: think in months and years!

    ciao herw
     
  3. sowari

    sowari Moderator Moderator

    Messages:
    27,759
    to quote from the manual concerning changing the view with stacked macros:


    To use this ensemble, you'll have to MIDI map the two panel index knobs to a couple of MIDI faders or something. Note that those knobs are hidden; they don't appear on the panel display, only in the guts of the instrument

    sorry, but i really don't think this is a good option. some users (beginners) will not be able to find the knobs, other users will wont to try this out without have to hook up MIDI controllers.

    i think you should use a List Module, see picture:

    also, you don't need to have the frame visible for every macro. for me all the frames are creating a bit of confusion. there are quite a few occasions where you don't need the macro frame, instrad you could cane the switch Attack, and choose No Frame in the properties.

    Also sometimes you can have a knob with just its label and value visible. this will help keep the size of what is seen down a bit. An example the Base and Max knobs could be just names and values (instead of small knobs) and instead of always using medium sized knobs, you could use smaller ones more often.

    anyway, this looks an intriguing synth with a lot of potential for sound design... but i think you could make at least 10 snaps to show it off :)

    sowari
     

    Attached Files:

  4. Jeff Brown

    Jeff Brown Forum Member

    Messages:
    377
    Thanks for the feedback!

    Herw: If having a long list of features to include subsequently is a sign of good programming, then I must be doing pretty well ...

    I'll definitely do the list trick you mention, Sowari. I'm reluctant to delve into other panel refinements just yet, as I'm not sure what other functions I'll want to include. Making snapshots is something I'm delaying for the same reason. There's an unfortunate tradeoff between speedy programming and well-thought-out efforts at sharing. But I'll probably do everything you just said -- at some point.
     
  5. sowari

    sowari Moderator Moderator

    Messages:
    27,759
    i understand you point about snapshots, and have indeed wasted time making snapshots only to see them destroyed because of a change in the structure of the instrument. BUT surely the proof of the pudding is in the eating, and having at least 5 contrasting snapshots at least gives the beta tester something to latch on to and also gives you the opportunity to see if your creation is good for making music with.

    sowari
     
  6. Jeff Brown

    Jeff Brown Forum Member

    Messages:
    377
    It groweth

    I did like Sowari suggested and put some list macros on the far-left side, so now in order to navigate the 2 stacked macros all you need to do is select the appropriate one from the 2 menus on the far-left.

    I gave it FM synthesis. Like everything else, the FM signal can be mixed from up to three of the audio processing units.

    I haven't made snapshots yet, but the ensemble is currently configured in a way that showcases the use of FM synthesis. The Final Mix (as visible on the left side) is only listening to Oscillator 1, but Oscillator 1 is using Oscillator 2 for FM. The Baseline knob controls the width of the FM synthesis, in a logarithmic way that's hard to describe. The LFO, Attack and Release modules are all being used to modulate the frequency modulation, which is why the three corresponding lights in Oscillator 1 are lit up. The LFO section of the FM macro is listening to L D2 (LFO Deterministic 2), which is a pulse wave that makes the resulting sound stutter. The Attack section of the FM macro is responsible for the swooshing attack sound; if you want to screw with the duration of that, change the A1 envelope (after selecting "Key, LFO, Env" from the top-left menu to display the appropriate stacked macro). The Release section of the FM macro is responsible for the weird decay into oblivion; to change the length of that effect, change the R1 envelope in the Key/LFO/Env section.

    I updated the manual (at "New stuff begins here") to describe how to interpret a snapshot -- that is, how to look at it and determine which modules are being used, in which order.
     

    Attached Files:

  7. Jeff Brown

    Jeff Brown Forum Member

    Messages:
    377
    I added the 1-shapers and 2-shapers. The 1-shapers are things that distort a single audio signal -- e.g. clippers, absolute value, squaring it, etc. As usual, that single audio input stream can be the sum of multiple signals from elsewhere.

    The 2-shapers are things that take a Carrier signal (to get messed with) and a Modulator signal (to mess with it). They include things like Mod Clipper (clipping with adjustable maximum absolute value), Mirroring, Ring Modulation (in which neither signal is necessarily the carrier), etc. Again, the Clipper and the Modulator can both themselves be sums of signals from elsewhere.

    Things are moving faster than I expected. Next task on the list is the DIY MIDI Mapping, and after that, snapshots.

    The only two major conceptual additions will be some scattering junctions and excitation junctions. Those two physical modeling ideas will be so much work that I'll wait until I'm good and comfortable with these more traditional forms of synthesis first. It feels like I haven't actually played the keyboard in weeks. What Sowari said about pudding really hit home.

    Note that delay-line-style synthesis, e.g. for simple plucked string and blown bottle sounds, are already possible with this thing. Only the nonlinear PM units await.
     

    Attached Files:

  8. sowari

    sowari Moderator Moderator

    Messages:
    27,759
    hi Jeff, i am getting a clicking sound (like a repeated glitch) along with the sustained sound. is this deliberate?

    the click gets slower when the played pitch is lower, and faster when a higher pitch is played.

    sowari
     
  9. Jeff Brown

    Jeff Brown Forum Member

    Messages:
    377
    Yes. That's the 3rd oscillator, which is producing a Geiger waveform. If you change the waveform it'll sound like something else. Originally I was making the 3rd oscillator be white noise, to ring-modulate (in the 2-shaper section) with something else, I forget what, because that's what some book said a certain model of a blown bottle uses. I changed it to Geiger just to see what would happen.
    ---
    Suppose module M is not being used; the wires going into it and leading out of it are inactive. Is there any way for another module to discern that fact? I'd like to put lamps on all the major panel items, indicating whether they're currently being used -- but in this synth, whether a module is being used or not is not determined by that module itself, but rather by whether any other modules are listening to it. And in fact it's more complex than that, because if those modules in turn aren't being listened to by anything, then M is still inactive.

    The discovery process is big and recursive, and I don't want to program it myself (I don't think I could), and moreover Reaktor is already doing exactly that discovery process by deciding whether a wire is active or inactive. So I'd like to tap into that knowledge. But I think I'm running into a Catch-22, because as soon as you plug an inactive module into a lamp that was intended to indicate whether the module was inactive or not, the module will become active. Is there no way around that?
     
  10. sowari

    sowari Moderator Moderator

    Messages:
    27,759
    sorry, i am confused about what you mean by Module M? is it an example of an (meaning any) inactive Module, or is it a specific module? it would be good if you could give a specific example, an example that is easy to find ;-)

    and to clarify, you are saying you don't want to programme this synth?

    sowari
     
  11. Jeff Brown

    Jeff Brown Forum Member

    Messages:
    377
    What I was asking was (more or less) whether there's a way for a lamp to detect whether a wire is currently active or inactive.

    > you are saying you don't want to programme this synth?

    No, I definitely want to program this synth! Just not the recursive function that would determine whether a module is currently being used.

    > what you mean by Module M?

    I was using M to mean any module.

    Here's an example: I've got 3 filters, and each one can be listening to the other two. Suppose the Final Mix is listening to Flt 1, which is listening to Flt 2, which is listening to Flt 3. Then all of the three filters are currently active -- if you mouse over one of the wires inside one of them, you'll see values. But now suppose I make Flt 1 stop listening to Flt 2. Then filters 2 and 3 stop being active; if you mouse over any wires inside any of them, you'll just get the message "inactive". I would like to put a lamp at the top of each of filter (and each oscillator, and each delay ...) to indicate whether it is currently active or not, but I can't figure out how to do it.
     
  12. sowari

    sowari Moderator Moderator

    Messages:
    27,759
    what about this:

    btw, the lamp is not set to Always Active.

    sowari
     

    Attached Files:

  13. herw

    herw NI Product Owner

    Messages:
    6,421
    that's redundant because the switch indicates whether the saw is actice or non active. The problem is to get this active/non active information without any other activity which means from inside a (core) (saw-) macro.
     
  14. Jeff Brown

    Jeff Brown Forum Member

    Messages:
    377
    Sorry my response took so long. I was grading a midterm yesterday.

    Sowari, your unit is not working for me. Herw has explained what I think is the inherent problem: anything which I plug into the circuit to determine whether the circuit is active will render the circuit active.

    For instance, consider your picture, in which 2 objects are listening to the switch: the Mixer unit, and what I'll call the Detection unit. If only the Mixer were listening, then when the Mixer stopped listening, the computations behind the switch would stop being computed. It's that inactivity that I'm trying to detect. But when I have the Detector listen to the switch, the computations behind the switch become active again.

    This isn't a big concern for me right now; I just want to (add distortion and reverb and) get that MIDI Map action going so I can make some presets. However if anyone is intrigued by this question and comes up with a solution, core or otherwise (I don't know core) I'll happily accept all contributions!
     
  15. sowari

    sowari Moderator Moderator

    Messages:
    27,759
    ok, now i am clearer.

    sowari
     
  16. herw

    herw NI Product Owner

    Messages:
    6,421
    I think best is to "think different".
    Starting point is: how is the inactivity of your macro "activated"?
    If you want to use it like a PlugIn you are using such modules like switches, Send-Receive.
    If you steer these connections with IC-send you can add a lamp to the IC-send (only monphone control signal!).
    So your system will be a modular system.

    ciao herw
     
  17. Jeff Brown

    Jeff Brown Forum Member

    Messages:
    377
    Yeah, you're right; I could have the Final Mix tell everyone who it's listening to, "You're being listened to!" and have that message propogate backwards. That doesn't actually seem that hard, now that you make me think about it.
     
  18. Jeff Brown

    Jeff Brown Forum Member

    Messages:
    377
    Proof of concept -- snapshottable MIDI mapping

    It works! I can't believe it!

    I've incorporated knobs with snapshottable midi map assignments (I'll call them SMMs for short) into the synth. It's a lot of copying and pasting; I've finished sticking them all through the left-hand macro, but in the right-hand macro they've only made it into the oscillators section so far.

    Here's how they work: Most of the time, the knobs operate like standard mouse-controlled knobs. Occasionally you'll find a knob, though, that you want to assign to one of the faders on your keyboard, for a particular snapshot only. In order to do that, you have to go into the structure window and find the macro called "normally hidden" associated with the knob. Unhide it, and a big 3D-bordered macro will appear in some random (typically awkward) place on the panel. It's got a big button that says "Slave", which when pressed turns the knob into a slave -- controlled by another knob. In order to choose which knob, use the menu under the Slave button. And it gets even better -- if you want the master knob to move the slave only across a portion of the slave's range, you can set that up by moving the "min control" and "max control" knobs.

    Of course all this talk assumes there is a bank of master knobs. In the ensemble I've attached, you'll see in the right upper corner a new instrument called MIDI Controls, which is just an image of my keyboard (it has 8 buttons, 8 faders and 8 knobs). I've MIDI Mapped those controls to the keyboard.

    To show how it works, I've included 3 instrument-level snapshots in the Synth instrument. The first makes no use of the SMMs. The second uses the first 2 faders to control some stuff. The third snapshot more normal-sounding and only uses the second fader to control octave.

    I'm so excited it's driving me bonkers. I asked Ableton to make their software do this, a year and a half ago. They brushed me off. But man, when I go out and make millions of dollars making music that uses the idea, they're gonna feel soooo stupid. I can't wait! BWAAAAH!
     

    Attached Files:

  19. sowari

    sowari Moderator Moderator

    Messages:
    27,759
    remember me when you get rich ;)

    sowari
     
  20. sowari

    sowari Moderator Moderator

    Messages:
    27,759
    ok, in this version i have placed a new target knob which can move by its self AND be moved by an external knob (or more).

    i have added 2 new faders in your MIDI Controls Instrument.

    there just use internal connection to move 2 knobs (Knobs 1 and 2 ) to the left hand side of yours synth. the idea would be that these knobs are invisible.

    sowari
     

    Attached Files:

Thread Status:
Not open for further replies.