class LooperBehavior(SourceBehavior): def __init__(self): super(LooperBehavior, self).__init__("looper/looper.pd") global behavior_name self.display_name = behavior_name self.samples = [] for file in os.listdir( os.path.abspath( os.path.join(os.path.dirname(__file__), 'loops'))): if file.endswith(".wav"): self.samples.append(os.path.basename(file)) self.time_last_impulse = 0 self.needs_to_reappear = False def has_just_attached(self, object): super(LooperBehavior, self).has_just_attached(object) self.generate_audio_menu() def generate_audio_menu(self): items = [] # print samples for sample in self.samples: samplename = os.path.splitext(sample)[0] items.append( ShakeMenuItem(samplename, self.audio_menu_select_sample, "loops/" + sample)) if len(items) == 0: # Can't create any sample, so go back to the default behavior director.app.play_scene.messages.show("No loop in directory.") self.object.attach_behavior(DefaultBehavior.DefaultBehavior()) self.menu = ShakeMenu(self.object, *items, no_shake=True) def audio_menu_select_sample(self, spl): self.menu = None self.symbol_to_patch("load", spl) self.bang() def update(self): super(LooperBehavior, self).update() if self.menu: self.menu.update() def draw_3d(self): super(LooperBehavior, self).draw_3d() if self.menu: self.menu.draw_3d() def draw_background(self): super(LooperBehavior, self).draw_background() if self.menu: self.menu.draw_background() def draw_foreground(self): super(LooperBehavior, self).draw_foreground() if self.menu: self.menu.draw_foreground()
class LooperBehavior(SourceBehavior): def __init__(self): super(LooperBehavior, self).__init__("looper/looper.pd") global behavior_name self.display_name = behavior_name self.samples = [] for file in os.listdir(os.path.abspath(os.path.join(os.path.dirname(__file__), 'loops'))): if file.endswith(".wav"): self.samples.append(os.path.basename(file)) self.time_last_impulse = 0 self.needs_to_reappear = False def has_just_attached(self, object): super(LooperBehavior, self).has_just_attached(object) self.generate_audio_menu() def generate_audio_menu(self): items = [] # print samples for sample in self.samples: samplename = os.path.splitext(sample)[0] items.append(ShakeMenuItem(samplename, self.audio_menu_select_sample, "loops/"+sample)) if len(items) == 0: # Can't create any sample, so go back to the default behavior director.app.play_scene.messages.show("No loop in directory.") self.object.attach_behavior(DefaultBehavior.DefaultBehavior()) self.menu = ShakeMenu(self.object, *items, no_shake=True) def audio_menu_select_sample(self, spl): self.menu = None self.symbol_to_patch("load", spl) self.bang() def update(self): super(LooperBehavior, self).update() if self.menu: self.menu.update() def draw_3d(self): super(LooperBehavior, self).draw_3d() if self.menu: self.menu.draw_3d() def draw_background(self): super(LooperBehavior, self).draw_background() if self.menu: self.menu.draw_background() def draw_foreground(self): super(LooperBehavior, self).draw_foreground() if self.menu: self.menu.draw_foreground()
class AudioInBehavior(SourceBehavior): def __init__(self): super(AudioInBehavior, self).__init__("audio_in/audio_in.pd") global behavior_name self.display_name = behavior_name self.sprite = ObjectSprite("maracas.png") self.menu = None self.init_attribute('volume', 'Volume', (0.0, 10.0), 'audio_in_behavior_default_volume', 0.5) def has_just_attached(self, object): super(AudioInBehavior, self).has_just_attached(object) self.generate_audio_menu() def generate_audio_menu(self): items = [] for i in range(0, director.app.audio.input_device.nb_input_channels): items.append(ShakeMenuItem("Input %d" % (i+1), self.audio_menu_select_input, i+1)) if len(items) == 0: # Can't create any input, so go back to the default behavior director.app.play_scene.messages.show("No input device in your system.") self.object.attach_behavior(DefaultBehavior.DefaultBehavior()) self.menu = ShakeMenu(self.object, *items, no_shake=True) def audio_menu_select_input(self, i): self.menu = None self.symbol_to_patch("input", "in%d" % i) def update(self): super(AudioInBehavior, self).update() if self.menu: self.menu.update() def draw_3d(self): super(AudioInBehavior, self).draw_3d() if self.menu: self.menu.draw_3d() else: self.sprite.opacity = self.object.alpha() * 255 self.sprite.draw() def draw_background(self): super(AudioInBehavior, self).draw_background() if self.menu: self.menu.draw_background() def draw_foreground(self): super(AudioInBehavior, self).draw_foreground() if self.menu: self.menu.draw_foreground()
class SamplerBehavior(SourceBehavior): def __init__(self): super(SamplerBehavior, self).__init__("sampler/sampler.pd") global behavior_name self.display_name = behavior_name self.samples = [] for file in os.listdir(os.path.abspath(os.path.join(os.path.dirname(__file__), 'samples'))): if file.endswith(".wav"): self.samples.append(os.path.basename(file)) # [os.path.basename(f) for f in glob.glob(os.path.abspath(os.path.join(os.path.dirname(__file__), 'samples', '*.wav')))] self.time_last_impulse = 0 self.needs_to_reappear = False def has_just_attached(self, object): super(SamplerBehavior, self).has_just_attached(object) self.generate_audio_menu() def generate_audio_menu(self): items = [] # print samples for sample in self.samples: samplename = os.path.splitext(sample)[0] items.append(ShakeMenuItem(samplename, self.audio_menu_select_sample, "samples/"+sample)) if len(items) == 0: # Can't create any sample, so go back to the default behavior director.app.play_scene.messages.show("No sample in directory.") self.object.attach_behavior(DefaultBehavior.DefaultBehavior()) self.menu = ShakeMenu(self.object, *items, no_shake=True) def audio_menu_select_sample(self, spl): self.menu = None self.symbol_to_patch("load", spl) def update(self): super(SamplerBehavior, self).update() if self.menu: self.menu.update() else: time = director.app.time if time - self.time_last_impulse > 0.1: if self.object.absent_amount() > 0.25: self.needs_to_reappear = True if self.needs_to_reappear: if self.object.absent_amount() == 0: self.needs_to_reappear = False self.number_to_patch("impulse", 1) self.time_last_impulse = time director.app.play_scene.do(ScaleTo(1.5, duration=0.1) + ScaleTo(1, duration=0.1), self.display_name_label) def draw_3d(self): super(SamplerBehavior, self).draw_3d() if self.menu: self.menu.draw_3d() def draw_background(self): super(SamplerBehavior, self).draw_background() if self.menu: self.menu.draw_background() def draw_foreground(self): super(SamplerBehavior, self).draw_foreground() if self.menu: self.menu.draw_foreground()
class SamplerBehavior(SourceBehavior): def __init__(self): super(SamplerBehavior, self).__init__("sampler/sampler.pd") global behavior_name self.display_name = behavior_name self.samples = [] for file in os.listdir( os.path.abspath( os.path.join(os.path.dirname(__file__), 'samples'))): if file.endswith(".wav"): self.samples.append(os.path.basename(file)) # [os.path.basename(f) for f in glob.glob(os.path.abspath(os.path.join(os.path.dirname(__file__), 'samples', '*.wav')))] self.time_last_impulse = 0 self.needs_to_reappear = False def has_just_attached(self, object): super(SamplerBehavior, self).has_just_attached(object) self.generate_audio_menu() def generate_audio_menu(self): items = [] # print samples for sample in self.samples: samplename = os.path.splitext(sample)[0] items.append( ShakeMenuItem(samplename, self.audio_menu_select_sample, "samples/" + sample)) if len(items) == 0: # Can't create any sample, so go back to the default behavior director.app.play_scene.messages.show("No sample in directory.") self.object.attach_behavior(DefaultBehavior.DefaultBehavior()) self.menu = ShakeMenu(self.object, *items, no_shake=True) def audio_menu_select_sample(self, spl): self.menu = None self.symbol_to_patch("load", spl) def update(self): super(SamplerBehavior, self).update() if self.menu: self.menu.update() else: time = director.app.time if time - self.time_last_impulse > 0.1: if self.object.absent_amount() > 0.25: self.needs_to_reappear = True if self.needs_to_reappear: if self.object.absent_amount() == 0: self.needs_to_reappear = False self.number_to_patch("impulse", 1) self.time_last_impulse = time director.app.play_scene.do( ScaleTo(1.5, duration=0.1) + ScaleTo(1, duration=0.1), self.display_name_label) def draw_3d(self): super(SamplerBehavior, self).draw_3d() if self.menu: self.menu.draw_3d() def draw_background(self): super(SamplerBehavior, self).draw_background() if self.menu: self.menu.draw_background() def draw_foreground(self): super(SamplerBehavior, self).draw_foreground() if self.menu: self.menu.draw_foreground()