สารบัญ:

ตัวควบคุม Arduino MIDI พื้นฐาน: 5 ขั้นตอน
ตัวควบคุม Arduino MIDI พื้นฐาน: 5 ขั้นตอน

วีดีโอ: ตัวควบคุม Arduino MIDI พื้นฐาน: 5 ขั้นตอน

วีดีโอ: ตัวควบคุม Arduino MIDI พื้นฐาน: 5 ขั้นตอน
วีดีโอ: EP 27. Arduino ฉบับไวจนไฟลุก !! - สาระเดฟ ใน 3 นาที 2024, อาจ
Anonim
ตัวควบคุม Arduino MIDI พื้นฐาน
ตัวควบคุม Arduino MIDI พื้นฐาน

บทนำ:

ฉันยังใหม่กับการทำงานกับ Arduino แต่ฉันหวังว่าจะได้เพิ่มพูนความรู้โดยการสอนผู้อื่นและรับข้อเสนอแนะ นี่คือตัวควบคุม MIDI ขั้นพื้นฐานที่มี 4 ปุ่มและโพเทนชิออมิเตอร์ โครงร่างสำหรับโครงการนี้มีลักษณะดังนี้:

1. สร้างเขียงหั่นขนม

2. อัปโหลด Sketch ไปยัง Arduino

3. ทำความเข้าใจ MIDI แบบไม่มีขนและวง MIDI ภายใน (loopbe1)

4. กำหนดเส้นทาง MIDI ของคุณไปที่ DAW (Ableton)

เสบียง

1 x Arduino Mega 2560

1 x แผ่นขนมปัง

1 x สาย USB

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

4 x ปุ่มแทค

ตัวต้านทาน 4 x 120Ohm

สายจัมเปอร์ 14 เส้นสำหรับเขียงหั่นขนม

ขั้นตอนที่ 1: สร้างเขียงหั่นขนม

สร้างเขียงหั่นขนม
สร้างเขียงหั่นขนม
สร้างเขียงหั่นขนม
สร้างเขียงหั่นขนม

เชื่อมต่อเขียงหั่นขนมของคุณเพื่อให้ส่วนประกอบทั้งหมดตรงกับภาพที่ 1 ด้านบน แต่ละปุ่มควรมีลักษณะเหมือนกับภาพที่ 2 อินพุตของปุ่มคือ 2, 3, 4 และ 5 บน Arduino และพินตรงกลางของโพเทนชิออมิเตอร์เชื่อมต่อกับอินพุต ANALOG A0

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

กำลังอัปโหลด Sketch
กำลังอัปโหลด Sketch

คัดลอกและวางโค้ดด้านล่างลงใน Arduino IDE เลือกบอร์ดที่ถูกต้องภายใต้ "เครื่องมือ" และอัปโหลดภาพร่างไปยัง Arduino

byte noteON = 144;//note on commandbyte note;//ที่เก็บข้อมูลสำหรับโน้ต int button ที่กำลังเล่นอยู่ Pin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; ปุ่ม intPin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage สำหรับสถานะปุ่มปัจจุบัน boolean lastState = LOW; // ที่เก็บข้อมูลสำหรับสถานะปุ่มสุดท้ายเป็นโมฆะการตั้งค่า () {pinMode (buttonPin1, INPUT); pinMode(ปุ่มPin2, INPUT); pinMode (ปุ่ม Pin3, INPUT); pinMode (ปุ่ม Pin4, INPUT); //คราวนี้เราจะตั้งค่าพินเป็น INPUT Serial.begin(9600);// เริ่มต้นการเชื่อมต่อแบบอนุกรม } void loop(){ int PotVal = analogRead(potPin); ความเร็วไบต์ = แผนที่ (PotVal, 0, 1023, 0, 127); currentState = digitalRead (ปุ่มพิน1); if (currentState == สูง && lastState == LOW) { MIDImessage (noteON, 60, velocity); // เปิดโน้ต 60 โดยมีการหน่วงเวลา 127 ความเร็ว (200); // รูปแบบหยาบของปุ่ม debouncing } อื่น ๆ if (currentState == LOW && lastState == สูง){ MIDImessage(noteON, 60, 0);//turn note 60 off delay(2);//รูปแบบหยาบของปุ่ม debouncing } lastState = currentState; currentState = digitalRead (ปุ่มพิน2); if (currentState == HIGH && lastState == LOW){//หากเพิ่งกดปุ่ม MIDImessage(noteON, 61, velocity);// เปิดโน้ต 60 ด้วยความเร็ว 127 ความเร็ว (200); // รูปแบบของปุ่มที่หยาบ debouncing } อื่น if(currentState == LOW && lastState == HIGH){ MIDImessage (noteON, 60, 0);//turn note 60 off delay(2);//รูปแบบหยาบของปุ่ม debouncing } lastState = currentState; currentState = digitalRead (ปุ่มพิน3); if (currentState == HIGH && lastState == LOW){//หากเพิ่งกดปุ่ม MIDImessage(noteON, 62, velocity);// เปิดโน้ต 60 ด้วยความเร็ว 127 ความเร็ว (200); // รูปแบบปุ่มหยาบ debouncing } อื่น if(currentState == LOW && lastState == HIGH){ MIDImessage (noteON, 60, 0);//turn note 60 off delay(2);//รูปแบบหยาบของปุ่ม debouncing } lastState = currentState; currentState = digitalRead (ปุ่มพิน4); if (currentState == HIGH && lastState == LOW){//หากเพิ่งกดปุ่ม MIDImessage(noteON, 63, velocity);// เปิดโน้ต 60 ด้วยความเร็ว 127 ความเร็ว (200); // รูปแบบปุ่มหยาบ debouncing } อื่น if(currentState == LOW && lastState == HIGH){ MIDImessage (noteON, 60, 0);//turn note 60 off delay(2);//รูปแบบหยาบของปุ่ม debouncing } lastState = currentState; } // ส่งข้อความ MIDI เป็นโมฆะ MIDImessage (คำสั่งไบต์, ไบต์ data1, ไบต์ data2) { Serial.write (คำสั่ง); Serial.write(data1); Serial.write(data2); }

ฉันยังใหม่มากในการเขียนโค้ดโดยทั่วไป….. ผู้ที่มีประสบการณ์มากกว่านี้อาจจะทำความสะอาดสิ่งนี้ได้…

ขั้นตอนที่ 3: ทำความเข้าใจ MIDI แบบไม่มีขนและ MIDI ลูปภายใน

ทำความเข้าใจ MIDI แบบไม่มีขนและ MIDI ลูปภายใน
ทำความเข้าใจ MIDI แบบไม่มีขนและ MIDI ลูปภายใน
ทำความเข้าใจ MIDI แบบไม่มีขนและ MIDI ลูปภายใน
ทำความเข้าใจ MIDI แบบไม่มีขนและ MIDI ลูปภายใน
ทำความเข้าใจ MIDI แบบไม่มีขนและ MIDI ลูปภายใน
ทำความเข้าใจ MIDI แบบไม่มีขนและ MIDI ลูปภายใน

Arduino ต้องทำงานผ่านบริดจ์อนุกรมเช่น Hairless MIDI จากนั้นผ่านลูป MIDI ภายใน เช่น loopbe1 (หรือบัส IAC สำหรับ Mac)

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

เลือก Arduino ของคุณในพอร์ตอนุกรม Hairless MIDI และ loopbe1 หรือ IAC Bus ใน MIDI out

หมายเหตุ: ตรวจสอบให้แน่ใจว่าไม่ได้เปิดปิดเสียงเมื่อใช้ loopbe1

ขั้นตอนที่ 4: เชื่อมต่อกับ DAW. ของคุณ

เชื่อมต่อกับ DAW ของคุณ
เชื่อมต่อกับ DAW ของคุณ

หากคุณได้รับสัญญาณไปยังแอพ Hairless MIDI เมื่อคุณกดปุ่มบนเขียงหั่นขนม (ไฟจะกะพริบ) คุณควรจะสามารถส่งข้อมูล MIDI ไปยัง DAW ได้ ฉันใช้ Ableton แต่ DAW ใด ๆ ควรใช้งานได้ ตรวจสอบให้แน่ใจว่าได้เปิดใช้งาน MIDI loop ภายใน (loopbe1) ในการตั้งค่า DAW ของคุณแล้ว (ใน Ableton คุณต้องการให้เปิดใช้งาน "track") จากนั้นเลือกอินพุตแทร็ก MIDI ของคุณไปยัง MIDI loop (loopbe1) ตามที่แสดงในภาพด้านบน

ขั้นตอนที่ 5: เล่น

Image
Image

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

แนะนำ: