สารบัญ:

Arduino Uno Midi Fighter: 5 ขั้นตอน
Arduino Uno Midi Fighter: 5 ขั้นตอน

วีดีโอ: Arduino Uno Midi Fighter: 5 ขั้นตอน

วีดีโอ: Arduino Uno Midi Fighter: 5 ขั้นตอน
วีดีโอ: Arduino MIDI Controller Build, Part 1 2024, กรกฎาคม
Anonim
Arduino Uno Midi Fighter
Arduino Uno Midi Fighter

คำแนะนำนี้ถูกสร้างขึ้นเพื่อตอบสนองความต้องการของโครงการ Makecourse ที่มหาวิทยาลัยเซาท์ฟลอริดา (www.makecourse.com)

คอนโทรลเลอร์ Musical Instrument Digital Interface (MIDI) แบบโฮมเมดจาก MidiFighter ที่ได้รับความนิยมโดย DJ Techtools สามารถใช้เป็นอุปกรณ์ MIDI กับซอฟต์แวร์ Digital Audio Workstation (DAW) ได้ ตัวควบคุม MIDI สามารถส่งและรับข้อความ MIDI จากคอมพิวเตอร์ และสามารถใช้เพื่อควบคุมซอฟต์แวร์ที่ใช้ได้โดยตรง นอกจากนี้ การควบคุมบนตัวควบคุม MIDI ยังสามารถปรับแต่งได้อย่างเต็มที่ ซึ่งหมายความว่าแต่ละปุ่ม ตัวเลื่อน และปุ่มหมุนสามารถจับคู่กับฟังก์ชันใดก็ได้ใน DAW ตัวอย่างเช่น การกดปุ่มสามารถเล่นโน้ตเฉพาะหรือตั้งโปรแกรมให้สลับจังหวะของโปรเจ็กต์เสียงของคุณได้

github.com/jdtar/Arduino-Midi-Controller

ขั้นตอนที่ 1: วัสดุ

ด้านล่างเป็นรายการวัสดุและเครื่องมือที่ใช้ในโครงการนี้

Arduino Uno

เขียงหั่นขนม

4051/4067 มัลติเพล็กเซอร์

สายจัมเปอร์

ลวดเสริม

2x 10k ohm โพเทนชิโอมิเตอร์แบบสไลด์เชิงเส้น

16x ปุ่ม Sanwa 24mm

หดความร้อน

หัวแร้ง

ใบมีดโกน

ตัวต้านทาน 4.7 kΩ

แผ่นอะครีลิค (สำหรับฝา)

ตัวเรือนสำหรับปุ่มและ Arduino

เครื่องพิมพ์สามมิติ

เครื่องตัดเลเซอร์

ขั้นตอนที่ 2: ออกแบบ

ออกแบบ
ออกแบบ
ออกแบบ
ออกแบบ

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

หลังจากวาดเลย์เอาต์สำหรับฝาแล้ว ฉันส่งออกไฟล์เป็น PDF แบบ 1:1 แล้วส่งไปที่เครื่องตัดเลเซอร์เพื่อตัดแผ่นอะคริลิก สำหรับรูสกรู ฉันทำเครื่องหมายตำแหน่งที่ต้องการให้รูนั้นอยู่กับมาร์กเกอร์และละลายอะครีลิคด้วยไส้หลอดร้อน

ไฟล์แนบเป็น PDF 1:1 ซึ่งสามารถพิมพ์ออกมาเป็น 1:1 และตัดด้วยเครื่องมือไฟฟ้า หากไม่มีเครื่องตัดเลเซอร์

ขั้นตอนที่ 3: การก่อสร้างและการเดินสายไฟ

การก่อสร้างและการเดินสายไฟ
การก่อสร้างและการเดินสายไฟ
การก่อสร้างและการเดินสายไฟ
การก่อสร้างและการเดินสายไฟ
การก่อสร้างและการเดินสายไฟ
การก่อสร้างและการเดินสายไฟ

หลังจากตัดอะครีลิคแล้ว ฉันพบว่าอะครีลิคบางเกินไปที่จะรองรับส่วนประกอบทั้งหมดได้อย่างเพียงพอ จากนั้นฉันก็ตัดกระดาษอีกแผ่นหนึ่งแล้วติดกาวเข้าด้วยกันซึ่งทำงานได้อย่างสมบูรณ์

การเดินสายไฟส่วนประกอบต้องใช้การลองผิดลองถูก แต่ส่งผลให้มีการแนบร่าง Fritzing ก่อนอื่นฉันต่อสายกราวด์และตัวต้านทาน4.7kΩบัดกรีและความร้อนลดการเชื่อมต่อบนปุ่ม การติดตั้งโพเทนชิโอมิเตอร์แบบสไลด์สองตัวจำเป็นต้องมีรูหลอมละลายสำหรับสกรูในอะคริลิก หลังจากที่โพเทนชิโอมิเตอร์สองตัวถูกขันเข้า พวกมันก็ต่อเข้ากับพินอะนาล็อก A0 และ A1 หลังจากเดินสายเสร็จแล้ว ฉันจำได้ว่าไม่มีปุ่มฝาครอบสำหรับเฟดเดอร์ของฉัน ดังนั้นแทนที่จะซื้อ ฉันพิมพ์ฝาครอบปุ่มบางส่วนโดยใช้เครื่องพิมพ์ 3 มิติโดยสเก็ตช์ภาพใน Autodesk Fusion 360 และส่งออกไปยังไฟล์ STL เดอ

