tenacityteam / tenacity-legacy

THIS REPO IS NOT MAINTAINED ANYMORE. Please see https://codeberg.org/tenacityteam/tenacity for Tenacity, which is maintained.
https://tenacityaudio.org
Other
6.77k stars 256 forks source link

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

Open Poikilos opened 3 years ago

Poikilos commented 3 years ago

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:

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:

Other reasons this tutorial is bad:

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.

to7m commented 3 years ago

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:

RoaddogLabs commented 3 years ago

Editing to the beat is a common use case.

triplefox commented 3 years ago

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.

to7m commented 3 years ago

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).

drequivalent commented 3 years ago

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.