def test_basic_tempo(self): tempo = Tempo() self.assertEquals(tempo.bpm, 120) self.assertEquals(tempo.tpb, 24) self.assertEquals(tempo.tpm, 2880) tempo.reset(bpm=150) self.assertEquals(tempo.bpm, 150) self.assertEquals(tempo.tpb, 24) self.assertEquals(tempo.tpm, 3600) tempo.reset(tpb=48) self.assertEquals(tempo.bpm, 150) self.assertEquals(tempo.tpb, 48) self.assertEquals(tempo.tpm, 7200) tempo.reset(tpb=24, bpm=60) self.assertEquals(tempo.bpm, 60) self.assertEquals(tempo.tpb, 24) self.assertEquals(tempo.tpm, 1440) tempo.reset(tpm=14400) self.assertEquals(tempo.bpm, 600) self.assertEquals(tempo.tpb, 24) self.assertEquals(tempo.tpm, 14400)
def test_setTempo(self): self.clock.setTempo(Tempo(60)) interval_before = 60. / self.clock.tempo.tpm called = [] self.clock.startTicking() self.clock.on_stop.addCallback(called.append) self.clock.setTempo(Tempo(120)) self.assertEquals(len(called), 1) self.assertEquals(60. / self.clock.tempo.tpm, interval_before / 2.) self.clock.task.stop()
def setUp(self): checkPypm() tempo = Tempo(135) self.clock = BeatClock(tempo, reactor=TestReactor()) self.instr1 = TestInstrument(self.clock) self.instr2 = TestInstrument(self.clock) self.handler = NoteOnOffHandler({1: self.instr1, 2: self.instr2})
def runWithProtocol(klass, audioDev, channels, bpm, tpb, meter): fd = sys.__stdin__.fileno() oldSettings = termios.tcgetattr(fd) tty.setraw(fd) tempo = Tempo(bpm, tpb) meter = toMeter(meter, tempo) try: # TODO - cleaner strategy for collecting parameters and # initializing fluidsynth # - initializing fluidsynth shouldn't be necessary if EXPERIMENTAL: from bl.sync import SystemClock clock = BeatClock(tempo=tempo, meter=meter, default=True, syncClockClass=SystemClock) else: clock = BeatClock(tempo=tempo, meter=meter, default=True) clock.synthAudioDevice = audioDev clock.synthChannels = channels p = ServerProtocol(klass) stdio.StandardIO(p) clock.run() finally: termios.tcsetattr(fd, termios.TCSANOW, oldSettings) os.write(fd, "\r\x1bc\r")
def test_defaultMeterIsStandard(self): clock = BeatClock(Tempo(120)) self.assertEquals(len(clock.meters), 1) meter = clock.meter self.assertEquals(meter.length, 4) self.assertEquals(meter.division, 4) self.assertEquals(meter.number, 1)
def setUp(self): self.meters = [Meter(4, 4), Meter(3, 4)] self.meterStandard = self.meters[0] self.meter34 = self.meters[1] self.clock = BeatClock(Tempo(135), meters=self.meters, reactor=TestReactor())
def setUp(self): checkPypm() tempo = Tempo(120) self.clock = BeatClock(tempo, reactor=TestReactor()) self.patch(pypm, 'Time', FakeTime(self.clock).Time) self.midiout = FakeMidiOutput() self.clockSender = ClockSender(self.midiout, clock=self.clock) self.clockSender.start()
def setUp(self): tempo = Tempo(135) self.meter = Meter(4, 4, tempo=tempo) self.meterStandard = self.meter self.clock = BeatClock(tempo, meter=self.meter, reactor=TestReactor()) self.instr1 = TestInstrument(self.clock) self.instr2 = TestInstrument(self.clock) self.dtt = self.clock.meter.dtt
def test_divisionToTicks(self): tempo = Tempo() meter = Meter(4, 4, tempo=tempo) self.assertEquals(meter.divisionToTicks(1, 4), 24) self.assertEquals(meter.divisionToTicks(3, 4), 72) self.assertEquals(meter.divisionToTicks(1, 1), 96) self.assertEquals(meter.divisionToTicks(8, 4), 192) self.assertEquals(meter.divisionToTicks(1, 12), 8) tempo = Tempo(bpm=120, tpb=96) meter = Meter(4, 4, tempo=tempo) self.assertEquals(meter.divisionToTicks(1, 4), 96) self.assertEquals(meter.divisionToTicks(3, 4), 96 * 3) self.assertEquals(meter.divisionToTicks(1, 1), 96 * 4) self.assertEquals(meter.divisionToTicks(8, 4), 96 * 8) self.assertEquals(meter.divisionToTicks(1, 12), 32) self.assertEquals(meter.divisionToTicks(1, 48), 8) self.assertEquals(meter.divisionToTicks(1, 128), 3) self.assertEquals(meter.divisionToTicks(1, 192), 2)
def test_invalidDivisionToTicks(self): tempo = Tempo() meter = Meter(4, 4, tempo=tempo) self.assertRaises(ValueError, meter.dtt, 1, 192) self.assertRaises(ValueError, meter.dtt, 1, 25) self.assertRaises(ValueError, meter.dtt, 1, 7) tempo.reset(tpb=192) meter.resetTempo(tempo) meter.dtt(1, 192) tempo.reset(tpb=25) meter.resetTempo(tempo) meter.dtt(1, 25) tempo.reset(tpb=24 * 7) meter.resetTempo(tempo) meter.dtt(1, 7) meter.strict = False tempo.reset(tpb=24) meter.resetTempo(tempo) meter.dtt(1, 192) meter.dtt(1, 25) meter.dtt(1, 7) errors = self.flushLoggedErrors() self.assertEquals(len(errors), 3)
def setUp(self): checkPypm() tempo = Tempo(153) self.meter = Meter(4, 4, tempo=tempo) self.clock = BeatClock(tempo=tempo, meter=self.meter, reactor=TestReactor()) self.midiin = FakeMidiInput() self.midiin._buffer.extend([[NOTEON_CHAN1, i % 128, 100, 0], i] for i in range(32 * 3 + 5)) self.handler = TestHandler() self.dispatcher = MidiDispatcher(self.midiin, [self.handler], clock=self.clock) self.dispatcher.start()
def test_nextDivision(self): ticks = 0 tempo = Tempo() meter = Meter(4, 4, tempo=tempo) self.assertEquals(meter.nextDivision(ticks, 1, 4), 24) self.assertEquals(meter.nextDivision(ticks, 2, 4), 48) self.assertEquals(meter.nextDivision(ticks, 1, 1), 96) self.assertEquals(meter.nextDivision(ticks, 5, 4), 96 + 24) ticks = 48 self.assertEquals(meter.nextDivision(ticks, 1, 4), 96 + 24) self.assertEquals(meter.nextDivision(ticks, 2, 4), 48) self.assertEquals(meter.nextDivision(ticks, 1, 1), 96) self.assertEquals(meter.nextDivision(ticks, 5, 4), 96 + 24) ticks = 96 + 48 self.assertEquals(meter.nextDivision(ticks, 1, 4), (96 * 2) + 24) self.assertEquals(meter.nextDivision(ticks, 2, 4), 96 + 48) self.assertEquals(meter.nextDivision(ticks, 1, 1), 96 * 2) self.assertEquals(meter.nextDivision(ticks, 5, 4), (96 * 2) + 24) ticks = 0 tempo = Tempo(tpb=48) meter = Meter(4, 4, tempo=tempo) self.assertEquals(meter.nextDivision(ticks, 1, 4), 48) self.assertEquals(meter.nextDivision(ticks, 2, 4), 96) self.assertEquals(meter.nextDivision(ticks, 1, 1), 192) self.assertEquals(meter.nextDivision(ticks, 5, 4), 240) ticks = 96 self.assertEquals(meter.nextDivision(ticks, 1, 4), 240) self.assertEquals(meter.nextDivision(ticks, 2, 4), 96) self.assertEquals(meter.nextDivision(ticks, 1, 1), 192) self.assertEquals(meter.nextDivision(ticks, 5, 4), 240) ticks = 192 + 96 self.assertEquals(meter.nextDivision(ticks, 1, 4), (192 * 2) + 48) self.assertEquals(meter.nextDivision(ticks, 2, 4), 192 + 96) self.assertEquals(meter.nextDivision(ticks, 1, 1), 192 * 2) self.assertEquals(meter.nextDivision(ticks, 5, 4), (192 * 2) + 48)
def test_divitionToTicksNonStandardMeasure(self): tempo = Tempo() meter = Meter(3, 4, tempo=tempo) self.assertEquals(meter.divisionToTicks(1, 4), 24) meter = Meter(7, 8, tempo=tempo) self.assertEquals(meter.divisionToTicks(1, 4), 24)
def setUp(self): self.tempo = Tempo(135) self.meter = Meter(4, 4, tempo=self.tempo) self.clock = BeatClock(tempo=self.tempo, meter=self.meter, reactor=TestReactor())
def setUp(self): tempo = Tempo(135) self.meter = Meter(4, 4, tempo=tempo) self.clock = BeatClock(tempo, meter=self.meter, reactor=TestReactor()) self.instr = TestInstrument(self.clock)
def setUp(self): tempo = Tempo(135) self.clock = BeatClock(tempo, reactor=TestReactor()) self.phraseRecorder = PhraseRecordingArp(self.clock)