Facebook
From Capacious Gibbon, 9 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 539
  1. clc
  2. close all
  3. clear all
  4.  
  5. %% TO-DO:
  6. % DPCM
  7. % µLaw
  8. % ALaw
  9. % ADPCM
  10.  
  11. %% Code
  12. [file, Fs, ~] = wavread('elephant.wav');
  13.  
  14. % extract one channel only
  15. file = mean(file, 2);
  16.  
  17. % save first value
  18. begin = file(1);
  19.  
  20. % calculate delta
  21. % delta = (max(file(:))+abs(min(file(:))))/size(file,1);
  22. delta = max(diff(file))/2
  23. % find differencies
  24. d = zeros(1, length(file));
  25.  
  26. for i = 2 : length(file)
  27.    d(i-1) = file(i)- file(i-1);
  28. end
  29.  
  30. % quantize
  31. result = zeros(1, length(d));
  32.  
  33. for i = 1 : length(d)
  34.    if d(i)>=0
  35.        result(i) = 1;
  36.    else
  37.        result(i) = 0;
  38.    end
  39. end
  40.  
  41. %% Decode
  42. output = begin;
  43.  
  44. for i = 1 : length(result)
  45.     if result(i) == 1
  46.         output = [output, output(end)+delta];
  47.     else
  48.         output = [output, output(end)-delta];
  49.     end
  50. end
  51.  
  52. output(output < -1) = -1;
  53. output(output > 1) = 1;
  54.  
  55. wavplay(output, Fs);