From 76c587827cf7732ca714b897dc26dc176c083499 Mon Sep 17 00:00:00 2001 From: Jesse Wolfe Date: Mon, 12 Mar 2012 11:47:01 -0700 Subject: [PATCH] proving that frequency domain is wrong! --- compare_fft.rb | 143 +++++++++++++++++++++++++++++++++++++++++++++ compare_spectra.rb | 5 -- output.wav | Bin 616268 -> 616268 bytes 3 files changed, 143 insertions(+), 5 deletions(-) create mode 100644 compare_fft.rb diff --git a/compare_fft.rb b/compare_fft.rb new file mode 100644 index 0000000..988a32f --- /dev/null +++ b/compare_fft.rb @@ -0,0 +1,143 @@ +require 'rubygems' +require 'fftw3' +require 'ruby-audio' +require 'algorithms' + +def read_spectra_from_file(spectra_filename, rows = 0) + spectra = [] + frame_length = nil + + File.open(spectra_filename) do |f| + frame_length = f.read(64 / 8).unpack("Q").first + + while ! f.eof? + frame = NArray[ * f.read(frame_length * 64 / 8).unpack("D*") ] + rows -= 1 + spectra << frame + end + end + + while rows > 0 + rows -= 1 + spectra << [0] * frame_length + end + + return NArray[ *spectra ] +end + +def fft_for_soundfile( filename, size = nil) + sound = RubyAudio::Sound.open(filename) + + sound_buffer = RubyAudio::Buffer.new("float", size || sound.info.frames, 1) + sound.read(sound_buffer) + + sound_buffer[size - 1] ||= 0 if size + + return FFTW3.fft( sound_buffer.entries ) +end + +def frames_per_second_for_sound(filename) + sound = RubyAudio::Sound.open(filename) + return sound.info.samplerate +end + +def fps_for_soundfile(filename) + sound = RubyAudio::Sound.open(filename) + frames_per_second = sound.info.samplerate + return frames_per_second +end + +def delay_fft( delay, fft_data ) + r = NArray.new("complex", fft_data.size) + + _D = delay + _N = fft_data.size + k = 0 # fft frame number + + fft_data.each do |f| + r[k] = f * ( Math::E ** Complex(0, (-2 * Math::PI * k * _D / _N)) ) + k += 1 + end + + return r +end + +def fft_to_file( fft, filename, size, info ) + result_data = FFTW3.ifft( fft ) + data_to_file( result_data, filename, size, info, result_data.size ) +end + +def data_to_file( data, filename, size, info, scale ) + result_buffer = RubyAudio::Buffer.new("float", size, 1) + i = 0 + data.each do |r| + result_buffer[i] = (r.respond_to?(:real) ? r.real : r.to_f) / scale + i += 1 + end + buffer_to_file( result_buffer, info ) +end + +def buffer_to_file( buffer, filename, info) + output = RubyAudio::Sound.new(filename, "w", info) + output.write(buffer) + output.close +end + +def save_params_for(sound_filename) + sound = RubyAudio::Sound.open(sound_filename) + [sound.info.frames, sound.info] +end + +target_filename = "AmenMono.wav" +frames_per_second = frames_per_second_for_sound(target_filename) +target_fft = fft_for_soundfile(target_filename) + +sample_filename = "snare1.wav" +sample_fft = fft_for_soundfile(sample_filename, target_fft.size) + +steps_per_second = frames_per_second.to_f + +corr = FFTW3.ifft(target_fft * sample_fft.conj).real + +peaks = [] +window_size = steps_per_second / 20 +blanks = [0] * (window_size / 2) +index = 0 +(blanks + corr.to_a + blanks).each_cons(window_size) do |window| + if window[ window_size / 2 ] == window.max + raise "oops" if window[ window_size / 2 ] != corr[index] + peaks << index + end + index += 1 +end + +size, info = save_params_for(target_filename) +result_buffer = RubyAudio::Buffer.new("float", size, 1) + +sample = RubyAudio::Sound.open(sample_filename) +sample_data = RubyAudio::Buffer.new("float", sample.info.frames, 1) +sample.read(sample_data) + +p peaks + +sounding = [] +size.times do |i| + time = i / frames_per_second.to_f + if peaks[0] and peaks[0] == i + p time + + sounding << [i, sample_data] + peaks.shift + end + + sounding.reject! do |n, data| + (i-n) >= sample.info.frames + end + + if sounding.length > 0 + value = sounding.map { |n, data| data[i-n] }.inject(:+) / sounding.length + result_buffer[i] = value + end +end + +buffer_to_file(result_buffer, "output.wav", info) diff --git a/compare_spectra.rb b/compare_spectra.rb index 9dfdf4c..87f3baf 100644 --- a/compare_spectra.rb +++ b/compare_spectra.rb @@ -95,20 +95,15 @@ def save_params_for(sound_filename) sample_fft = FFTW3.fft( sample_spectra ) -heap = Containers::MaxHeap.new corr = FFTW3.ifft(target_fft * sample_fft.conj).real corr_flat = [] (0...corr.sizes[1]).each do |i| val = corr[i * corr.sizes[0]] - heap.push [ val, i] corr_flat << val end steps_per_second = (frames_per_second.to_f / FRAME_STEPS) -score, index = heap.max -time = index / steps_per_second - peaks = [] window_size = steps_per_second / 20 blanks = [0] * (window_size / 2) diff --git a/output.wav b/output.wav index 402ba932617d4fc119b6e1e72dd176096149d883..f3260b089eb7133688ae74b0aefd81983f9187bd 100644 GIT binary patch delta 489235 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

