From 59d7a6fe47402eb06df3636eda768742ab62fe1c Mon Sep 17 00:00:00 2001 From: corey Date: Fri, 2 Nov 2018 09:49:19 -0230 Subject: [PATCH] Fix to make BeaconClock work with 3+ peers. Also added method from TempoClock to the FollowerClock. --- classes/NMLClock.sc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/classes/NMLClock.sc b/classes/NMLClock.sc index 8873194..4eda9e3 100644 --- a/classes/NMLClock.sc +++ b/classes/NMLClock.sc @@ -60,6 +60,10 @@ FollowerClock : Clock { if (phase < 0) { phase = phase % quant }; ^roundUp(this.beats - baseBarBeat - (phase % quant), quant) + baseBarBeat + phase } + + timeToNextBeat { arg quant=1.0; // logical time to next beat + ^quant.nextTimeOnGrid(this) - this.beats + } } ConductorClock { @@ -160,7 +164,7 @@ BeaconClock : TempoClock { count = msg[2]; numReplies = msg[3]; onlinePeers = addrBook.onlinePeers; - if((name != addrBook.me.name && numReplies == onlinePeers.size) || (numReplies < 3 && (numReplies > 0) && numReplies == onlinePeers.size), { // ignore my own beacons if possible + if(((name != addrBook.me.name) && (numReplies == (onlinePeers.size-1))) || ((numReplies < 3) && (numReplies > 0) && (numReplies == onlinePeers.size)), { // ignore my own beacons if possible //(addrBook.me.name ++ "received Beacon").postln; beaconKey = (name ++ count).asSymbol; myBeats = this.secs2beats(time);