def start_split_jobs(actions_filename, movie_dirname, ly_basename, quality): total_steps = 0 end_time = get_end_time(actions_filename) end_time_delayed = (end_time + DELAY_MOVIE_START_SECONDS + DELAY_MOVIE_END_SECONDS) end_frame = int(end_time_delayed * vivi_defines.VIDEO_FPS) + 1 image_step = end_frame / SPLIT_IMAGES_INTO_NUM_THREADS for i in range(SPLIT_IMAGES_INTO_NUM_THREADS): if quality == 0: job = state.Job(vivi_defines.TASK_RENDER_VIDEO_PREVIEW) job.quality = 0 else: job = state.Job(vivi_defines.TASK_RENDER_VIDEO) job.quality = 1 job.start_frame = i * image_step + 1 if i < (SPLIT_IMAGES_INTO_NUM_THREADS - 1): job.end_frame = (i + 1) * image_step else: job.end_frame = end_frame job.ly_basename = ly_basename job.movie_dirname = movie_dirname job.logfile_num = i job.actions_filename = make_movie_actions_file(actions_filename) job.ly_basename = ly_basename total_steps += shared.thread_pool.add_task(job) return total_steps
def start_job(self, get_instrument_files): total_steps = 0 old_files = glob.glob(self.files.get_ly_extra("*.wav")) #print old_files dirs.ViviDirs.delete_files(old_files) # mixing needs to happen after this finishes self.num_audio_files = len(self.files.notes_all) for i in range(self.num_audio_files): job = state.Job(vivi_defines.TASK_RENDER_AUDIO) self.files.set_notes_index(i) job.main_files = self.files # remove more old files old_files = glob.glob(self.files.get_notes_last("") + "*.actions") dirs.ViviDirs.delete_files(old_files) job.alterations_filename = job.main_files.get_notes_ext( ".alterations") if not os.path.exists(job.alterations_filename): pncs = get_pncs_from_notes(job.main_files.get_notes()) generate_alterations(job.alterations_filename, pncs) job.notes_filename = self.files.get_notes() job.ly_basename = self.files.get_ly_extra("") inst_name, total_num, inst_num = instrument_numbers.instrument_name_from_filename( job.notes_filename) #print "performer feeder total_num:", total_num, inst_num if total_num >= 7: inst_type = 2 elif total_num >= 5: inst_type = 1 else: inst_type = 0 #print "performer feeder:", inst_name, inst_type, inst_num job.inst_type = inst_type job.inst_num = inst_num inst_files = get_instrument_files(total_num) if inst_type == 0: job.reduced_inst_num = inst_num % 5 elif inst_type == 1: job.reduced_inst_num = inst_num % 2 elif inst_type == 2: job.reduced_inst_num = inst_num % 3 #print inst_num, job.reduced_inst_num performer_prep = performer.Performer(inst_type, job.reduced_inst_num, inst_files) performer_prep.load_file(job.notes_filename) job.files = inst_files job.notes = list(performer_prep.style.notes) job.audio_filename = performer_prep.audio_filename job.mpl_filenames = [] for st in range(4): mpl_filename = inst_files.get_mpl_filename(st) job.mpl_filenames.append(mpl_filename) total_steps += shared.thread_pool.add_task(job) return total_steps
def make_job(self, job_type, fmi=None, fm=None): #print "new job:", self.st, self.dyn, job_type job = state.Job(job_type) job.inst_type = self.inst_type job.inst_num = self.inst_num job.st = self.st job.dyn = self.dyn job.files = self.files job.fmi = fmi job.fm = fm extreme = self.get_extreme_forces() #print "Extreme forces: ", extreme[0] #print "mid forces: ", self.mid_forces[0] #forces = [ self.files.get_audio_params(x[0]).bow_force # for x in self.coll.coll] if job_type == vivi_defines.TASK_VERIFY: #job.finger_forces = map(lambda x: [min(x), max(x)], extreme) job.finger_forces = extreme #job.finger_forces = [item for sublist in extreme for item in sublist] elif job_type == vivi_defines.TASK_STABLE: job.force_init = self.extreme #print "INIT:", job.force_init #job.force_init = self.force_init #job.finger_forces = map(lambda x: [x[2], x[3], x[4]], extreme) elif job_type == vivi_defines.TASK_ATTACK: att = [] for j in range(3): #a = [ self.mid_forces[i][0], extreme[i][2] ] i = job.fmi a = [ 1.0*self.mid_forces[i][0], 1.0*self.mid_forces[i][1] ] if i == j: out = open(self.make_filename("mid_forces", i), 'a') out.write("%i\t%.4f\t%.4f\n" % (i, self.mid_forces[i][0], self.mid_forces[i][1])) out.close() #print a #a = [ self.mid_forces[i][0], # numpy.mean( [self.mid_forces[i][1], extreme[i][2]]) ] #a = numpy.linspace( self.mid_forces[i][0], # self.mid_forces[i][1], num=7) [2:5] #a = extreme #print a att.append(a) job.force_init = att else: job.force_init = self.force_init job.mpl_filename = self.files.get_mpl_filename(self.st) # extra info if job_type == vivi_defines.TASK_ATTACK: job.K = self.force_factor if job_type == vivi_defines.TASK_DAMPEN: job.K = self.force_factor[0] job.force_init = self.force_init[0] return job
def job(self, job_type, text): if job_type in state.STRING_JOBS or job_type in state.DYN_JOBS: steps = self.string_instrument.start_job(job_type) elif job_type is vivi_defines.TASK_LILYPOND: steps = lilypond_prepare.start_job(self.files) elif job_type is vivi_defines.TASK_RENDER_AUDIO: steps = self.performer_feeder.start_job(self.get_instrument_files) self.waiting_tasks[ job_type] = self.performer_feeder.num_audio_files elif job_type is vivi_defines.TASK_MIX_AUDIO: raise Exception("TASK_MIX_AUDIO should be started automatically") elif job_type is vivi_defines.TASK_HILL_CLIMBING: steps = hill_prep.start_job(self.files, self.get_instrument_files) self.waiting_tasks[job_type] = hill_prep.get_num_jobs() elif job_type is vivi_defines.TASK_PLAY_AUDIO: job = state.Job(job_type) job.audio_filename = self.files.get_ly_extra("-all.wav") steps = shared.thread_pool.add_task(job) elif job_type is vivi_defines.TASK_RENDER_VIDEO_PREVIEW: steps = movie_prep.start_job(self.files) self.waiting_tasks[job_type] = ( self.performer_feeder.num_audio_files * movie_prep.get_split_tasks()) elif job_type is vivi_defines.TASK_MIX_VIDEO: raise Exception("TASK_MIX_VIDEO should be started automatically") elif job_type is vivi_defines.TASK_PLAY_VIDEO_PREVIEW: job = state.Job(job_type) job.movie_filename = self.files.get_ly_movie_preview() steps = shared.thread_pool.add_task(job) elif job_type is vivi_defines.TASK_RENDER_VIDEO: steps = movie_prep.start_job(self.files, 1) self.waiting_tasks[job_type] = ( self.performer_feeder.num_audio_files * movie_prep.get_split_tasks()) elif job_type is vivi_defines.TASK_PLAY_VIDEO: job = state.Job(job_type) job.movie_filename = self.files.get_ly_movie() steps = shared.thread_pool.add_task(job) else: raise Exception("Main window: unknown job type") if steps > 0: self.progress_dialog(text, steps)
def start_job(files): remove_old_files(files.get_ly_extra("")) job = state.Job(vivi_defines.TASK_LILYPOND) job.ly_include_dir = os.path.abspath( os.path.dirname(files.get_ly_original())) job.pdf_dirname = os.path.dirname(files.get_ly_extra(".pdf")) job.ly_filename = files.get_ly_extra(".ly") job.ly_basename = files.get_ly_extra("") steps = shared.thread_pool.add_task(job) return steps
def start_job(files, get_instrument_files): ### clear out old files basename = files.get_ly_basename() old_files = glob.glob(os.path.join(files.hills_dir, basename) + "*") files.delete_files(old_files) total_steps = 0 num_audio_files = len(files.notes_all) for i in range(num_audio_files): job = state.Job(vivi_defines.TASK_HILL_CLIMBING) files.set_notes_index(i) job.main_files = files job.notes_filename = files.get_notes() inst_name, total_num, inst_num = instrument_numbers.instrument_name_from_filename( job.notes_filename) print inst_name, total_num, inst_num job.instrument_number = inst_num #job.distinct_instrument_number = dist_inst_num if total_num >= 7: inst_type = 2 elif total_num >= 5: inst_type = 1 else: inst_type = 0 job.inst_type = inst_type job.inst_num = inst_num inst_files = get_instrument_files(total_num) if inst_type == 0: job.reduced_inst_num = inst_num % 5 elif inst_type == 1: job.reduced_inst_num = inst_num % 2 elif inst_type == 2: job.reduced_inst_num = inst_num % 3 job.alterations_filename = job.main_files.get_notes_ext(".alterations") performer_prep = performer.Performer(inst_type, job.reduced_inst_num, inst_files) performer_prep.load_file(job.notes_filename) job.files = inst_files job.notes = list(performer_prep.style.notes) job.audio_filename = performer_prep.audio_filename job.mpl_filenames = [] for st in range(4): mpl_filename = inst_files.get_mpl_filename(st) job.mpl_filenames.append(mpl_filename) total_steps += go(job) # total_steps += shared.thread_pool.add_task(job) return total_steps
def make_job(self, job_type): job = state.Job(job_type) job.inst_type = self.inst_type job.inst_num = self.inst_num job.st = self.st job.files = self.files job.mf_filename = self.files.get_mf_filename(self.st) job.arff_filename = self.files.get_arff_filename(self.st) job.mpl_filename = self.files.get_mpl_filename(self.st) if job.job_type == vivi_defines.TASK_TRAINING: if not os.path.exists(job.mf_filename): return None if job.job_type == vivi_defines.TASK_ACCURACY: job.coll = self.coll job.cats_dir = self.files.get_cats_dir() if not os.path.exists(job.arff_filename): return None return job
def start_job(files, get_instrument_files): total_steps = 0 num_audio_files = len(files.notes_all) for i in range(num_audio_files): job = state.Job(vivi_defines.TASK_MIX_HILL) files.set_notes_index(i) job.main_files = files job.notes_filename = files.get_notes() # get alterations basename = files.notes # TODO: fix bad integration old_files = glob.glob(os.path.join(files.hills_dir, basename) + "*") old_files = filter(lambda x: "forces.wav" not in x, old_files) old_files = filter(lambda x: "-s0.wav" not in x, old_files) old_files = filter(lambda x: "-s1.wav" not in x, old_files) old_files = filter(lambda x: "-s2.wav" not in x, old_files) old_files = filter(lambda x: "-s3.wav" not in x, old_files) job.alterations = set() job.count = 0 for filename in old_files: if "alterations" in filename: continue relevant = filename.split("alter_")[1] split = relevant.split("_hill_") alter_text = split[0] job.alterations.add(float(alter_text)) number = int(split[1].split(".")[0]) if job.count < number: job.count = number inst_name, dist_inst_num, inst_num = instrument_numbers.instrument_name_from_filename( job.notes_filename) job.instrument_number = inst_num job.distinct_instrument_number = dist_inst_num inst_files = get_instrument_files(dist_inst_num) job.alterations_filename = job.main_files.get_notes_ext(".alterations") job.files = inst_files job.audio_filename = job.main_files.get_notes_ext("") total_steps += shared.thread_pool.add_task(job) return total_steps
def start_job(files, quality): job = state.Job(vivi_defines.TASK_MIX_VIDEO) job.movie_base_dirname = files.get_ly_movie_dir() job.parts_dirnames = [ dirname for dirname in glob.glob(os.path.join(job.movie_base_dirname, "*")) if os.path.isdir(dirname) ] # TODO: ick def strings_order(instrument_name): name = instrument_name.split("-")[-2] inst_num = int(instrument_name.split("-")[-1]) if name == "violin": return inst_num elif name == "viola": return 10 + inst_num elif name == "cello": return 20 + inst_num else: return 0 job.parts_dirnames.sort(key=strings_order) if len(job.parts_dirnames) == 1: job.images_dirname = job.parts_dirnames[0] else: job.images_dirname = job.movie_base_dirname + "-combo" if not os.path.exists(job.images_dirname): os.makedirs(job.images_dirname) job.mixed_audio_filename = files.get_ly_extra("-all.wav") if quality == 0: job.movie_filename = job.movie_base_dirname + "-preview.avi" else: job.movie_filename = job.movie_base_dirname + "-movie.avi" steps = shared.thread_pool.add_task(job) return steps
def start_job(ly_basename): audio_filenames = glob.glob(ly_basename + "*.wav") audio_filenames = filter(lambda x: not x.endswith(".forces.wav"), audio_filenames) audio_filenames = filter(lambda x: "-s0.wav" not in x, audio_filenames) audio_filenames = filter(lambda x: "-s1.wav" not in x, audio_filenames) audio_filenames = filter(lambda x: "-s2.wav" not in x, audio_filenames) audio_filenames = filter(lambda x: "-s3.wav" not in x, audio_filenames) audio_filenames.sort(key=sort_filenames) #print audio_filenames job = state.Job(vivi_defines.TASK_MIX_AUDIO) job.ly_basename = ly_basename job.audio_filenames = audio_filenames job.pans = pan(audio_filenames) #print job.pans job.amps = amplification(audio_filenames) # print job.pans steps = shared.thread_pool.add_task(job) return steps