Arduino Midi Class - ฮาร์ดแวร์รหัสและทางลัดสำรวจ: 11 ขั้นตอน

Arduino Midi Class - ฮาร์ดแวร์รหัสและทางลัดสำรวจ: 11 ขั้นตอน

สารบัญ:

Anonim

ผ่านทางอินเทอร์เน็ตมีผู้ผลิตมากมายที่สร้างเครื่องดนตรีที่ยอดเยี่ยมโดยใช้อินเทอร์เฟซ MIDI

คุณอาจกำลังคิดว่า "ฉันหวังว่าฉันจะมีกลองชุดอิเล็กทรอนิกส์" ง่าย ๆ สร้างมันเอง

คุณอาจกำลังคิดว่า "ฉันต้องการโต๊ะผสมเพื่อควบคุมสายโรงรถ แต่มันแพงเกินไป"

ง่ายเกินไป! เป็นโครงการที่เรียบง่าย เมื่อคุณรู้วิธีคุณสามารถทำได้ในช่วงสุดสัปดาห์

คุณอาจกำลังคิดว่า "ถ้าเพียง แต่ฉันสามารถใช้รองเท้าเต้นแท็ปเพื่อเล่นเสียงอื่น ๆ !"

เพียงแค่วางเซ็นเซอร์ Piezo ที่ด้านล่างของรองเท้าเต้นแท็ปของคุณและส่งจังหวะเป็น midi

คุณอาจจะคิดว่า "ฉันหวังว่าฉันจะได้เล่นวงร็อคด้วยกีต้าร์ตัวจริง!"

ใส่การตรวจจับการสัมผัสแบบ capacitive บนสายกีตาร์ของคุณและส่ง MIDI ไปยังตัวควบคุมวงดนตรีร็อคของคุณ

ตอนนี้คุณอาจกำลังคิดว่า "ฉันขอให้แมวเล่นกลองด้วยการเลียนมออกจากชามโลหะที่สัมผัสได้หรือไม่" ใช่คุณสามารถ!

คุณอาจกำลังคิดว่า "ถ้าเพียง แต่ฉันสามารถเล่นดนตรีโดยใช้พลังแห่งธรรมชาติ !!"

คำตอบคือใช่คุณทำได้! วางเซ็นเซอร์วัดความชื้นลงในพื้นดินเซ็นเซอร์วัดปริมาณน้ำฝนเซ็นเซอร์ลมเซ็นเซอร์วัดแสงเซ็นเซอร์วัดอุณหภูมิเซ็นเซอร์ตรวจจับบางส่วนบนกิ่งไม้บาง ๆ เซ็นเซอร์สั่นสะเทือนหรือเคาะลงบนกิ่งไม้ที่กระทบซึ่งกันและกัน รับ Arduino เพื่อเปลี่ยนให้เป็นสัญญาณ midi … Arduino นั้นยอดเยี่ยมในสิ่งนั้น

หากคุณพิมพ์ midi ลงในแถบค้นหาคำแนะนำคุณจะพบหลายร้อยโครงการนับร้อยที่แตกต่างกัน Midi เปิดเพลงด้วยตัวเลือกใหม่ทั้งหมด ดังนั้นการเสพติดการสร้างเครื่องดนตรีแปลก ๆ และมหัศจรรย์จึงเริ่มต้นขึ้น (ขออภัยต่อคู่หูเด็กหรือเพื่อนร่วมแฟลตของคุณสำหรับพื้นที่ที่ใช้จัดเก็บสิ่งคุมกำเนิดใหม่ทั้งหมด แต่ไม่จำเป็นต้องมีขนาดใหญ่)

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

อุปกรณ์พลักแอนด์เพลย์ USB ที่ยอดเยี่ยมสำหรับการควบคุมโปรแกรมดนตรีทุกชนิดบนคอมพิวเตอร์ทำให้คุณสามารถบันทึกเสียงหลากหลายจากคีย์บอร์ดหรืออุปกรณ์ midi อุปกรณ์ Midi มีตั้งแต่โต๊ะผสมจนถึงแท่นขุดเจาะแสงไปจนถึงรอยขีดข่วนดีเจและแผงปุ่มไปจนถึง Lazer harps, iPads และคีย์บอร์ดมาตรฐาน Midi เป็นวิธีที่ผู้ควบคุมแต่ละคนสามารถพูดคุยกับคอมพิวเตอร์หรือพูดคุยกันและทำความเข้าใจกับข้อความดนตรีที่ส่งไป

โปรดจำไว้ว่า Midi ไม่ใช่เสียงมันเป็นคำแนะนำสำหรับเสียง การสร้างตัวควบคุม midi เป็นวิธีการสร้างเพลงผ่านอินเทอร์เฟซ MIDI เช่นแป้นพิมพ์, ชุดกลองอิเล็กทรอนิกส์หรือคอมพิวเตอร์ที่มีซอฟต์แวร์ midi (GarageBand, mainstage, ตรรกะ, สามารถสด, ผลไม้ ฯลฯ)

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ MIDI ฉันขอแนะนำให้สอนได้อย่างนี้

ฉันขอแนะนำให้เยี่ยมชมหน้า Amandaghassaei และอ่านคำแนะนำที่ครอบคลุมของเธอ ฉันยังขอแนะนำให้สอน midi ของ sparkfun

Arduino midi คือความเคลื่อนไหว DIY ของเครื่องมือดิจิตอล มันเริ่มต้นด้วยคีย์บอร์ดพื้นฐานที่สร้างขึ้นอย่างแท้จริงจากกล้วยไปจนถึงอัลกอริธึมที่ซับซ้อนในการติดตามนักเต้นในพื้นที่ 3 มิติ Arduino เพิ่มความสามารถสำหรับเซ็นเซอร์ที่หลากหลายเพื่อให้กลายเป็นดนตรีในทันที การดัด, การหมุน, ระยะทาง, แสง, อุณหภูมิ, ความดัน … arduino มีเซ็นเซอร์มากมายที่เข้ากันได้กับและเพิ่ม MIDI ให้กับ arduino สร้างความเป็นไปได้ทางดนตรีที่ไม่มีที่สิ้นสุด จากการใช้เซ็นเซอร์วัดแสงเซ็นเซอร์วัดอุณหภูมิฝนและเซ็นเซอร์ความชื้นในดินเพื่อทำแผนที่อากาศให้เป็นเพลงผ่านชุดกลองอ่านบันทึกย่อสั้น ๆ ของคุณแล้วเล่นด้วยมอเตอร์ คำแนะนำนี้อยู่ที่นี่เพื่อให้คำแนะนำและจินตนาการของคุณ

ข้อมูลจำเพาะทางเทคนิคของ Midi

นอกจากนี้ยังมีข้อมูลที่เป็นประโยชน์มากมายในคู่มือนี้ซึ่งไม่ควรมองข้าม

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

นอกจากนี้ฉันยังเปิดกว้างสำหรับการทำงานร่วมกันของคำสั่งนี้ดังนั้นหากคุณต้องการแก้ไขเพิ่มหรือแก้ไขสิ่งใด ๆ ในคำแนะนำนี้โปรดส่งข้อความถึงฉันและฉันจะเพิ่มคุณเป็นผู้ทำงานร่วมกัน เป้าหมายคือการสร้างมุมมองที่ครอบคลุมสูงของ arduino midi

วัสดุ:

ขั้นตอนที่ 1: บอร์ด Arduino

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

อะนาล็อกอ่านแรงดันไฟฟ้าและสิ่งนี้มีประโยชน์สำหรับสิ่งต่าง ๆ เช่นความไวต่อการสัมผัสเครื่องส่งสัญญาณแบบเพียโซสำหรับแผ่นดรัม, ความดัน, แสงหรือเซนเซอร์ยืดหยุ่น (ในเซ็นเซอร์อื่น ๆ อีกมากมาย) สำหรับตัวควบคุมปุ่มกดสิ่งเหล่านี้ไม่ใช่ปัญหา แต่ถ้าคุณต้องการลูกบิดและสไลเดอร์จำนวนมากคุณจะต้องมีบอร์ดที่มีหมุดอะนาล็อกเพียงพอ

แรงดันไฟฟ้ามีประโยชน์ในการคิด เหยียบกีตาร์ส่วนใหญ่ทำงานบนแหล่งจ่ายไฟ 9v หากคุณต้องการให้เหยียบ midi ของคุณเข้ากับกีตาร์เหยียบคันอื่น ๆ ได้อย่างดีสิ่งที่จะทำงานที่ 9v อาจมีประโยชน์ 5v ก็คือแรงดันไฟฟ้าของการเชื่อมต่อ USB ดังนั้นเมื่อใช้บอร์ดขนาดเล็กและเชื่อมต่อกับ USB ได้อย่างสะดวกมันมีประโยชน์ที่จะมี 5 โวลต์แทน 3.3v

มีรายการบอร์ด Arduino ที่สมบูรณ์ แต่ฉันได้แสดงรายการที่นิยมมากที่สุดด้านล่าง

UNO - มาตรฐานสต็อคราคาถูกพอสมควรสามารถเป็นบูทคู่กับ dual Moco เพื่อสร้างอุปกรณ์ usb midi ที่ค่อนข้างง่าย 6 ขาอะนาล็อก หากคุณไม่ใช่แฟนของทหารและคุณต้องการแจ็ค MIDI มาตรฐานแทนที่จะเป็น MIDI ผ่าน USB ก็จะมีเกราะป้องกันจำนวนมากที่เปิดอยู่

www.sparkfun.com/products/12898 Midi shield

101 - uno ที่มี Gyro และ Bluetooth ในตัว … midi ผ่าน Bluetooth สามารถใช้กับ iPads และ Mac ได้ รหัสจะยากขึ้น แต่ถ้าคุณมีความท้าทายมีวิธีและวิธีการ

Leonardo - เข้ากันได้กับห้องสมุด arcore midi สำหรับการเขียนโปรแกรมง่าย 12 อินพุตแบบอะนาล็อก

Pro Micro - ราคาถูกขนาดเล็กและอเนกประสงค์ เข้ากันได้กับห้องสมุด Arcore Midi สำหรับการเขียนโปรแกรมง่าย 6 อินพุตแบบอะนาล็อก

Lilypad - ต้องการสร้างเครื่องดนตรีที่สวมใส่ได้เช่นยีนส์ drumpad หรืออะไร? Lilypad เป็น Arduino ที่สวมใส่ได้

Yun หรือ MKR1000 - ต้องการอุปกรณ์ midi ของคุณเพื่อเชื่อมต่อกับ ipad และคอมพิวเตอร์ของคุณผ่าน wifi หรือไม่ อาจเป็นหนึ่งในนั้น

Mega - สแต็กของอินพุตและเอาต์พุต 16 อินพุตแบบอะนาล็อก ฮีปของห้องเพื่อเพิ่มฮีปโค้ด เจ๋งสำหรับสิ่งต่าง ๆ เช่น … มีชุดกลองอิเล็กทรอนิกส์ที่ให้สีสันเต็มไปหมดทำให้คีย์บอร์ดที่ไวต่อการสัมผัสพร้อมปุ่ม 48 ปุ่ม โครงการที่ใหญ่กว่าเช่นนั้น

ขั้นตอนที่ 2: บอร์ด MIDI แบบกำหนดเอง

