Μεγάλη δραστηριότητα τις τελευταίες μέρες παρατηρείται στη κοινότητα του TOPLAP 1 σχετικά το TOPLAP Clock Protocol 2. Η συγκεκριμένη προσπάθεια έχει ώς σκοπό να βρεθεί ένα πρωτόκολλο για διανομή συγχρονισμένου ορολόγιου (clock synchronization
) και μουσικού μέτρου (musical metre
). Πιο συγκεκριμένα η κοινότητα του TOPLAP έχει ως σκοπό να παράξει έναν μηχανισμό οποίος θα μοιράζεται μεταξύ των μελών για να συγχρονίζονται χρησιμοποιόντας ο καθένας την αρχιτεκτονική του.
H ομάδα ανάπτυξης του περιβάλλοντος Extempore 3 έχει δοκιμάσει το παραπάνω πρωτόκολλο και παρακολουθεί την ανάπτυξη του. Ο κώδικας του παραδείγματος είναι ο παρακάτω:
;; ;; metronome test for topclock. ;; ;; run this on several machines at once. ;; (sys:load "libs/core/topclock.xtm") (sys:load "libs/core/instruments.xtm") (bind-func dsp:DSP 1000000 (let ((t 0.0)) (lambda (in time chan dat) (if (= t 0.0) (set! t time)) (if (< chan 1.5) (+ (fmsynth in time chan dat) 0.0) 0.0)))) (dsp:set! dsp) ;; turn off all effects (fmsynth_fx.wet .0) (fmsynth_fx.dfb .0) ;; any client can send tempo/cycle changes (define test (lambda (beat dur) (if (and (= (modulo beat 4) 0) (> (random) .8)) (topclock-bpm (*metro* beat) (random 80 280) beat (random '(6 5 4 3)))) ;; 'pos returns the metric position in the current cycle (println 'beat: (*metro* 'pos beat)) (if (= (*metro* 'pos beat) 0) (play fmsynth (random '(63 65 67 70 72)) 80 .1) (play fmsynth 60 80 .1)) (callback (*metro* (+ beat (* .5 dur))) 'test (+ beat dur) dur))) (define teststart (lambda () (test (*metro* 'get-beat 4) 1))) ;; give topclock a few seconds to get sync'd (callback (+ (now) (* *second* 10)) 'teststart)