» เครื่องดนตรี » synthesizer สี่เสียงบน Arduino Uno

ซินธิไซเซอร์สี่เสียงบน Arduino Uno



ผู้เขียน Instructables ภายใต้ชื่อเล่น rgco ได้สร้างซินธิไซเซอร์สี่ระดับเสียงสี่ระดับ Arduino Uno สำหรับการเปรียบเทียบซินธิไซเซอร์สำหรับเด็กที่แพร่หลายซึ่งแตกต่างจากการออกแบบและสร้างโดยชิปตัวเดียวกันนั้นเป็นเสียงสามเสียง จริงพวกเขาสามารถเล่นดนตรีโดยอัตโนมัติตามจังหวะจดจำท่วงทำนองด้วยเสียงเดียวและเลียนแบบเสียงสัตว์ แต่แล้ว สินค้าทำที่บ้าน เสียงดีกว่า ทำไม?



ทุกอย่างเกี่ยวกับพารามิเตอร์ ความถี่ในการสุ่มตัวอย่าง 31 kHz, 9 บิต, 4 เสียง, การสังเคราะห์เอฟเอ็มพร้อมด้วยการกวาดเวลาที่แตกต่างกัน, ซอง ADSR, 12 เครื่องมือเสมือน, 18 คีย์ที่ประกอบไปด้วย 1.5 อ็อกเทฟ

ต้นแบบประกอบด้วยวงจรซินธิไซเซอร์ใน Fritzing:



ในนั้นมันจำลองตำแหน่งของส่วนประกอบบนเขียงหั่นขนมประเภทเขียงหั่นขนมและการเชื่อมต่อระหว่างพวกเขา:



และรวบรวมรูปแบบในชีวิตจริง:



เพียงแค่“ เทและใช้” เป็นสิ่งที่ง่ายที่สุดที่คุณสามารถทำได้กับการออกแบบ 18 คีย์ (จากก่อนที่คู่ที่สี่ถึง FA ห้า) - เพื่อเล่นสิบเก้าสลับเครื่องดนตรีเสมือนในแหวน: เปียโน, ระนาด, กีตาร์, ฉิ่ง, ระฆัง, ขี้ขลาด, vibrato, โลหะ, ไวโอลิน, ทรัมเป็ต, หีบเพลง ลักษณะของเสียงนั้นได้รับผลกระทบตามระยะเวลาของการกดแป้น แต่ไม่ใช่ความพยายามซึ่งต่างจากซินธิไซเซอร์ระดับมืออาชีพ แต่ผู้พัฒนาต้องการให้คุณลองเขียนโปรแกรมเครื่องมือเสมือนของคุณด้วย แต่ละคนจะได้รับจากสิบพารามิเตอร์ ตัวช่วยสร้างจะบอกคุณว่าพารามิเตอร์นั้นขึ้นอยู่กับอะไร

ldness - ปริมาณ

หากพารามิเตอร์นี้น้อยกว่า 64 จะไม่รวมการโอเวอร์โหลดและการบิดเบือนที่เกี่ยวข้อง แต่ถ้าคุณตั้งโปรแกรมอุปกรณ์เสมือนดังกล่าวที่ไม่ส่งเสียงที่ระดับความดังสูงสุดเป็นเวลานานค่าของพารามิเตอร์นี้อาจเกิน 64 เนื่องจากเสียงทั้งสี่เสียงพร้อมกันไม่บ่อยนัก

pitch0 - การเปลี่ยนระดับเสียง

ช่วงสอดคล้องกับข้างต้นถ้าคุณตั้งค่าพารามิเตอร์นี้เป็น 12 ลดการย้ายลงเพิ่มขึ้น ศูนย์สอดคล้องกับการเลื่อนลงหนึ่งคู่แปดเท่าและ 24 ขึ้นไปหนึ่งคู่

ADSR_a - อัตราการฆ่าปริมาณจากศูนย์ถึงสูงสุด

ยิ่งเล็กลงก็ยิ่งช้าตัวอย่างเช่น 8192 สอดคล้องกับ 4 ms, 256 ถึง 128 ms

ADSR_d - ความเร็วในการลดปริมาณจากค่าสูงสุดเป็นค่าที่ระบุโดยพารามิเตอร์ ADSR_s

หลักการเดียวกัน

ADSR_s - ค่าที่ปริมาณลดลงเมื่อกดปุ่มเป็นเวลานาน

ตัวอย่างเช่น 256 - ปริมาณยังคงสูงสุดตลอดเวลาในขณะที่ถือกุญแจ 192 - ระดับเสียงลดลงถึง 80 เปอร์เซ็นต์และยังคงอยู่ในขณะที่กดปุ่มค้างไว้ 0 - ระดับเสียงจะลดลงเป็นศูนย์แม้ว่าจะกดปุ่มค้างไว้ก็ตาม

ADSR_r - ความเร็วในการลดระดับเสียงเป็นศูนย์หลังจากปล่อยคีย์

หลักการเหมือนกับพารามิเตอร์ ADSR_a และ ADSR_d

FM_inc - อัตราส่วนของความถี่มอดูเลตต่อเสียง

ด้วยค่า 256 อัตราส่วนนี้จะกลายเป็น 1: 1 โดยมี 512 - 2: 1 โดยมี 128 - 1: 2 ส่วนที่เหลือจะเป็นแบบอะนาล็อก หากพารามิเตอร์นี้ถูกตั้งค่าเป็นทวีคูณของ 64 เสียงจะไม่เป็นอันตราย

