Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- oneWave[f_, sampleRate_] :=
- Table[Cos[i 2 Pi], {i, 0, (f - 1)/f, f/sampleRate}]
- nWaves[f_, sampleRate_, n_] :=
- Flatten[Table[oneWave[f, sampleRate], {i, 1, n}]]
- ceg4 = ListPlay[a = nWaves[261.63`, 44100, 262];
- 1/3 (a + Take[nWaves[329.63`, 44100, 330], Length[a]] +
- Take[nWaves[392.`, 44100, 392], Length[a]]), SampleRate -> 44100]
- requencySplitDebug[signalList_List, splitF_?NumberQ, myDebugParams_List]:=
- Module[
- (* "Some common choices for {a,b} are {0,1} (default), {-1,1} (data analysis), {1,-1} (signal processing). " *)
- {signalLen, lfPart, hfPart, fourierData, myDebugGraphics, myDebugData, lfIF, hfIF, fourierA=0, fourierB=1,rPad, lPad},
- signalLen = Length[signalList];
- fourierData = Fourier[signalList, FourierParameters->{fourierA, fourierB}];
- rPad = PadRight[Take[fourierData,{1,splitF}],signalLen];
- lPad = PadLeft[Take[fourierData,{splitF + 1,signalLen}],signalLen];
- lfIF = InverseFourier[rPad,FourierParameters->{fourierA, fourierB}];
- hfIF = InverseFourier[lPad,FourierParameters->{fourierA, fourierB}];
- lfPart = Chop[Re[lfIF]];
- hfPart = Chop[Re[hfIF]];
- If[Length[myDebugParams]==3 && myDebugParams[[1]]==True && myDebugParams[[3]] > myDebugParams[[2]],
- Print["Debugging On"];
- myDebugGraphics =
- GraphicsGrid[{
- {ListLinePlot[Take[signalList,{myDebugParams[[2]],myDebugParams[[3]]}], PlotRange->All,PlotLabel->"Signal Input Detail"],
- ListLinePlot[Take[Abs[fourierData],{myDebugParams[[2]],myDebugParams[[3]]}], PlotRange->All, PlotLabel->"Signal Input Spectrum"]},
- {ListLinePlot[Take[lfPart,{myDebugParams[[2]],myDebugParams[[3]]}], PlotRange->All,PlotLabel->"Lower Part Signal Detail"],
- ListLinePlot[Take[Abs[Fourier[lfPart,FourierParameters->{fourierA, fourierB}]],{myDebugParams[[2]],myDebugParams[[3]]}], PlotRange->All, PlotLabel->"Lower Part Spectrum"]},
- {ListLinePlot[Take[hfPart,{myDebugParams[[2]],myDebugParams[[3]]}], PlotRange->All,PlotLabel->"Upper Part Signal Detail"],
- ListLinePlot[Take[Abs[Fourier[hfPart,FourierParameters->{fourierA, fourierB}]],{myDebugParams[[2]],myDebugParams[[3]]}], PlotRange->All, PlotLabel->"Upper Part Spectrum"]}
- }];
- myDebugData = {fourierData, lfIF, hfIF};
- ];
- If[Length[myDebugData]==0,
- Return[{lfPart,hfPart}],
- Return[{lfPart,hfPart,myDebugGraphics, myDebugData}]
- ];
- ];
- asplit = frequencySplitDebug[AudioData[ceg4], 300, {True, 1, 600}];
- Show[asplit[[3]]]
Add Comment
Please, Sign In to add comment