สารบัญ:

Arduino MIDI Controller สำหรับ Aalto: 7 ขั้นตอน
Arduino MIDI Controller สำหรับ Aalto: 7 ขั้นตอน

วีดีโอ: Arduino MIDI Controller สำหรับ Aalto: 7 ขั้นตอน

วีดีโอ: Arduino MIDI Controller สำหรับ Aalto: 7 ขั้นตอน
วีดีโอ: DIY Arduino Smart MIDI Controller - Never Play a Wrong Note 2024, กรกฎาคม
Anonim
Arduino MIDI Controller สำหรับ Aalto
Arduino MIDI Controller สำหรับ Aalto

ในฐานะนักดนตรีสมัครเล่น ฉันมักจะเปลี่ยนจาก Analog Synths เป็น VST

เมื่อฉันอยู่ในอารมณ์ "VST" ฉันกลายเป็นเครื่องดนตรีที่น่าอัศจรรย์อย่างหนึ่ง: Aalto VST ของ Madronalab

VST ที่น่าทึ่งนี้มีความยืดหยุ่นสูง ให้เสียงที่ดีมาก และใช้งานง่ายในราคาที่สมเหตุสมผล

อย่างไรก็ตาม ข้อจำกัดของ VST ของฉันคือ ฉันไม่สามารถแตะส่วนควบคุมได้จริงๆ และฉันต้องใช้เมาส์/แทร็กแพดขณะติดขัด ซึ่งไม่ใช่สิ่งที่ดีที่สุด ฉันเป็นเจ้าของตัวควบคุม MIDI แต่ปุ่มหมุนไม่ได้สะท้อนถึงอินเทอร์เฟซ Aalto จริง

ในทางกลับกัน ด้วยซินธิไซเซอร์แบบแยกส่วนหรือกึ่งโมดูลาร์ คุณไม่สามารถบันทึกแพตช์ของคุณได้จริงๆ ซึ่งทำให้ฉันรู้สึกหงุดหงิดเล็กน้อย

ดังนั้นฉันจึงต้องการสร้างตัวควบคุม MIDI แบบกำหนดเองสำหรับ Aalto ด้วยการออกแบบที่สะท้อนถึงอินเทอร์เฟซของ Aalto เพื่อควบคุมสิ่งที่เกี่ยวข้องมากที่สุด

ติดตามฉันบน Instagram เพื่อดูวิดีโอเพิ่มเติมเกี่ยวกับกระบวนการ: weirdest.worry

ฉันบน Spotify:

เสบียง

- 1 Arduino Mega- 14 Potentiometers (ฉันใช้พวกมัน -> PTV09A-4020F-B103) - เขียงหั่นขนมสำหรับต้นแบบ - ฉันขอแนะนำ Electro Cookie perfboard ซึ่งดีมากสำหรับการบัดกรี (อันสีน้ำเงินในภาพ) - ไม้อัด - การบัดกรี เหล็ก - เทปทองแดง - สายกระโดด

ขั้นตอนที่ 1: ออกแบบของคุณเอง

ออกแบบของคุณเอง
ออกแบบของคุณเอง
ออกแบบของคุณเอง
ออกแบบของคุณเอง
ออกแบบของคุณเอง
ออกแบบของคุณเอง
ออกแบบของคุณเอง
ออกแบบของคุณเอง

เริ่มจากอินเทอร์เฟซของ VST ฉันต้องการวางโครงร่างเลย์เอาต์ด้วยกระดาษเพื่อหาแบบที่ลงตัว

ฉันได้ออกแบบสิ่งนั้นด้วยซอฟต์แวร์ พิมพ์ออกมา และติดมันกับต้นแบบกระดาษแข็งเพื่อดูว่าเลย์เอาต์นั้นใช้งานได้จริงหรือไม่

ขั้นตอนนี้ขึ้นอยู่กับคุณจริงๆ - คุณสามารถออกแบบสำหรับกล่องดีบุกหรือกล่องไม้ขีดไฟ คำแนะนำของฉันคือการสร้างต้นแบบให้มากที่สุด

การทำกล่องไม้อัดให้เข้ากับแผงอิเล็กทรอนิกส์และการใช้แผ่นไม้อัดนั้นไม่ใช่สิ่งที่แม่นยำที่สุดเท่าที่เคยมีมา ยิ่งคุณทดสอบมากเท่าไหร่ก็ยิ่งดีเท่านั้น

ขั้นตอนที่ 2: การบัดกรีและการเดินสาย

บัดกรีและเดินสายไฟ
บัดกรีและเดินสายไฟ
บัดกรีและเดินสายไฟ
บัดกรีและเดินสายไฟ
บัดกรีและเดินสายไฟ
บัดกรีและเดินสายไฟ
บัดกรีและเดินสายไฟ
บัดกรีและเดินสายไฟ

เมื่อการออกแบบของคุณเสร็จสมบูรณ์ คุณก็เลือกอุปกรณ์อิเล็กทรอนิกส์ได้เลย!

หมายเหตุ: ฉันถือว่าคุณรู้วิธีการทำงานของสิ่งเหล่านี้ ดังนั้นฉันจะไม่ลงรายละเอียดเกี่ยวกับการบัดกรีและการเชื่อมต่อ

ในระยะนี้ ฉันใช้แผงเจาะรู 2 แผ่นสำหรับวงจรที่แยกจากกันสามวงจร: แผ่นสีเหลืองน่าจะเป็นเรื่องธรรมดาที่สุด ฉันไม่ค่อยชอบมันเท่าไหร่ แต่ฉันมีตัวสำรองอยู่ ก็เลยอยากจะใช้มันอยู่ดี อันสีฟ้าดีกว่าเยอะ และฉันขอแนะนำให้ใช้อันนั้นแทน ถ้าคุณเป็นมือใหม่อย่างฉัน

ในรูสีเหลืองหนึ่งรูมีขนาดเล็กมาก และทองแดงอยู่ด้านเดียวรอบๆ ทุกรู บัดกรีจะไม่ไหลผ่านรู

ในการออกแบบร่องรอยบนกระดานนี้ ฉันตัดสินใจเลือกใช้เทปทองแดงขนาด 5 มม. ฉันผ่าครึ่งแต่มันเป็นความคิดที่แย่มาก เนื่องจากมีน้ำหนักเบามากจึงรับมือได้แย่มาก และทั้ง GND และ VCC อาจไม่ได้รับการกระจายอย่างเหมาะสม ต้องใช้การทดสอบและการแก้ไขอย่างมาก และใช้เวลานานมาก

แต่เดี๋ยวก่อนมันดูดีมากในตอนท้าย

การเดินสายไฟเป็นเรื่องที่เจ็บปวดเล็กน้อย การจบบอร์ดนี้น่าจะเป็นเรื่องที่ต้องใช้เวลามากที่สุด

การใช้ perfboard สีน้ำเงิน (เรียกว่า Electro Cookie ใน Amazon) เป็นวิธีที่ดีกว่า: มีการเชื่อมต่อเหมือนเขียงหั่นขนม คุณสามารถหลีกเลี่ยงการใช้เทปทองแดงได้ เนื่องจากหมุดและสายไฟเชื่อมต่อแล้วเมื่อบัดกรีในบล็อกเดียวกัน

นอกจากนี้คุณยังสามารถสแนปมันด้วยมือของคุณเป็นชิ้นเล็ก ๆ ซึ่งดีกว่ามาก

รูมีขนาดใหญ่กว่าและเคลือบด้วยทองแดงซึ่งทำให้การบัดกรีรวดเร็วและสะอาดมาก

ใช้เวลา 3-4 วันในการทำกระดานสีเหลืองแผ่นแรก เพียงไม่กี่ชั่วโมงในการสร้างอีก 2 แผ่น

หมายเหตุเกี่ยวกับโพเทนชิโอมิเตอร์อย่างที่คุณเห็น ฉันต้องงอตีนหม้อ - สิ่งเหล่านี้มีไว้สำหรับใช้กับ PBC และไม่ใช่สิ่งที่ดีที่สุดในกรณีนี้ อย่างไรก็ตามการงอเท้าเป็นมุมฉากทำให้พวกเขามั่นคงมาก

ขั้นตอนที่ 3: จากฮาร์ดแวร์สู่ซอฟต์แวร์

จากฮาร์ดแวร์สู่ซอฟต์แวร์
จากฮาร์ดแวร์สู่ซอฟต์แวร์

