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)
class MaracasBehavior(SourceBehavior): def __init__(self): super(MaracasBehavior, self).__init__("maracas/maracas.pd") global behavior_name self.display_name = behavior_name self.last_position = libglovebox.Vec3f(0, 0, 0) self.last_speed = 0 self.hysteresis = False self.last_ok_speed = 0 self.speed_limit = 0.53 self.speed_limit2 = 2.25 self.speed_max = 2.3 self.filter = Filter.SimpleInterpolator(0.8, 0) self.sprite = ObjectSprite("maracas.png") self.init_attribute('attack', 'AttackTime', (0, 200), 'maracas_behavior_attack_time', 50, format_time_ms) self.init_attribute('sustain', 'SustainTime', (0, 2000), 'maracas_behavior_sustain_time', 50, format_time_ms) self.init_attribute('release', 'ReleaseTime', (0, 2000), 'maracas_behavior_release_time', 50, format_time_ms) def has_just_attached(self, object): super(MaracasBehavior, self).has_just_attached(object) self.last_position = object.raw_translation def update(self): super(MaracasBehavior, self).update() self.filter.filter(self.object.raw_translation, libglovebox.Quaternion(0, 0, 0, 0)) speed = self.filter.translation.distance(self.last_position) self.last_position = libglovebox.Vec3f(self.filter.translation.x, self.filter.translation.y, self.filter.translation.z) self.last_speed = speed force = min(self.speed_max, speed - self.speed_limit) / self.speed_max if speed < self.speed_limit2 and self.hysteresis: self.hysteresis = False if force > 0 and not self.hysteresis: self.number_to_patch('impulse', force) self.hysteresis = True def draw_3d(self): super(MaracasBehavior, self).draw_3d() self.sprite.opacity = self.object.alpha() * 255 self.sprite.draw()
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 MaracasBehavior(SourceBehavior): def __init__(self): super(MaracasBehavior, self).__init__("maracas/maracas.pd") global behavior_name self.display_name = behavior_name self.last_position = libglovebox.Vec3f(0,0,0) self.last_speed = 0 self.hysteresis = False self.last_ok_speed = 0 self.speed_limit = 0.53 self.speed_limit2 = 2.25 self.speed_max = 2.3 self.filter = Filter.SimpleInterpolator(0.8, 0) self.sprite = ObjectSprite("maracas.png") self.init_attribute('attack', 'AttackTime', (0,200), 'maracas_behavior_attack_time', 50, format_time_ms) self.init_attribute('sustain', 'SustainTime', (0,2000), 'maracas_behavior_sustain_time', 50, format_time_ms) self.init_attribute('release', 'ReleaseTime', (0,2000), 'maracas_behavior_release_time', 50, format_time_ms) def has_just_attached(self, object): super(MaracasBehavior, self).has_just_attached(object) self.last_position = object.raw_translation def update(self): super(MaracasBehavior, self).update() self.filter.filter(self.object.raw_translation, libglovebox.Quaternion(0, 0, 0, 0)) speed = self.filter.translation.distance(self.last_position) self.last_position = libglovebox.Vec3f(self.filter.translation.x, self.filter.translation.y, self.filter.translation.z) self.last_speed = speed force = min(self.speed_max, speed - self.speed_limit) / self.speed_max if speed < self.speed_limit2 and self.hysteresis: self.hysteresis = False if force > 0 and not self.hysteresis: self.number_to_patch('impulse', force) self.hysteresis = True def draw_3d(self): super(MaracasBehavior, self).draw_3d() self.sprite.opacity = self.object.alpha() * 255 self.sprite.draw()
def __init__(self): super(MaracasBehavior, self).__init__("maracas/maracas.pd") global behavior_name self.display_name = behavior_name self.last_position = libglovebox.Vec3f(0, 0, 0) self.last_speed = 0 self.hysteresis = False self.last_ok_speed = 0 self.speed_limit = 0.53 self.speed_limit2 = 2.25 self.speed_max = 2.3 self.filter = Filter.SimpleInterpolator(0.8, 0) self.sprite = ObjectSprite("maracas.png") self.init_attribute('attack', 'AttackTime', (0, 200), 'maracas_behavior_attack_time', 50, format_time_ms) self.init_attribute('sustain', 'SustainTime', (0, 2000), 'maracas_behavior_sustain_time', 50, format_time_ms) self.init_attribute('release', 'ReleaseTime', (0, 2000), 'maracas_behavior_release_time', 50, format_time_ms)
def __init__(self): super(MaracasBehavior, self).__init__("maracas/maracas.pd") global behavior_name self.display_name = behavior_name self.last_position = libglovebox.Vec3f(0,0,0) self.last_speed = 0 self.hysteresis = False self.last_ok_speed = 0 self.speed_limit = 0.53 self.speed_limit2 = 2.25 self.speed_max = 2.3 self.filter = Filter.SimpleInterpolator(0.8, 0) self.sprite = ObjectSprite("maracas.png") self.init_attribute('attack', 'AttackTime', (0,200), 'maracas_behavior_attack_time', 50, format_time_ms) self.init_attribute('sustain', 'SustainTime', (0,2000), 'maracas_behavior_sustain_time', 50, format_time_ms) self.init_attribute('release', 'ReleaseTime', (0,2000), 'maracas_behavior_release_time', 50, format_time_ms)