FM_a1 - ช่วงของการปรับความถี่ที่จุดเริ่มต้นของโน้ต

256 สอดคล้องกับช่วงฮาร์โมนิกที่หลากหลาย ด้วยการลดลงของโทนเสียงที่สะอาดยิ่งขึ้นด้วยการเพิ่มความกลมกลืนของเสียงจะยิ่งมากขึ้น

FM_a2 - การปรับความถี่การกวาดเมื่อสิ้นสุดโน้ต

หลักการเดียวกัน สำหรับเครื่องดนตรีจริงส่วนใหญ่ฮาร์มอนิกจะสลายตัวเร็วกว่าน้ำเสียงพื้นฐาน หากคุณทำตรงกันข้ามคุณจะได้รับเสียงที่ผิดปกติ

FM_dec - ความเร็วการเปลี่ยนแปลงของช่วงการปรับความถี่จากชุดที่ตั้งไว้โดย FM_a1 เป็นชุดที่กำหนดโดย FM_a2

หลักการเหมือนกับพารามิเตอร์ ADSR_a, ADSR_d และ ADSR_r

ความถี่ PWM ที่ 31,250 Hz นั้นได้มาจากการหารความถี่สัญญาณนาฬิกา (16 MHz) ด้วย 512 โปรแกรมได้รับการออกแบบในลักษณะที่เหตุการณ์เชื่อมโยงกับเวลาโดยไม่มีการขัดจังหวะ บิตที่เกี่ยวข้องกับตัวจับเวลา เพื่อให้โปรแกรมจัดการทำทุกอย่างที่จำเป็นต้องใช้เฉพาะจำนวนเต็ม 8 และ 16 บิตที่มีความยาว คลื่นไซน์ถูกนำเสนอในรูปแบบของตารางจำนวน 8 บิต การดำเนินงานเสริม - การอ่านสถานะคีย์การเปลี่ยนเครื่องมือเสมือนการเลือกเสียงการคำนวณพารามิเตอร์บันทึกย่อที่เปลี่ยนแปลงเวลา - มีการกระจายใน 15 ขั้นตอนซึ่งใช้เวลา 0.48 มิลลิวินาทีในการดำเนินการให้เสร็จสมบูรณ์ ในเวลานี้การดำเนินการบางอย่างดำเนินการด้วยความแม่นยำ 32 บิตซึ่งจำเป็นต้องคูณเลขฐานสอง 16 บิตสองรายการ

คลื่นไซน์เรียบง่ายฟังดูน่าเบื่อเพราะไม่มีฮาร์โมนิกส์ในสเปกตรัม การสังเคราะห์ FM ช่วยให้คุณสามารถรับและเปลี่ยนคลื่นความถี่ได้ตลอดเวลาจำลองเสียงเครื่องดนตรีจริง ความถี่ที่หลากหลายให้เสียง anharmonic ที่เกิดขึ้นเช่นในระฆัง อุปกรณ์เลียนแบบการเปลี่ยนแปลงของคลื่นความถี่ในเครื่องดนตรีจริงเมื่อเวลาผ่านไปเมื่อเสียงประสานบางตัวสลายตัวเร็วกว่าตัวอื่น ๆ
10
9.3
8.4

เพิ่มความคิดเห็น

    • รอยยิ้มรอยยิ้มxaxaตกลงdontknowyahooNea
      นายรอยขีดข่วนคนโง่ใช่ใช่ใช่ก้าวร้าวลับ
      ขอโทษเต้นdance2dance3ให้อภัยช่วยเหลือเครื่องดื่ม
      หยุดเพื่อนดีgoodgoodนกหวีดหน้ามืดตามัวลิ้น
      ควันการตบมือเครย์ประกาศเป็นขี้ปากดอน t_mentionดาวน์โหลด
      ความร้อนโมโหlaugh1ภาคตะวันออกเฉียงเหนือประชุมmoskingเชิงลบ
      not_iข้าวโพดคั่วลงโทษอ่านทำให้ตกใจกลัวค้นหา
      ยั่วยุthank_youนี้to_clueumnikรุนแรงเห็นด้วย
      ไม่ดีbeeeblack_eyeblum3หน้าแดงโม้ความเบื่อ
      เซ็นเซอร์การหยอกล้อsecret2ขู่ชัยชนะYusun_bespectacled
      shokrespektฮ่า ๆprevedยินดีต้อนรับkrutoyya_za
      ya_dobryiผู้ช่วยne_huliganne_othodiFLUDห้ามใกล้
1 คิดเห็น
kiril_vihrov7892
โครงการที่น่าสนใจ
เมื่อเร็ว ๆ นี้ฉันเห็นโปรเจ็กต์ "ซินธิไซเซอร์บน Arduino" เป็นปุ่มแป้นเกือบทั้งหมดใช้
จากรายละเอียดของ Arduino ทั้งหมด, ลำโพงและคอมพิวเตอร์
แอปพลิเคชั่นพีซีทำงานได้ทุกอย่างมันควบคุม Arduino ผ่านพอร์ต com
ทำซ้ำทุกอย่างทำงานได้ดี ดูสามารถช่วย

เราแนะนำให้คุณอ่าน:

มอบให้กับสมาร์ทโฟน ...