ตอนนี้คุณมีทุกสิ่งที่เชื่อมต่อและหวังว่าคุณจะทำการทดสอบเพื่อตรวจสอบว่า Vcc และ GND ของคุณโอเค

โพเทนชิโอมิเตอร์น่าจะเป็นสิ่งที่ง่ายที่สุดในการเริ่มต้นด้วย Arduino

มีสามพิน: อันหนึ่งสำหรับ GND หนึ่งอันสำหรับ 5V พินกลางคือ "เอาต์พุต" ของโพเทนชิออมิเตอร์ หากคุณเชื่อมต่อ GND กับพินซ้าย 5V กับพินขวา และคุณหมุนหม้อตามเข็มนาฬิกา คุณจะเห็นค่าเพิ่มขึ้นใน "เอาต์พุต" ระหว่าง 0 ถึง 5V

พินกลางไปที่หนึ่งใน "อินพุตแบบแอนะล็อก" ของ Arduino ซึ่งจะสุ่มตัวอย่างค่าและจะแปลเป็นตัวเลขดิจิทัล: Arduino Mega 2560 แปลค่าจาก 0 ถึง 1023 (จะให้ 0 เมื่อหม้อหมด ทางซ้าย 1023 เมื่อสุดทางขวา 5V)

โปรดทราบว่า MIDI ยอมรับค่าตั้งแต่ 0 ถึง 123 ดังนั้น คุณจะต้องหารค่า Arduino ด้วย 8 ก่อนส่งค่าจำนวนเต็มผ่านซีเรียล

มันดูเรียบง่ายมาก (และเป็นเช่นนั้น) แต่มีบางสิ่งที่ต้องจำไว้:- บ่อยครั้งที่หม้อไม่แม่นยำมาก: ผลลัพธ์ของพวกเขาสามารถข้ามไปยังค่าที่อยู่ติดกันแบบสุ่ม เรียกคำสั่ง CC ที่ไม่ต้องการ - วงจรของคุณ (ของฉัน ในกรณีนี้) ไม่สมบูรณ์แบบ: เนื่องจากไม่ใช่ PCB คุณสามารถมีค่าสุ่มที่นี่และที่นั่นอีกครั้ง ค่าสุ่ม- คุณไม่ต้องการส่งค่า MIDI CC ตลอดเวลา ไม่เช่นนั้น DAW ของคุณอาจอุดตันได้ คุณต้องหาทางแก้ไขเพื่อหลีกเลี่ยงสิ่งนี้

รหัสของฉันถูกเขียนขึ้นเพื่อจัดการกับสามประเด็นข้างต้นและทำได้ดีทีเดียว

ขั้นตอนที่ 4: MIDI ทำงานอย่างไร

MIDI เป็นโปรโตคอลที่เก่ามาก ซึ่งได้รับการออกแบบและสร้างขึ้นเพื่อให้คอมพิวเตอร์และอุปกรณ์ทำงานร่วมกันได้

มีคำอธิบายที่ครอบคลุมเกี่ยวกับวิธีการทำงานของ MIDI: ในการส่งบันทึกย่อ มีสัญญาณมากมายที่คุณสามารถส่งได้ แต่ในกรณีของเรา ทุกอย่างง่ายมาก

เราทำงานกับการเปลี่ยนแปลงการควบคุม (MIDI) ดังนั้นเราจึงต้องใช้หนึ่งในช่องทางเหล่านี้ที่รายงานในตารางนี้:

www.midi.org/specifications-old/item/table…

จาก 176 ถึง 191

เมื่อคุณส่งค่า MIDI/CC คุณต้องส่งผ่านซีเรียล:- ไบต์สถานะ (คอลัมน์แรกของตาราง) เพื่อบอก DAW ของคุณว่าคุณกำลังส่ง CC- ซึ่งการควบคุม - ในกรณีนี้ซึ่ง KNOB - กำลังส่ง (จำนวนเต็ม)- ค่าของตัวควบคุม

ในกรณีของฉันฉันมีปุ่ม 14 ปุ่มดังนั้นข้อความอาจเป็น:

Serial.write(176, 13, 107)

ลูกบิด 13 กำลังส่ง 107 ค่าผ่าน CC

MIDI ยอมรับค่าตั้งแต่ 0 ถึง 123 ในขณะที่ Arduino อ่านค่าแอนะล็อกจาก 0 ถึง 1023 - อย่าลืมหารด้วย 8 ก่อนทำการขัดค่า

ขั้นตอนที่ 5: วิธีส่ง MIDI ผ่าน USB บน Arduino

คุณมี 2 ตัวเลือกในการส่ง MIDI ผ่าน USB ด้วย Arduino:

  • กระพริบคอนโทรลเลอร์ Arduino USB ภายใน (แนะนำที่ส่วนท้ายสุดของโครงการของคุณ)
  • ออกจากสต็อก Arduino และใช้ซอฟต์แวร์บนพีซีของคุณ (อันนี้) ขอแนะนำอย่างยิ่ง

Flashing Arduino USB Controller ไม่ใช่วิธีที่สะดวกที่สุดในการสร้างต้นแบบ: เมื่อคุณแฟลชเฟิร์มแวร์เพื่อส่ง MIDI ผ่าน USB Arduino จะไม่ได้รับรหัสใหม่ให้อัปโหลด ดังนั้นหากคุณต้องการอัปเดตรหัส คุณต้องแฟลชเฟิร์มแวร์ ไปที่เวอร์ชันสต็อก ตัวอย่างเช่น Arduino ของคุณอยู่ในสต็อกและคุณอัปโหลดโค้ด คุณแฟลชเพื่อให้ MIDI ทำงานได้ ถอดปลั๊กออก เสียบปลั๊ก คุณทดสอบโค้ด มันใช้งานไม่ได้

คุณแฟลชมันกลับไปที่ stock. Unplug. Plug-in. Amend the code. Upload. Flash. UnplugPlugin[ทำซ้ำและร้องไห้]

Pro เดียวของสิ่งนี้คือคุณไม่ต้องใช้ซอฟต์แวร์ภายนอกใดๆ แต่ฉันขอแนะนำให้ใช้วิธีนี้เฉพาะที่ส่วนท้ายสุดของโปรเจ็กต์ของคุณ

ในทางกลับกัน Hairless นั้นใช้งานง่ายสุด ๆ เพราะคุณไม่ต้องแฟลชอะไรเลย - หากคุณใช้ Mac มันจะทำงานได้อย่างสมบูรณ์แบบด้วยการตั้งค่า MIDI และ DAW ของคุณจะรับรู้ทันทีว่าเป็น "ตัวควบคุม midi ที่ไม่มีขน" มาก มาก ดีกว่า.

ขั้นตอนที่ 6: เวลาการเข้ารหัส

เวลาเข้ารหัส!
เวลาเข้ารหัส!

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

เพียงจำสิ่งพื้นฐานบางอย่าง:

  1. ค่าไฟฟ้าผันผวนของฉัน
  2. คุณไม่ต้องการให้ DAW ของคุณท่วมท้นด้วยสัญญาณ CC ที่ไม่จำเป็น
  3. คุณไม่ต้องการส่งข้อความ CC ที่ซ้ำกัน

ในรหัสของฉันมีการอธิบายทุกอย่างและคุณสามารถค้นหาได้ที่นี่https://github.com/weirdest-worry/aalto_midi_contr…

ขั้นตอนที่ 7: รวบรวมสิ่งของของคุณเข้าด้วยกัน

ใส่สิ่งของของคุณเข้าด้วยกัน
ใส่สิ่งของของคุณเข้าด้วยกัน
ใส่สิ่งของของคุณเข้าด้วยกัน
ใส่สิ่งของของคุณเข้าด้วยกัน
ใส่สิ่งของของคุณเข้าด้วยกัน
ใส่สิ่งของของคุณเข้าด้วยกัน

ตอนนี้โค้ดของคุณใช้งานได้แล้ว และสิ่งเดียวที่คุณต้องทำคือรวบรวมสิ่งต่างๆ เข้าด้วยกัน

สิ่งนี้จะต้องใช้ทักษะไม้บางอย่างที่ฉันไม่มี (โชคดีที่ภรรยาของฉันช่วยฉันในกระบวนการนี้) ดังนั้นฉันจึงไม่สามารถให้คำแนะนำได้จริงๆ แต่ถ้าคุณตัดสินใจใช้แผ่นไม้อัด คุณจะมีงานที่สะอาดและไม่รกมาก ตอนนี้เสียบ USB ของคุณ เปิด DAW ของคุณแล้วปล่อยเบส!

แนะนำ: