我想在固定的时间制造一系列低音调和高音调的嗡嗡声。例如:
有没有办法在Ruby或Python中做到这一点?我并不关心输出编码是什么(.wav、.mp3、.ogg等),但我确实想创建一个输出文件。
发布于 2010-11-19 16:34:24
下面是Python中的一个函数,它使用单个正弦波生成一个文件:
# based on : www.daniweb.com/code/snippet263775.html
import math
import wave
import struct
def make_sine(freq=440, datasize=10000, fname="test.wav", framerate=44100.00):
amp=8000.0 # amplitude
sine_list=[]
for x in range(datasize):
sine_list.append(math.sin(2*math.pi * freq * ( x/frate)))
# Open up a wav file
wav_file=wave.open(fname,"w")
# wav params
nchannels = 1
sampwidth = 2
framerate = int(frate)
nframes=datasize
comptype= "NONE"
compname= "not compressed"
wav_file.setparams((nchannels, sampwidth, framerate, nframes, comptype, compname))
#write on file
for s in sine_list:
wav_file.writeframes(struct.pack('h', int(s*amp/2)))
wav_file.close()
frate = 44100.00 #that's the framerate
freq=987.0 #that's the frequency, in hertz
seconds = 3 #seconds of file
data_length = frate*seconds #number of frames
fname = "WaveTest2.wav" #name of file
make_sine(freq, data_length, fname) 不是最快的code...But,如果你不需要速度,它会工作得很好!
发布于 2010-11-17 06:07:44
发布于 2010-11-17 06:03:59
以下是Ruby的一些帮助:向Ruby应用程序添加声音。从pc的扬声器到wav/mp3 --我不知道这是否可能。
如果您的声卡(不是扬声器)发出嘟嘟声,如果您需要,只需使用随附的Win32API模块即可:
require 'Win32API'
Beep = Win32API.new('kernel32', 'Beep', ['I', 'I'], 'I')
Beep.call(1200,150)
Beep.call(200,150)
Beep.call(300,150)
Beep.call(1400,150)https://stackoverflow.com/questions/4201852
复制相似问题