Advertisement
Guest User

Untitled

a guest
Feb 8th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scilab 2.57 KB | None | 0 0
  1. Fs = 44100;   // กำหนดค่า ความถี่ของเสียงเป็น 44100 Hz  
  2. t = 0:1/Fs:0.2-1/Fs; // กำหนด เวลา(t) ตั้งแต่ 0 ถึง 0.2-1/Fs โดยขึ้นทีละคาบ(1/Fs)
  3. // กำหนด amplitude ของ harmonics แต่ละ component
  4. harmonics = [1.0, 0.399064778, 0.229404484, 0.151836061,0.196754229, 0.093742264, 0.060871957,0.138605419, 0.010535002, 0.071021868,0.029954614, 0.051299684, 0.055948288,0.066208224, 0.010067391, 0.00753679,0.008196947, 0.012955577, 0.007316738,0.006216476, 0.005116215, 0.006243983,0.002860679, 0.002558108, 0.0, 0.001650392];
  5. pitches = [261.63;293.66;329.63;349.23;392.00;440.00;493.88;523.25];  // กำหนดความถี่ของแต่ละเสียง
  6. notes = [];   // ประกาศ array ที่ไว้เก็บ note แต่ละ note
  7. composite_inc = [];  // ประกาศ array ที่เก็บเพลงจากหน้าไปหลัง
  8. composite_dec = [];   // ประกาศ array ที่เก็บเพลงจากหลังไปหน้า
  9. for(i=1:length(pitches))   // วนความถี่แต่ละตัวในตัวแปร pitches
  10.     // กำหนดตัวแปร wav เป็น array เท่ากับขนาดของ t โดยให้ทุกช่องเป็น 0 ไว้เก็บ wave ของเสียงนี้
  11.     wav = zeros(1:length(t));
  12.     for(h=1:length(harmonics))   // วน harmonics แต่ละตัว
  13.         // นำ harmonic มาคิดกราฟจากสมการ h*sin(2*PI*h*f*t) และเพิ่มลงไปในตัวแปร wav
  14.         wav = wav + harmonics(h)*sin(2*%pi*h*pitches(i)*t);  
  15.     end;
  16.     notes(i,:) = wav; // เก็บ wave ที่สร้างได้ในตัวแปร notes ที่ i
  17.     // เพิ่ม note ที่สร้างได้ต่อด้านหลังของ เสียงที่เอาไว้เล่นจากหน้าไปหลัง
  18.     composite_inc = [composite_inc,notes(i,:)];
  19.     // เพิ่ม note ที่สร้างได้ต่อด้านหน้าของ เสียงที่จะเอาไว้เล่นจากหลังไปหน้า
  20.     composite_dec = [notes(i,:),composite_dec];      
  21. end;
  22. sound([composite_inc,composite_dec],Fs);  // เล่นเสียงที่สร้างได้ ด้วยความถี่ Fs(44100)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement