From: Florian J. <flo...@gm...> - 2013-01-22 22:08:56
|
Hi yay! My proof-of-concept is ready. in branches/poslen_changes, muse can exactly align wave events (not parts atm.) i've tried this out with a sine wave, which i duplicated into two tracks. in one of the tracks, i moved the sine wave about half a phase, and due to the interference it was almost quiet :) (-> it works.) i'm not aware of any breakage i might have introduced. the code is a bit crappy and dirty at the moment but that's easy to clean. please note that while using this branch should be perfectly fine, saving and loading files will currently drop the subtick information! Tim, please have a look at my changes. i basically did the following: - create a struct XTick { unsigned tick; float subtick; } with 0<=subtick<1 (that's why using float is okay here) - adapt Pos and PosLen so they store their position in XTicks, not in unsigned integers any more. Add compatibility functions to not confuse old code. - change MidiEditor::raster* to use XTicks, adapt all code to make it still work. - change WaveEvent, WavePart to be aligned in (x)TICKS, not FRAMES. - change Wave{Edit,Canvas} to use the XTicks properly. what needs to be done: - ask the user whether he wants the whole song in TICKS or FRAMES mode - tim's time scale changes - proper saving/reading of xticks by concept, theoretical also wave *parts* (not events), and also midi events/parts can be subtick-aligned. IMHO we shall change the code to support this sooner or later. the current state might break when changing tempo, because: - the duration in audio frames of a wave event will now change (because it's ticks, not frames. and this is intended, because the wave-restretch will handle this one day) - but wave-restretch doesn't exist yet, so the audio event data may be too short or too long for the actual demanded length this can result in clipped audio (in case of a higher tempo) or playing back noise (lower tempo) greetings flo |