Thanks for your quick response - and sorry I didn't comment earlier. I will summarize: I agree with you that performance time and score time are required (at a minimum); I also think that score time is more complex than you realize. Details follow. I was speaking of looped sequences, since "music time" has little meaning for wav loops - although with time-stretching in real time, it could come to have meaning! Looping software in fact already is "in between" pure wav playback and sequenced looping. It's where the "clocks are out of sync" that I see a missing requirement. There are, in my mind anyway, 4 clocks: (Clock 1) The performance clock running since start of play. Score time. But this is more complex than you seem to realize. If one track is looping and others are not, there is a (Clock 2) parent score time and a child score time (Clock 3) in the looping track. In my view GMPI should deliver all these times, and allow their manipulation, for the use cases that I mentioned where the plugin wants to programmatically either (a) track or (b) control these times. As soon as the operator pauses and restarts the score (or one of its tracks or loops) while some music continues to play, (clock 4) metronome time is no longer identical with performance time. And it is just at this point that a clicking or flashing metronome becomes really useful. It is vital to understand that in a number of musical cultures and styles, in a single performance, different performers may have different "music times" going. The beat may advance or retard in one musician or group of musicians relative to another. This can be true even between the left hand and the right hand of a single pianist. If GMPI wants to play with time, I propose that it should account for the complexity that actually exists. Also, to return to the question of grooving, quantizing, or composing plugins, obviously they will read one score time in, relate it to performance time, modify it, and try to get performance time and score time in the host to match the modified beat or location - perhaps in several independent streams. Original Message: ----------------- From: Tim Hockin thockin@xxxxxxxxxx Date: Thu, 4 Mar 2004 18:28:55 -0800 To: gmpi@xxxxxxxxxxxxx Subject: [gmpi] Re: 3.9 Time wrap up Try #1 On Thu, Mar 04, 2004 at 07:21:11PM -0500, Michael Gogins wrote: > "Start" means push the "play" button on the transport control. "Stop" means > push the "stop" or "pause" button. Pressing "play" after "pause" will not > rewind score time, but proceed from the point at which score time was > stopped. As for score time, it is where the cursor is in the score, if the > host supports notation. ok, clear on that. > 1, 2, and 3 are indeed quite different. 1 has only scoring, no recording. 2 > has scoring plus multitrack recording, but no overdubbing. 3 has scoring, > multitrack recording, and overdubbing. But since almost all hosts nowadays > do 3, perhaps 1 and 2 do not seem that different from 3. They are different in their details, but functionally they are the same. Or rather, they all have all the same requirements of GMPI. > 4 and 5 involve 2 and 3 plus the ability to "punch in" in the middle of a > take. There is a logical error on my part - this really is only possible > with 5, i.e. if overdubbing is involved. Again, most hosts do this, so the > difference is perhaps moot. And again, this doesn't expose any new requirements, unless I am totally missing it. > 6 and 7 are use cases where "performance time" can differ from "score time." > The operator can create a loop. The metronome is on and ticking away. It > might be that the length of the loop is not an integral multiple of the > tempo. In that case, after one loop the metronome and loop's internal "score > time" are now different. This is a common technique in minimalist > composition. I'm begging you to put more details. Do you mean a loop as in a wav-file that loops? or do you mean that you set one or more tracks to loop over a certain region? Assume a wav file loop: The loop player/track has a playback head. When the head hits the loop-end, it jumps to the loop-start. The score-time keeps-advancing. The loop player tracks it's own playback head. Nothing else needed Assume a loop in the sequencer: The sequencer hits the loop-end and jumps to the loop-start. Score time jumps backwards. If your plugin wants to treat the score-time as if it had never changed, it can do that internally, right? But that would be awkward, unless you guarantee symmetric jumps. If you jump from 0.75 of a tick to 0.39 of a tick, the clocks are out of sync. That may be OK. I just don't see where GMPI would track or deliver this info. > It could also be the case that the operator starts a loop, or loops, without > quantization, at some offset from the beat or from the normal timing of the > loop. This is a common situation in DJing or in "laptop music." Again, > "metronome time" and the overall host "music time" would be quite different > from the "music time" inside the loop or loops being played. Or the operator Metronome time was a bad idea. We have not one single use case for it, and at least one significant problem with it (the sync issue above). The only musical timeline that matters is the playback location (score time, it has been dubbed) and MAYBE overall performance time. So far we don't have a clear use case for anything but score time, and performance time can be tracked by the plugin based on transport+tempo+meter. Maybe it is useful to track Score Time (stops when transport stops, jumps when location jumps) AND Performance Time (stops when transport stops, never jumps) in GMPI. I can make up a use case for Performance Time: A musical score contains things like repeats and coda/segno redirections. The Score time will jump with these occurrences, but the performance time will not. [[ The host must handle the issue of jumping to a syncable location, or the Score Time and Performance Time will not align. Further, changes to meter may cause oddities between the two timelines. It is unclear what a plugin would DO with this information, to warrant us requiring it. ]] What does everyone think? Useful? Not usefule? Take it? dump it? > "warping time" would occur if a plugin tracked the score time, and advanced > or retarded the metronome relative to the score time in the middle of a bar, > a loop, or a phrase. Hosts do this in"groove quantize" but it would be > interesting if plugins could do this as well. It would be very interesting > and useful, for example, if a quantized score could be warped by a > specialized plugin with a neural net or LISP program that can actually do > some convincing phrasing, either for realizing a piece, or for teaching > musicianship. Changing the tempo? Or do you mean something else? > "Modifying the host's timeline" is more difficult,. but again would be most > useful. In computer-assisted live performance, computer music people have > been trying to get programs to pick up cues from human players. This is > called "score tracking" or "cue tracking". Obviously, it would be most > useful if, in overdubbing with scored or sequenced tracks, a plugin could > track a live player's phrasing, picking up ritardando, accelerando, or This is the tempo-tracker use case, unless I misinterpret you. We've got that one covered :) > rubato and causing the host to follow it. A more advanced scenario would be > a plugin that could recogize one motif or phrase as opposed to another, and > jump to the corresponding section of the score. This would enable a new kind > of algorithmically-assisted jamming where the player would operate the > sequencer by playing music, as opposed to clicking on a mouse. We discussed location-sync and location controls. We don't have an out-and-out use case for this, much less one we deem valid, but if we clarify the above, it could be a candidate. So, unless I am mistaken, we've made up a use case for Performance time (really needs to have proper use case done for it - what will a plugin DO with that info?) and we might have a use case for plugins controlling the score time. Was there anything else I was supposed to get from this that I missed? I need feedback on all th eother outstanding issues, too - for anyone who is reading. ---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission. Archive: //www.freelists.org/archives/gmpi Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe -------------------------------------------------------------------- mail2web - Check your email from the web at http://mail2web.com/ . ---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission. Archive: //www.freelists.org/archives/gmpi Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe