[nama] Automation

Hello,

I know I'm throwing another bone in a very busy stew here, but I figured
it was cool to start talking about it. One feature which is ubiquitous
in most DAW but yet to be present in nama (believe it or not, the list
of major DAW features lacking in nama is getting pretty small) is
parameter automation. Now the automation itself would not be too hhard
to achieve, since nama already uses -klg to control fades on tracks. The
main question is, how do we expose this to the end-user in a coherent,
intuitive way? 
Here iss a mess of thoughts:

As I see it, there are two main ways in which we can expose this
feature:
- The easy wway (for nama):
  Once the user decides to automate a parameter, it becomes his
  responsibility to split the timeline with markers and control which
  areas hhave which values and how they transition. Nama would issue an
  error when trying to modify the parameter directly and basically just
  assist in creating a valid -klg. The advantages would be relative
  simplicity of implementation (?) and that, by forcing the user to do
  it all by hand, we leave it up to him to keep track of what he's
  doing. The disadvantage, from the user's standpoint, is that simple
  automation of a 10 second area of the timeline would mean keeping
  track of three separate pieces, involving several extra steps to
  modify a simple parameter.
- The more involved way:
  We allow Mr. User to automate only certain pieces of the timeline
  (like those ten seconds I was talking about). From the user's
  standpoint, this is mmore intuitive and transparent, but also offers
  more possibilities for confusion (eespecially in a text environment
  where we don't have pretty automation curves) placing the burden on
  nama to try and minimise errors. Nama would need to:
  - Proxy modify_effect so that it would aaffect "non-automated" parts
    of the track.
  - Remind user that tthe parameter is automated.
  - Warn user if he is modifying the parameter while the playhead is on
    an automated part.
  - Offer functionalities to list, modify, and manage automated areas.

Thoughts about possible syntax:
- The syntax for fades is so powerful that I'd like to see it mirrored
  on a possible automate command. I see something like this:
  > auto in <s_effect_id> <i_param_id> [<s_start_mark>|<f_seconds>] \
            [<s_end_mark>|<f_seconds>] <f_target_value>
        # Ramp up/down from track value to target value over specified
        # period. We can have several auto in in a row, ramping frim
        # automated value to automated value.
  > auto out [<s_start_mark>|<f_seconds>] [<s_end_mark>|<f_seconds>]
        # Ramp up/down to track value over specified time. May not be
        # followed by another auto outt, obviously.
- Do we use relative or absolute values for automation, or do we allow
  both? Each have some merits and drawbacks.
- What about automated mutes and effect bypass? The former can be done
  just as well with fades (I have many times), and the latter could be
  potentially useful in some (rare) circumstances.
- What about curves? We might need to select between linear and
  exponential.

Finally, here is a little use-case I cooked up in my head to hopefully
help concretise some aspects of the feature and what it's used for.

Imagine a typical pop-rock ballad. We have the following tracks:
accoustic guitar, lead electric guitar, rhythm electric guitars double
tracked left and right, bass guitar, bunch of drums tracks on a buss
simply referred to as drums from now on, and some lead vocals. The
structure of the song goes something like this: 1) accoustic guitar
intro with some lead guitar, 2) verse, 3) chorus, 4) verse, 5) chorus,
6) outro (what a horrid word) with accoustic guitar, lead guitar,
hi-hat, and vocals. 

- The bass  and rhythm guitars need no automation, so we don't talk
  about them.
- Accoustic guitar:
  - In the intro, it is alone and pretty much needs its full frequency
    range and is closer (louder).
    When the rest of the instrumentation kicks in, we back it up in the
    mix (lower the volume) aand apply a bass cut (and maybe a touch of
    mid) so as to minimise frequency overlap. In this case, the intro
    would be the automated part and the bulk of the song left to general
    track settings (until the outro).
  - In the outro, we bring the accoustic guitar closer again and give it
    its bass back (but not necessarily the mid because of vocals).
- Lead guitar:
  - In the intro, our lead guitar fades in on the right but we then
    automate the pan so that it gradually drifts to the centre. At the
    end of the intro, volume needs to be increased as the accoustic
    guitar's decreases, so that they effectively trade place for the bulk
    of the song. Here too, we probably want to automate the intro and go
    back to track defaults for the bulk of the song.
  - We reverse the process for the outro, decreasing the volume at the
    outset, then panning from centre to left and fading out.
- Drums
  - We're after a stylistic effect here, so when the chorus comes
    around, we want to ramps up the compression and increase the volume.
    For that purpose, we increase the Ratio parameter on the compressor
    and the volume during the drum fill introducing the chorus and set
    them back to normal when the second verse comes around, and then
    repeat the operation for the second chorus.
  - During the outro we want our hi-hat to mmove gently back until it is
    almost inaudible, but not quite.
- Vocals
  - The vocals are nearly perfect, but there is one word that isn't
    quite on the pitch in the second verse, and we have to apply some
    pitch correction there for about three seconds. 
  - The vocals were rather forward throughout the song, but they need to
    be quieter during the accoustic wind-down.

I hope this gives a bit of an idea off what context automation might be
used in.

What are your thoughts?

Cheers,
S.M.

-- 

Other related posts: