It don't mean a thing if it ain't got that swing...

Discuss mods, hacks, tweaks, etc.

Moderators: altitude, adafruit_support_bill, adafruit, phono, hamburgers

Please be positive and constructive with your questions and comments.
evilxsystems
 
Posts: 406
Joined: Thu Jul 07, 2005 10:23 pm

It don't mean a thing if it ain't got that swing...

Post by evilxsystems »

So I've been looking at the source code trying to figure out how to implement swing time on the x0x. Does anyone have any brillant ideas before I get started? Right now the processing of events in the main while loop is basically locked into sixteenth notes...although I'm pretty certain the clock resolution would support good timing at higher note resolutions. Seeing as I normally write video games and not sequencers, what would the best way thing be to implement swing time? Increasing the frequency of the "event handling section" or adding some kind of adjustable delay before offbeat notes are sounded? Anyway...just looking for ideas before I start monkeying around :)

-jason

moogah
 
Posts: 186
Joined: Sun Jun 19, 2005 8:51 pm

Post by moogah »

it will be easier to add a delay to the swung notes, but more useful if you re-work the timing section. Either way, it won't be a walk in the park to get a good sounding swing. I've got the same thing planned, but havn't gotten the c0ntr0l software working well yet.

evilxsystems
 
Posts: 406
Joined: Thu Jul 07, 2005 10:23 pm

Post by evilxsystems »

well I've got a version of swing time running on the x0x...I'll post an mp3 demo later tonight...it's far from finished...but it's pretty funky :)

evilxsystems
 
Posts: 406
Joined: Thu Jul 07, 2005 10:23 pm

Post by evilxsystems »

ok here is a demo pattern first unswung...then with some swing...I'm not sure how well it's going to sync up to midi...I'll keep people posted....currently I'm controlling the swing amount globally with the previous and next buttons in pattern play mode, but it would be nice to save the swing information in the pattern....

http://www.evilx.com/swung.mp3

evilxsystems
 
Posts: 406
Joined: Thu Jul 07, 2005 10:23 pm

Post by evilxsystems »

well, it works as a midi master, but it imposes swing time on whatever it is slaving...which may or may not be a good thing :roll:

mux
 
Posts: 47
Joined: Sat May 28, 2005 11:28 pm

Post by mux »

wow, that sounds great!!

keep it up, it definitely sounds like you're on the right track. I'm dying for swing too.

Actually, I just implemented swing on my Nord Micro Modular in an interesting fashion... I used to use a pattern on my MPC sending a C4 note at the start of every bar, then used a 'note detect' module in the Nord, sending the gate out of the note detect module into the 'reset' input of every sequencer module. Now I'm sending a C4 every 16th note, and a C#4 at the start of every bar, and two note detect modules... the C4 steps the sequencer forward, the C#4 resets the sequencer. The benefit is... if I swing the sequence, the Nord sequencers swing right along with it. :)

User avatar
brandon daniel
 
Posts: 160
Joined: Sat Mar 12, 2005 12:46 am

Post by brandon daniel »

Sounds great!

Actually, if it were to send swung tempo, that might be kind of neat, I'd love to swing my 808! ;0)

gzifcak
 
Posts: 150
Joined: Wed Oct 26, 2005 3:46 pm

Post by gzifcak »

how are you implementing this? are you modulating the clock tempo? typically, swing is implemented by latching every other 16th note onto a late clock tick. midi = 24 ppq, that's 6 clock ticks per 16th note, giving 5 possible (positive) swing values. it should also be possible to swing those notes early for another 5 (negative) ticks. now, i know nothing about coding, so i can't be the one to do this, but that's the conceptual basis of the swing in the 707.

that sounds great. it's true, swung din clock out would be a neat function for swinging 808s and 606s. oh and 303s too.

evilxsystems
 
Posts: 406
Joined: Thu Jul 07, 2005 10:23 pm

Post by evilxsystems »

I implemented it by doing a controllable fixed-time delay (from 0-256 milliseconds) on every other 16th note. This was due to the fact that the firmware is written to only process note events twice per 16th note, basically a note-off event handler and a note-on event handler. The consequence of doing it this way is that the tempo drops by 8 x whatever the swing delay is. This is why it imposes swing on whatever it is slaving because it delays sending midi clock signals too...it's fine for working with synths, but trying to sync up a sampled loop to it would be hellish, also it's not coupled to the tempo so if you changed the tempo you'd get a different swing amount. Anyway it was just a quick fix, because I wanted to hear my x0x swung...and I didn't feel like completely rewriting the timing & note handling code to deal with the finer note resolutions required for implementing swing time, but that's the obvious thing to do. I'll see if I can come up with a clever way to force it into 707 style swing by offsetting which clock pulse it processes notes on...

-jason

evilxsystems
 
Posts: 406
Joined: Thu Jul 07, 2005 10:23 pm

Post by evilxsystems »

ok I latched the swing onto a variable clock pulse, so now it keeps time properly, but the swing options have dropped to 1-5 pulses...like the 707...sounds pretty good though....the only problem right now is that it sometimes screws up the midi sync if you adjust the swing amount while it's playing, but I just need to adjust it to buffer the input until the loop starts again. I'm in the process of getting it to swing in midi sync mode...which is what I really need...but if anyone is dying for this feature now let me know and I'll post the .hex


-jason

mux
 
Posts: 47
Joined: Sat May 28, 2005 11:28 pm

Post by mux »

I'm interested in hearing the output!!

I was kinda hoping there could be 16 levels of swing... that'd make it really easy to implement the interface, maybe just like hold down a button and have one of the 16 steps show which of the 16 levels of swing is in use... just like the TR-707.

I'm greatly looking forward to this. :)

evilxsystems
 
Posts: 406
Joined: Thu Jul 07, 2005 10:23 pm

Post by evilxsystems »

well, without completely rewriting all the timing/sync code I think this is the best I can do. It definitely does standard swing (triplet feel) nicely, I'll post some mp3s tonight.

-jason

evilxsystems
 
Posts: 406
Joined: Thu Jul 07, 2005 10:23 pm

Post by evilxsystems »

ok...here's a demo of the new swing

http://www.evilx.com/swung2.mp3

first unswung then increasing swing values 1 ->5 , then tweeking the tempo knob with the swing set at 2.

-jason

evilxsystems
 
Posts: 406
Joined: Thu Jul 07, 2005 10:23 pm

Post by evilxsystems »

ok I got MIDI swing working now...but the only problem is there are only 3 swing values now...including off...this is due to how MIDI sync is being handled...I can also swing DIN sync the same way...if people are interested I can make a user mode that implements the forced swing clock for slaving other devices...or I can post the .hex as it is....but anyway here is a demo of the midi sync swing, I'm gonna try making more values for this but it's already good enough for my purposes...

http://www.evilx.com/swung3.mp3

gzifcak
 
Posts: 150
Joined: Wed Oct 26, 2005 3:46 pm

Post by gzifcak »

c'mon drew!
the 707 only has 5 swing values (it's been too long for you!), based on the 24 ppq midi clock resolution. to get 16 levels of swing you would need at least 64 ppq.

greg

I was kinda hoping there could be 16 levels of swing... that'd make it really easy to implement the interface, maybe just like hold down a button and have one of the 16 steps show which of the 16 levels of swing is in use... just like the TR-707.

Locked
Please be positive and constructive with your questions and comments.

Return to “x0xm0dz”