![]() |
![]() ![]() ![]() ![]() ![]()
|
next newest topic | next oldest topic |
Author | Topic: delay change/event until next beat. |
CharlieNorton Member |
![]() ![]() ![]() Greetings I am getting over my irrational fear of the sequencer engines. I am editing the values, it is not as unfriendly as I initially suspected. In-fact I can see it opening up yet another world of possibility for me to explore. As ever it has led me to some questions. I am changing the rate of sequencer by multiplying the BPM for triplets etc. Unless I change the events on the timeline, I can't get it to keep strictly intime with my arrangement. I would like to delay the message so it happens on the next scheduled moment of my choosing. I have had a rummage yet I am obviously not searching the right terms. Many thanks Charlie IP: Logged |
SSC Administrator |
![]() ![]() ![]() Would alignWith: or alignGateWith: be what you need? IP: Logged |
CharlieNorton Member |
![]() ![]() ![]() I definitely think that this is direction I need to head in, however.. no mention of 'alignWith' contained in the KymaXrev, I did discover a few posts mentioning it, I kinda thought I had cracked it with: (!BPM / 60.0) * (!RateMadness alignWith: (1 bpm:!BPM)) It sometimes plays the first beat, yet does not carry on. This sound is on a timeline. I can see how you use this message to reset the gate on a sequencer using Cristians expression, however I don't see how to implement this for a VCS change! Many thanks C IP: Logged |
SSC Administrator |
![]() ![]() ![]() Perhaps something more along the lines of: ((!RateMadness hasChangedInLast: (!BPM bpm s)) alignWith: (1 bpm:!BPM))) sampleAndHold: (!BPM/60 * !RateMadness) for something that could only change on the beat. But maybe it should be aligned on the bar rather than on each beat? IP: Logged |
CharlieNorton Member |
![]() ![]() ![]() I use this all the time, it should go in the expressions library! ![]() IP: Logged |
cristian_vogel Member |
![]() ![]() ![]() Hre's the big list with some documentation on all the additions that came with every update. http://www.symbolicsound.com/cgi-bin/bin/view/Know/KymaXDownloads There's plenty of inspiring gems in there (like alignGateWith: ) , its worth printing out to have on hand, or save as a PDF file, so you can search it faster. IP: Logged |
CharlieNorton Member |
![]() ![]() ![]() Ok, being a bit slow here, I checked the link a couple of times, maybe I am not paying enough attention, but I can't see the list... Ta Charlie IP: Logged |
cristian_vogel Member |
![]() ![]() ![]() What's New in Kyma X.17 (6.17) - 26 April 2005 ... !Gate alignWith: (1 bpm: !BPM) IP: Logged |
GregoryCichoracki Member |
![]() ![]() ![]() Most of you probably know this, but with most browsers there is a search on page function such as (ctrl-F) in IE9, I use this on long densely packed pages to find what I need. makes finding all references to keywords on a web page easy. IP: Logged |
pete Member |
![]() ![]() ![]() Hi Cristian You've uncovered an anomaly here that I've been trying to get round for a long time. Your expression !Gate alignWith: (1 bpm: !BPM) works fine if the thing that you are gating is has nothing to do with the BPM, but if you are gating a change of BPM itself, then the BPM you are alining with has to be changed in the same way. It can't do this and you end up nesting alignWith: inside alignWith: add infinitum. You need a form of Capytalk feed back so that the BPM resulting from the alignWith statement is the same BPM that the alignWith change is resulting from. In other words the answer has to be calculated using the the answer as one of it's variables. I came across this when I tried to make a midi recorder that would store notes and matching time stamps into ram. The problem was that to play it back the time had to be controlled by the time data but the reading of the time data had to be controlled by the time. It's the sort of thing that DSP programming could do with ease, but not so easy in Cappytalk. Maybe it would work with a one tick (1ms) delay which was feeding a sound to global controller. That would allow the feed back to happen, and could allow a delayed nested version of itself, to sit inside the expression. Maybe people have a neater way of doing this? Charlie, I'm wondering if this anomaly is the problem you are having? Thanks Pete IP: Logged |
SSC Administrator |
![]() ![]() ![]() Pete, Perhaps you could use the CapyTalk expression triggerTimeToNext: to accomplish this? For example if you had: !Gate triggerTimeToNext: <eventExpression> it generates a trigger at the time interval(s) generated by <eventExpression>. !Gate turns the generation of triggers on or off. For example: code: Each time a trigger is emitted, the value of <eventExpression> is sampled and its value is used as the time to wait until emitting the next trigger. IP: Logged |
pete Member |
![]() ![]() ![]() Hi SSC I think this may help with the recored midi play back but I don't think it will work with a Bar defined BPM change. If we have a slider with desired BPM . Nothing random in this scenario. We want the BPM to change to the desired BPM but only at the beginning of the bar (every fourth beet). If we move the slider at any other time it must not have any effect on the BPM until the fourth beet has happened. So we use a sample and hold on the BPM slider but the trigger of the sample and hold has to come from a count 4 of the pulse that is being generated by the BPM that is being controlled by the result of the sample and holds output. Would the above expression help help in this case. Thanks Pete IP: Logged |
SSC Administrator |
![]() ![]() ![]() If you put this into a SoundToGlobalController: ((1 bpm: !curBPM) triggerEvery: 4) sampleAndHold: !BPM with a GeneratedEvent of !curBPM, it does what you describe (change tempo but only on the bar lines). IP: Logged |
pete Member |
![]() ![]() ![]() Yeh That looks like it should do it, and it doesn't need the one tick delay as that is inherent in the sound to global controller. Thanks Pete IP: Logged |
All times are CT (US) | next newest topic | next oldest topic |
![]() ![]() |
This forum is provided solely for the support and edification of the customers of Symbolic Sound Corporation.