สารบัญ:

Arpeggiating Synthesizer (ยุง I): 6 ขั้นตอน
Arpeggiating Synthesizer (ยุง I): 6 ขั้นตอน

วีดีโอ: Arpeggiating Synthesizer (ยุง I): 6 ขั้นตอน

วีดีโอ: Arpeggiating Synthesizer (ยุง I): 6 ขั้นตอน
วีดีโอ: Microkorg Arpeggiator guide 2024, พฤศจิกายน
Anonim
Arpeggiating Synthesizer (ยุงที่ 1)
Arpeggiating Synthesizer (ยุงที่ 1)

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

การตั้งค่า Arduino
การตั้งค่า Arduino
การตั้งค่า Arduino
การตั้งค่า Arduino

ขั้นแรก นำนาโนมาวางบนเขียงหั่นขนมและตั้งค่าพลังของเรา:

  1. วางนาโนบนเขียงหั่นขนม วางตามที่แสดงในภาพด้านบน ควรคร่อมช่องกลางของเขียงหั่นขนม คุณจะต้องวางมันไว้ที่ปลายด้านหนึ่งของเขียงหั่นขนม โดยที่พอร์ต USB หันไปทางนั้น วิธีนี้จะทำให้สายเคเบิลไม่เกะกะเมื่อเราเสียบปลั๊ก หากคุณใช้ Arduino ที่ใหญ่กว่า เช่น Uno หรือ Mega คุณจะไม่ต้องติดตั้งบนเขียงหั่นขนมแน่นอน
  2. เชื่อมต่อรางไฟฟ้ากับ Arduino เชื่อมต่อรางที่เป็นบวก (สีแดง) ของเขียงหั่นขนมของคุณเข้ากับพิน 5V ของ Arduino โดยใช้ลวดหรือสายจัมเปอร์ จากนั้นต่อรางลบ (สีน้ำเงิน) รางใดอันหนึ่งเข้ากับพิน GND ของ Nano ตัวใดตัวหนึ่ง
  3. เชื่อมต่อรางไฟฟ้าเข้าด้วยกัน ในการรับพลังงานตามรางทั้งสองด้านของเขียงหั่นขนม ให้ต่อรางที่ด้านใดด้านหนึ่งของเขียงหั่นขนมเข้าหากันโดยใช้สายจากรางขั้วบวกด้านหนึ่งไปยังรางขั้วบวกอีกด้านหนึ่ง ทำซ้ำกับรางลบ

ขั้นตอนที่ 2: การเพิ่มการควบคุม

การเพิ่มการควบคุม
การเพิ่มการควบคุม

ยุงฉันใช้โพเทนชิโอมิเตอร์ห้าตัวและปุ่มควบคุมสองปุ่ม

โพเทนชิโอมิเตอร์:

  1. วางหม้อบนเขียงหั่นขนม วางหม้อโดยให้หมุดแต่ละอันอยู่ในแถวของตัวเอง
  2. ต่อหม้อเข้ากับรางไฟฟ้า ต่อหมุดด้านซ้ายของแต่ละหม้อ (ถ้าคุณกำลังมองที่ลูกบิด) เข้ากับรางลบอันใดอันหนึ่งบนเขียงหั่นขนม ต่อหมุดด้านขวาของแต่ละหม้อเข้ากับรางด้านบวกของเขียงหั่นขนม
  3. เชื่อมต่อหม้อกับ Arduino เชื่อมต่อพินกลางของแต่ละหม้อเข้ากับพินอะนาล็อกบน Arduino หมุดตรงกลางของหม้อแรกเชื่อมต่อกับ A0 หม้อที่สองกับ A1 และต่อไปเรื่อยๆ โดยหม้อสุดท้ายเชื่อมต่อกับ A4