Arduino Uno มีพินอินพุตดิจิตอลเพียง 12 พินเท่านั้น แต่จะต้องต่อสายปุ่ม 16 ปุ่ม เพื่อชดเชยสิ่งนี้ ฉันต่อสายมัลติเพล็กเซอร์ 74HC4051 บนเขียงหั่นขนมซึ่งใช้พินอินพุตดิจิตอล 4 พินและเปิดใช้งานสัญญาณหลายตัวเพื่อใช้สายที่ใช้ร่วมกัน ส่งผลให้มีพินอินพุตดิจิตอล 8 พินสำหรับพินดิจิทัลทั้งหมด 16 พินที่พร้อมใช้งาน

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

หมายเหตุ MATRIX

[C2] [C#2] [D2] [D#2]

[G#2] [A1] [A#2] [B1]

[E1] [F1] [F#1] [G1]

[C2] [C#2] [D2] [D#2]

พินเมทริกซ์ (M = MUX INPUT)

[6] [7] [8] [9]

[10] [11] [12] [13]

[M0] [M1] [M2] [M3]

[M4] [M5] [M6] [M7]

ขั้นตอนที่ 4: การเขียนโปรแกรม

การเขียนโปรแกรม
การเขียนโปรแกรม

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

จุดเริ่มต้นของสคริปต์ประกอบด้วยไลบรารี MIDI.h และไลบรารีคอนโทรลเลอร์ที่ยืมมาจากบล็อก Notes และ Volts ซึ่งรวมอยู่ในไฟล์ zip สำหรับโค้ด การใช้ไลบรารีตัวควบคุม สามารถสร้างวัตถุสำหรับปุ่ม โพเทนชิโอมิเตอร์ และปุ่มมัลติเพล็กซ์ที่มีค่าข้อมูลซึ่งรวมถึงหมายเลขบันทึกย่อ ค่าควบคุม ความเร็วของโน้ต หมายเลขช่อง MIDI ฯลฯ ไลบรารี MIDI.h เปิดใช้งานการสื่อสาร MIDI I/O บน พอร์ตอนุกรม Arduino ซึ่งจะนำข้อมูลจากอ็อบเจ็กต์ตัวควบคุม แปลงเป็นข้อความ MIDI และส่งข้อความไปยังอินเทอร์เฟซ midi ใดก็ตามที่เชื่อมต่อ

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

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

ขั้นตอนที่ 5: ตั้งค่า

Image
Image
ติดตั้ง
ติดตั้ง
ติดตั้ง
ติดตั้ง
ติดตั้ง
ติดตั้ง

เมื่อโหลดสคริปต์ลงใน Arduino แล้ว ขั้นตอนต่อไปคือการเสียบปลั๊กและเล่น มีสองสามขั้นตอนก่อนที่จะสามารถใช้งานได้

บน OSX นั้น Apple ได้รวมคุณสมบัติเพื่อสร้างอุปกรณ์ midi เสมือนซึ่งสามารถเข้าถึงได้ผ่านแอปพลิเคชัน Audio Midi Setup บน Mac เมื่อสร้างอุปกรณ์ใหม่แล้ว สามารถใช้ Hairless MIDI เพื่อสร้างการเชื่อมต่อแบบอนุกรมระหว่าง Arduino และอุปกรณ์ midi เสมือนใหม่ได้ การเชื่อมต่อแบบอนุกรมจาก Arduino ผ่าน Hairless MIDI ทำงานที่อัตราบอดที่กำหนดไว้ในส่วนการตั้งค่าโมฆะของสคริปต์ และต้องตั้งค่าให้เทียบเท่ากันในการตั้งค่าการกำหนดลักษณะ Hairless MIDI

เพื่อวัตถุประสงค์ในการทดสอบ ฉันใช้ Midi Monitor เพื่อตรวจสอบว่ามีการส่งข้อมูลที่ถูกต้องโดยคิดว่าเป็นการเชื่อมต่อ MIDI แบบอนุกรมหรือไม่ เมื่อฉันพิจารณาแล้วว่าแต่ละปุ่มส่งข้อมูลที่ถูกต้องผ่านช่องทางที่ถูกต้อง ฉันจะตั้งค่าสัญญาณ MIDI เพื่อกำหนดเส้นทางไปยัง Ableton Live 9 เป็นอินพุต MIDI ใน Ableton ฉันสามารถแมปตัวอย่างเสียงแบบแบ่งส่วนไปยังแต่ละปุ่มและเล่นแต่ละตัวอย่างได้

แนะนำ: