Sample
คือ เสียงเครื่องดนตรีหรือเสียงอื่นๆ ที่ถูกบันทึกมาเป็นส่วนประกอบในการทำงานเพลงหรืองานเสียงต่างๆ เช่นเสียงกลอง, เสียงลม, เสียงฝน ใช้ทำจังหวะต่างๆ
Sonic PI มี Samples ให้ใช้โดยแบ่งเป็นประเภท
Ambient, Bass Drums, Bass, Drums, Electric Sounds, Glitchy, Mehackit , Misc, Percussive, ETC.
ลองไปฟังกันดูว่ามีเสียงอะไรบ้าง Code ค้นหา sample ใน Sonic Pi
Play with Samples
use_bpm 135sample :drum_heavy_kick, rate: 1, amp: 1.5sleep 1
ใช้ sample :drum_heavy_kick เสียงกระเดื่องrate: คือ speed ในการ play back sample ค่าเริ่มต้นเป็น 1 ถ้าค่าเพิ่มขึ้น speed ก็จะเพิ่มขึ้น ทำให้ความถี่(frequency)ของ sample นั้นสูงขึ้น (เสียงแหลม) ถ้าเป็นค่าติดลบจะเป็นการ play back กลับหลังของ sample นั้น ( reverse)amp: amplitude คือขนาดของสัญญาณเสียง เราสามารถสัมผัสได้ในรูปแบบของความดังเบา ค่ายิ่งเยอะเสียงยิ่งดัง
ADSL envelop
คือการ modify สัญญาณต่อหน่วยเวลา โดยแบ่งเป็น 4 ช่วง Attack, Decay, Sustain, Release

Attack คือช่วงเวลาเริ่มต้นของสัญญาณ เมื่อใช้กับ sample จะมี parameters 2 ตัวattack: ช่วงเวลาของ attack ค่าเริ่มต้น เป็น 0attack_level: คือขนาด amplitude ของสัญญาณในช่วง attack โดยจะเพิ่มขึ้นแบบ linear จาก 0 จนถึง attack level
Decay คือช่วงเวลาที่2 ต่อจาก attack เมื่อใช้กับ sample จะมี parameters 2 ตัวdecay: ช่วงเวลาของ decay ค่าเริ่มต้น เป็น 0decay_level: คือขนาด amplitude ของสัญญาณในช่วง decay โดยจะเพิ่มขึ้นหรือลดลงเป็น linear จาก level ของ attack จนถึง decay level
Sustain คือช่วงเวลาที่3 ต่อจาก decay เมื่อใช้กับ sample จะมี parameters 2 ตัวsustain: ช่วงเวลาของ sustain ค่าเริ่มต้น เป็น -1 คือกำหนดช่วงเวลาให้อัตโนมัติ (auto-stretch)sustain_level: คือขนาด amplitude ของสัญญาณในช่วง sustain โดยจะเพิ่มขึ้นหรือลดลงเป็น linear จาก level ของ decay จนถึง sustain level
Release คือช่วงเวลาที่4 ต่อจาก sustain เมื่อใช้กับ sample จะมี parameter 1 ตัวrelease: ช่วงเวลาของ release ค่าเริ่มต้น เป็น 0 ส่วน level จะลดลงเป็น linear จาก level ของ sustain จนเป็น 0
::: Basic Code :::
adsr = (sample_duration :ambi_glass_rub) / 4live_loop :ADSR douse_bpm 120sample :ambi_glass_rub, attack: adsr, attack_level: 3, decay: adsr, decay_level: 2, sustain: adsr, sustain_level: 1, release: adsrprint adsrsleep 8end
**sample_duration คือ ช่วงเวลาของ sample นั้น หาร (/) 4 เพื่อแบ่งช่วงเวลาเป็น 4 ส่วน
ตัวอย่าง Code ADSR
ยังมีอีกหลาย parameters ให้เล่น เดี๋ยวจะมีมาอีกครับ ขอให้สนุกกับการเขียน code และ sound