tenacity-legacy icon indicating copy to clipboard operation
tenacity-legacy copied to clipboard

Snap to the beat: Add a beat & measure ruler with snapping (Make Tenacity more relevant than upstream or other forks).

Open Poikilos opened this issue 3 years ago • 5 comments

  • [x] I have read the specified guidelines for issues

Is your feature request related to a problem? Please describe. No

Describe the solution you'd like Add an option to change the (useless for music) time-based ruler to a BPM-based one (probably should be the default or a very prominent button such as "4/4" and BPM and time signature should be prominently displayed when turned on). This of course would be more useful with the following features, but they are less important in comparison:

  • Snap clips or cuts within the track or markers to any beat, probably showing a yellow line or something to show which is snapped to which while dragging (either as you drag should snap so there doesn't need to be multiple snapping modes--consider having multiple snapping booleans and having them all on at once)
  • Allow a marker to change the BPM (beats per minute) and time signature (beats per measure) anywhere.

Describe alternatives you've considered Generate a click track and then detect the BPM as per this tutorial: Tempo & Beat Grid in Audacity "You'll see all of these markers going...uh...more or less to the middle of this beat...um...of each of these." (emphasis added)

Reasons this method is bad:

  • It is obviously inaccurate (The step of adding markers reduces the accuracy of the timing produced by the click track).
  • It is convoluted--there is no "real" way to add measures and beats.
  • The markers are not managed by some central system: They are all individual markers and just float there--changing the BPM for a portion of them or all of them accurately is not feasible. There is no knowledge except the user's own memory or note-taking of what BPM or time signature that the markers represent.

Other reasons this tutorial is bad:

  • He deletes the sound before the first beat of the new drum track manually through guesswork (probably the only way since using the beat finder would place redundant markers and be "more or less to the middle of this beat" rather than the beginning which would be more useful.
  • Changing the tempo is done by guesswork rather than detecting the beat of the real drum track.
  • It never shows how to actually use the markers for snapping.

Additional context Whenever Audacity is put on a list next to any other "DAW," the lack of timing management is glaring and makes it unable to compete.

Poikilos avatar Jul 08 '21 12:07 Poikilos

Personally, I see Audacity primarily as an audio editor rather than a DAW, so I'm hoping this would be off by default. I don't see that Tenacity needs to compete with DAWs. Not that I'm opposed to Tenacity becoming a DAW, and this idea could turn out to be game-changing.

One issue I see is that introducing a tempo/time signature paradigm could make future changes to that paradigm problematic if some use case is overlooked. I'm hoping any implementation would be compatible with some advanced use cases which could give Tenacity a long-term advantage over DAWs which are locked into a limited tempo/time signature paradigm.

Here are a few examples of what I mean:

  • Tempo slopes
  • Formula-based snap points, for complex forms of swing
  • From tap tempo, which is complex enough to warrant its own bullet point list
  • Simultaneous tempo/time signature maps
  • Anchoring, so that the user has the option to have snapped audio (and MIDI when that's supported properly) move with the tempo/time signature maps if they are moved
  • Integration with time-stretching/shrinking effects
  • Option to snap not to the exact time indicated by the map, but to its nearest integer sample at the project sample rate

to7m avatar Jul 08 '21 18:07 to7m

Editing to the beat is a common use case.

RoaddogLabs avatar Jul 08 '21 21:07 RoaddogLabs

Agreeing with a lot of this thread. I have some thoughts on how to extrapolate/generalize.

The main limitation of Tenacity's currently timing tools could mostly be described as "lack of structure". Unstructured is good until you have to edit with it - then you have to compute your intentions out by hand. Tempo is specifically where the intended structure is "divide time segments by a certain ratio" - it's the most common structuring mechanism, but hardly the only possible one.

I currently use a method for working on Stepmania simfiles(which are primarily concerned with generating a tight sync with an existing song) that starts with tap-tempo using a web site, and then adds a click track for fine tuning the offset and BPM. It works fine with electronic music, but gives little help if the recorded BPM has natural variation(basically most pop songs before click track recording). This can be dealt with by changing the simfile's BPM every measure, or by stretching the audio every measure to hit a steady BPM - both are pretty intensive editing tasks, though I think there are some DAWs that assist with the latter.

So I think I would like some kind of beat-map/snap-map as a track type that could be defined in both a procedurally generated form(bpm, time sig, swing) and with interactive editing(generate from markers? tap tempo and then fit to peaks?) - and then be used as an input to something like timestretching, like "stretch the beats of map A into those of map B". The beatmap is also valuable exportable data(e.g. to automate sync points).

This track type could be defined as a hierarchical structure. The top level would be measure, the second would be beats, the third and beyond would subdivide beats; if you edit the measure timing, the beats underneath re-scale to fit the new proportion automatically. And you could adjust and copy-paste the beat patterns of specific measures to create repeating rhythms. If the hierarchy were also "polyphonic", you could additionally define multiple rhythms. This would effectively make the software a full-blown step sequencer, just not MIDI-based.

triplefox avatar Jul 13 '21 19:07 triplefox

I like the hierarchical structure idea. It doesn't force any concepts of metre on the user, but allows them to add sub-layers (and presumably super-layers) as they see fit. Better if it allows multiple sub-layers for a given layer, for poly-rhythmic but not poly-tempic stuff.

Maybe this could be stored as an oscillator track in audio format, but with x channels where x is the number of layers, a low sample rate like 1 kHz, and unsigned integers instead of floats. The speaker cone position would constantly be increasing, but when it decreases (wraps round to 0), that means it's a new beat (or bar, or subdivision).

to7m avatar Jul 13 '21 20:07 to7m

Was going to propose the same feature. We already have the tempo grid in editors like Pro Tools, Logic, Cubase, etc. It's extremely common and also extremely useful.

drequivalent avatar Sep 15 '21 01:09 drequivalent