[Audacity-devel] Sticky Tracks - Change Speed and more, now in CVS
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: Mark D <ma...@gm...> - 2008-07-03 16:27:29
|
First, the list of changes from the wiki: - Added support for Change Speed. - Slowing down a section in a wave track adds silence to linked wave tracks. - Speeding up a section adds silence to that wave track. - Labels shift accordingly. - Added support for Generate functions. Chirp, DTMF, Noise, Tone and Silence all behave as Pastes. - Fixed linking button not toggling states (Push down/pop-up). - Turned linking on by default. - Renamed menu item from "Link Wave and Label Tracks" to "Link Audio and Label Tracks". - Fixed bug related to cuts/deletes from label tracks. Selecting only a region in a label track and deleting it will delete that region in linked wave tracks. Selecting a label track in addition to a wave track is now the same as selecting only the wave track. If linking is off, the previous behaviour is used. - Fixed Cut behaviour when selecting multiple tracks. It previously copied one track, then ran the group clear, shifting the track. The rest of the copy calls would be copying the wrong selection. OnCut() no longer calls the wave track's cut functions (which call copy->clear), but instead calls the copy and clear functions directly. The way I handle Change Speed may not be done. I was talking to Martyn, and he said that the length of the new track has an extra 10 samples at the end that may or may not be used. I'm by no means an expert on audio/signals so I don't really understand the nuts and bolts of the algorithm. So is the usage pattern of those samples the same for all tracks? Like, if I drag a selection over 10 tracks, and run Change Speed on them, will they all either use the extra 10 samples, or all use no extra samples, but no mixing and matching (five use it and five don't)? Also, isn't 10 samples a matter of microseconds with regular sampling rates? The problem with getting the length of the track after it's been adjusted and using that is that I do the shifting/inserting inside Process(), and not ProcessOne(), to avoid it being run multiple times. So, I'm anticipating the final size. Any opinions on changing OnCut()? It was a lot easier to do that than try to figure out some way to intercept the problematic cases after they've been called. Again, haven't built this on Windows/OS X. James: Thanks for the suggestion on simplifying the shift cases. I like it. =) Mark |