def __init__(self, packetlistener): self._packetlistener = packetlistener self._packetanalyser = PacketAnalyser(self._packetlistener) fluidsynth.init("Bandpass.sf2", 'alsa') self._music_loop()
class MusicalPackets: _step_interval = 0.5 _current_num = 0 def __init__(self, packetlistener): self._packetlistener = packetlistener self._packetanalyser = PacketAnalyser(self._packetlistener) fluidsynth.init("Bandpass.sf2", 'alsa') self._music_loop() def _music_loop(self): while True: self._current_num = self._packetanalyser.get_average_pps() % 85 self.play_note(discord=0) time.sleep(self._step_interval) self.stop_note() def play_note(self, discord=0): if discord: self._current_note = self.generate_discord_container( self._current_num) elif self._current_num == 0: self._current_note = self.generate_base_container("C") else: self._current_note = self.generate_triad_container( self._current_num, "C") fluidsynth.play_NoteContainer(self._current_note, 0, 100) def stop_note(self): fluidsynth.stop_NoteContainer(self._current_note, 0) def generate_triad_container(self, number, key): scale = scales.diatonic(key) pos = number % len(scale) triad = chords.triad(scale[pos], key) return NoteContainer(triad) def generate_discord_container(self, number): return NoteContainer(Note(number)) def generate_base_container(self, key): return NoteContainer(Note(scales.diatonic(key)[0], 2))
class MusicalPackets: _step_interval = 0.5 _current_num = 0 def __init__(self, packetlistener): self._packetlistener = packetlistener self._packetanalyser = PacketAnalyser(self._packetlistener) fluidsynth.init("Bandpass.sf2", 'alsa') self._music_loop() def _music_loop(self): while True: self._current_num = self._packetanalyser.get_average_pps() % 85 self.play_note(discord=0) time.sleep(self._step_interval) self.stop_note() def play_note(self, discord=0): if discord: self._current_note = self.generate_discord_container(self._current_num) elif self._current_num == 0: self._current_note = self.generate_base_container("C") else: self._current_note = self.generate_triad_container(self._current_num, "C") fluidsynth.play_NoteContainer(self._current_note, 0, 100) def stop_note(self): fluidsynth.stop_NoteContainer(self._current_note, 0) def generate_triad_container(self, number, key): scale = scales.diatonic(key) pos = number % len(scale) triad = chords.triad(scale[pos], key) return NoteContainer(triad) def generate_discord_container(self, number): return NoteContainer(Note(number)) def generate_base_container(self, key): return NoteContainer(Note(scales.diatonic(key)[0], 2))