Hi Scott, thanks for this nice feature! It looks very useful to me (and wolke). We tested it today and it works fine for us. I applied the patch some minutes ago, it should be in svn now (rev 210). Thanks, Sebastian
Scott Bahling schrieb: > Hi, > > Over the last few days I have been cleaning up the code for an added > feature to Hydrogen that I have been using for quite awhile now (over 2 > years actually). I call the feature Lead and Lag. It is a per note > property like velocity or pan that allows you to set that the note leads > or lags the actual beat by a small amount The range is +/- 5 ticks which > equals around +/- 10 ms at a tempo of 120bpm. The control widget itself > works just like pan control in the pattern editor, and is found in the > note properties selector below Velocity and Pan. > > I have found this to be a really nice feature. You can change the feel > of a beat quite drastically by adjusting key notes by a small amount. > For a basic rock beat I typically set the 2 and 4 ahead or behind the > beat depending on the feel that I am looking for. The real fun starts > when you use the feature in creative ways. You can make some pretty > wacky beats by adjusting the timing of some of the beats with extreme > values. I also used it when simulating a drum roll. I programmed a > series of 32 or 64th notes and created a sin wave pattern in the > Lead /Lag control. The gap between the notes slowly fluctuates back and > forth and adds a bit of that swirling sound. > > A few notes about the implementation: > > In order to play notes ahead of the beat, I needed to implement a > "lookahead" which primes the playback note queue with notes in the > future. This does _not_ cause a delay in playback. The song or pattern > starts on time and is in sync with the transport. It is just that the > note queue is filled aggressively once playing starts. This works quite > well, and the only limitation is that the first note can't be played in > the future (ie before the 0 frame). > > Since the note queue order is based on the absolute note position and > does not take into account any offsets from the lead and lag or even the > humanize function, I had to change the standard queue to a priority > queue. The queue is set up to pop the notes in order of playback based > on the absolute note position plus any offset. This plus the lookahead > have the added effect of making the humanize time function work both > ways. Before it only could lag notes because by the time notes were > pulled from the queue and sent to the sampler for playback, it was too > late to playing anything ahead of the beat. > > The patch also adjusts the getGaussian calculation. It was set to prefer > to add offsets to note timing. I am not sure why - maybe because > humanize time was not working as designed before? I set it up to vary > both ahead and behind the beat equally. > > Another small feature of the patch is that I setup the middle mouse > click (or ctrl-right mouse click) to center the Pan or Lead/Lag > controls. I have another patch that I will send later that adds mouse > wheel support for adjusting these note controls. > > I guess that's it. I have tested this quite a bit over the months, but I > was using an old svn snapshot. I have forward ported it to fit the > current code base and have done basic testing. Would be great if it can > make it into the 0.9.4 release. > > -Scott > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > ------------------------------------------------------------------------ > > _______________________________________________ > Hydrogen-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/hydrogen-devel ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ Hydrogen-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/hydrogen-devel
