吉他调音器与Ruby
发布时间:2020-12-17 02:28:06 所属栏目:百科 来源:网络整理
导读:我从未使用过实时音频功能. 我想知道是否有ruby库可以让我创建类似吉他调音器的东西. 解决方法 有两个正交的任务:1)读取音频,2)处理它.要获得音频,你可以检查 ruby-audio,说实话,我从来没有使用它,它的文档似乎很少.就个人而言,我会诉诸你的操作系统提供的
我从未使用过实时音频功能.
我想知道是否有ruby库可以让我创建类似吉他调音器的东西. 解决方法
有两个正交的任务:1)读取音频,2)处理它.要获得音频,你可以检查
ruby-audio,说实话,我从来没有使用它,它的文档似乎很少.就个人而言,我会诉诸你的操作系统提供的任何东西;例如在GNU / Linux中,我们有像
bplay这样的便利工具.第二个问题是如何计算音频的FFT,这应该很容易用
FFTW3.
这是一个快速而肮脏的例子,它从stdin(16位,单声道)获得FFT的峰值点: require 'rubygems' require 'fftw3' module Tuner def self.peaks(input_channel,samplerate,window_size) Enumerator.new do |enum| loop do data = input_channel.read(window_size).unpack("s*") na = NArray.to_na(data) fft = FFTW3.fft(na).to_a[0,window_size/2] max_n = fft.map(&:abs).each_with_index.drop(1).max[1] enum.yield(max_n.to_f * samplerate / window_size) end end end end if __FILE__ == $0 Tuner.peaks(STDIN,8000,1024).each { |f| puts f } end 被称为,例如: $brec -s 8000 -b 16 | ruby tuner.rb (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |