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))
示例#2
0
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