def __init__(self): super(IntroScreen, self).__init__() self.genre_popup = CheckboxPopup(self.genre_callback, "GENRE", GENRE_CHECKBOXES) self.volume_popup = VolumePopup(self.slider_callback) self.record_popup = RecordPopup(self.init_recording, self.toggle_playing) self.instruments_popup = CheckboxPopup(self.instrument_callback, "INSTRUMENTS", INSTRUMENT_CHECKBOXES) self.storage_popup = StoragePopup(self.get_live_wave, self.set_live_wave) self.audio = Audio(2, input_func=self.receive_audio, num_input_channels=1) self.mixer = Mixer() self.audio.set_generator(self.mixer) self.pitch = PitchDetector() self.recorder = VoiceAudioWriter('data') self.playing = False self.recording = False self.cmd = None self.scene = Scene() self.add_widget(self.scene) self.scene.foreground.radio.set_callback(self.genre_popup.open) self.scene.foreground.amp.set_callback(self.volume_popup.open) self.scene.foreground.mic.set_callback(self.record_popup.open) self.scene.foreground.guitar.set_callback(self.instruments_popup.open) self.scene.foreground.storage.set_callback(self.storage_popup.open) self.cur_pitch = 0 self.midi_notes = None self.bass = [((40, 60), (0, 0)), ((43, 64), (0, 42)), ((28, 48), (0, 33))] self.tenor = [((52, 69), (0, 0)), ((52, 69), (0, 41)), ((45, 64), (0, 26))] self.alto = [((57, 77), (0, 0)), ((60, 79), (0, 40)), ((52, 72), (0, 29)), ((67, 86), (0, 73))] self.instruments = [self.bass, self.tenor, self.alto] self.genre = 'pop' self.indices = [0, 0, 0] # Note Scheduler self.synth = Synth('data/FluidR3_GM.sf2') # create TempoMap, AudioScheduler self.tempo_map = SimpleTempoMap(120) self.sched = AudioScheduler(self.tempo_map) self.metro = Metronome(self.sched, self.synth) self.start_tick = None # connect scheduler into audio system self.mixer.add(self.sched) self.sched.set_generator(self.synth) # Note Sequencers self.seq = [None, None, None] # live Generator self.live_wave = None # current .wav file self.current_wave_file = None