Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
 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()
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 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})
Ejemplo n.º 5
0
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")
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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())
Ejemplo n.º 8
0
 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()
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
 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)
Ejemplo n.º 12
0
 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()
Ejemplo n.º 13
0
    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)
Ejemplo n.º 14
0
 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)
Ejemplo n.º 15
0
 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)
Ejemplo n.º 16
0
 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())
Ejemplo n.º 17
0
 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)
Ejemplo n.º 18
0
 def setUp(self):
     tempo = Tempo(135)
     self.clock = BeatClock(tempo, reactor=TestReactor())
     self.phraseRecorder = PhraseRecordingArp(self.clock)