[Print][Back] |
จุฬาลงกรณ์มหาวิทยาลัย คณะวิศวกรรมศาสตร์ ภาควิชาวิศวกรรมคอมพิวเตอร์ 2110262 Microprocessor Systems Lab. |
ชื่อ ______________________________ เลขประจำตัว ________________________ หมายเลขเครื่อง ______________________ วันที่ ______________________________ |
4. การสร้างเสียงเพลงด้วยวิธีการ Direct Synthesis |
วัตถุประสงค์
อุปกรณ์ที่แจกให้
ทฤษฎีที่เกี่ยวข้อง/อ้างอิง
จากการศึกษาในวิชาฟิสิกส์ เราสามารถสรุปได้ว่าเสียงเกิดจากการสั่นสะเทือนของวัตถุ เสียงดนตรีก็เช่นเดียวกัน โน้ตดนตรีที่มีการแบ่งเป็นตัวโน้ตต่างๆ เกิดจากการสั่นสะเทือนที่ความถี่ที่แตกต่างกัน เครื่องดนตรีต่างชนิดกันจะมีความถี่มูลฐานเดียวกันเมื่อเล่นตัวโน้ตเดียวกัน (ดังแสดงในตาราง) ส่วนคุณภาพหรือความไพเราะของเสียงขึ้นอยู่กับค่า Harmonic ของเครื่องดนตรีแต่ละชนิด
ตัวโน้ต |
ความถี่(Hz) |
C |
261.63 |
D |
293.67 |
E |
329.63 |
F |
349.23 |
G |
392.00 |
A |
440.00 |
B |
493.89 |
C' |
523.26 |
ในการสังเคราะห์เสียงดนตรีสามารถทำได้โดยการสร้างสัญญาณเพื่อให้ Speaker สั่นสะเทือนด้วยสัญญาณความถี่มูลฐานของโน้ตดนตรีที่ต้องการ ซึ่งวิธีการที่ง่ายที่สุดคือการสร้างสัญญาณ Square Wave ออกมายัง Speaker ให้มีความถี่ต่างๆ ตามตัวโน้ตที่ต้องการ ในที่นี้เราจะใช้ Speaker ราคาถูกซึ่งหาซื้อได้ทั่วไปความต้านทานภายในระหว่าง 8-10 Ohm หากเราขับ Speaker ด้วย Square Wave ก็จะได้กำลังประมาณ 0.78 W (จาก V2/R) ซึ่งเป็นกำลังที่ต่ำมาก แต่ก็เพียงพอที่จะให้เราได้ยินเสียงได้ ในการต่อ Speaker เข้ากับวงจรเราควรจะต้องมี Transistor ช่วยขยายกระแสหรือเป็น Buffer สำหรับป้องกัน Microcontroller ให้เรา ดังภาพวงจรที่ดีที่สุดคือวงจรทางขวามือเพราะมี Transistor สำหรับช่วย Pull UP และ Pull Down
ทั้งนี้เพื่อเป็นการประหยัดอุปกรณ์ในปฏิบัติการจึงอนุโลมให้นิสิตต่อ Speaker เข้ากับ Port โดยตรง ทั้งนี้ให้เลือกใช้ Port ที่มีลักษณะเป็น Open Collector ด้วยเพื่อให้สามารถรับกระแสที่สูงขึ้นได้
การทดลอง
3 |
1 |
ความยาว (ระหว่าง 0-1) |
โน้ต (0-F) |
แต่ละ Byte จะบอกถึงความยาวของโน้ต และ ตัวโน้ตที่ต้องให้ระบบเล่น โดย Hi Order ขนาด 4 บิตจะใช้บอกความยาว ทั้งนี้ 0 คือ ประมาณ 0.5 วินาที และ 1 คือ 1 วินาทีตามลำดับ และ Low Order ขนาด 4 บิต จะใช้บอกตัวโน้ต ดังแสดงในตาราง ทั้งนี้เมื่อข้อมูลที่อ่านจาก ROM เป็น 0?Fh ให้หยุดเล่น
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
เงียบ |
C |
D |
E |
F |
G |
A |
B |
C |
D |
E |
F |
หยุดเล่น / จบเพลง |
ตัวอย่าง
11 12 13 0F จะเล่นตัวโน้ต C D และ E ตามลำดับ ตัวโน้ตละประมาณ 1 วินาที
(ให้นิสิตแสดงการทดสอบโดยบันทึกโน้ตเพลงมหาจุฬาลงกรณ์ 1 วรรคลงใน ROM)
Hint: นิสิตอาจใช้ PWM ช่วยในการสร้างสัญญาณที่ความถี่ที่ต้องการก็ได้
[Print][Back] |