def old_callback(self, path, args): if DEBUG_OSC: print "received:", path, args def scale(val, minin, maxin, minout, maxout): relval = (val - minin) / (maxin - minin) return relval * maxout + minout if path.startswith("/st"): st = self.params.violin_string if path == '/st_g': st = 0 elif path == '/st_d': st = 1 elif path == '/st_a': st = 2 elif path == '/st_e': st = 3 if st != self.params.violin_string: self.turn_off_current_string() # new self.params.violin_string = st self.commands_pipe_master.send((COMMANDS.BOW, self.params)) #print "finger\t%.2f\t%.2f" %( x, y) #fp = scale(args[0], 0.0, 1.0, 0.0, 0.4) - 0.05 fm = scale(args[0], 0.0, 1.0, 0.0, 8.0) - 0.5 if fm < 0: fm = 0 fp = midi_pos.midi2pos(fm) #if fp < 0: # fp = 0 #print "f\t%.2f\t%.2f" %( x, y) text = "fp: %.2f" % (fp) if DEBUG_OSC: print text else: self.set_message(text + " ") self.params.finger_position = fp self.commands_pipe_master.send((COMMANDS.FINGER, self.params)) if path.startswith("/bow"): x, y = args #print "bow\t%.2f\t%.2f" %( x, y) #print "\t%.2f\t%.2f" %( scale(x, 0.0, 0.25, 0.05, 0.20), y) #print "\t%.2f\t%.2f" %( scale(y, 0.0, 0.25, 0.05, 0.20), y) #vb = scale(x, 0.0, 1.0, 0.0, 4.0) - 2.0 vb = x - 0.5 Fb = 4.0 - scale(y, 0.0, 1.0, 0.0, 4.0) text = "vb: %.2f\tFb: %.2f" % (vb, Fb) if DEBUG_OSC: print text else: self.set_message(text + " ") self.params.force = Fb self.params.velocity = vb self.commands_pipe_master.send((COMMANDS.BOW, self.params))
def main(stdscr): try: instrument_type = int(sys.argv[1]) except: instrument_type = 0 try: instrument_number = int(sys.argv[2]) except: instrument_number = 0 try: st = int(sys.argv[3]) except: st = 0 try: dyn = int(sys.argv[4]) except: dyn = 0 try: finger = int(sys.argv[5]) except: finger = 0 try: text_message = " ".join(sys.argv[6:]) except: text_message = "" try: p, audio_stream = artifastring_interactive.make_audio_stream() except: p = None audio_stream = None artifastring_init = artifastring_process.ArtifastringInit( instrument_type, instrument_number) vln = ArtifastringOsc(artifastring_init, stdscr) vln.turn_off_current_string() vln.params.violin_string = st #vln.params.bow_position = dynamics.get_distance(dyn) #vln.params.velocity = dynamics.get_velocity(dyn) vln.params.finger_position = midi_pos.midi2pos(finger) vln.commands_pipe_master.send( (COMMANDS.BOW, vln.params) ) vln.dyn = dyn if stdscr is not None: vln.set_message(text_message) time.sleep(0.5) vln.main_loop() if p is not None: audio_stream.close() p.terminate()
def old_callback(self, path, args): if DEBUG_OSC: print "received:", path, args def scale(val, minin, maxin, minout, maxout): relval = (val - minin) / (maxin-minin) return relval*maxout + minout if path.startswith("/st"): st = self.params.violin_string if path == '/st_g': st = 0 elif path == '/st_d': st = 1 elif path == '/st_a': st = 2 elif path == '/st_e': st = 3 if st != self.params.violin_string: self.turn_off_current_string() # new self.params.violin_string = st self.commands_pipe_master.send( (COMMANDS.BOW, self.params) ) #print "finger\t%.2f\t%.2f" %( x, y) #fp = scale(args[0], 0.0, 1.0, 0.0, 0.4) - 0.05 fm = scale(args[0], 0.0, 1.0, 0.0, 8.0) - 0.5 if fm < 0: fm = 0 fp = midi_pos.midi2pos(fm) #if fp < 0: # fp = 0 #print "f\t%.2f\t%.2f" %( x, y) text = "fp: %.2f" %( fp) if DEBUG_OSC: print text else: self.set_message(text + " ") self.params.finger_position = fp self.commands_pipe_master.send( (COMMANDS.FINGER, self.params) ) if path.startswith("/bow"): x, y = args #print "bow\t%.2f\t%.2f" %( x, y) #print "\t%.2f\t%.2f" %( scale(x, 0.0, 0.25, 0.05, 0.20), y) #print "\t%.2f\t%.2f" %( scale(y, 0.0, 0.25, 0.05, 0.20), y) #vb = scale(x, 0.0, 1.0, 0.0, 4.0) - 2.0 vb = x - 0.5 Fb = 4.0-scale(y, 0.0, 1.0, 0.0, 4.0) text = "vb: %.2f\tFb: %.2f" %( vb, Fb) if DEBUG_OSC: print text else: self.set_message(text + " ") self.params.force = Fb self.params.velocity = vb self.commands_pipe_master.send( (COMMANDS.BOW, self.params) )
def main(stdscr): try: instrument_type = int(sys.argv[1]) except: instrument_type = 0 try: instrument_number = int(sys.argv[2]) except: instrument_number = 0 try: st = int(sys.argv[3]) except: st = 0 try: dyn = int(sys.argv[4]) except: dyn = 0 try: finger = int(sys.argv[5]) except: finger = 0 try: text_message = " ".join(sys.argv[6:]) except: text_message = "" try: p, audio_stream = artifastring_interactive.make_audio_stream() except: p = None audio_stream = None artifastring_init = artifastring_process.ArtifastringInit( instrument_type, instrument_number) vln = ArtifastringOsc(artifastring_init, stdscr) vln.turn_off_current_string() vln.params.violin_string = st #vln.params.bow_position = dynamics.get_distance(dyn) #vln.params.velocity = dynamics.get_velocity(dyn) vln.params.finger_position = midi_pos.midi2pos(finger) vln.commands_pipe_master.send((COMMANDS.BOW, vln.params)) vln.dyn = dyn if stdscr is not None: vln.set_message(text_message) time.sleep(0.5) vln.main_loop() if p is not None: audio_stream.close() p.terminate()
def main(stdscr): artifastring_interactive.GAUSSIAN_FORCE = 0.01 artifastring_interactive.GAUSSIAN_VELOCITY = 0.01 try: instrument_type = int(sys.argv[1]) except: instrument_type = 0 try: instrument_number = int(sys.argv[2]) except: instrument_number = 0 try: st = int(sys.argv[3]) except: st = 0 try: dyn = int(sys.argv[4]) except: dyn = 0 try: finger = int(sys.argv[5]) except: finger = 0 try: text_message = " ".join(sys.argv[6:]) except: text_message = "" artifastring_init = artifastring_process.ArtifastringInit( instrument_type, instrument_number) vln = ViviTrainer(artifastring_init, stdscr, "train-data") vln.turn_off_current_string() vln.params.violin_string = st vln.params.finger_position = midi_pos.midi2pos(finger) vln.params.bow_position = dynamics.get_distance(instrument_type,dyn) vln.params.velocity = dynamics.get_velocity(instrument_type,dyn) vln.commands_pipe_master.send( (COMMANDS.BOW, vln.params) ) vln.dyn = dyn if stdscr is not None: vln.set_message(text_message) time.sleep(0.5) vln.main_loop() curses.endwin() if ACTIONS2CSV: vln.actions2csv()
def main(stdscr): try: instrument_type = int(sys.argv[1]) except: instrument_type = 0 try: instrument_number = int(sys.argv[2]) except: instrument_number = 0 try: st = int(sys.argv[3]) except: st = 0 try: dyn = int(sys.argv[4]) except: dyn = 0 try: finger = int(sys.argv[5]) except: finger = 0 try: text_message = " ".join(sys.argv[6:]) except: text_message = "" p = pyaudio.PyAudio() audio_stream = p.open( rate = 44100, channels = 1, format = pyaudio.paInt16, output = True, frames_per_buffer=HOPSIZE, ) vln = InteractiveViolin(instrument_type, instrument_number, stdscr, audio_stream) vln.turn_off_current_string() vln.params.violin_string = st vln.params.finger_position = midi_pos.midi2pos(finger) vln.params.bow_position = dynamics.get_distance(dyn) vln.params.velocity = dynamics.get_velocity(dyn) vln.params_queue.put(vln.params) vln.dyn = dyn if stdscr is not None: vln.set_message(text_message) vln.main_loop() audio_stream.close() p.terminate()
def main(stdscr): artifastring_interactive.GAUSSIAN_FORCE = 0.01 artifastring_interactive.GAUSSIAN_VELOCITY = 0.01 try: instrument_type = int(sys.argv[1]) except: instrument_type = 0 try: instrument_number = int(sys.argv[2]) except: instrument_number = 0 try: st = int(sys.argv[3]) except: st = 0 try: dyn = int(sys.argv[4]) except: dyn = 0 try: finger = int(sys.argv[5]) except: finger = 0 try: text_message = " ".join(sys.argv[6:]) except: text_message = "" artifastring_init = artifastring_process.ArtifastringInit( instrument_type, instrument_number) vln = ViviTrainer(artifastring_init, stdscr, "train-data") vln.turn_off_current_string() vln.params.violin_string = st vln.params.finger_position = midi_pos.midi2pos(finger) vln.params.bow_position = dynamics.get_distance(instrument_type, dyn) vln.params.velocity = dynamics.get_velocity(instrument_type, dyn) vln.commands_pipe_master.send((COMMANDS.BOW, vln.params)) vln.dyn = dyn if stdscr is not None: vln.set_message(text_message) time.sleep(0.5) vln.main_loop() curses.endwin() if ACTIONS2CSV: vln.actions2csv()
def do_string(violin, insttype, st, plot=False, write=False): force = INST_FORCES[insttype][st] MIDI = numpy.arange(0, 13) POS = [ midi_pos.midi2pos(float(m)) for m in MIDI] vals = [] #dbs = [] for finger in POS: val = pluck_force(violin=violin, st=st, force=force, finger=finger, plot=plot, write=write, ) vals.append(val) #dbs.append(db) val = min(vals) #db = max(dbs) return val
def keypress(self, c): if c == 'q': return False if c == 's': self.turn_off_current_string() # new self.params.violin_string += 1 if self.params.violin_string > 3: self.params.violin_string = 0 if c == 'a': self.turn_off_current_string() # new self.params.violin_string -= 1 if self.params.violin_string < 0: self.params.violin_string = 3 if c == 'f': if self.params.finger_position == 0.0: self.params.finger_position = 0.02 else: self.params.finger_position *= 1.1 if c == 'd': if self.params.finger_position < 0.02: self.params.finger_position = 0.00 else: self.params.finger_position /= 1.1 if c == 't': self.params.bow_position *= 1.01 if c == 'g': self.params.bow_position /= 1.01 if c == 'y': self.params.force *= 1.1 if c == 'h': self.params.force /= 1.1 if c == 'u': self.params.velocity *= 1.1 if c == 'j': self.params.velocity /= 1.1 skip_violin_print = False if c == 'z' or c == 'x' or c == 'c' or c == 'v': if c == 'z': alter = 1.0/1.1 if c == 'x': alter = 1.0/1.01 if c == 'c': alter = 1.01 if c == 'v': alter = 1.1 self.change_tension(alter) skip_violin_print = True if c >= '1' and c <= str(vivi_defines.CATEGORIES_NUMBER): skip_violin_print = True self.snapshot(int(c) - vivi_defines.CATEGORIES_CENTER_OFFSET) self.stdscr.addstr(self.row, 0, str("file written")) if c == 'l': if self.params.force > 0: self.store_force = self.params.force self.params.force = 0 else: self.params.force = self.store_force if c == 'm': midi = midi_pos.pos2midi(self.params.finger_position) midi = round(midi) self.params.finger_position = midi_pos.midi2pos(midi) self.stdscr.addstr(23, 20, str("midi: %i" % midi)) if c == 'b': self.dyn += 1 if self.dyn >= 4: self.dyn = 0 self.params.bow_position = dynamics.get_distance(self.dyn) self.params.velocity = dynamics.get_velocity(self.dyn) self.stdscr.addstr(23, 20, str("dyn: %i " % self.dyn)) if c == 'n': midi = midi_pos.pos2midi(self.params.finger_position) midi = round(midi) + 1 if midi > 7: midi = 0 self.params.finger_position = midi_pos.midi2pos(midi) self.stdscr.addstr(23, 20, str("midi: %i " % midi)) self.params_queue.put(self.params) if not skip_violin_print: self.stdscr.addstr(self.row, 0, str( "%i\t%.3f\t%.3f\t%.3f\t%.3f" % ( self.params.violin_string, self.params.finger_position, self.params.bow_position, self.params.force, self.params.velocity))) # next line self.row += 1 if self.row > 20: self.row = 5 self.stdscr.addstr(self.row, 0, str(" "*40)) self.stdscr.move(self.row, 0) return True
def keypress(self, c): if c == 'q': return False if c == 's': self.turn_off_current_string() # new self.params.violin_string += 1 if self.params.violin_string > 3: self.params.violin_string = 0 if c == 'a': self.turn_off_current_string() # new self.params.violin_string -= 1 if self.params.violin_string < 0: self.params.violin_string = 3 if c == 'f': if self.params.finger_position == 0.0: self.params.finger_position = 0.02 else: self.params.finger_position *= 1.1 if c == 'd': if self.params.finger_position < 0.02: self.params.finger_position = 0.00 else: self.params.finger_position /= 1.1 if c == 't': self.params.bow_position *= 1.01 if c == 'g': self.params.bow_position /= 1.01 if c == 'y': amount = self.params.force * 0.05 amount = random.gauss(amount, 0.01*amount) self.params.force += amount if c == 'h': amount = self.params.force * 0.05 amount = random.gauss(amount, 0.01*amount) self.params.force -= amount if c == 'u': self.params.velocity *= 1.1 if c == 'j': self.params.velocity /= 1.1 if c == 'm': self.tuning = TUNING_SETTLE_BUFFERS if c == 'p': self.commands_pipe_master.send( (COMMANDS.RESET, None) ) skip_violin_print = False if c == 'z' or c == 'x' or c == 'c' or c == 'v': if c == 'z': alter = 1.0/1.1 if c == 'x': alter = 1.0/1.01 if c == 'c': alter = 1.01 if c == 'v': alter = 1.1 self.change_tension(alter) skip_violin_print = True ### TODO: icky hard-coding categories if c >= '1' and c <= '5': skip_violin_print = True self.snapshot(c) self.stdscr.addstr(self.row, 0, str("file written")) if c == ord('b'): self.params.force /= 1.1 if c == 'l': if self.params.force > 0: self.store_force = self.params.force self.params.force = 0 else: self.params.force = self.store_force if c == 'm': midi = midi_pos.pos2midi(self.params.finger_position) midi = round(midi) self.params.finger_position = midi_pos.midi2pos(midi) self.stdscr.addstr(23, 20, str("midi: %i" % midi)) if c == 'n': midi = midi_pos.pos2midi(self.params.finger_position) midi = round(midi) + 1 if midi > 12: midi = 0 self.params.finger_position = midi_pos.midi2pos(midi) self.stdscr.addstr(23, 20, str("midi: %i " % midi)) self.keypress_extra(c) self.commands_pipe_master.send( (COMMANDS.FINGER, self.params) ) self.commands_pipe_master.send( (COMMANDS.BOW, self.params) ) if not skip_violin_print: self.stdscr.addstr(self.row, 0, str( "%i\t%.3f\t%.3f\t%.3f\t%.3f" % ( self.params.violin_string, self.params.finger_position, self.params.bow_position, self.params.force, self.params.velocity))) # next line self.row += 1 if self.row > 20: self.row = 5 self.stdscr.addstr(self.row, 0, str(" "*40)) self.stdscr.move(self.row, 0) return True