ปุ่มกด:

  1. วางปุ่มบนเขียงหั่นขนม วางปุ่มกดสองปุ่มไว้บนเขียงหั่นขนมเพื่อให้คร่อมช่องกลาง
  2. เชื่อมต่อด้านบวก ที่ด้านหนึ่งของเขียงหั่นขนม ให้ต่อหมุดของปุ่มกดตัวใดตัวหนึ่งเข้ากับรางบวก
  3. เชื่อมต่อด้านลบ วางตัวต้านทาน 1K ตัวใดตัวหนึ่งบนเขียงหั่นขนมเพื่อให้ปลายด้านหนึ่งเชื่อมต่อกับพินที่ไม่ได้ใช้ของปุ่มกด และอีกด้านหนึ่งของตัวต้านทานเชื่อมต่อกับรางลบ
  4. ปุ่มเชื่อมต่อกับ Arduino ร้อยสายไฟบนแถวที่เชื่อมต่อปุ่มกับรางลบกับพิน D2 ทำเช่นเดียวกันกับปุ่มอื่น แต่เชื่อมต่อกับ D3

ขั้นตอนที่ 3: การเพิ่มผลลัพธ์

การเพิ่มผลลัพธ์
การเพิ่มผลลัพธ์

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

นำ

  1. วาง LED ในพื้นที่ว่างบนเขียงหั่นขนม
  2. ต่อขั้วลบ (สั้น) ของ LED เข้ากับรางลบ
  3. วางตัวต้านทานจำกัดกระแส เชื่อมต่อด้านหนึ่งของตัวต้านทาน 330 โอห์มกับขาบวก (ยาว) ของ LED เชื่อมต่ออีกด้านหนึ่งของตัวต้านทานเพื่อพิน D4 ของ Arduino

เอาต์พุตเสียง

  1. วางเครือข่าย RC สัญญาณเอาท์พุตจาก Arduino มาจากพิน 9 แต่สัญญาณอาจร้อนกว่าลำโพงบางตัวเล็กน้อย เพื่อลดระดับให้ใกล้เคียงกับระดับไลน์ ฉันได้เพิ่มเครือข่าย RC (ตามการออกแบบโดย Notes & Volts) วางตัวเก็บประจุ 33nF และ 100uF พร้อมกับตัวต้านทาน 2K ดังที่แสดงในภาพ/แผนผัง ตรวจสอบให้แน่ใจว่าตัวเก็บประจุอิเล็กโทรไลต์ 100uF เชื่อมต่อกับขั้วที่ถูกต้อง (ขาบวก/ขายาวจะไปที่ขา 9 บน Arduino และขาลบ/ขาสั้นที่เชื่อมต่อกับแจ็ค)
  2. เชื่อมต่อด้านลบของแจ็คเสียงกับกราวด์ การเชื่อมต่อแจ็คเสียงจะแตกต่างกันเล็กน้อยขึ้นอยู่กับประเภทที่คุณใช้ แต่โดยทั่วไปแล้วใช้งานได้เหมือนกันทั้งหมด เราจำเป็นต้องต่อปลอกของแม่แรงกับกราวด์ บางครั้งจะมีเครื่องหมายลบหรือติดป้ายกำกับว่า "ปลอกแขน" "วงแหวน" หรือ "gnd" หากไม่มีป้ายกำกับบนแจ็คเสียงของคุณ คุณอาจต้องอ่านเอกสารข้อมูลหรือเพียงแค่ตรวจสอบแจ็คอย่างละเอียดและดูว่าคุณสามารถระบุพินที่เชื่อมต่อกับปลอกหรือวงแหวนรอบนอกของแจ็คได้หรือไม่
  3. เชื่อมต่อด้านบวกของแจ็คเสียงเข้ากับด้านลบของตัวเก็บประจุ 100uF สัญญาณเสียงของเราตอนนี้ไหลจากพิน 9 ของ Arduino ผ่านเครือข่าย RC และโผล่ออกมาจากด้านลบของตัวเก็บประจุ 100uF เราจะเชื่อมต่อกับด้านบวกของแจ็คเสียงของเรา โดยปกติจะมีเครื่องหมายบวกหรืออาจมีป้ายกำกับว่า "เคล็ดลับ" อีกครั้ง หากไม่มีป้ายกำกับ คุณอาจต้องตรวจสอบเพื่อดูว่าพินตัวใดจะเชื่อมต่อกับปลายแจ็ค นอกจากนี้ หากคุณใช้แจ็คสเตอริโอ อาจมีการเชื่อมต่อปลาย L และปลาย R เนื่องจากเรากำลังส่งสัญญาณโมโน คุณก็สามารถเชื่อมต่อกับปลายสายใดก็ได้

สำคัญ: หากคุณพบว่าเสียงเบาเกินไป คุณอาจสามารถกำจัดเครือข่าย RC ในขั้นตอนที่ 1 และเชื่อมต่อโดยตรงกับเสียงจากพิน 9 ของ Arduino สิ่งนี้น่าจะใช้ได้หากคุณเชื่อมต่อเสียงกับอุปกรณ์พรีแอมป์ เช่น ลำโพงคอมพิวเตอร์ภายนอก ที่คุณมีปุ่มปรับระดับเสียง แต่ฉันไม่แนะนำให้ใช้กับหูฟัง หูฟังเอียร์บัด หรือการเดินสายโดยตรงกับลำโพง หากคุณตัดสินใจที่จะกำจัดเครือข่าย RC ฉันขอแนะนำให้ลดระดับเสียงของลำโพงลงจนสุดก่อนที่จะเริ่มการทำงานของ Arduino จากนั้นค่อยๆ เพิ่มระดับเสียงเพื่อหลีกเลี่ยงไม่ให้ลำโพงของคุณระเบิด

หลังจากที่คุณได้ตั้งค่าทุกอย่างแล้ว ให้ตรวจสอบอีกครั้งว่าการเชื่อมต่อทั้งหมดถูกต้องและตรงกับรูปภาพและแผนผังด้านบน

ขั้นตอนที่ 4: การอัปโหลดรหัส

เมื่อฮาร์ดแวร์ได้รับการตั้งค่าทั้งหมดแล้ว เราก็พร้อมที่จะจัดการกับด้านซอฟต์แวร์:

  1. เปิดตัว Arduino IDE บนคอมพิวเตอร์ของคุณ ให้เปิด Arduino IDE (หากคุณไม่มี คุณสามารถดาวน์โหลดได้จาก
  2. ดาวน์โหลดห้องสมุด Mozzi ไลบรารี Mozzi คือสิ่งที่ช่วยให้เราใช้ Arduino เป็นซินธิไซเซอร์ได้ หากต้องการรับไลบรารีนี้ใน IDE ของคุณ ให้ไปที่หน้า Mozzi github https://sensorium.github.io/Mozzi/download/ คลิกที่ปุ่ม "รหัส" สีเขียวแล้วเลือกดาวน์โหลด ZIP
  3. ติดตั้งไลบรารี Mozzi จากไฟล์ zip ใน Arduino IDE ให้ไปที่ Sketch->Include Library->Add. ZIP Library… ไปที่ไฟล์ zip ที่คุณดาวน์โหลดเพื่อเพิ่ม ตอนนี้คุณควรเห็น Mozzi อยู่ในส่วน Sketch->Include Library
  4. ดาวน์โหลดรหัส Mosquito I Arduino คุณสามารถรับสิ่งนี้ได้จากเว็บไซต์ github ของฉัน https://github.com/analogsketchbook/mosquito_one (โปรดทราบว่าแผนผังยังมีอยู่หากคุณต้องการใช้อ้างอิงในการเดินสาย
  5. เชื่อมต่อ 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 ให้รายละเอียดอย่างละเอียดยิ่งขึ้น

แนะนำ: