Ableton Link Node Features - Feedback Need
  • Below is the beginning of thinking about how to implement Ableton Link in Audulus. Do not consider any of these features as guaranteed - this is just my reaction to reading the documentation available on Link and extrapolating what a Link node *might* look like in Audulus.

    The node itself might be very complex, and it is possible we could build a simpler version of it either first or concurrently, but this would expose all of the features of Link to Audulus users to do with them what they wish - really wild things that you wouldn't be able to do with other apps that are simply just trying to stay in time.

    Your feedback here would be appreciated! If I've made any mistakes in my understanding of how Link works, pointing that out would also be very helpful. I read over the documentation a few times and I'm pretty sure I have a handle on how it works, but I might be wrong on some things.

    THANK YOU!



    Link features overview: http://ableton.github.io/linkkit/

    Ableton's guidelines on how Link must be integrated into the UI: http://ableton.github.io/linkkit/downloads/Ableton Link UI Guidelines.pdf

    UI Link Enabled/Disabled Implementation:

    Seems like the best place to put the Link slider would be under the Wrench icon/settings panel. By the way, is that gone now?

    The Link connected/not connected icon could appear at the top of a patch when Link is turned on in the settings.

    It could also appear at the bottom or top of the module/node browser.

    Link feature integration

    Overview of Link features: http://ableton.github.io/link/

    Audulus has an opportunity to do some interesting things with Link that I haven't seen in other apps. Here are ideas for how to implement them:

    Ableton Link Node:
    Inputs
    Tempo: 0-1 knob selects tempo between minimum and maximum values.

    Min: minimum tempo - if no value present, default to Live minimum of 20bpm

    Max: maximum tempo - if no value present, default to Live maximum value of 999bpm

    Beat Alignment: x==0 = off; x>0 = on

    Phase Alignment: x==0 = off; x>0 = on

    Phase Alignment Quantum: number of beats in a quantum. If Phase Alignment is not turned on, then ignore this value. If Phase Alignment is turned on, then minimum value will probably need to default to 1.

    PPQ: Pulse per quarter note. Attach a value to the input, get that many pulses per quarter note out. Attaching a number like 2/3 would yield quarter note triplets at the clock pulse output.

    Outputs
    Clock pulse: 50% duty cycle clock derived from master tempo.

    Phase Alignment Reset: 50% duty cycle clock that goes high at the beginning of each Phase Alignment quantum. Phase Alignment would be determined by the incoming beat, independent of the PPQ value.

    BPM: BPM value to display on a value node.

    Measure: Output the current measure defined by Live's timeline

    Beat: Output the current beat number defined by Live's timeline

    Time: Output current transport time defined by Live's timeline

    Description
    Link tempo changes work in a non-centralized way, meaning a computer running Ableton Live isn't the only place where you can change master tempo for all devices that are running Link. According to the overview, any device can affect a master tempo change, and other devices will automatically sync with it. It seems like this tempo change can be programmed to ramp up over time instead of snapping instantly too. This ramping effect might be something that can be accomplished with a user-built Audulus module rather than needing to be programmed into the node.

    Beat alignment ensures that the quarter note pulses arriving in Audulus are arriving in time with other players. Imagine starting two metronomes together that are both playing at 120bpm at different times. Unless the second metronome is started at precisely the same moment as one of the beats of the first metronome, they will remain at the same tempo, but won't be playing "in sync" as we would usually define that. Beat alignment ensures that the beats align with one another across devices.

    Phase alignment makes sure that phrases align with one another. Imagine you have a 4 bar loop playing in Audulus and an 8 bar loop playing in Ableton. A quantum value of 4 would ensure that the loop in Audulus is reset every 4 beats, making it repeat twice over the 8 bar loop. A quantum value of 8 would make the loop in Audulus play once at the beginning of the 8 bar loop, then nothing for 4 beats, then repeat. That's the basic concept, but it could work differently in Audulus since presumably the master output clock of the node would not stop for this period. Instead, we'd use the Phase Alignment Reset output to reset sequencers every quantum period.

    A vast array of complex tools could be created based on this node with other nodes already available in Audulus. Combining conditionals like "trigger only when BPM exceeds 120" or "advance sequencer on beat 1 in measure 1, beat 2 in measure 2, beat 3 in measure 3, etc." can be constructed and used not just with Audulus, but with other synth apps once we enable MIDI out. The possibilities are really awesome, and anyone with an interest in getting the most out of Link would see Audulus as a must-have app.

    Possible challenge would be conflicts between the knob state and another person changing the tempo. How does the connected knob (or static value) respond?

    Another challenge is that the above node described is admittedly very feature heavy and complex, especially for a beginner. An alternate "simple" node (similar to the mic/ADC node relationship) could be created that outputs just the master clock pulse.

    Min-Spec Node
    This is a stripped down version of what is outlined above. What would essentially be the most lightweight version of Link in Audulus that would make it useful.

    Inputs
    BPM: Tempo input as a number. Decimals after hundredths place are truncated. 20-999 is maximum range.

    NO INPUT Beat Alignment: (Always on)

    NO INPUT Phase Alignment: (Always on)

    Phase Alignment Quantum: Truncate incoming value to a whole number. Minimum value 1.

    Outputs
    Clock pulse: 50% duty cycle clock derived from master tempo.

    Phase Alignment Reset: 50% duty cycle clock that goes high at the beginning of each Phase Alignment quantum.

    BPM: BPM value to display on a value node (necessarily will change if another app or person changes the BPM value from the one present at the BPM input).
  • Sounds good, look forward to Link support in Audulus.
  • I think you would do better to avoid using knobs. I think these fundamental nodes are better with straight I/O. I think it allows more design flexibility. Hopefully we'll have a choice of knobs or sliders or maybe something we haven't even thought of yet. Uncoupling the UI from the functional nodes leads to cleaner design IMHO.
  • howdy all - what's the latest on this topic please?
  • @DS_in_the_ATX - there's nothing new to share per se, but do you have any feedback on the proposed features, or additional features you'd like to see?
  • Hi I have an sdk which will enable you to record out of Audulus directly to the cloud and export a multitrack mixdown into protools or audition. Would love to talk more about a partnership. Please email me david@draglabs.com
  • Hey @Roofboard - we’re integrating sampling into Audulus 4 and will probably just use the Files system to move audio around. The sample node will also just embed the audio into the patch file (no separate files needed). So you’ll be able to export to desktop or into Files app or Audioshare. If you think what you have to offer would be better or compliment that, feel free to write to us about it at support@audulus.com - thanks :)
  • I no longer see the feature request announcement thread so I though I would post here since this related to Ableton and integration with other software. I would love to see Audulus support multiple sample rates. I realize that on slower hardware anything over 48k might be an issue but it would be great to be able to run at the highest sample rate your hardware supports. I personally think that anything over 96k is a waste and you can make a good case that 48k should be more than adequate, but higher rates would produces less aliasing.
  • @stschoen - that's definitely in the future for Audulus. There's something about the way the underlying code is written that makes it hard/impossible to run at higher sample rates, but Taylor's got an eye on that. We're also thinking of ways of doing internal upsampling inside patches, so you could upsample to 192kHz inside an oscillator and downsample as it's leaving so you could create all sorts of weirdo digital oscillators without *any* aliasing (and without having to run the entire patch at 192kHz).
  • That would be really cool! I've been reading about the new Novation Peak unit. Digital wavetable based oscillators running at 2.4 MHz feeding an analog filter and envelope section. Eight voices and digital stability with no aliasing and no filter artifacts. I'd love to hear one. The filters would also benefit a lot from higher sample rates. Both the ladder and SVF digital models really benefit from oversampling. In particular the SVF tends to become unstable as you approach the Nyquist frequency.
  • I sent that email, looking forward to connecting.