สารบัญ:
- ขั้นตอนที่ 1: การตั้งค่า Arduino
- ขั้นตอนที่ 2: การเพิ่มการควบคุม
- ขั้นตอนที่ 3: การเพิ่มผลลัพธ์
- ขั้นตอนที่ 4: การอัปโหลดรหัส
- ขั้นตอนที่ 5: ล้อเล่น
- ขั้นตอนที่ 6: การปรับแต่ง
วีดีโอ: Arpeggiating Synthesizer (ยุง I): 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
Mosquito I เป็นซินธิไซเซอร์อาร์เพจจิเอเตอร์ขนาดเล็กที่ใช้ Arduino Nano และไลบรารีการสังเคราะห์เสียงของ Mozzi มันสามารถเล่นได้มากกว่า 20 ลำดับ 8 ขั้นตอน แต่คุณสามารถเพิ่มลำดับแบบกำหนดเองได้มากเท่าที่คุณต้องการ การติดตั้งค่อนข้างง่ายและไม่ต้องการชิ้นส่วนมากนัก
เสบียง:
- Arduino Nano (หรือ Arduino ใด ๆ ควรใช้งานได้จริง)
- 5 ea โพเทนชิโอมิเตอร์ (10K เชิงเส้น)
- 2 ea ปุ่มกด
- LED 1 ชิ้น
- ตัวต้านทาน 1 ตัว (330 โอห์ม)
- ตัวต้านทาน 2 ตัว (1K)
- ตัวต้านทาน 1 ตัว (2K)
- 1 ea ตัวเก็บประจุด้วยไฟฟ้า (100 uF)
- 1 ea ตัวเก็บประจุเซรามิก (33 nF)
- แจ็คสเตอริโอ 1 ea
- สายเชื่อมต่อ
- เขียงหั่นขนม
ขั้นตอนที่ 1: การตั้งค่า Arduino
ขั้นแรก นำนาโนมาวางบนเขียงหั่นขนมและตั้งค่าพลังของเรา:
- วางนาโนบนเขียงหั่นขนม วางตามที่แสดงในภาพด้านบน ควรคร่อมช่องกลางของเขียงหั่นขนม คุณจะต้องวางมันไว้ที่ปลายด้านหนึ่งของเขียงหั่นขนม โดยที่พอร์ต USB หันไปทางนั้น วิธีนี้จะทำให้สายเคเบิลไม่เกะกะเมื่อเราเสียบปลั๊ก หากคุณใช้ Arduino ที่ใหญ่กว่า เช่น Uno หรือ Mega คุณจะไม่ต้องติดตั้งบนเขียงหั่นขนมแน่นอน
- เชื่อมต่อรางไฟฟ้ากับ Arduino เชื่อมต่อรางที่เป็นบวก (สีแดง) ของเขียงหั่นขนมของคุณเข้ากับพิน 5V ของ Arduino โดยใช้ลวดหรือสายจัมเปอร์ จากนั้นต่อรางลบ (สีน้ำเงิน) รางใดอันหนึ่งเข้ากับพิน GND ของ Nano ตัวใดตัวหนึ่ง
- เชื่อมต่อรางไฟฟ้าเข้าด้วยกัน ในการรับพลังงานตามรางทั้งสองด้านของเขียงหั่นขนม ให้ต่อรางที่ด้านใดด้านหนึ่งของเขียงหั่นขนมเข้าหากันโดยใช้สายจากรางขั้วบวกด้านหนึ่งไปยังรางขั้วบวกอีกด้านหนึ่ง ทำซ้ำกับรางลบ
ขั้นตอนที่ 2: การเพิ่มการควบคุม
ยุงฉันใช้โพเทนชิโอมิเตอร์ห้าตัวและปุ่มควบคุมสองปุ่ม
โพเทนชิโอมิเตอร์:
- วางหม้อบนเขียงหั่นขนม วางหม้อโดยให้หมุดแต่ละอันอยู่ในแถวของตัวเอง
- ต่อหม้อเข้ากับรางไฟฟ้า ต่อหมุดด้านซ้ายของแต่ละหม้อ (ถ้าคุณกำลังมองที่ลูกบิด) เข้ากับรางลบอันใดอันหนึ่งบนเขียงหั่นขนม ต่อหมุดด้านขวาของแต่ละหม้อเข้ากับรางด้านบวกของเขียงหั่นขนม
- เชื่อมต่อหม้อกับ Arduino เชื่อมต่อพินกลางของแต่ละหม้อเข้ากับพินอะนาล็อกบน Arduino หมุดตรงกลางของหม้อแรกเชื่อมต่อกับ A0 หม้อที่สองกับ A1 และต่อไปเรื่อยๆ โดยหม้อสุดท้ายเชื่อมต่อกับ A4
ปุ่มกด:
- วางปุ่มบนเขียงหั่นขนม วางปุ่มกดสองปุ่มไว้บนเขียงหั่นขนมเพื่อให้คร่อมช่องกลาง
- เชื่อมต่อด้านบวก ที่ด้านหนึ่งของเขียงหั่นขนม ให้ต่อหมุดของปุ่มกดตัวใดตัวหนึ่งเข้ากับรางบวก
- เชื่อมต่อด้านลบ วางตัวต้านทาน 1K ตัวใดตัวหนึ่งบนเขียงหั่นขนมเพื่อให้ปลายด้านหนึ่งเชื่อมต่อกับพินที่ไม่ได้ใช้ของปุ่มกด และอีกด้านหนึ่งของตัวต้านทานเชื่อมต่อกับรางลบ
- ปุ่มเชื่อมต่อกับ Arduino ร้อยสายไฟบนแถวที่เชื่อมต่อปุ่มกับรางลบกับพิน D2 ทำเช่นเดียวกันกับปุ่มอื่น แต่เชื่อมต่อกับ D3
ขั้นตอนที่ 3: การเพิ่มผลลัพธ์
เรากำลังส่งสัญญาณเสียงจากพิน 9 และไฟ LED กะพริบในขั้นตอนแรกของทุกลำดับ ต่อไปนี้เป็นวิธีตั้งค่าฮาร์ดแวร์สำหรับสิ่งนั้น
นำ
- วาง LED ในพื้นที่ว่างบนเขียงหั่นขนม
- ต่อขั้วลบ (สั้น) ของ LED เข้ากับรางลบ
- วางตัวต้านทานจำกัดกระแส เชื่อมต่อด้านหนึ่งของตัวต้านทาน 330 โอห์มกับขาบวก (ยาว) ของ LED เชื่อมต่ออีกด้านหนึ่งของตัวต้านทานเพื่อพิน D4 ของ Arduino
เอาต์พุตเสียง
- วางเครือข่าย RC สัญญาณเอาท์พุตจาก Arduino มาจากพิน 9 แต่สัญญาณอาจร้อนกว่าลำโพงบางตัวเล็กน้อย เพื่อลดระดับให้ใกล้เคียงกับระดับไลน์ ฉันได้เพิ่มเครือข่าย RC (ตามการออกแบบโดย Notes & Volts) วางตัวเก็บประจุ 33nF และ 100uF พร้อมกับตัวต้านทาน 2K ดังที่แสดงในภาพ/แผนผัง ตรวจสอบให้แน่ใจว่าตัวเก็บประจุอิเล็กโทรไลต์ 100uF เชื่อมต่อกับขั้วที่ถูกต้อง (ขาบวก/ขายาวจะไปที่ขา 9 บน Arduino และขาลบ/ขาสั้นที่เชื่อมต่อกับแจ็ค)
- เชื่อมต่อด้านลบของแจ็คเสียงกับกราวด์ การเชื่อมต่อแจ็คเสียงจะแตกต่างกันเล็กน้อยขึ้นอยู่กับประเภทที่คุณใช้ แต่โดยทั่วไปแล้วใช้งานได้เหมือนกันทั้งหมด เราจำเป็นต้องต่อปลอกของแม่แรงกับกราวด์ บางครั้งจะมีเครื่องหมายลบหรือติดป้ายกำกับว่า "ปลอกแขน" "วงแหวน" หรือ "gnd" หากไม่มีป้ายกำกับบนแจ็คเสียงของคุณ คุณอาจต้องอ่านเอกสารข้อมูลหรือเพียงแค่ตรวจสอบแจ็คอย่างละเอียดและดูว่าคุณสามารถระบุพินที่เชื่อมต่อกับปลอกหรือวงแหวนรอบนอกของแจ็คได้หรือไม่
- เชื่อมต่อด้านบวกของแจ็คเสียงเข้ากับด้านลบของตัวเก็บประจุ 100uF สัญญาณเสียงของเราตอนนี้ไหลจากพิน 9 ของ Arduino ผ่านเครือข่าย RC และโผล่ออกมาจากด้านลบของตัวเก็บประจุ 100uF เราจะเชื่อมต่อกับด้านบวกของแจ็คเสียงของเรา โดยปกติจะมีเครื่องหมายบวกหรืออาจมีป้ายกำกับว่า "เคล็ดลับ" อีกครั้ง หากไม่มีป้ายกำกับ คุณอาจต้องตรวจสอบเพื่อดูว่าพินตัวใดจะเชื่อมต่อกับปลายแจ็ค นอกจากนี้ หากคุณใช้แจ็คสเตอริโอ อาจมีการเชื่อมต่อปลาย L และปลาย R เนื่องจากเรากำลังส่งสัญญาณโมโน คุณก็สามารถเชื่อมต่อกับปลายสายใดก็ได้
สำคัญ: หากคุณพบว่าเสียงเบาเกินไป คุณอาจสามารถกำจัดเครือข่าย RC ในขั้นตอนที่ 1 และเชื่อมต่อโดยตรงกับเสียงจากพิน 9 ของ Arduino สิ่งนี้น่าจะใช้ได้หากคุณเชื่อมต่อเสียงกับอุปกรณ์พรีแอมป์ เช่น ลำโพงคอมพิวเตอร์ภายนอก ที่คุณมีปุ่มปรับระดับเสียง แต่ฉันไม่แนะนำให้ใช้กับหูฟัง หูฟังเอียร์บัด หรือการเดินสายโดยตรงกับลำโพง หากคุณตัดสินใจที่จะกำจัดเครือข่าย RC ฉันขอแนะนำให้ลดระดับเสียงของลำโพงลงจนสุดก่อนที่จะเริ่มการทำงานของ Arduino จากนั้นค่อยๆ เพิ่มระดับเสียงเพื่อหลีกเลี่ยงไม่ให้ลำโพงของคุณระเบิด
หลังจากที่คุณได้ตั้งค่าทุกอย่างแล้ว ให้ตรวจสอบอีกครั้งว่าการเชื่อมต่อทั้งหมดถูกต้องและตรงกับรูปภาพและแผนผังด้านบน
ขั้นตอนที่ 4: การอัปโหลดรหัส
เมื่อฮาร์ดแวร์ได้รับการตั้งค่าทั้งหมดแล้ว เราก็พร้อมที่จะจัดการกับด้านซอฟต์แวร์:
- เปิดตัว Arduino IDE บนคอมพิวเตอร์ของคุณ ให้เปิด Arduino IDE (หากคุณไม่มี คุณสามารถดาวน์โหลดได้จาก
- ดาวน์โหลดห้องสมุด Mozzi ไลบรารี Mozzi คือสิ่งที่ช่วยให้เราใช้ Arduino เป็นซินธิไซเซอร์ได้ หากต้องการรับไลบรารีนี้ใน IDE ของคุณ ให้ไปที่หน้า Mozzi github https://sensorium.github.io/Mozzi/download/ คลิกที่ปุ่ม "รหัส" สีเขียวแล้วเลือกดาวน์โหลด ZIP
- ติดตั้งไลบรารี Mozzi จากไฟล์ zip ใน Arduino IDE ให้ไปที่ Sketch->Include Library->Add. ZIP Library… ไปที่ไฟล์ zip ที่คุณดาวน์โหลดเพื่อเพิ่ม ตอนนี้คุณควรเห็น Mozzi อยู่ในส่วน Sketch->Include Library
- ดาวน์โหลดรหัส Mosquito I Arduino คุณสามารถรับสิ่งนี้ได้จากเว็บไซต์ github ของฉัน https://github.com/analogsketchbook/mosquito_one (โปรดทราบว่าแผนผังยังมีอยู่หากคุณต้องการใช้อ้างอิงในการเดินสาย
- เชื่อมต่อ Arduino กับคอมพิวเตอร์และอัปโหลดรหัส
ขั้นตอนที่ 5: ล้อเล่น
แค่นั้นแหละ. คุณควรจะสามารถเชื่อมต่อลำโพงของคุณกับแจ็คเสียงและได้ยินเสียงอันไพเราะของการสังเคราะห์อาร์เพจจิเอตจาก ittybitty Nano นั้นได้! หากคุณไม่ได้ยินอะไรเลยในตอนแรก ให้ลองวางลูกบิดตรงกลางหม้อทั้งหมดเพื่อให้แน่ใจว่าคุณได้รับค่าเริ่มต้นที่เหมาะสม
นี่คือสิ่งที่ตัวควบคุมทำ:
กระถาง:
อัตรา: สิ่งนี้ควบคุมความเร็วในการเล่นซีเควนเซอร์ การเปิดเล่นโน้ตแบบไม่ต่อเนื่องตามลำดับ การเพิ่มระดับขึ้นไปจะทำให้โน้ตต่างๆ เลอะกันเพื่อสร้างรูปคลื่นใหม่ทั้งหมด
Legato: หม้อที่สองควบคุมความยาวเลกาโตหรือโน้ต การหมุนไปทางซ้ายมากขึ้นจะทำให้โน้ตสั้นและจดจ่อ ขณะที่หมุนไปทางขวาจะสร้างโน้ตที่ยาวขึ้น
ระดับเสียง: กำหนดระดับเสียงพื้นฐานสำหรับลำดับ การควบคุมระดับเสียงกำลังตั้งค่า MIDI ดังนั้นจึงเพิ่ม/ลดระดับเสียงเป็นกึ่งเสียงแทนการเปลี่ยนระดับเสียงต่อเนื่อง
เฟส: การหมุนปุ่มนี้ไปทางขวาจะทำให้เกิดเอฟเฟกต์เฟสที่ละเอียดอ่อน ในทางเทคนิค นี่ทำให้ออสซิลเลเตอร์สองตัวใน Mosquito I detuned เล็กน้อยซึ่งเป็นสาเหตุของการหยุดชั่วคราว อย่างไรก็ตาม ไม่ใช่การติดตามด้วยระดับเสียง ดังนั้นเอฟเฟกต์การเว้นระยะน่าจะสังเกตเห็นได้ชัดเจนกว่าในโน้ตระดับเสียงต่ำ
ตัวกรอง: ปุ่มนี้ควบคุมความถี่ตัดของตัวกรองความถี่ต่ำ การหมุนไปทางซ้ายจะเป็นการตัดความถี่สูงซึ่งทำให้เกิดเสียงอู้อี้มากขึ้น ขณะที่หมุนไปทางขวาจะให้เสียงที่สว่างขึ้น
ปุ่ม:
ยุงมีซีเควนซ์ต่างๆ มากกว่า 20 แบบที่สามารถเล่นได้โดยค่าเริ่มต้น ปุ่มกดช่วยให้คุณเลือกได้ว่ากำลังเล่นลำดับใด ปุ่มหนึ่งจะย้ายคุณขึ้นรายการลำดับและอีกปุ่มหนึ่งเลื่อนลงในรายการ
ขั้นตอนที่ 6: การปรับแต่ง
ฉันได้เพิ่มลำดับเริ่มต้นจำนวนมาก ซึ่งส่วนใหญ่เป็นมาตราส่วนที่แตกต่างกัน แต่คุณสามารถปรับแต่งโค้ดได้อย่างง่ายดายเพื่อเปลี่ยนลำดับของโน้ตที่กำลังเล่น เพิ่มใหม่ หรือเปลี่ยนจำนวนโน้ตในลำดับ ด้านล่างนี้คือรายละเอียดวิธีการดำเนินการในกรณีที่คุณต้องการปรับแต่ง
การเปลี่ยนแปลงหมายเหตุในลำดับที่มีอยู่
ลำดับจะถูกเก็บไว้ในอาร์เรย์ของอาร์เรย์ที่เรียกว่า NOTES บันทึกย่อแต่ละรายการจะถูกจัดเก็บเป็นค่าบันทึกย่อ MIDI ดังนั้นหากคุณต้องการเปลี่ยนบันทึกย่อในลำดับเฉพาะ ให้เปลี่ยนหมายเลขบันทึกย่อ MIDI สำหรับลำดับนั้น การตั้งค่าเริ่มต้นคือการเล่น 8 ขั้นตอนต่อลำดับ ดังนั้นคุณสามารถมีค่า MIDI ได้ 8 ค่าในลำดับเท่านั้น (ดูด้านล่างหากคุณต้องการมีความยาวของลำดับต่างกัน)
สิ่งหนึ่งที่ควรทราบคือ ปุ่มระดับเสียงจะเพิ่มการชดเชยบันทึกย่อให้กับค่า MIDI ที่ระบุในอาร์เรย์ NOTES เมื่อปุ่มอยู่ตรงกลาง ปุ่มจะเล่นโน้ต MIDI ที่ระบุในอาร์เรย์ แต่เมื่อคุณหมุนปุ่มระดับเสียง จะเพิ่มหรือลบเสียงกึ่งเสียงของโน้ตที่กำลังเล่น
การเพิ่มลำดับใหม่
คุณสามารถเพิ่มลำดับใหม่ให้กับอาร์เรย์ NOTES ได้โดยการเพิ่มอาร์เรย์ 8-note ใหม่ที่ท้ายรายการ หากคุณทำเช่นนี้ คุณจะต้องเปลี่ยนค่าของตัวแปร numSequences เพื่อให้ตรงกับจำนวนลำดับใหม่ ตัวอย่างเช่น อาร์เรย์ NOTES มี 21 ลำดับโดยค่าเริ่มต้น ดังนั้นตัวแปร numSequences จะถูกตั้งค่าเป็น 21 หากคุณเพิ่มลำดับใหม่หนึ่งรายการ คุณจะต้องเปลี่ยนตัวแปร numSequences เป็น 22
คุณสามารถเพิ่มลำดับใหม่ได้มากเท่าที่คุณต้องการ
การเปลี่ยนความยาวของลำดับ
หากคุณต้องการเปลี่ยนความยาวของลำดับของคุณ (ถ้าคุณต้องการพูดลำดับ 4 ขั้นตอนหรือ 16 ขั้นตอน) คุณสามารถทำได้ แต่ข้อแม้เพียงอย่างเดียวคือลำดับทั้งหมดต้องมีความยาวเท่ากัน คุณจะต้องตั้งค่าตัวแปร numNotes ให้ตรงกับความยาวของลำดับด้วย
การเปลี่ยนแปลงอื่นๆ
มีการปรับแต่งอื่นๆ อีกหลายอย่างที่เป็นไปได้ เช่น การสลับประเภทของรูปคลื่น การตั้งค่า/ค่าตัวกรอง ซึ่งอยู่นอกเหนือขอบเขตของบทช่วยสอนนี้ การหารหัส Mozzi อาจค่อนข้างท้าทายในตอนแรก แต่ฉันพยายามบันทึกรหัสให้มากที่สุดเพื่อแสดงให้เห็นว่าส่วนต่างๆ ของรหัสนั้นกำลังทำอะไรอยู่
โค้ด Mozzi มีส่วนหลักๆ สองสามส่วนซึ่งมีการใช้งานที่ค่อนข้างเฉพาะ และฉันได้แสดงรายการไว้ด้านล่างเพื่อให้คุณและแนวคิดว่าใช้สำหรับทำอะไร:
- setup() - หากคุณได้ตั้งโปรแกรมสำหรับ Arduinos ก่อนที่คุณจะคุ้นเคยกับฟังก์ชันนี้ และมันค่อนข้างจะใช้เหมือนกันใน Mozzi ส่วนใหญ่เราใช้การตั้งค่าเริ่มต้นสำหรับออสซิลเลเตอร์ ฟิลเตอร์ ฯลฯ
- updateControl() - นี่คือส่วนสำคัญของรหัส Mozzi ที่กำลังทำงานอยู่ เป็นที่ที่เราอ่านค่าพ็อตและปุ่ม แมปและแปลงค่าเหล่านั้นเพื่อป้อนเข้าสู่ซินธิไซเซอร์ และตำแหน่งที่ทำการจัดลำดับ
- updateAudio() - นี่คือผลลัพธ์สุดท้ายจากไลบรารี Mozzi โดยทั่วไปแล้วโค้ดในที่นี้จะถูกเก็บไว้ที่เล็กมากและเป็นแบบลีนเนื่องจากฟังก์ชันนี้ถูกใช้โดย Mozzi เพื่อเพิ่มรอบสัญญาณนาฬิกาทั้งหมดให้สูงสุด ดังที่คุณเห็นในรหัสยุง มันอาจจะคลุมเครือเล็กน้อย แต่สิ่งที่เราทำโดยทั่วไปคือการรวม/คูณรูปคลื่นต่างๆ ของเรา จากนั้นจึงเปลี่ยนบิตเพื่อให้พอดีกับช่วงตัวเลขเฉพาะ เป็นการดีที่สุดที่จะให้ฟังก์ชันนี้เบามาก (ไม่ใช่การเรียกแบบอนุกรมหรือพินการอ่าน) และใส่ข้อมูลส่วนใหญ่ไว้ในฟังก์ชัน controlUpdate() แทน เอกสารประกอบของ Mozzi ให้รายละเอียดอย่างละเอียดยิ่งขึ้น
แนะนำ:
การติดตั้งโบรกเกอร์ MQTT (ยุง) บน Windows: 7 ขั้นตอน
การติดตั้ง MQTT Broker (ยุง) บน Windows: โบรกเกอร์คืออะไร? โบรกเกอร์ MQTT คือศูนย์การจัดการข้อมูลหรือที่เรียกกันทั่วไปว่า "เซิร์ฟเวอร์" โบรกเกอร์ Mosquitto มีหน้าที่จัดการข้อความทั้งหมด กรองข้อความ ตัดสินใจว่าใครสนใจข้อความเหล่านั้น จากนั้นจึงเผยแพร่
แหล่งจ่ายไฟ Synthesizer แบบแยกส่วน: 10 ขั้นตอน (พร้อมรูปภาพ)
แหล่งจ่ายไฟ Synthesizer แบบแยกส่วน: หากคุณกำลังสร้างเครื่องสังเคราะห์เสียงแบบแยกส่วน สิ่งหนึ่งที่คุณต้องการอย่างแน่นอนคือแหล่งจ่ายไฟ เครื่องสังเคราะห์เสียงแบบแยกส่วนส่วนใหญ่ต้องการระบบรางคู่ (0V, +12V และ -12V ตามปกติ) และการมีราง 5V ก็มีประโยชน์เช่นกันหากคุณกำลังวางแผน
Wii Nunchuck Synthesizer: 4 ขั้นตอน
Wii Nunchuck Synthesizer: The World of Wii Music:ในที่สุดฉันก็ตัดสินใจรวมความรักในเสียงเพลงเข้ากับประสบการณ์การเขียนโปรแกรมเล็กน้อยที่ฉันได้รับในช่วงไม่กี่ปีที่ผ่านมา ฉันสนใจที่จะสร้างเครื่องดนตรีของตัวเองตั้งแต่ได้เห็นการบรรยายของท็อด มาโช
ESP8266 Control Servo Node-RED MQTT (ยุง) IoT: 6 ขั้นตอน
ESP8266 Control Servo Node-RED MQTT (Mosquitto) IoT: คราวนี้มีการรวม ESP8266 และแพลตฟอร์ม Node-RED เข้าด้วยกัน ซึ่งในกรณีนี้คือเซอร์โวที่ควบคุมโดย PWM โดยมีการหมุนตั้งแต่ 0 ถึง 180 องศา จากผู้สร้างเว็บ HMI หรือ SCADA บน Node-Red-Dashboard โดยใช้เป็นฐาน
บทช่วยสอน ESP8266 และ Node-RED MQTT GPIO (ยุง) # 1: 5 ขั้นตอน
บทช่วยสอน ESP8266 และ Node-RED MQTT GPIO (Mosquitto) # 1: เพื่อรวมโมดูล ESP8266 กับแพลตฟอร์ม IoT โหนดสีแดง โปรโตคอล MQTT มีไลบรารีไคลเอนต์สำหรับ esp8266 เป็น MQTT ในกรณีนี้ ฉันตัดสินใจใช้ไลบรารี pubsubclient ตัวอย่างนี้จะได้รับ Node Red ที่รับข้อมูลจาก