ก่อนที่คุณจะไปอาร์ดิโน่มีบอร์ดอื่น ๆ อีกมากมายที่คุณอาจต้องการพิจารณาทั้งนี้ขึ้นอยู่กับขนาดของโครงการสิ่งที่คุณต้องการทำและงบประมาณที่คุณต้องทำ

Makey Makey - ง่ายสุด ๆ ที่โคลนได้อย่างง่ายดาย เส้นโค้งการเรียนรู้น้อยมาก ไม่ใช่ midi แต่แทนที่จะป้อนแป้นพิมพ์ซึ่งมีซอฟต์แวร์แปลงออนไลน์มากมาย Garageband และตรรกะมีแป้นพิมพ์ที่ makey makey สามารถเล่นได้ เพียงกดปุ่ม Caps Lock แล้วเล่นไป เล่นง่ายด้วย แต่ จำกัด และค่อนข้างแพง ในทางเทคนิคแล้ว Makey Makey เป็น Arduino Leonardo ที่มีตัวต้านทานแบบดึงลงขนาดใหญ่ดังนั้นจึงสามารถทำโปรแกรมใหม่ได้อย่างสมบูรณ์

Teensy - Teensy เป็นบอร์ดที่เข้ากันได้กับ arduino ที่ง่ายที่สุดในการใช้สำหรับ MIDI เมื่อตั้งค่าแล้วรหัส midi นั้นค่อนข้างเรียบง่ายและบทเรียนบนเว็บไซต์ของพวกเขาจะให้ข้อมูลมากมาย เนื่องจาก Teensy สามารถใช้งานร่วมกับ USB Midi ได้จึงเป็นเรื่องง่ายที่จะเขียนและลองใช้งาน มีหลายวิธีในการสร้างอาร์ดิโนปรกติที่ทำได้เหมือนกันโดยใช้เงินน้อยลง แต่ Teensy นำหน้าเกมเพื่อความเข้ากันได้ง่ายและใช้งานง่าย ห้องสมุด Usb.midi นั้นใช้งานง่ายมาก Teensy มาพร้อมกับอินพุตแบบอะนาล็อกซึ่งมีประโยชน์มากสำหรับการสร้างชุดกลองหรือโต๊ะผสม เนื่องจากมันเข้ากันได้กับอาร์ดีโนทุกอย่างที่อาร์ดิโนสามารถทำได้ 3.6 วัยรุ่นมี 24 อินพุตแบบอะนาล็อกซึ่งมีขนาดใหญ่มาก นอกจากนี้ยังเร็วกว่าบอร์ด Arduino ทั้งหมด ด้วยเหตุนี้ฉันได้รับ Teensy เป็นขั้นตอนของตัวเอง

Sparkfun ทำรีวิวผลิตภัณฑ์ที่ยอดเยี่ยมบนบอร์ด Teensy

Doepfer มีเครื่องมือ midi หลากหลายชนิดสำหรับการสังเคราะห์ด้วยระบบดิจิตอล USB64 ของพวกเขามีอินพุตแบบอะนาล็อก 64 อันสำหรับการสร้างคีย์บอร์ดที่ไวต่อการสัมผัสหรือชุดดรัมอิเล็กทรอนิกส์ 64 ชิ้น มันเอเคอร์เหนือความสามารถของ arduino Doepfer มีความเชี่ยวชาญในการแปลงอวัยวะย้อนยุคไปเป็น midi ดังนั้นหากนั่นคือสิ่งที่คุณกำลังพิจารณา โปรเจ็กต์คีย์บอร์ดขนาดใหญ่ที่ไวต่อความเร็วขนาดใหญ่ควรรวมภาพรวมผลิตภัณฑ์ไว้อย่างแน่นอน

Livid Instruments มีบอร์ดควบคุม DIY Midi ที่ใช้งานง่าย มันดูเรียบง่ายพอที่จะใช้และถึงแม้ว่าจะแพงกว่า arduino นิดหน่อย แต่จะประหยัดเวลาในการเรียนรู้รหัสถ้าคุณมีเครื่องดนตรีที่ค่อนข้างธรรมดากลองชุดคีย์บอร์ดหรือโต๊ะผสมในใจ

Midibox บอร์ดออกแบบสำหรับโครงการ midi ที่สามารถทำงานได้หลากหลาย บอร์ดของพวกเขามีความสามารถในการบันทึกและเล่น midi สำหรับการวนซ้ำ midi สดและความคิดอื่น ๆ

Midifighter มีชุดเครื่องมือคุณภาพสูง (มีราคาค่อนข้างแพง แต่ค่อนข้างถูกต้องในการใช้งาน) เหล่านี้เป็นพิเศษ

Bhoreal slim เป็นตัวควบคุม MIDI แบบโอเพ่นซอร์สตามปุ่มที่มีความบ้าคลั่ง 16 - 64 แผ่น

Arduino บนชิปอื่น ๆ

Arduino สามารถโหลดไปยังชิปอื่น ๆ เป็นชิปแบบสแตนด์อโลน สิ่งนี้มีประโยชน์ในการลดขนาดราคาหรือเพิ่มฟังก์ชั่นของบอร์ดของคุณ

Arduino Playground มีข้อมูลเกี่ยวกับชิปที่ใช้งานร่วมกันได้และวิธีการทำเช่นนี้ El Pajaro Manitas ได้เขียนคำแนะนำเกี่ยวกับวิธีลัดฮาร์ดแวร์จำนวนมากโดยใช้ชิปจากอาร์ดิโนหรือแม้แต่การทดลองกับชิปขนาดเล็กอื่น ๆ เช่น Attiny85

นี่คือตัวอย่างของ synth midi plug synth โดยใช้ attiny 2313 chip

บอร์ดพัฒนาอื่น ๆ

มีวิธีการทำสิ่งต่าง ๆ อยู่เสมอดูเพราะมันสามารถประหยัดเงินเวลาหรือสร้างคุณภาพหรือการทำงานที่แตกต่างกัน

djtechtools.com/2011/06/21/diy-midi-still-m…

www.instructables.com/id/DIY-USB-DJ-Contro…

Intel Edison - โดยทั่วไปคือคอมพิวเตอร์ขนาดเล็ก … สามารถมีเสียงและโปรแกรมทั้งหมดที่โหลดไว้ล่วงหน้าเพื่อใช้เป็นเครื่องมือแบบสแตนด์อโลน นี่คือตัวอย่างของโครงการ midi โดยใช้ Intel Edison

Raspberry Pi - โดยทั่วไปเป็นคอมพิวเตอร์ขนาดเล็ก … สามารถมีเสียงเป็นของตัวเองและโปรแกรมที่โหลดไว้ล่วงหน้าเพื่อใช้เป็นเครื่องมือแบบสแตนด์อโลน

ขั้นตอนที่ 3: การใช้ Teensy

ในทางเทคนิคแล้ววัยรุ่นเล็ก ๆ นั้นเข้ากันได้กับ arduino แต่ก็มีข้อดีเล็กน้อยกว่าการใช้ aarduino

1. มันรู้วิธีพูด MIDI อยู่แล้ว นี่คือโบนัสใหญ่ คุณไม่จำเป็นต้องมีวิธีแก้ปัญหาหรือการเขียนโปรแกรมที่ชาญฉลาดเพื่อให้พูด MIDI ผ่านพอร์ต USB ของคุณ คุณไม่จำเป็นต้องถอดปลั๊กออกเพื่อลองใช้รหัสของคุณคุณไม่จำเป็นต้องใช้โปรแกรมเมอร์ภายนอกคุณไม่จำเป็นต้องทำการบูทสองครั้งหรือทำสิ่งที่แปลกใหม่อื่น ๆ คุณพิมพ์รหัสและลองแก้ไขรหัสอัปโหลดและไปอีกครั้งจนกว่าจะถูกต้อง เมื่อตั้งค่าแล้วคุณสามารถเสียบเข้ากับคอมพิวเตอร์เครื่องใดก็ได้และมันจะรับรู้ว่ามันเป็นอุปกรณ์ midi

www.pjrc.com/teensy/td_midi.html

2. มีไลบรารี MIDI ที่ง่าย คุณไม่จำเป็นต้องเรียนรู้วิธีการเขียนตัวเลขฐานสิบหกเพื่อรับมันไปยังบันทึกย่อที่คุณต้องการคุณสามารถเขียนในรูปแบบเลขฐานสิบด้วยตัวเลขปกติและง่ายต่อการพันรอบแนวคิด

โดยพื้นฐานแล้วมันคือรหัส usbMIDI.sendNoteOn (note, ความเร็ว, channel);

ซึ่งหมายความว่าเป็นการง่ายที่จะบอกว่าคุณกำลังทำอะไรในโค้ดและคุณจะไม่หลงทางมากนัก

3. เพราะมันใช้งานง่ายสำหรับ Midi ผู้คนจำนวนมากใช้สำหรับ MIDI และมีแบบฝึกหัดเกี่ยวกับวิธีใช้งาน

นี่คือตัวควบคุม midi ตัวอย่างที่ใช้เป็น teensy

ที่นี่มีความซับซ้อนมากขึ้น แต่มีประโยชน์มากและครอบคลุมให้คำแนะนำเกี่ยวกับ teeny midi มันคุ้มค่าที่จะตรวจสอบความคิดและเคล็ดลับโดยทั่วไป

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

ขั้นตอนที่ 4: แปลงอนุกรมเป็น Midi

ดังนั้นคุณได้ตัดสินใจว่าคุณต้องการไปกับ Arduino เหนือความคิดอื่น ๆ แต่คุณต้องการทำ midi ผ่าน USB มีหลากหลายวิธีในการทำเช่นนี้วิธีการที่คุณใช้จะขึ้นอยู่กับว่าคุณต้องการให้มันทำงานอย่างไร

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

สิ่งนี้สามารถอยู่ในรูปแบบของสายเคเบิล midi usb หรือตัวแปลงซอฟต์แวร์เช่น max, เปียโนเสมือน, ardrumio หรือ midi ที่ไม่มีขน

นี่คือตัวอย่างการใช้เปียโนเสมือนจริง

นี่คือตัวอย่างการใช้ Hairless Midi

ขั้นตอนที่ 5: สร้างโปรแกรมชิปของคุณใหม่

arduino เป็นชิปที่ใช้งานได้หลากหลายมากเพราะเป็นโอเพ่นซอร์สและแฮ็กเกอร์ก็เล่นด้วยเป็นอย่างมาก ดังนั้น arduino จึงไม่จำเป็นต้องเป็น arduino เสมอไป มันสามารถโปรแกรมใหม่เป็นตัวควบคุม midi มีวิธีต่าง ๆ ในการทำเช่นนี้ ฉันได้ระบุไว้ตามลำดับความง่าย

อาร์โกเร

นี่คือไลบรารี Midi ที่เข้ากันได้กับบอร์ด Leonardo และ Pro Micro สำหรับ USB midi เมื่อติดตั้งไลบรารีนี้แล้ว Arduino IDE สามารถตั้งโปรแกรม Leonardo หรือ Pro Micro เป็นอุปกรณ์ USB ในลักษณะที่คล้ายคลึงกับการใช้ Teensy วิธีนี้จะทำการประมวลผลชิปของคุณทันทีโดยไม่จำเป็นต้องเขียนโปรแกรม DFU (ดูด้านล่าง)

Musico Nerd มีแบบฝึกหัดที่ยอดเยี่ยมเกี่ยวกับวิธีการใช้งาน

ห้องสมุด USBMidi

ห้องสมุด UsbMidiอนุญาตให้บอร์ด Arduino พร้อม USB ความสามารถในการทำหน้าที่เป็นเครื่องมือ MIDI ผ่าน USB ใช้งานได้เหมือนกับ Arcore แต่ไม่จำเป็นต้องติดตั้งเป็นตัวเลือกฮาร์ดแวร์ใหม่ ข้อมูลเพิ่มเติมที่นี่

ห้องสมุด Midi

ขณะนี้ Midi Midi นี้ได้รวมส่วนเสริมสำหรับ USB Midi ไว้ด้วย

MocoLufa คู่

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

Lufa เป็นต้นฉบับมันได้รับการพัฒนาเป็นรูปแบบการเขียนโปรแกรมสำหรับการทำอุปกรณ์ usb ประเภทต่างๆโดยใช้ชิป atmel Moco Lufa ได้รับการพัฒนาให้เป็นเวอร์ชั่นบูทคู่ของคอนโทรลเลอร์ midi ของ Lufa และ arduino bootloader มาตรฐาน

Dual Moco เป็นโปรแกรม midi เนทีฟซึ่งประกอบไปด้วย arduino bootloader และ boots เป็น arduino เมื่อ ISP สองพินเชื่อมต่อกัน เมื่อติดตั้งบน Arduino ของคุณแล้ว Arduino ของคุณสามารถเป็นได้ทั้ง Arduino ปกติหรืออุปกรณ์ midi ที่เข้ากันได้กับคลาสที่สวิตช์ คำแนะนำนี้อธิบายวิธีโหลดโปรแกรมอื่น ๆ ใน Arduino ของคุณโดยใช้การเขียนโปรแกรม DFU วิธีการที่ครอบคลุมมากขึ้นเกี่ยวกับ Dual Moco มีอยู่ในเว็บไซต์ arduino และบนเว็บไซต์ Dual Moco

เว็บไซต์นี้แสดงวิธีการสร้างเทอรามีนโดยใช้เทคนิค Moco

ผู้ชายคนนี้ใช้เทคนิค moco lufa กับบอร์ดของเขาเองเพื่อสร้างอุปกรณ์ Midi ที่สามารถโปรแกรมซ้ำได้

Hiduino

โดยส่วนตัวแล้วฉันไม่ใช่แฟนของฮิดดิโน่ เว้นแต่คุณจะมีโปรแกรมเมอร์ดูเหมือนว่าจะเป็นงานที่ต้องใช้เวลามากในการเขียนโปรแกรมซ้ำ แต่ลองใช้ตัวเลือกนี้ดู ข้อดีของ Hiduino คือชิปของคุณจะทำหน้าที่เป็นตัวควบคุม Midi เท่านั้นและไม่ได้มีความเข้ากันได้ของ Arduino ในตัว ซึ่งหมายความว่าคุณสามารถมีโปรแกรมขนาดใหญ่ที่ทำงานอยู่บนชิปและชิปมีแนวโน้มที่จะทำงานได้เร็วขึ้นและมีความล่าช้าน้อยลงเนื่องจากเน้นไปที่การเป็นอุปกรณ์ MIDI เท่านั้น

ขั้นตอนที่ 6: ไลบรารี

มีไลบรารี midi จำนวนหนึ่งที่ทำให้การเขียน midi ง่ายขึ้นเล็กน้อย อย่างไรก็ตามพวกเขาไม่ได้บังคับ … พวกเขามีประโยชน์

อาร์โกเร

นี่คือไลบรารี Midi ที่เข้ากันได้กับบอร์ด Leonardo และ Pro Micro สำหรับ USB midi

MidiUSB

นี่คือไลบรารี Midi ที่เข้ากันได้กับ Arduino หลายรุ่นสำหรับ USB midi

ห้องสมุด Midi

midi ไลบรารี่นี้มี add-on สำหรับ USB Midi

ขั้นตอนที่ 7: ฮาร์ดแวร์ทางกายภาพ

มีส่วนประกอบหลายอย่างที่คุณควรเรียนรู้เมื่อทำคอนโทรลเลอร์ midi

อินพุตดิจิตอล

สิ่งแรกคืออินพุตดิจิตอล เหล่านี้เป็นอินพุตที่ส่งข้อความไปยังพินอินพุตดิจิตอล สิ่งที่ชัดเจนที่สุดคือปุ่มหรือสวิตช์ แต่ตัวเลือกขยายออกไปด้วยส่วนประกอบและไลบรารีอื่น ๆ สิ่งเหล่านี้อาจรวมถึงเซ็นเซอร์วัดระยะทาง, เซ็นเซอร์ความถี่หรือเซ็นเซอร์พัลส์ PWM, ตัวรับสัญญาณ IR (สำหรับการใช้งานรีโมทคอนโทรลเป็นตัวควบคุม MIDI)

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

แป้นพิมพ์ Midi ส่วนใหญ่ใช้ความคิดนี้ในการสร้างระบบตรวจจับความเร็ว เมื่อกดปุ่มเบา ๆ มันจะกดปุ่มแรกและเริ่มนับเมื่อกดปุ่มจนสุดจะเป็นการหยุดการนับและตั้งค่าความเร็ว แม้ว่าจะอยู่ที่นั่นเพื่ออ่านวิธีการกดคีย์ยาก แต่จริง ๆ แล้วอ่านความเร็วที่กด สิ่งนี้มักจะไร้ที่ติเนื่องจากคีย์จะถูกผลักเร็วขึ้นเมื่อผู้เล่นต้องการที่จะเล่นบนคีย์บอร์ดให้หนักขึ้น

อินพุตแบบอะนาล็อก

อินพุตที่สองคือเซ็นเซอร์อะนาล็อก สิ่งนี้จะอ่านแรงดันไฟฟ้าที่ส่งไปยังขา ใช้เพื่อวัดสิ่งต่างๆมากมายโดยเซ็นเซอร์ที่หลากหลาย เซ็นเซอร์ก๊าซเซ็นเซอร์สัมผัส capacitive เซ็นเซอร์แสงเซ็นเซอร์ฝนเซ็นเซอร์สั่นสะเทือนโพเทนชิโอมิเตอร์เซ็นเซอร์ความดันเซ็นเซอร์โค้ง ฯลฯ อินพุตแบบอะนาล็อกนี้สามารถใช้เพื่อควบคุมระดับเสียงของโน้ตสั้น ๆ บันทึกย่อที่กำลังเล่นอยู่ กำลังเล่นหรือเอฟเฟกต์ที่น่าสนใจมากมายโดยใช้ค่าควบคุม midi

กำลังรับอินพุตอะนาล็อกพิเศษ …

ถ้าคุณต้องการอ่านทั้งคีย์บอร์ด

ถ้าคุณต้องการมากกว่าเพียงอินพุตแบบอะนาล็อก 6 ตัวใน Arduino Uno

Mux Shield: มากถึง 48 อินพุตแบบอะนาล็อก

แผงขยายอะนาล็อก Blueberry 24

ขั้นตอนที่ 8: การเข้ารหัสด้วย Arduino

รหัสที่แนบมานั้นถูกเขียนขึ้นสำหรับ Arduino Uno ที่ใช้งาน Moco Lufa

พวกมันยังสามารถใช้กับอาร์ดิโนด้วยสาย midi ที่ต่อกับขาเท็กซัสดังที่แสดงไว้ด้านบน ภาพนี้ถ่ายจากสนามเด็กเล่น arduino ซึ่งมีบทช่วยสอนที่เป็นประโยชน์และโครงการแรก

รหัส Arduino เริ่มต้นด้วยการแนะนำพิน Arduino และตั้งชื่อให้

const int ButtonPin = 2;

ซึ่งหมายความว่าอินพุตอยู่ที่ขาดิจิตอล 2 ของอาร์ดิโน เราได้ตั้งชื่อปุ่ม "const" หมายถึง ButtonPin จะเป็น 2 อย่างต่อเนื่องมันจะไม่เปลี่ยนเป็นอย่างอื่น

ขั้นตอนต่อไปให้ตัวแปรเพื่อเก็บข้อมูลเกี่ยวกับ ButtonPin

int ButtonState = 0;

เมื่อเราแนะนำให้มันเป็น 0 ตัวแปรจะมีความหมายเป็น 0 โดยค่าเริ่มต้น

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

อัตราการรับส่งข้อมูลของ MIDI คือ 31250

เรายังแจ้งให้ชิปทราบว่าจะใช้พินอย่างไร เนื่องจากชิปสามารถใช้เป็นเอาท์พุทที่ส่งพลังงานให้กับไฟ Led การเปิดมอเตอร์ ฯลฯ หรืออินพุตที่พวกเขาอ่านว่ามีไฟเข้ามาจากปุ่มหรืออินพุตอื่น ๆ

เราแจ้งให้ชิปทราบว่า ButtonPin จะเป็นอินพุต

การตั้งค่าเป็นโมฆะ () {

Serial.begin (31250);

pinMode (buttonPin, INPUT);

}

ในรหัสด้านบนคุณอาจสังเกตเห็นบางสิ่ง ประการแรกรหัสในระยะการตั้งค่าถูก จำกัด ด้วยเครื่องหมายวงเล็บ {} สิ่งนี้จะบอกชิปเมื่องานจบ หากรหัสมีปัญหาให้ตรวจสอบว่าเครื่องหมายวงเล็บคั่นอยู่ในระยะที่ถูกต้อง

สิ่งที่สองคุณจะสังเกตเห็นว่าหลังจากแต่ละบรรทัดของรหัสมีอัฒภาค;. นี่บอกชิว่าทำคำสั่งเสร็จแล้ว หากคุณพลาดรหัสจะไม่ทำงาน

ส่วนถัดไปของรหัสประกอบด้วยสิ่งต่าง ๆ ที่ชิปจะทำซ้ำไปซ้ำมา นี่เรียกว่าลูป ในลูปต่อไปนี้ปุ่มจะถูกอ่านถ้ามันถูกผลักมันจะส่งโน้ตสั้น ๆ ถ้ามันถูกปล่อยออกมามันจะส่ง midi off

void loop () {

ButtonState = digitalRead (ButtonPin);

if (ButtonState == HIGH) {Serial.write (0x80); Serial.write (36); Serial.write (127); // channel, note, velocity}

if (ButtonState == LOW) {Serial.write (0x90); Serial.write (0x25); Serial.write (0x00); // channel, note, velocity}

ล่าช้า (1000)

}

ในรหัสข้างต้นฉันได้เพิ่มความล่าช้า เนื่องจากรหัสกำลังวนซ้ำด้วยความเร็วอย่างไม่น่าเชื่อจึงส่งข้อมูล Midi ไปยังคอมพิวเตอร์ของคุณ เมื่อกดปุ่มแล้วรหัสจะเปลี่ยนโน้ตเป็นพัน ๆ ครั้งต่อวินาทีทันที เมื่อปุ่มถูกปล่อยออกมามันจะปิดโค้ดหนึ่งพันครั้งต่อวินาที ฉันได้วางโค้ดไว้ที่ 1,000 มิลลิวินาที (1 วินาที) เพื่อให้เกิดความล่าช้าและหยุดการทำงานของชิปของคุณ

อย่างไรก็ตามมีวิธีอื่นในการทำเช่นนี้ ด้วยการเพิ่มตัวแปรเพื่อจัดเก็บการอ่านครั้งสุดท้ายคุณสามารถรับชิปเพื่อตรวจสอบว่าปุ่มนี้มีอายุการใช้งานนานเท่าใดและขอให้มันทำอะไรบางอย่างเฉพาะเมื่อมันอ่านอะไรที่แตกต่างออกไป อย่าลืมแนะนำตัวแปรตอนเริ่มต้นโค้ดของคุณ (int lastButtonState = 0;) นี่คือระยะวนรอบที่มีการตรวจสอบปุ่มสุดท้ายและความล่าช้า 10 มิลลิวินาที (สำหรับการวัดที่ดี)

void loop () {

ButtonState = digitalRead (ButtonPin);

if (ButtonState == HIGH && lastButtonState == LOW)

{Serial.write (0x80); Serial.write (36); Serial.write (127); // channel, note, velocity}

if (ButtonState == LOW && lastButtonState == สูง)

{Serial.write (0x90); Serial.write (0x25); Serial.write (0x00); // channel, note, velocity}

lastButtonState = ButtonState;

ล่าช้า (10); }

รหัสอื่นที่จะลอง

รหัสที่แนบมาแต่ละรหัสมีส่วนประกอบที่แตกต่างกันซึ่งถูกทดสอบด้วย บางปุ่มเขียนขึ้นสำหรับปุ่มส่วนปุ่มอื่น ๆ เขียนขึ้นสำหรับเซ็นเซอร์ piezo เซ็นเซอร์วัดระยะทางหรือรีโมทควบคุม IR แต่ละรหัสที่แตกต่างกันจะต้องมีการกำหนดองค์ประกอบตามบทช่วยสอนอื่น ๆ เกี่ยวกับการใช้ส่วนประกอบเหล่านั้น ความแตกต่างในรหัสเหล่านี้คือรหัส MIDI ที่สร้างขึ้นและฟังก์ชั่นพื้นฐานบางอย่างที่มีประโยชน์ในตัวควบคุม MIDI

Midi_Basic เขียนขึ้นสำหรับการทดสอบสำหรับ 4 ปุ่ม

ปุ่มถูกต่อสายด้วยปลายด้านหนึ่งไปยัง 5v และปลายอีกด้านหนึ่งไปยังหมุด arduino 2, 3, 4 & 5 แต่ละขาเชื่อมต่อกับพื้นโดยใช้ตัวต้านทาน 10k สิ่งนี้เรียกว่า pulldown เนื่องจากพินมักจะอ่านออกมา

AnalogMidi อ่านแรงดันไฟฟ้าที่ขาอะนาล็อก 0 และส่งข้อความ midi มันสามารถอ่านโพเทนชิโอมิเตอร์, เซ็นเซอร์เฟล็กซ์หรือความดัน, เซ็นเซอร์อุณหภูมิหรือดิสก์แบบเพียโซ

Distance_sense อ่านเซ็นเซอร์ระยะทาง 4 พินและส่งข้อความ midi ออกมา

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

สวิทช์ CC อ่านสถานะของสวิทช์ที่เปลี่ยนอินพุตจากการเป็นโน้ตไปเป็นการควบคุมการเปลี่ยนแปลง

Drum Presets อ่านดิสก์แบบเพียโซและปุ่ม เมื่อกดปุ่มการกดปุ่ม piezo ดิสก์จะเป็นการเลือกกลุ่มโน้ตใหม่สำหรับแต่ละดิสก์

ขั้นตอนที่ 9: ส่งบันทึกและข้อความอื่น ๆ

ตัวอย่าง Arduino นี้เป็นตัวอย่างที่ดีของรหัสทดสอบ

ข้อมูลจำเพาะ Midi สำหรับข้อความประเภทต่างๆทั้งหมดสามารถดูได้ที่นี่ ฉันคัดลอกข้อมูลส่วนใหญ่ไปยังหน้านี้

SerialWrite (0x80 + ช่อง); // หมายเหตุเกี่ยวกับ

SerialWrite (หมายเหตุ); // บันทึกระหว่าง 0-127

SerialWrite (ความเร็ว); // ความเร็วระหว่าง 1-127

SerialWrite (0x90 + ช่อง); // ปิดโน้ต

SerialWrite (หมายเหตุ); // จะต้องเหมือนกับในหมายเหตุ

SerialWrite (0x00); // ความเร็วของ 0 ปิดการบันทึก

SerialWrite (0xC0 + ช่อง); // การเปลี่ยนแปลงโปรแกรม

SerialWrite (โปรแกรม); // หมายเลขโปรแกรมระหว่าง 0-127

SerialWrite (0xD0 + ช่อง); // Channel Pressure aftertouch

SerialWrite (ความเร็ว); // ความเร็วระหว่าง 1-127

SerialWrite (0xE0 + ช่อง); // pitchbend

SerialWrite (โค้ง); // นี่คือหมายเลข 14 บิตที่มีค่าสูงสุด 16384 และต่ำสุดเป็น 0 โดยที่ 8192 หมายถึงตำแหน่งกึ่งกลางหรือไม่มีพิชเบนด์

ข้อความเปลี่ยนการควบคุมมีข้อความประเภทต่าง ๆ ที่เปลี่ยนเป็นข้อความของโหมดแชแนล

SerialWrite (0xB0 + ช่อง); // ควบคุมข้อความเปลี่ยน

SerialWrite (หมายเหตุ); // บันทึกระหว่าง 0-119

SerialWrite (ความเร็ว); // ความเร็วระหว่าง 1-127

ข้อความโหมดช่อง

รหัสนี้เหมือนกับการเปลี่ยนแปลงการควบคุมค่าสำหรับบันทึกย่อจะเลือกข้อความเฉพาะ

120 = ปิดเสียงทั้งหมด เมื่อได้รับ All Sound Off ออสซิลเลเตอร์ทั้งหมดจะปิดและซองเสียงจะถูกตั้งค่าเป็นศูนย์โดยเร็วที่สุด c = 120, v = 0:

121 = รีเซ็ตคอนโทรลเลอร์ทั้งหมด เมื่อได้รับการรีเซ็ตคอนโทรลเลอร์ทั้งหมดค่าคอนโทรลเลอร์ทั้งหมดจะถูกรีเซ็ตเป็นค่าเริ่มต้น (ดูวิธีปฏิบัติที่แนะนำเฉพาะสำหรับค่าเริ่มต้น) c = 121, v = x: ค่าจะต้องเป็นศูนย์เท่านั้นเว้นแต่จะได้รับอนุญาตเป็นอย่างอื่นในแนวทางปฏิบัติเฉพาะที่แนะนำ

.

c = 122, v = 0: ปิดการควบคุมท้องถิ่น: เมื่อปิดการควบคุมภายในอุปกรณ์ทั้งหมดในช่องที่กำหนดจะตอบกลับเฉพาะข้อมูลที่ได้รับผ่าน MIDI ข้อมูลที่เล่น ฯลฯ จะถูกละเว้น

c = 122, v = 127: เปิดการควบคุมเฉพาะที่: การควบคุมท้องถิ่นเปิดฟังก์ชั่นการทำงานของคอนโทรลเลอร์ปกติ

หมายเหตุทั้งหมดปิด เมื่อได้รับ All Notes Off ออสซิลเลเตอร์ทั้งหมดจะปิด

c = 123, v = 0: หมายเหตุทั้งหมดปิด (ดูข้อความสำหรับคำอธิบายของคำสั่งโหมดจริง)

c = 124, v = 0: ปิดโหมด Omni

c = 125, v = 0: เปิดโหมด Omni

c = 126, v = M: โหมดโมโนเปิด (โพลีปิด) โดยที่ M คือจำนวนช่องสัญญาณ (Omni Off) หรือ 0 (Omni On)

c = 127, v = 0: เปิดโหมด Poly (ปิดโมโน) (หมายเหตุ: ข้อความทั้งสี่นี้ยังเป็นสาเหตุให้ All Notes Off)

ขั้นตอนที่ 10: MIDI IN และ Sound Engines

หากคุณต้องการอ่าน midi จากคอมพิวเตอร์แป้นพิมพ์หรือคอนโทรลเลอร์ midi อื่น ๆ และทำสิ่งสนุก ๆ กับมันนี่คือสิ่งที่สนุกที่ควรทำ

โปรแกรมเล่น WAV: โล่นี้ช่วยให้คุณเล่นไฟล์เสียงที่ถูกทริกเกอร์โดย … สิ่งที่คุณต้องการให้ถูกทริกเกอร์โดย Midi คือสิ่งหนึ่งที่คุณสามารถใช้ได้ สามารถใช้สร้างชุดกลองอิเล็กทรอนิกเพิ่มเสียงให้กับแป้นพิมพ์ MIDI สำหรับการติดขัดแบบพกพาหรือส่ง MIDI จากโทรศัพท์ของคุณเพื่อส่งเสียงผายลมใต้โซฟา

ซินหรือเอฟเฟกต์: โล่นี้สร้างขึ้นในเสียงและ synth ดังนั้นคุณสามารถใช้ midi เพื่อกำหนดรูปคลื่นและส่งออกไปยังแอมป์ นี่อาจเป็นผ่าน midi หรือโดยตรงจากคอนโทรลเลอร์ของคุณ

แท่นวางโคมไฟ: Midi เป็นวิธีที่ยอดเยี่ยมในการควบคุมสิ่งต่าง ๆ ที่ยอดเยี่ยม คุณสามารถเขียนรหัส midi เพื่อไปพร้อมกับการแสดงบนเวทีของคุณและตั้งค่า arduino อ่านอินพุต midi และรีเลย์ควบคุมและปิดไฟและเปิดในส่วนต่าง ๆ ของการเต้นรำหรือการแสดงดนตรีของคุณ

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

ขั้นตอนที่ 11: MIDI ถึง

Midi thru ถูกออกแบบมาสำหรับเครื่องดนตรี midi daisy chaining Midi thru นั้นเหมือนกับสายเอาท์พุทยกเว้นมันรวมถึงสำเนาโดยตรงของสายอินพุต ทุกสิ่งที่เข้ามาต้องผ่าน

ซึ่งหมายความว่าคุณสามารถเสียบเครื่องมือเข้ากับอินพุตใช้เครื่องมือเพื่อควบคุมเอฟเฟกต์บนอุปกรณ์ midi แต่จากนั้นก็ส่งข้อมูล midi จาก midi ผ่านเข้าไปยังอุปกรณ์ถัดไปในโซ่

นอกจากนี้คุณยังสามารถใช้ midi thru เป็นเอฟเฟกต์ได้หลายแบบ หากคุณมีอินพุตเดียวที่ส่งไปยังหลาย ๆ พอร์ตคุณสามารถเล่นคีย์บอร์ดเดียวที่ส่งออกเพื่อควบคุมเสียงหลายรายการ กล่องสวิตช์บนกล่องสามารถปิดการทำงานที่แตกต่างกันผ่านพอร์ตเพื่อควบคุมสิ่งนี้