def planks_from_spectrum(s): dynamic_group=[] for e in s: start, stop = e[1] pitch_48, pitch_24, pitch_12 = frequency_to_forty_eight(e[2]), frequency_to_twenty_four(e[2]), frequency_to_twelve(e[2]) note_48, octave_48 = midi_to_note_and_oct(pitch_48) note_24, octave_24 = midi_to_note_and_oct(pitch_24) note_12, octave_12 = midi_to_note_and_oct(pitch_12) part = o.statistical_chooser(pitch_12, (start,stop)) ###### amp = 100+general_functions.amplitude_to_dB(e[3]+.0001) dynamic = general_functions.clip(int(round(putil.fit(amp,0.0, max_amp,0,9)))-dynamic_constant,(0,9)) dynamic_group.append(dynamic) ###### if part: part._partial_components.append(e) #print start, 'START', stop, 'STOP' p = Plank().position(start, stop).dynamic(Dynamic.dynamics[dynamic], part_for_adjustment = part) #if part._microtones == 'quarter': if part.microtonal_capability_in_range(pitch_48) == 'quarter': p.pitch(Note.descending_24_tone[int(note_24*2)]).octave(int(octave_24)).add_to_part(part) #elif part._microtones == 'all': elif part.microtonal_capability_in_range(pitch_48) == 'all': p.pitch(Note.descending_48_tone[int(note_48*4)]).octave(int(octave_48)).add_to_part(part) else: p.pitch(Note.pitches_flat[int(note_12)]).octave(int(octave_12)).add_to_part(part) #print dynamic_group file_name = general_functions.strip_file(aiff_file) #o_trans = copy.deepcopy(o) #o_trans.transpose_parts() #o_trans.output('/Users/db/Desktop/music_xml/Norchest__%s%.2f%.4f%.2f_%s_%s_TRANSPOSE.xml'%(file_name, minimum_duration, minimum_amplitude, resampling_interval, time_stamp, extra_args)) #o_trans.floating_infos_output('/Users/db/Desktop/music_xml/Norchest__%s%.2f%.4f%.2f_%s_%s_TRANSPOSE_float_infos.txt'%(file_name, minimum_duration, minimum_amplitude, resampling_interval, time_stamp, extra_args)) # o.transpose_parts() o.output('/Users/db/Desktop/music_xml/Norchest__%s%.2f%.4f%.2f_%s_%s_.xml'%(file_name, minimum_duration, minimum_amplitude, resampling_interval, time_stamp, extra_args)) o.floating_infos_output('/Users/db/Desktop/music_xml/Norchest__%s%.2f%.4f%.2f_%s_%s_float_infos.txt'%(file_name, minimum_duration, minimum_amplitude, resampling_interval, time_stamp, extra_args))
def thin_by_amplitude(partialList,minimum_amplitude):#stolen global amplitudes_master_list iter = partialList.begin() end = partialList.end() average_amplitudes = [] while not iter.equals(end): part = iter.partial() partIter = part.begin() partIterEnd = part.end() number_of_breakpoints = part.numBreakpoints() amp = 0 while not partIter.equals(partIterEnd): time = partIter.time() bp = partIter.breakpoint() frequency,amplitude,phase = bp.frequency(), bp.amplitude(),bp.phase() #print time,frequency,amplitude,phase #amplitude = amp + pow(bp.amplitude(), 2) partIter = partIter.next() average_amplitudes.append(amplitude/number_of_breakpoints) iter = iter.next() iter = partialList.begin() end = partialList.end() tempList = loris.PartialList() tempIter = tempList.begin() peak = max(average_amplitudes) cutoff = minimum_amplitude*peak i = 0 while not iter.equals(end): part = iter.partial() #print part.initialPhase() if general_functions.amplitude_to_dB(average_amplitudes[i]) >= cutoff: amplitudes_master_list.append(average_amplitudes[i]) tempIter = tempList.insert(tempIter, part) tempIter = tempIter.next() i += 1 iter = iter.next() print tempList.size(),'partials' return tempList
s=Separation(partials_list).starts_and_stops() #for e in s: # print frequency_to_twelve_plus_cents(e[2]) s.sort(general_functions.bsort) last_beat = s[-1][1][1] last_measure = last_beat/4 o = Orchestra(full_orchestra) o.stitch_measures([4,4],last_measure) print last_beat, 'LAST BEAT!' s.sort(general_functions.dsort) max_amp = 100+general_functions.amplitude_to_dB(s[-1][3]+.0001) print max_amp s.sort(general_functions.bsort) #print s #s=[] random.seed(10) class a: def __init__(self): self._new = None def d(self, new = None): self._new = new or self._new return self