Exemplo n.º 1
0
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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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
Exemplo n.º 10
0
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