rehearsal tempo
Posted: Mon Jan 31, 2011 5:30 pm
What I specifically need is a way to play a track at slower speeds without changing the pitch so I can play along while I am learning. This might be best (if doable) as a Nyquist plug-in but is beyond my Nyquist programming skills. Some discussion can be found on Audacity's Feature Requests wiki:
http://wiki.audacityteam.org/wiki/Feature_Requests (search for Change Speed/Tempo/Pitch)
At the most simple I envision a dialog which presents the user with about 10 predefined choices: 50%, 55%, 60%...90%, 95%. When the user selects a speed percentage a new track is created based upon the original--probably best in a new project window so the original track project window is not affected.
The code and math seem very simple for the transformation. Imagine we start out with a track with 10 samples ('s' is a generic sample, '_' is an empty sample, 'I' is an interpolated sample--the average of the two samples next to it):
ssssssssss
(conceptually--the actual code would be smarter) if we wanted 50% we would make a new sample array which is twice as long putting an empty sample every other position:
s_s_s_s_s_s_s_s_s_s_
then go back and interpolate each empty sample:
sIsIsIsIsIsIsIsIsIsI
For each 5% change we would change the spacing:
55%:
ssIssIssIssIssI
60%:
sssIsssIsssIs
75%:
sssssIsssssI
I cannot envision a need for slower than 50% (and probably not even less than 75%) and I also don't see a need for finer granularity. Slower speeds would mean that there would be more interpolated samples than "real" samples. Finer granularity would require one or more "tricky" algorithms to end up with non-regular patterns:
sIssIsIssIsIssI
sIssIsssIsIssIsssI
ssIsssIssIsssIssIsssI
sIssIsssIsIssIsssI
etc.--doable but a lot more work for limited gain in my personal usage!
http://wiki.audacityteam.org/wiki/Feature_Requests (search for Change Speed/Tempo/Pitch)
At the most simple I envision a dialog which presents the user with about 10 predefined choices: 50%, 55%, 60%...90%, 95%. When the user selects a speed percentage a new track is created based upon the original--probably best in a new project window so the original track project window is not affected.
The code and math seem very simple for the transformation. Imagine we start out with a track with 10 samples ('s' is a generic sample, '_' is an empty sample, 'I' is an interpolated sample--the average of the two samples next to it):
ssssssssss
(conceptually--the actual code would be smarter) if we wanted 50% we would make a new sample array which is twice as long putting an empty sample every other position:
s_s_s_s_s_s_s_s_s_s_
then go back and interpolate each empty sample:
sIsIsIsIsIsIsIsIsIsI
For each 5% change we would change the spacing:
55%:
ssIssIssIssIssI
60%:
sssIsssIsssIs
75%:
sssssIsssssI
I cannot envision a need for slower than 50% (and probably not even less than 75%) and I also don't see a need for finer granularity. Slower speeds would mean that there would be more interpolated samples than "real" samples. Finer granularity would require one or more "tricky" algorithms to end up with non-regular patterns:
sIssIsIssIsIssI
sIssIsssIsIssIsssI
ssIsssIssIsssIssIsssI
sIssIsssIsIssIsssI
etc.--doable but a lot more work for limited gain in my personal usage!