using SampledSignals #サンプリングレート48 kHzで周波数440 Hzのサイン波 2秒分のデータを用意 fs = 48000.0 n = [i for i in 0:96000] wavedata = sin.(2π*440.0*n/fs) #生成したデータからSampleBufインスタンスを生成 buf = SampleBuf(wavedata, fs) #ステレオも可能 #サンプルデータ*チャンネルつまりWaveLength*2の行列からSampleBufを作ればOK leftwave = wavedata rightwave = 0.2*wavedata stereodata = [leftwave rightwave] stereobuf = SampleBuf(stereodata, fs) using LibSndFile drumloop = load("./Resource/AudioSample.wav") @show typeof(drumloop) drumloop stereodrum = convert(Array{Float64}, drumloop.data) leftdata = stereodrum[:, 1] rightdata = stereodrum[:, 2] maxval, minval = extrema(leftdata) normalizeco = maximum([abs(maxval), abs(minval)]) leftdata = leftdata/normalizeco normalizeddata = [leftdata rightdata] normalizeddrum = SampleBuf(normalizeddata, drumloop.samplerate) using PortAudio stream = PortAudio.PortAudioStream(1, 0) #このCellを実行すると5秒間マイクの音を録音開始 #録音データはSampleBufインスタンスとして返ってくるので,再生プレイヤーが立ち上がる recbuf = read(stream, 5s) stream = PortAudio.PortAudioStream(1, 1, synced=true) @show stream.blocksize #マイク入力にリアルタイムでトレモロをかけてみる L = stream.blocksize fs = stream.samplerate n = 0 for i in 1:100 #blocksize分の入力サンプルを処理して出力するという操作を繰り返す(=blocksize * 100 / fs秒分行う) inbuff = read(stream, L) audiodata = convert(Array{Float32}, inbuff.data[:, 1]) for j in 1:L audiodata[j] = audiodata[j]*sin(2π*5.0*n/fs) n += 1 end outbuff = SampledSignals.SampleBuf(audiodata, fs) write(stream, outbuff, L) end