-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feedback on Lissajous #7
Comments
Hi http://qiita.com/Shihpin/items/e8355b167f9cf20117bd This article is written in Japanese a while ago. Shihpin ----- Original Message -----
|
Hi Kyle, // apply different beat schemes to all tracks in the group One can call different beat schemes on the tracks in the group. Best |
That's very cool @enedrio! So, just to be clear, you would pass multiple arrays into t1 = new track(), t2 = new track()
g = new group(t1,t2)
g.beats([4,3,1,2,2,1,3], [4])
// t1 now has the beat pattern [4,3,1,2,2,1,3]
// t2 now has the beat pattern [4] Is that right? I'm confused by your comment about synchronous playback of individual tracks. Can you elaborate on that? |
Yes it would be used as you showed. t1.beat(2, 3, 4, 7)
t2.beat(3, 5, 7, 1)
// then shift till it fits
t2.shift(1) I can now write: mygroup = new group()
mygroup.add(t1, t2)
mygroup.beats( [2,3,4,7], [3,5,7,1] )
// and the two tracks will start with their patterns at the same time If mygroup would contain 3 tracks then the patterns will be wrapped around, like so: mygroupWith3Tracks.beats( [1,2,3], [4,5,6] )
// t1 --> [ 1, 2, 3 ]
// t2 --> [ 4, 5, 6 ]
// t3 --> [ 1, 2, 3 ] I hope that was somewhat more clear, than my previous post. Best |
That's great, I totally get it. It's worth noting that commas and semicolons allow you to string together several commands to be run at the same time. What you wrote above with t1.beat(2, 3, 4, 7), t2.beat(3, 5, 7, 1) So that you hit enter once and both beats start up in sync. The syntax of |
Hi, // in group()
self.sync = function () {
var args = Array.prototype.slice.call(arguments);
if(args.length === 0) {
self.tracks.forEach( function (t) {
t._beatPattern.currentStep = 0;
t._beatPattern.untilNextBeat = 0;
});
} else {
args.forEach( function (t) {
t._beatPattern.currentStep = 0;
t._beatPattern.untilNextBeat = 0;
});
}
return self;
} with such a function one could group tracks together and suddenly bring them in sync playing some crazy beat or whatnot. like so: // t1 plays something, t2 playing something else
var crazyBeatGroup = new group(t1, t2).sync().beats([2, 3, 4], [4,5,6]) Sounds fun to me. The way it's written now it could sync any given tracks even if they're not in the group. Greets EDIT: I just realized, that the code: t._beatPattern.currentStep = 0;
t._beatPattern.untilNextBeat = 0; is breaking your model of public and private fields. |
Wow. You are blowing my mind right now. I love it! Let's give this decision its own space for discussion: #14 |
Hey Kyle,
t1 = new track();
t2 = new track();
t1.beat(1,2,3);
t2.beat(2,3,4);
// t2 keeps running and receives the reset call when t1's scheduler hits zero
t1.sync(t2);
I know 3) is available by calling track._samples, but that's not an api function :) Greets |
Hey @enedrio, I like your idea to sync to the downbeat of a track. It should be possible! Deleting samples from a track is a great idea, I will add that. A far as listing the samples assigned to a track... I could add a function to log this, but the issue is that it will log |
If you've used lissajous and you have any kind of feedback at all, feel free to post it here.
The text was updated successfully, but these errors were encountered: