Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 3.53 KB | None | 0 0
  1.  
  2. clear all;
  3. clc;
  4.  
  5. tic;
  6. while toc<60
  7.    
  8. sim('try_mic');
  9.  
  10. [notesig,fs] = audioread('output.wav');
  11.  
  12. n = length(notesig)-1;
  13. f = 0:fs/n:fs;
  14. bh = blackmanharris(n+1); %Blackman-Harris Window
  15. h = hanning(n+1); %Hanning Window
  16.  
  17.  
  18. notesig = notesig(:,1).*bh.*h;
  19.  
  20.  
  21.  
  22. E2f = 82.4069;
  23. A2f = 110;
  24. D3f = 146.832;
  25. G3f = 195.998;
  26. B3f = 246.942;
  27. E4f = 329.628;
  28.  
  29.  
  30. E2A2 = mean([E2f A2f]);
  31. A2D3 = mean([A2f D3f]);
  32. D3G3 = mean([D3f G3f]);
  33. G3B3 = mean([G3f B3f]);
  34. B3E4 = mean([B3f E4f]);
  35.  
  36.  
  37. E2filter = (1.*(f<E2A2).*(f>69))';
  38. A2filter = (1.*(f>E2A2).*(f<A2D3))';
  39. D3filter = (1.*(f>A2D3).*(f<D3G3))';
  40. G3filter = (1.*(f>D3G3).*(f<G3B3))';
  41. B3filter = (1.*(f>G3B3).*(f<B3E4))';
  42. E4filter = (1.*(f>B3E4).*(f<350))';
  43.  
  44. y = abs(fft(notesig));
  45. sigFFT = y(:,1); %extract one column
  46.  
  47.  
  48.  
  49. if(max(E2filter.*sigFFT)> 500)
  50.     disp('E2')
  51.     filtSig = E2filter.*sigFFT;
  52.     [fundAmp, sample_loc] = max(filtSig);
  53.     if(sample_loc*fs/n < E2f-1.5)
  54.         disp('Tune up');
  55.         disp('Difference:');
  56.         disp(E2f-1.5-(sample_loc*fs/n));
  57.     elseif(E2f+1.5 < sample_loc*fs/n)
  58.             disp('Tune down');
  59.             disp('Difference:');
  60.             disp((sample_loc*fs/n)-E2f+1.5);
  61.     else
  62.         disp('Tuned Perfectly');
  63.     end
  64. elseif(max(A2filter.*sigFFT)> 1000)
  65.     disp('A2');
  66.     filtSig = A2filter.*sigFFT;
  67.     [fundAmp, sample_loc] = max(filtSig);
  68.     if(sample_loc*fs/n < A2f-1.5)
  69.         disp('Tune up');
  70.         disp('Difference:');
  71.         disp(A2f-1.5-(sample_loc*fs/n));
  72.     elseif(A2f+1.5 < sample_loc*fs/n)
  73.             disp('Tune down');
  74.             disp('Difference:');
  75.             disp((sample_loc*fs/n)-A2f+1.5);
  76.     else
  77.         disp('Tuned Perfectly');
  78.     end
  79. elseif(max(D3filter.*sigFFT)> 1000)
  80.     disp('D3');
  81.     filtSig = D3filter.*sigFFT;
  82.     [fundAmp, sample_loc] = max(filtSig);
  83.     if(sample_loc*fs/n < D3f-1.5)
  84.         disp('Tune up');
  85.         disp('Difference:');
  86.         disp(D3f-1.5-(sample_loc*fs/n));
  87.     elseif(D3f+1.5 < sample_loc*fs/n)
  88.             disp('Tune down');
  89.             disp('Difference:');
  90.             disp((sample_loc*fs/n)-D3f+1.5);
  91.     else
  92.         disp('Tuned Perfectly');
  93.     end
  94. elseif(max(G3filter.*sigFFT)> 1000)
  95.     disp('G3');
  96.     filtSig = G3filter.*sigFFT;
  97.     [fundAmp, sample_loc] = max(filtSig);
  98.     if(sample_loc*fs/n < G3f-1.5)
  99.         disp('Tune up');
  100.         disp('Difference:');
  101.         disp(G3f-1.5-(sample_loc*fs/n));
  102.     elseif(G3f+1.5 < sample_loc*fs/n)
  103.             disp('Tune down');
  104.             disp('Difference:');
  105.             disp((sample_loc*fs/n)-G3f+1.5);
  106.     else
  107.         disp('Tuned Perfectly');
  108.     end
  109. elseif(max(B3filter.*sigFFT)> 1000)
  110.     disp('B3');
  111.     filtSig = B3filter.*sigFFT;
  112.     [fundAmp, sample_loc] = max(filtSig);
  113.     if(sample_loc*fs/n < B3f-1.5)
  114.         disp('Tune up');
  115.         disp('Difference:');
  116.         disp(B3f-1.5-(sample_loc*fs/n));
  117.     elseif(B3f+1.5 < sample_loc*fs/n)
  118.             disp('Tune down');
  119.             disp('Difference:');
  120.             disp((sample_loc*fs/n)-B3f+1.5);
  121.     else
  122.         disp('Tuned Perfectly');
  123.     end
  124. elseif(max(E4filter.*sigFFT)> 1000)
  125.     disp('E4');
  126.     filtSig = E4filter.*sigFFT;
  127.     [fundAmp, sample_loc] = max(filtSig);
  128.     if(sample_loc*fs/n < E4f-1.5)
  129.         disp('Tune up');
  130.         disp('Difference:');
  131.         disp(E4f-1.5-(sample_loc*fs/n));
  132.     elseif(E4f+1.5 < sample_loc*fs/n)
  133.             disp('Tune down');
  134.             disp('Difference:');
  135.             disp((sample_loc*fs/n)-E4f+1.5);
  136.     else
  137.         disp('Tuned Perfectly');
  138.     end
  139. end
  140. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement