def exec_1__SinePlusCosine(): '''################### prep : wfs ###################''' A = 1.0; f0 = 262; fs = 8000.0; length = 1.0; phase = 1.0; type = "sine" timelabel = get_TimeLabel_Now() fname_sines = "test_1.sines.%s.f0=%d_phase-%1.2f.wav" % (timelabel, f0, phase) wf_sines = wl.get_WaveFile__Sines (fname_sines, A, f0, fs, length, phase, type) fname_cosines = "test_1.cosines.%s.f0=%d_phase-%1.2f.wav" % (timelabel, f0, phase) wf_cosines = wl.get_WaveFile__Sines (fname_cosines, A, f0, fs, length, phase, "cosine") '''################### save : wav fles ###################''' dpath_dst = "audio" wl.save_WaveFile__Class(wf_sines, dpath_dst=dpath_dst) wl.save_WaveFile__Class(wf_cosines, dpath_dst=dpath_dst) '''################### addition : sines + cosines ###################''' pairsOf_analogdata = zip(wf_sines.analogdata, wf_cosines.analogdata) analogdata_Stardardized = [1/sqrt(2) * (x + y) for x, y in pairsOf_analogdata] fname_addition = "test_1.addition.%s.wav" % (timelabel) wf_addition = wl.get_WaveFile__AnalogData(\ fname_addition, analogdata_Stardardized, A, \ length, nchannels = 1, \ radians = wf_sines.radians, \ f0 = wf_sines.basefreq) wl.save_WaveFile__Class(wf_addition, dpath_dst=dpath_dst) '''################### ending ###################''' print "[%s:%d] exec_1__SinePlusCosine ==> done" % (thisfile(), linenum()) return
def exec_1__Measure_Frequency(): '''################### options ###################''' options = get_opt_2(sys.argv, "f") if not "-f" in [x[0] for x in options]: print "'-f' option needed" return # print options # # return '''################### prep : wfs ###################''' A = 1.0 fs = 8000.0 length = 1.0 phase = 1.0 type = "sine" f0_val = [x[1] for x in options if x[0] == '-f'][0] f0 = int(f0_val) # f0 = 262 * wl.EQUAL_TEMPERAMENTS[6]; # f0 = 262 * wl.EQUAL_TEMPERAMENTS[3]; # f0 = 262; timelabel = get_TimeLabel_Now() fname_sines = "test_1.sines.%s.f0=%d_phase-%1.2f.wav" % (timelabel, f0, phase) wf_sines = wl.get_WaveFile__Sines(fname_sines, A, f0, fs, length, phase, type) '''################### measure freq ###################''' result = wl.measure_Frequency_2(wf_sines) # result = wl.measure_Frequency(wf_sines) '''################### ending ###################''' print "[%s:%d] exec_1__Measure_Frequency ==> done" % (thisfile(), linenum()) '''################### return ###################''' return
def exec_1__SinePlusCosine_Standardize(): '''################### options ###################''' options = get_opt_2(sys.argv, "f") if not "-f" in [x[0] for x in options]: print "'-f' option needed" return # print options # # return '''################### prep : wfs ###################''' '''################### prep : wfs : sines ###################''' A = 1.0 fs = 8000.0 length = 1.0 phase = 1.0 type = "sine" f0_val = [x[1] for x in options if x[0] == '-f'][0] f0 = int(f0_val) # f0 = 262 * wl.EQUAL_TEMPERAMENTS[6]; # f0 = 262 * wl.EQUAL_TEMPERAMENTS[3]; # f0 = 262; timelabel = get_TimeLabel_Now() fname_Sines = "test_1.sines.%s.f0=%d_phase-%1.2f.wav" % (timelabel, f0, phase) wf_Sines = wl.get_WaveFile__Sines(fname_Sines, A, f0, fs, length, phase, type) '''################### prep : wfs : cosines ###################''' A = 1.0 fs = 8000.0 length = 1.0 phase = 1.0 type = "cosine" f0_val = [x[1] for x in options if x[0] == '-f'][0] f0 = int(f0_val) # f0 = 262 * wl.EQUAL_TEMPERAMENTS[6]; # f0 = 262 * wl.EQUAL_TEMPERAMENTS[3]; # f0 = 262; timelabel = get_TimeLabel_Now() fname_Cosines = "test_1.cosines.%s.f0=%d_phase-%1.2f.wav" % (timelabel, f0, phase) wf_Cosines = wl.get_WaveFile__Sines(fname_Cosines, A, f0, fs, length, phase, type) '''################### prep : wfs : sines + cosines ###################''' pairsOf_analogdata = zip(wf_Sines.analogdata, wf_Cosines.analogdata) analogdata_Stardardized = [ 1 / sqrt(2) * (x + y) for x, y in pairsOf_analogdata ] print "[%s:%d] analogdata_Stardardized : max = %.4f / min = %.4f" \ % (thisfile(), linenum(), \ max(analogdata_Stardardized), \ min(analogdata_Stardardized)) fname_SinesPlusCosines = "test_1.SinesPlusCosines.%s.wav" % (timelabel) wf_SinesPlusCosines = wl.get_WaveFile__AnalogData(\ fname = fname_SinesPlusCosines, \ analogdata = analogdata_Stardardized, \ A = 1.0, length = wf_Sines.length,\ radians = wf_Sines.radians, \ f0 = wf_Sines.basefreq) # A, length, nchannels = 1, \ '''################### measure freq ###################''' result_Sines = wl.measure_Frequency_4(wf_Sines) result_Cosines = wl.measure_Frequency_4(wf_Cosines) result_SinesPlusCosines = wl.measure_Frequency_4(wf_SinesPlusCosines) print "[%s:%d] freq of sines ==> %d" % (thisfile(), linenum(), result_Sines['freq']) # print "[%s:%d] freq of sines ==> %d" % (thisfile(), linenum(), result_Sines) print "[%s:%d] freq of cosines ==> %d" % (thisfile(), linenum(), result_Cosines['freq']) # print "[%s:%d] freq of cosines ==> %d" % (thisfile(), linenum(), result_Cosines) print "[%s:%d] result_Sines =>" % (thisfile(), linenum()) print result_Sines print "[%s:%d] result_Cosines =>" % (thisfile(), linenum()) print result_Cosines print "[%s:%d] result_SinesPlusCosines =>" % (thisfile(), linenum()) print result_SinesPlusCosines '''################### save to file ###################''' # sines dpath = "audio" wl.save_WaveFile__Class(wf_Sines, dpath_dst=dpath) # cosines wl.save_WaveFile__Class(wf_Cosines, dpath_dst=dpath) # sines + cosines wl.save_WaveFile__Class(wf_SinesPlusCosines, dpath_dst=dpath) print "[%s:%d] files saved" % (thisfile(), linenum()) '''################### ending ###################''' print "[%s:%d] exec_1__Measure_Frequency ==> done" % (thisfile(), linenum()) '''################### return ###################''' return
def exec_3__SinePlusSineNX_Standardize(): '''################### options ###################''' options = get_opt_2(sys.argv, "fN") # options = get_opt_2(sys.argv, "f") if not "-f" in [x[0] for x in options]: print "'-f' option needed" return if not "-N" in [x[0] for x in options]: print "'-N' option needed" return # print options # # return '''################### prep : wfs ###################''' '''################### prep : wfs : Sines ###################''' A = 1.0 fs = 16000.0 length = 1.0 phase = 1.0 type = "sine" # A = 1.0; fs = 8000.0; length = 1.0; phase = 1.0; type = "sine" f0_val = [x[1] for x in options if x[0] == '-f'][0] f0 = int(f0_val) # f0 = 262 * wl.EQUAL_TEMPERAMENTS[6]; # f0 = 262 * wl.EQUAL_TEMPERAMENTS[3]; # f0 = 262; timelabel = get_TimeLabel_Now() fname_Sines = "test_1.sines.%s.f0=%d_fs=%.1f_phase-%1.2f.wav" % ( timelabel, f0, fs, phase) wf_Sines = wl.get_WaveFile__Sines(fname_Sines, A, f0, fs, length, phase, type) # #debug # for i in range(0, 20) : # # print "[%s:%d] wf_Sines.radians[%d] => %.4f (of 2 * pi = %.4f)"\ # % (thisfile(), linenum(), \ # i, wf_Sines.radians[i], wf_Sines.radians[i] / np.pi) '''################### prep : wfs : Sines NX ###################''' # set N value N = int([x[1] for x in options if x[0] == '-N'][0]) # N = [x[1] for x in options if x[0] == '-N'][0] # default value if N == None: N = 3 type = "sine" fname_SinesNX = "test_1.Sines%dX.%s.f0=%d_fs=%.1f_phase-%1.2f.wav" \ % (N, timelabel, f0, fs, phase) wf_SinesNX_tmp = wl.get_WaveFile__Sines (\ fname_SinesNX, A, f0, fs, length, phase, type) radian_values = [N * x for x in wf_SinesNX_tmp.radians] # radian_values = [2 * x for x in wf_SinesNX_tmp.radians] # radian_values = wf_Sines2X_tmp.radians wf_SinesNX_tmp.radians = radian_values wf_SinesNX = wl.update_WaveFile(wf_SinesNX_tmp, "radians") #=> works '''################### prep : wfs : Sines + Sines nX ###################''' analogdata_SinesPlusSinesNX = [sum(x) for x \ in zip(wf_Sines.analogdata, wf_SinesNX.analogdata)] ### memo # if not standardized, then struct.pack with "h" param in wablibs.py ==> Gets error analogdata_SinesPlusSinesNX = wl.standardize_Data( analogdata_SinesPlusSinesNX) fname_SinesPlusSinesNX = \ "test_1.SinesPlusSines%dX.%s.f0=%d_fs=%.1f_phase-%1.2f.wav" \ % (N, timelabel, f0, fs, phase) wf_SinesPlusSinesNX = wl.get_WaveFile__AnalogData(\ fname_SinesPlusSinesNX, \ analogdata_SinesPlusSinesNX, \ A, length, \ nchannels = 1, radians = None, \ f0 = None, fs = None) '''################### Freq : Sines ###################''' ### Sines result_Sines = wl.measure_Frequency_4(wf_Sines) print "[%s:%d] result_Sines =>" % (thisfile(), linenum()) print result_Sines ### SinesNX result_SinesNX = wl.measure_Frequency_4(wf_SinesNX) print "[%s:%d] result_SinesNX =>" % (thisfile(), linenum()) print result_SinesNX '''################### save : wave file ###################''' ### Sines dpath = "audio" wl.save_WaveFile__Class(wavefile=wf_Sines, fname_dst=wf_Sines.fname, dpath_dst=dpath) ### Sines 2X wf = wf_SinesNX wl.save_WaveFile__Class(wavefile=wf, fname_dst=wf.fname, dpath_dst=dpath) ### Sines + Sines 2X wf = wf_SinesPlusSinesNX wl.save_WaveFile__Class(wavefile=wf, fname_dst=wf.fname, dpath_dst=dpath) '''################### ending ###################''' print "[%s:%d] exec_2__SinePlusSineNX_Standardize ==> done" % (thisfile(), linenum()) '''################### return ###################''' return
def test_2_Get_SineWF(options): # print options freqList = [262, 294, 330, 349, 392, 440, 494, 523] # ドレミファソラシド timelabel = get_TimeLabel_Now() """振幅A、基本周波数f0、サンプリング周波数 fs、 長さlength秒の正弦波を作成して返す""" #createSineWave (A, f0, fs, length) ### param : A A = 1.0 ### param : f0 f0 = None #ref x in a : https://stackoverflow.com/questions/7571635/fastest-way-to-check-if-a-value-exist-in-a-list "answered Sep 27 '11 at 15:25" aryOf_f0 = [x for x in options if x[0] == '-f'] lenOf_f0 = len(aryOf_f0) if lenOf_f0 > 0 : f0 = int(aryOf_f0[0][1]) # if lenOf_f0 > 0 : f0 = aryOf_f0[0][1] else : f0 = freqList[0] # default ### param : phase phase = None aryOf_phase = [x for x in options if x[0] == '-p'] lenOf_phase = len(aryOf_phase) if lenOf_phase > 0 : phase = float(aryOf_phase[0][1]) # if lenOf_f0 > 0 : f0 = aryOf_f0[0][1] else : phase = 1.0 # default # if "-v" in [x[0] for x in options] : f0 = # f0 = freqList[0] ### param : fs # fs = 16000.0 # fs = 44100.0 fs = 8000.0 ### param : length length = 2.0 # length = 1.0 ### param : data (analogdata, bindata, radians) = wl.createSineWave(A, f0, fs, length) # (analogdata, bindata) = createSineWave_2(A, f0, fs, length) # (analogdata, bindata) = createSineWave_2(1.0, f[0], 8000.0, 1.0) ### param : file name, file path dpath = "audio" fname = "test_1.sine-%d.%s.wav" % (f0, timelabel) fpath = "%s/%s" % (dpath, fname) '''################### build : wavefile ###################''' wf = wl.get_WaveFile__Sines(fname, A, f0, fs, length, phase = 1.0) dpath_dst = "audio" wl.save_WaveFile__Class(wf, dpath_dst=dpath_dst) print "[%s:%d] file saved => '%s'" % (thisfile(), linenum(), fname)
def exec_3__Measure_Frequency_SinePlusCosine(): '''################### options ###################''' options = get_opt_2(sys.argv, "f") if not "-f" in [x[0] for x in options]: print "'-f' option needed" return # print options # # return '''################### prep : wfs ###################''' '''################### prep : wf : sine ###################''' A = 1.0 fs = 8000.0 length = 1.0 phase = 1.0 type = "sine" f0_val = [x[1] for x in options if x[0] == '-f'][0] f0 = int(f0_val) # f0 = 262 * wl.EQUAL_TEMPERAMENTS[6]; # f0 = 262 * wl.EQUAL_TEMPERAMENTS[3]; # f0 = 262; timelabel = get_TimeLabel_Now() fname_sines = "test_1.sines.%s.f0=%d_phase-%1.2f.wav" % (timelabel, f0, phase) wf_sines = wl.get_WaveFile__Sines(fname_sines, A, f0, fs, length, phase, type) '''################### prep : wf : cosine ###################''' A = 1.0 fs = 8000.0 length = 1.0 phase = 1.0 type = "cosine" f0_val = [x[1] for x in options if x[0] == '-f'][0] f0 = int(f0_val) # f0 = 262 * wl.EQUAL_TEMPERAMENTS[6]; # f0 = 262 * wl.EQUAL_TEMPERAMENTS[3]; # f0 = 262; timelabel = get_TimeLabel_Now() fname_cosines = "test_1.cosines.%s.f0=%d_phase-%1.2f.wav" % (timelabel, f0, phase) wf_cosines = wl.get_WaveFile__Sines(fname_cosines, A, f0, fs, length, phase, type) '''################### prep : wf : sine + cosine ###################''' fname_SinesCosines = "test_1.sines+cosines.%s.f0=%d_phase-%1.2f.wav" \ % (timelabel, f0, phase) wf_SinesCosines = wl.copy_WaveFile(wf_sines, fname_new=fname_SinesCosines) ### add analog data pairsOf_analogdata = zip(wf_sines.analogdata, wf_cosines.analogdata) analogdata_Stardardized = [ 1 / sqrt(2) * (x + y) for x, y in pairsOf_analogdata ] wf_SinesCosines.analogdata = analogdata_Stardardized # wf_SinesCosines.data = analogdata_Stardardized '''################### measure freq ###################''' print "[%s:%d] ===== sine ===============" % (thisfile(), linenum()) result_sines = wl.measure_Frequency_3(wf_sines) # result = wl.measure_Frequency(wf_sines) print "[%s:%d] freq of sines => %d" % (thisfile(), linenum(), result_sines) print "[%s:%d] ===== cosine ===============" % (thisfile(), linenum()) result_cosines = wl.measure_Frequency_3(wf_cosines) # result = wl.measure_Frequency(wf_sines) print "[%s:%d] freq of cosines => %d" % (thisfile(), linenum(), result_cosines) print "[%s:%d] ===== sine + cosine ===============" % (thisfile(), linenum()) result_SinesCosines = wl.measure_Frequency_3(wf_SinesCosines) print "[%s:%d] freq of SinesCosines => %d" \ % (thisfile(), linenum(), result_SinesCosines) print "[%s:%d] ===== sine ^ 2 ===============" % (thisfile(), linenum()) fname_SinesSquared = "test_1.sines+cosines.%s.f0=%d_phase-%1.2f.wav" \ % (timelabel, f0, phase) wf_SinesSquared = wl.copy_WaveFile(wf_sines, fname_new=fname_SinesSquared) ### add analog data # pairsOf_analogdata = zip(wf_sines.analogdata, wf_cosines.analogdata) analogdata_Squared = [pow(x, 2) for x in wf_sines.analogdata] # analogdata_Squared = [x^2 for x in wf_sines.analogdata] wf_SinesSquared.analogdata = analogdata_Squared result_SinesSquared = wl.measure_Frequency_3(wf_SinesSquared) print "[%s:%d] freq of SinesSquared => %d" \ % (thisfile(), linenum(), result_SinesSquared) print "[%s:%d] ===== sine(x) + sine(x + %%pi/2) ===============" \ % (thisfile(), linenum()) fname_SinesPlusSinesPIover2 = "test_1.sine(x)+sine(x+PIover2).%s.f0=%d_phase-%1.2f.wav" \ % (timelabel, f0, phase) wf_SinesPlusSinesPIover2 = wl.copy_WaveFile( wf_sines, fname_new=fname_SinesPlusSinesPIover2) ### add analog data nomi = 30 n = 5 # n = 20 #=> [test_1.py:327] freq of SinesPlusSinesPIover2 => 20 # [test_1.py:328] (nomi = 30 / n = 20) # n = 10 #=> [test_1.py:325] freq of SinesPlusSinesPIover2 => 20 analogdata_Squared = [x + np.pi / nomi * n for x in wf_sines.analogdata] # analogdata_Squared = [x + np.pi / 2 for x in wf_sines.analogdata] wf_SinesPlusSinesPIover2.analogdata = analogdata_Squared result_SinesPlusSinesPIover2 = wl.measure_Frequency_3( wf_SinesPlusSinesPIover2) print "[%s:%d] freq of SinesPlusSinesPIover2 => %d" \ % (thisfile(), linenum(), result_SinesPlusSinesPIover2) print "[%s:%d] (nomi = %d / n = %d)" % (thisfile(), linenum(), nomi, n) print "[%s:%d] ===== sine(x + A) + sine(x + B) ===============" \ % (thisfile(), linenum()) fname_SinesAPlusSinesB = "test_1.sine(x+A)+sine(x+B).%s.f0=%d_phase-%1.2f.wav" \ % (timelabel, f0, phase) wf_SinesAPlusSinesB = wl.copy_WaveFile(wf_sines, fname_new=fname_SinesAPlusSinesB) ### add analog data nomi = 30 n_1 = 5 n_2 = 10 # n = 20 #=> [test_1.py:327] freq of SinesPlusSinesPIover2 => 20 # [test_1.py:328] (nomi = 30 / n = 20) # n = 10 #=> [test_1.py:325] freq of SinesPlusSinesPIover2 => 20 analogdata_Squared = [\ (x + np.pi / nomi * n_1) + (x + np.pi / nomi * n_2) \ for x in wf_sines.analogdata] # analogdata_Squared = [x + np.pi / nomi * n for x in wf_sines.analogdata] # analogdata_Squared = [x + np.pi / 2 for x in wf_sines.analogdata] wf_SinesAPlusSinesB.analogdata = analogdata_Squared result_SinesAPlusSinesB = wl.measure_Frequency_3(wf_SinesAPlusSinesB) print "[%s:%d] freq of SinesAPlusSinesB => %d" \ % (thisfile(), linenum(), result_SinesAPlusSinesB) print "[%s:%d] (nomi = %d / n = %d)" % (thisfile(), linenum(), nomi, n) '''################### ending ###################''' print "[%s:%d] exec_2__Measure_Frequency ==> done" % (thisfile(), linenum()) '''################### return ###################''' return
def exec_2__SinePlusSine2X_Standardize(): '''################### options ###################''' options = get_opt_2(sys.argv, "f") if not "-f" in [x[0] for x in options]: print "'-f' option needed" return # print options # # return '''################### prep : wfs ###################''' '''################### prep : wfs : Sines ###################''' A = 1.0 fs = 8000.0 length = 1.0 phase = 1.0 type = "sine" f0_val = [x[1] for x in options if x[0] == '-f'][0] f0 = int(f0_val) # f0 = 262 * wl.EQUAL_TEMPERAMENTS[6]; # f0 = 262 * wl.EQUAL_TEMPERAMENTS[3]; # f0 = 262; timelabel = get_TimeLabel_Now() fname_Sines = "test_1.sines.%s.f0=%d_phase-%1.2f.wav" % (timelabel, f0, phase) wf_Sines = wl.get_WaveFile__Sines(fname_Sines, A, f0, fs, length, phase, type) # #debug # for i in range(0, 20) : # # print "[%s:%d] wf_Sines.radians[%d] => %.4f (of 2 * pi = %.4f)"\ # % (thisfile(), linenum(), \ # i, wf_Sines.radians[i], wf_Sines.radians[i] / np.pi) '''################### prep : wfs : Sines 2X ###################''' # A = 1.0; fs = 8000.0; length = 1.0; phase = 1.0 type = "sine" # f0_val = [x[1] for x in options if x[0] == '-f'][0] # f0 = int(f0_val); # f0 = 262 * wl.EQUAL_TEMPERAMENTS[6]; # f0 = 262 * wl.EQUAL_TEMPERAMENTS[3]; # f0 = 262; timelabel = get_TimeLabel_Now() fname_Sines2X = "test_1.Sines2X.%s.f0=%d_phase-%1.2f.wav" \ % (timelabel, f0, phase) wf_Sines2X_tmp = wl.get_WaveFile__Sines (\ fname_Sines2X, A, f0, fs, length, phase, type) radian_values = [2 * x for x in wf_Sines2X_tmp.radians] # radian_values = wf_Sines2X_tmp.radians wf_Sines2X = wl.get_WaveFile__Radians (\ fname = fname_Sines2X, \ radian_values=radian_values,\ A = wf_Sines2X_tmp.amplitude,\ length = wf_Sines2X_tmp.length, \ f0 = wf_Sines2X_tmp.basefreq,\ nchannels = 1, \ fs = wf_Sines2X_tmp.samplewidth, \ phase = 1.0) # analogdata = wf_SinesSquared.analogdata # analogdata_Standardized = wl.standardize_Data(analogdata) # # wf_SinesSquared.analogdata = analogdata_Standardized '''################### prep : wfs : Sines + Sines 2X ###################''' analogdata_SinesPlusSines2X_tmp = [ x + y for x, y in zip(wf_Sines.analogdata, wf_Sines2X.analogdata) ] #debug for i in range(0, 10): # for i in analogdata_SinesPlusSines2X : print "[%s:%d] analogdata_SinesPlusSines2X_tmp[%d] => %.4f"\ % (thisfile(), linenum(), \ i, analogdata_SinesPlusSines2X_tmp[i]) # std-ize analogdata_SinesPlusSines2X_Standardized = \ wl.standardize_Data(analogdata_SinesPlusSines2X_tmp) # fname = wf_Sines2X.fname, \ wf_Sines2X_final = wl.get_WaveFile__AnalogData (\ fname = wf_Sines2X.fname, \ analogdata = analogdata_SinesPlusSines2X_Standardized, \ A = wf_Sines2X.amplitude, \ length = wf_Sines2X.length, \ nchannels = 1, \ radians = wf_Sines2X.radians, \ f0 = wf_Sines2X.basefreq, \ fs = wf_Sines2X.samplewidth) '''################### Freq : Sines ###################''' ### Sines result_Sines = wl.measure_Frequency_4(wf_Sines) print "[%s:%d] result_Sines =>" % (thisfile(), linenum()) print result_Sines ### Sines2X result_Sines2X = wl.measure_Frequency_4(wf_Sines2X) print "[%s:%d] result_Sines2X =>" % (thisfile(), linenum()) print result_Sines2X ### Sines2X final result_Sines2X_final = wl.measure_Frequency_4(wf_Sines2X_final) print "[%s:%d] result_Sines2X_final =>" % (thisfile(), linenum()) print result_Sines2X_final '''################### prep : wfs : Sines + Sines squared ###################''' '''################### ending ###################''' print "[%s:%d] exec_2__SinePlusSine2X_Standardize ==> done" % (thisfile(), linenum()) '''################### return ###################''' return