**(X@I%igDio7^;%>lyy&g~ zvt9~NTN*W@9_aa=!C9kGum!-^`4ON|&jWk)8f-7X;ERX1u`5~~{`6(|?e)k-J8*xq z;g79^biqEzJP31?7Ma9SR?(mS|(t1T6uTfxFB>OrQ+f z3_e4NK%RCZS@8010VPd+@>2PZuj-arrRgHY#x;m$>1=ipBY;081YJ8b?XI|r%G!4@Pt2T|Ka z`~PsxdGM4$u=Bs$Alf+ya{hnYe^}?>QBey*or5iidHxsg9E3V&A>fe>9t8Q$|8EOY zo{O-~!F>?%T!eJ~->Bz*A`kM&$cdk&JGi*Emso{NajMU>}%w?WRcJ-7+BAm%yP z9{hj%qN5_v^Z!OZ7XhDxsOR8Okndcy{g3n2{crGG4|HpX_vYvx%=l|K;;UIVz z+y+|^>Rg0$F52FLdquY(-Z^-D3%<-nsORARU%qn@>A8sL9OOG+hg+}(DbB&;qJ7b} zi0E9jwFi;TML6doq;v58zhLM8i*ttVDoAq<{`6m}a{zkOA|!m#J_v#jwjv<>zkv86 zOnh(~+0Z!@0pc^@5&wT(NU)m-{=A3{pAp>K|8E~s)SCn`@jmT`xIWrE-UX|$n-o1l5=RfTG=C15(!C3@V z8AlwVE&8_Rd$!eKry?Ij4i7VhL|ZN~mx(fHEw#705i3WRG}zypC9_3;hwOuQSFiFi zyNW#(D9_&z7w}WPYaLDVU*)aI9|Yu#pZTPd_tf=&^&RsJ@|9O|b;Cn<# zV)B_WN;3fym#KfED*;N7jF-o@BG=`LTyx(#H{$pw>-n!r>8mq`WTUwk^FJ59bFK6A z3bd4l+mVK7EhS$l4~oBgWI021bDYI#^@VN#hGy$HGO<_UgV^ffzng2CKST~pa;An9 ze-n4tjN?a%U#8ZPR};sijx4r6W}5MlvO2I_nn(XKoF%&Q%kvNA)#png-LX+HQdxy; z5-+lk#3tAnQLmoZ1G1qo4Q_muY+H555G6?+&_R@DV0a_$j{_e z?IEy*rYkFvA3zr9hB?Igo~^md9N&2oE3SWPO^NIqGe5GE`7oNzuJ&(GdK;%ieu>+f z)G_5?A`yMr_CjZ0jR=Y$#tF-neRzU?yKO?`p_q@crkK~Ex0woRHSdg^@Ly}Q!d)xb z=8)9ghVAS-;hVsQ@K&ih@)1%v1E#~~zJ_oLB~Ie~iCMb0#xvISVU7r0_zTl3+#q^f z6$&`_-+_aHM(!!uVQFj9FFT_7OeBZ6gTFxb+2sdbbe;V7G|0I+Y z?(%=}|FB#AmwkJExbK>$zx#@3PM`+=OK2umCWXRRXyHWP95g$YM zm^PAO+7P*cwgml0ttlSnIANK(N^7FjlV0&&V9l)ZRS?D_7l=yuIJLI2gG>s^jZxzJ z#=Z+rvOY6jGL5wQLq3KtiDIMrMVVr%$IVZONO7n99e*aWOhn7jZswAP70eIDU_KO5 zHf)8hk#Quo2B|Ib!aF-jhn|enQj${*Noyl}n*u}yBl zj_uBFURBtJ-K0y9N5vWiUqBfiO(5oK)?8yTrZf2wzlCqbN)fe48mliZa6Qe9D>&p$ z7HIjXxSw0iMMx=H1bP{4&ePOC5C`5-mkLGa_BjxNYzZQ$D7FF1_!c>5=I7;Ia(49R zau)@gWKbU=FSKm=A*{1^<}SHrCaUYkSfw)pEEx-|FVCsbXGYC)Blqo72B+i z(28NZVEVTVM~Mn}Wz2=v#Z!poAc$Whn%E5QU!Hxgg8U1aTeHJ`yt>v-EoWr%qjb}C zJU`TNr0|G)MnEU^SAL1_1G7D={Zr+}FsIgts?;osq8n0$WND_2p*8cAOviGyRE3l+ zKvnT!H>jDq*Hk-fjy#2X;y)i4B~8SK7`)aT>lMR$&B?4TSR%%n0GbUxxQr4K(q z^k_|KyWh0Swm)QoC6allD{re5J16CBiZ$-M?S`&B)6?22qF;3Vh(hBat&9MfBJ^w1 zt&qP%jvCGQ9B~(9;80p6fUb2BEoux!L4sRnQ+4uB@tpU4U>I7;(8uNo(}jNusT@Lv z${{C05^eoWoAnJ1USnf`xU%|m60?(=nbFo|;iV$(+4MRqD8sMoCYYL8dRYvH`e;aC zi!;XqPY>$?eLxX69u~5Opu?HYR;P_Jf7UhAzqC{em!hgfjk2!6=6R!BW8~lI4Ti&p zSNeBUgzEAsjsecUxR(H_Oi^2UuVj7%?Dz}k5xysK2aC}d)?Ug<7xHdzz$kPP)^byP zpB!S&mE5k57jCsvQ46CQg_Nhxu*I^&e=aT9E!;qT*aGRE zYgCpqC*1!`i=l5(PGmG&%z4QDh?@jf#m(~;0uVbPZ5#D4h~mT4Lt?u?om;j}c-ouxAjX_gm2?+&xwBiG8;?3roKGgEnc%LxBGV&ku>;lJ-);rZpg z#3lz5;N54Z{+3*-Fr?LH^BU1|<-zX^f_WT4xD*S-zTwvIpiZIIz~gswh$0owsVszc&$ z>}x2AUZJu~$q+uQY3Kp-6dFSYh&8xrAcM6iHspm`Rv7H5nQzU1@7cgf{PMs_rz@vg z?roQ!-45%SZxu|c%})%(`IdUIfM32weKgu{n%v9~Vy==VwMUcTyyOlB+=+-k3V5zhw1<)r`a< zzFLF>HQ1uL-jTQ7G$cori>;kn-f6UO0Sw&34{A6GKHDk7MjG>MlB88R6I@lAr zig-qOiZ;cLE0@_8+yJ?qx>9Ke$@}BkixL#F(Z!h4bUaZFbKyFw8O7tHu*u|bCQ;vl z+Mr(KCn^M8%amt%V5+B!#2$jPv!qrE3#BINb>@-gyZR->MbPLrmVbj_Xip>oYl_=( zBT<>Ouhkihvbl1|q|n~B;%3=+)Yt+tuUZ>Y$eqeCQHLBh7$PRd^-ky>yCRg)E4Ylc zAWo1YnGo|blY*D_E=U{sqeNkGxj6Zr+%Lx#e*3XL-_SeV*d{T)X@jsYfiu+CUP@HP;1pB4C=|6t4PV`noBn3_puH zW`1j0PRwL`IKTNisEx^FDi$pPl$$!R1Uep)m)lV}v`jo!%Ze|hS4cgw4e&C7j;)_T z_D4qJgP9bgTc1yEQkMiy7ktn8>e?sn!*1x349j$J$YfvRYx-X>pGQGciul!GafA~9!ld)^`6kSJ3K|e}^g&t5g*Nhz?EX9hMD}-MO zt#3r=-nz!7s+Ki|4#aY)L7=10-Z=nXDO;2H?}>)U4b*4OBHo}+nwOer`i9m=o}^VE zR#3G`1{tah#ilTi4Jch%sTQd2+ZzZMU#po&3C$!4@NKw`TZqMK1#ycwNb5zFV@zZj zxe18DPkT4Ic02v9-$1;4K{}@H)*_X;T$HD`s|_~}57><#tRu~Pba%1GS~S{|h#}2b zC9M|zP;W9n)py71%CX`Fsh#+q{VOm|YzwtjYsg&?zHNd1Nj1u;PK z^1JmVIYw+37|9y>J7PPe6n;h>;4PE?%K4{|jo;Mmr21&Bg)Ej699k+iNDW~hd+dh; zZ6%M~o1g9?^WGIy@IB)C@_yfVw<$119ZTI{%#25ar``eX^BJQ5|z+!c-h1tSe>xd&mH|B$jv zJQ>*J(R)JJ3Yss8N{6DU2sBno=O;)vkPCEEQ^35^7(?$Sj?%rEwp$aIp^^5@h}+Q7 z*4jLTV1@B4FP|rQ!+gt8vz0l9T9q#HOJ$leLDV2_RzV)1tX8%{zQ;uFtzbg;>sA;; z3@z!UcvFp#Pm1Z{6JT z0Pr}q*SOklX=-{#9o3pk_2e%|Dm6makvyP=a?!pUY(r_Zc!hNYqQx0#tZo!YY15Ry zq4M`n?4)k0>8rVnsjlt@L^aCMpY%KRdUBrB%G<_0ggvev#onuP0uS7a_(Ecc*=t*G zJcS$!&}A$}ZmhN#nSox@{uW<>u#`|mbR-t9_7+C-$06_kn7Uu>q3lsEs$Gyp*gt49 z`MH0U`-Qt9lqKF3dnmc$1a=9OePydgY(DZ{Mj^F_kP|V%P8P#&2=6?-{jZQ{(-qqr z{cy2j-e1|d{&Q$P-I)xNU-~Y%R(hXt(}mJ}S)mSiFDhY)ax1ScZ*f69Z$OXXw7T4H zb?x)4gfa^b?ThzSEi40;i;B>#{H3d{rn#eBYq$ey6`aBDC{q<)Ly&-k2c8!0$+LGT znBZ}62~sujG2dGLh{ocF)jam7ZzvZkPg4H^3f*?TE6W9D@ph#a-kM1>_SbJgv)C~A zdT)C*m&vxQGBqXV$Yr>VVl8A6x>K7fqY|VZfx`56G!>9+#=vE6w6sBPB=!w_aU~XP z%^&0TaaMpZQ_2dv5XYcgfi4* zZMisDZijuR_A-f%ULyFLhBl z%O^-?pq^cY1gHZbDQ+u;i$?Liki_?6!`R{62f?5eXw6~Pv|75x_p=NAqzPIY(N^~l zRZ*Md>rl8Mpu_GnVTR{aY2)Af+s8kH=j1ua6D><>1uo|nyoW;s zOgf;{gxqXRv;;nTcKa6d8>Q7^MRuU~fcLvUz`N8rn1F1M+Of^qyOJ55gq;AX_;mkK z=M}eoq_7O1%Z#9ptGR(mzHhKl6(CArDmQ$R&@lLtu6g|b|Yz)oLD-vfUe?g{VY z6SxwP!#vdATE2&u(QTk#V2k9}d;>XwtYN%p3Nc)#^RQVE*Y1zEz&9boq=td|?yHV( zxt^RI&Wd~pV#j|Xh&aIi+PBxv9tBAGGIT34M*X2!kWrWw?*W&Z4}o)BU-;l!iK<99 z>7k&=$!KF7*r?Prx;6|)H!__m6EamO3^d~%5YOGM_>>J0NE`!;SjUvfLOxrY&l0c5 zv($YM8p>4K2t)bNvW&IUUDcH&n#y;5y*#tnQ<8m@_5xi8yZ}-6ix>%r$}QMz!)IHB ztr(N9p6B)A7UU)Qg&c`akR`4yXHq(0%kcGRO^B~NMJCCWA-P1yHPX(Km6&h9-7GC9 z`1`ohJkO-VB&z>K*TdqZM*hVp6VcRyRcJ^ z)V?S!g>8X4+%CBvieObCF|3W;K-nmxVmkXiP+jVbAJBD%iI|sujC=&t;WO#FQX1mY zTjaV5qm4(O;dStls-D~9`Qm=-JH+!+lH5w%%K7}Y{fAje3d61v9NJa>B(w)u!h5s? z@INx0nlH11H}V?LwE-Rl)~IIf41?V5u2;gE)dO z)OJY$VWKFDC&ejZYw=G36Gn)gWv|p;e9qtCq6J6}1O@jM<*2+-?85!