- From: James Ingram <j.ingram@netcologne.de>
- Date: Sun, 30 Sep 2012 18:26:25 +0200
- CC: Chris Wilson <cwilso@google.com>, public-audio@w3.org, Jussi Kalliokoski <jussi.kalliokoski@gmail.com>, Joseph Berkovitz <joe@noteflight.com>
I've now updated the tick() function (both in the code and in the gist) and the sound has indeed improved. Among other things, the hairpin in bar 1 of Study 2c3.1 is now working properly! :-)) Sorry to have cast aspersions on Jazz! Mea culpa! The synchronization issues are still there. all the best, James Am 30.09.2012 17:11, schrieb James Ingram: > ooops. Sorry. > Just discovered a serious bug in my version of the tick() function. > Why do such things always happen just after hitting the send button? > I don't think this affects the synchronization issues, but it may well > have something to do with the sound of the output. > Hope to have a correction out within a couple of hours. > j. > > Am 30.09.2012 13:49, schrieb James Ingram: >> Hi Chris, Jussi, Joe, all, >> >> I have now implemented a Sequence object, and am using it in [1]. >> This program is a "work in progress" and does not yet implement MIDI >> Input, but it can be used to play back SVG-MIDI scores. For usage, >> see [2]. >> >> I had to make a few changes to Chris's tick() function, and have run >> into a couple of synchronization issues. My current tick() function >> [3] depends on PREQUEUE being 0. If PREQUEUE were to be increased, >> exact synchronization with the score would deteriorate. There would >> be no way of knowing exactly when the MIDIMessage is really sent. >> Something needs to be done to ensure that exact synchronization will >> always be possible. There will be other things that need to be >> synchronized with MIDIMessages, not just running cursors. Another >> problem is the current non-existence of empty messages. >> >> This is not really my sphere, but it might help to understand the >> problem if I say where I'd start looking for a solution: >> 1. MIDIMessages could have an optional callback, to be called at >> their actual send time. But that would not work for rests. Rest >> messages are currently never sent to the MIDI output device at all. >> Maybe we need a wrapper for MIDIMessages which would include both the >> callback and the information that this is an empty message. Empty >> messages need to be part of the spec too. If you are not convinced, >> try playing a track containing just simple notes and rests. Rests >> sometimes contain note-off messages, but sometimes they are really >> EMPTY (e.g. when two rests are separated by a barline). >> 2. Currently, MIDI programmers/libraries can set the value of >> PREQUEUE themselves, allowing different applications to be given >> optimal values. What, precisely, are the pros and cons of having >> larger values? >> >> Maybe the following belongs in a separate thread, but I'd like to >> mention it anyway: >> I'm currently not entirely happy with the sound of the output (its >> not always exactly the same, and it sounds rather scratchy compared >> to playing the same scores in C#). >> I know I'm pushing things a bit, but I suspect that Jazz is a bit >> slow, especially when it comes to sending continuous controller info >> (I'm currently testing Jazz's speed). For example, the first >> (ornamented) chord in track 1 of Study 2c3.1 contains repeated notes >> and a simple expression hairpin (cresc.-dim.) but, if the hairpin is >> played at all, it is not being performed as smoothly as the MIDI info >> says it should. Also, the tracks in Study 3 sketch don't sound as >> they should (there's an mp3 at [4]). This is only a sketch, and the >> tracks in bar 1 are really only tests, which should be played >> separately... >> As I said, I think its a Jazz problem. I don't think its my >> javascript because these things do sometimes work better. Are you >> sure it is not a problem with Javascript itself? >> >> all the best, >> James >> >> [1] >> http://james-ingram.de/tests/AssistantPerformer_W3CAudio/AssistantPerformer.html >> [2] usage: >> To start, just select a score and MIDI output device (optionally >> setting the speed option) and hit "Start". >> The controls along the top of the score should be fairly self >> explanatory. From left to right: >> 1. track selector (= staves, in top to bottom order). >> 2. player controls: >> a) go, pause, paused >> b) stop >> c) set start position tool >> d) set end position tool >> e) send start position to beginning of score (default position) >> f) send end position to end of score (default position) >> 3. (currently disabled) toggles between playing live and playing the >> MIDI stored in the score >> 4. set options: click this to reset the options in the upper dialog. >> >> [3] https://gist.github.com/3806262 >> >> [4] >> http://james-ingram-act-two.de/compositions/sketches/study3Sketch/scores/Study%203%20sketch%201%20score/Study%203%20sketch%201.html >> >> > > -- www.james-ingram-act-two.de
Received on Sunday, 30 September 2012 16:27:09 UTC