我有代码来生成和导出12个立体声波形
目前我只是在做:
for i in range(0,12):
filename = "out_%d.wav" % i
L = ... some list of floats between -1.0 and +1.0 ...
R = ... similarly ...
exportWAV(filename,L,R)
但音量太小了。在
我要做的是找出所有L&R的最大体积,然后用这个体积除以所有L&R。那么我所有的值都在-1和1之间。在
这不是一个困难的任务,我可以用一些难看的代码来完成它。在
但如何做到干净利落呢?在
我应该可以用几行来完成,比如:
^{pr2}$但我不知道如何将这些伪代码转换为实际有效的Python。每个元组的数组都在一个元组的数组上进行运算。在
我觉得我只是想省去几行代码,让它变得比需要的更困难。在
编辑:感谢下面的回答,我现在有了以下工作代码:
all_LR = []
for i in range(0,12):
print "Processing %d" % i
hrtf_file = hrtf_path + "/%02d.wav" % (i+1)
shep_file = shepard_path + "/shepard_%02d.WAV" % i
L, R = import_WAV( hrtf_file )
shep = import_WAV( shep_file )
out_L = np.convolve(shep,L)
out_R = np.convolve(shep,R)
#out_LR = np.array( out_L, out_R )
out_LR = (list(out_L), list(out_R))
all_LR.append(out_LR)
#np.append( all_LR, out_LR )
np_array = np.array(all_LR)
amp_max = np.amax( np.fabs(np_array) )
print( "AmpMAX: %f" % amp_max )
np_array /= amp_max
for i in range(0,12):
out_file = out3d_path + "/s3D_%02d.WAV" % i
print out_file
L,R = np_array[i]
export_WAV( out_file, L, R )
如果可以将数据转换为} 和{a2},如下所示。在
numpy.arrays
,那么可以使用^{np.fabs
只返回一个形状相同但多维数组中每个元素的绝对值的数组。在np.amax
将返回数组的最大值。如果使用关键字参数选择一个axis
(例如np.amax(a, axis=0)
),那么它将按照axis
来操作。但是,axis
关键字的默认值是None
,这将导致它沿着平坦数组操作。在相关问题 更多 >
编程相关推荐