Guest User

Untitled

a guest
Nov 23rd, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. oneWave[f_, sampleRate_] :=
  2. Table[Cos[i 2 Pi], {i, 0, (f - 1)/f, f/sampleRate}]
  3. nWaves[f_, sampleRate_, n_] :=
  4. Flatten[Table[oneWave[f, sampleRate], {i, 1, n}]]
  5. ceg4 = ListPlay[a = nWaves[261.63`, 44100, 262];
  6. 1/3 (a + Take[nWaves[329.63`, 44100, 330], Length[a]] +
  7. Take[nWaves[392.`, 44100, 392], Length[a]]), SampleRate -> 44100]
  8.  
  9. requencySplitDebug[signalList_List, splitF_?NumberQ, myDebugParams_List]:=
  10. Module[
  11. (* "Some common choices for {a,b} are {0,1} (default), {-1,1} (data analysis), {1,-1} (signal processing). " *)
  12. {signalLen, lfPart, hfPart, fourierData, myDebugGraphics, myDebugData, lfIF, hfIF, fourierA=0, fourierB=1,rPad, lPad},
  13. signalLen = Length[signalList];
  14. fourierData = Fourier[signalList, FourierParameters->{fourierA, fourierB}];
  15. rPad = PadRight[Take[fourierData,{1,splitF}],signalLen];
  16. lPad = PadLeft[Take[fourierData,{splitF + 1,signalLen}],signalLen];
  17. lfIF = InverseFourier[rPad,FourierParameters->{fourierA, fourierB}];
  18. hfIF = InverseFourier[lPad,FourierParameters->{fourierA, fourierB}];
  19. lfPart = Chop[Re[lfIF]];
  20. hfPart = Chop[Re[hfIF]];
  21. If[Length[myDebugParams]==3 && myDebugParams[[1]]==True && myDebugParams[[3]] > myDebugParams[[2]],
  22. Print["Debugging On"];
  23. myDebugGraphics =
  24. GraphicsGrid[{
  25. {ListLinePlot[Take[signalList,{myDebugParams[[2]],myDebugParams[[3]]}], PlotRange->All,PlotLabel->"Signal Input Detail"],
  26. ListLinePlot[Take[Abs[fourierData],{myDebugParams[[2]],myDebugParams[[3]]}], PlotRange->All, PlotLabel->"Signal Input Spectrum"]},
  27. {ListLinePlot[Take[lfPart,{myDebugParams[[2]],myDebugParams[[3]]}], PlotRange->All,PlotLabel->"Lower Part Signal Detail"],
  28. ListLinePlot[Take[Abs[Fourier[lfPart,FourierParameters->{fourierA, fourierB}]],{myDebugParams[[2]],myDebugParams[[3]]}], PlotRange->All, PlotLabel->"Lower Part Spectrum"]},
  29. {ListLinePlot[Take[hfPart,{myDebugParams[[2]],myDebugParams[[3]]}], PlotRange->All,PlotLabel->"Upper Part Signal Detail"],
  30. ListLinePlot[Take[Abs[Fourier[hfPart,FourierParameters->{fourierA, fourierB}]],{myDebugParams[[2]],myDebugParams[[3]]}], PlotRange->All, PlotLabel->"Upper Part Spectrum"]}
  31. }];
  32. myDebugData = {fourierData, lfIF, hfIF};
  33. ];
  34.  
  35. If[Length[myDebugData]==0,
  36. Return[{lfPart,hfPart}],
  37. Return[{lfPart,hfPart,myDebugGraphics, myDebugData}]
  38. ];
  39. ];
  40.  
  41. asplit = frequencySplitDebug[AudioData[ceg4], 300, {True, 1, 600}];
  42. Show[asplit[[3]]]
Add Comment
Please, Sign In to add comment