สารบัญ:

Arduino Multi-track MIDI Loop Station: 6 ขั้นตอน
Arduino Multi-track MIDI Loop Station: 6 ขั้นตอน

วีดีโอ: Arduino Multi-track MIDI Loop Station: 6 ขั้นตอน

วีดีโอ: Arduino Multi-track MIDI Loop Station: 6 ขั้นตอน
วีดีโอ: Expression Pedal & More Buttons! · Making a MIDI Controller with Arduino 2024, กรกฎาคม
Anonim
Arduino Multi-track MIDI Loop Station
Arduino Multi-track MIDI Loop Station
Arduino Multi-track MIDI Loop Station
Arduino Multi-track MIDI Loop Station
Arduino Multi-track MIDI Loop Station
Arduino Multi-track MIDI Loop Station

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

มีสถานีวนรอบการบันทึกเสียงอยู่มากมาย ทั้งในรูปแบบของฮาร์ดแวร์เฉพาะ (ผู้ผลิตแป้นเหยียบกีต้าร์เกือบทุกรายมีผลิตภัณฑ์ของตัวเอง) หรือซอฟต์แวร์คอมพิวเตอร์ (Linux Sooper Looper หรือ windows Mobius ที่ยอดเยี่ยมเพื่ออ้างถึงสิ่งที่เป็นที่รู้จักมากที่สุด) ฉันหาได้เพียงไม่กี่โปรเจ็กต์เกี่ยวกับ DIY ที่ไม่ใช่เสียง แต่ MIDI loopers หมายถึงเครื่องมือในการบันทึกเหตุการณ์ MIDI และเล่นวนซ้ำทันที โครงการเหล่านี้ส่วนใหญ่ (ทั้งหมดที่ฉันควรจะพูด) ถูกทอดทิ้งหรือสูญหาย … เอาละเรามีโครงการที่สมบูรณ์สำหรับทุกคน!

สถานีวนรอบ Arduino MIDI นี้เพียงติดตามเหตุการณ์ MIDI ที่เข้ามาและเล่นกลับ คุณเพียงแค่กดแป้นบันทึก สร้างริฟฟ์ที่ดีที่สุดของคุณ และหยุดการบันทึกโดยกดแป้นอีกครั้ง ง่ายมาก:)

โปรเจ็กต์นี้ใช้ฮาร์ดแวร์แบบเปิดที่หาง่าย (Arduino DUE) ซอฟต์แวร์ (เฟิร์มแวร์ของฉันเอง และ Arduino IDE) และสามารถปรับแต่งให้สอดคล้องกับความต้องการของคุณได้

มาทำกัน!

PS: ใช่ มันถูกมาก!

ขั้นตอนที่ 1: ขีดจำกัด

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

- เนื่องจากข้อจำกัดของฮาร์ดแวร์ (โดยพื้นฐานแล้ว หน่วยความจำ Aduino DUE) ความยาวสูงสุดของวลีที่คุณสามารถบันทึกได้จึงจำกัดไว้ที่ 46 วินาที

- ไม่สามารถจัดเก็บและเล่นลูปได้หลังจากปิดตัวลง คุณสามารถส่งไปยังพีซีและบันทึกไว้ได้

- ไม่มีการนับจำนวนบันทึก

- รองรับนาฬิกา MIDI แต่อยู่ในขั้นเบื้องต้นในขณะนี้

- ข้อความ MIDI ที่บันทึก ได้แก่ เปิดโน้ต ปิดโน้ต ควบคุมการเปลี่ยนแปลง และการโค้งงอ ข้อความ MIDI อื่นๆ เช่น After touch, การเปลี่ยนโปรแกรม, SysEx ฯลฯ จะถูกละเว้น

- โพลีโฟนีสูงสุดถูกตั้งค่าเป็น 10 โดยค่าเริ่มต้น (อีกครั้ง ขีดจำกัดหน่วยความจำ Aduino DUE)

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

หากการใช้ชีวิตด้วยข้อจำกัดเหล่านี้ดูสมเหตุสมผล (และสำหรับฉัน) คุณจะมีช่วงเวลาที่ดีกับสิ่งนี้;)

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

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

1) เลือกแทร็กที่คุณต้องการบันทึกลำดับ MIDI ของคุณ ตามค่าเริ่มต้น แทร็ก "หนึ่ง" จะถูกเลือก แต่คุณสามารถเปลี่ยนได้โดยการกดปุ่มแทร็กใดปุ่มหนึ่ง (หนึ่งปุ่มสำหรับแต่ละแทร็ก)

2) เมื่อคุณกดสวิตช์ "REC" / เท้าเหยียบในครั้งแรก ตัววนลูปจะทำงาน ไฟ LED สีเขียวจะสว่างขึ้น จะรอจนกระทั่งได้รับโน้ตตัวแรกของคุณก่อนที่จะเริ่มบันทึกลำดับ/ริฟฟ์จริง

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

4) ตอนนี้ คุณสามารถตัดสินใจที่จะโอเวอร์ดับซีเควนซ์ของคุณบนแทร็กปัจจุบัน หรือเลือกแทร็กใหม่และบันทึกได้ โดยกดสวิตช์ "REC"/แป้นเหยียบ ในทั้งสองกรณี ไฟ LED สีเหลืองจะสว่างขึ้น แม้ว่าแทร็กใหม่จะว่างเปล่า เนื่องจากเป็นแทร็ก "ทาส" (เป็นแทร็กแรกที่บันทึกไว้) กดอีกครั้งเพื่อหยุดการทับซ้อน (ไฟ LED สีเหลืองดับ)

สำหรับผู้ที่ชอบใช้สถานีวนลูปเสียง ความก้าวหน้าของ MIDI นี้เรียกว่า "REC/PLAY/OVERDUB" และรองรับเท่านั้น

หากเมื่อใดก็ตามที่คุณรู้สึกว่า Overdub ล่าสุดของคุณไม่เป็นไร คุณสามารถลบออกได้โดยกดสวิตช์ "เลิกทำ"/แป้นเหยียบ คุณสามารถล้างแทร็กปัจจุบันทั้งหมดได้โดยกดแป้น "REC" ค้างไว้นานกว่า 3 วินาที คุณสามารถรีเซ็ต looper (รีเซ็ตซอฟต์แวร์) ได้โดยกดปุ่มแทร็กสามปุ่มแรกพร้อมกันหรือล้างแทร็กที่ใช้ทั้งหมด

คุณสามารถปิด/เปิดเสียงแทร็คได้โดยการกดปุ่มแทร็คของแทร็คปัจจุบัน

ส่งแพนิคได้! ข้อความโดยกดปุ่มตกใจ คุณยังสามารถส่ง PANIC! ข้อความโดยกดปุ่มสองแทร็กแรกพร้อมกัน

Looper มีเครื่องเมตรอนอมแบบง่ายในตัว: บันทึกในข้อความ MIDI สำหรับโน้ตหมายเลข "64" จะถูกส่งที่ 100 BPM ที่ช่อง 10 (ช่องที่คุณน่าจะให้เครื่องกลองของคุณฟังอยู่) คุณสามารถเพิ่มหรือลดความเร็วจังหวะได้โดยการเปลี่ยนตัวเข้ารหัสออปติคัล โดยการกดสวิตช์เข้ารหัสออปติคัล คุณสามารถเปิด/ปิดใช้งานเครื่องเมตรอนอมได้ โปรดสังเกตว่าเครื่องดรัมของคุณต้องตั้งค่าให้เล่นเสียง (บ่วง เบส หรือเสียงอะไรก็ได้ที่คุณต้องการ) เมื่อได้รับโน้ต MIDI "64" มิฉะนั้นเครื่องเมตรอนอมจะปิดเสียง

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

หากคุณต้องการใช้เวลาเพิ่มเติมในการพัฒนาฮาร์ดแวร์ การเพิ่มสวิตช์และปุ่มจะทำให้ลูปสเตชั่นมีความยืดหยุ่นมากขึ้น ในภาพคือวิธีที่ฉันได้กำหนดค่าสี่แทร็กของฉัน (รองรับสูงสุดห้าแทร็ก) ลูปสเตชั่นเต็มรูปแบบ

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

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

ขั้นตอนที่ 3: ฮาร์ดแวร์

ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์

รายการวัสดุ:

MIDI loop station 5 แทร็กที่มีคุณลักษณะครบถ้วน

1x Arduino DUE

7x ปุ่มกดชั่วขณะ

1x กล่องพลาสติก (ฉันใช้เคสขนาด 150 x 110 x 70 มม.)

ขั้วต่อซ็อกเก็ต MIDI แบบติดตั้งบนแผงตัวเมีย 2x 5 ขา

1x6.3 มม. เต้ารับสำหรับยึดแผงควบคุม

1x สองด้าน 50x70 มม. บอร์ด perf

ไฟ LED 5x3 มม. (สีเขียว)

1x3 มม. LED (สีเหลือง)

1x ตัวเข้ารหัสออปติคัล

1x H11L1 ออปโตคัปเปลอร์

1x 1N4148 ไดโอด

ตัวต้านทาน 3x 1,000 โอห์ม

ตัวต้านทาน 3x 220 โอห์ม

ตัวต้านทาน 10x 470 โอห์ม

ลวดบัดกรี สายเคเบิลบางส่วน สถานีบัดกรี… และเวลาว่าง:)

เวลาที่ใช้ในโครงการ: 6-9 ชั่วโมง

ทำไมไม่เป็น UNO?

การทดสอบครั้งแรก (และรหัสการทำงานเริ่มต้น) ถูกเขียนบนบอร์ด Arduino UNO "ปกติ" บอร์ดนี้มีขีดจำกัด RAM ที่บังคับให้ฉันลดโพลิโฟนีเป็น "4" ความยาวสูงสุดเหลือน้อยกว่า 4 วินาที และความละเอียด 40 ms ที่สูงสุด สิ่งนี้ไม่มีการจัดการหลายช่องสัญญาณ การลบการติดตามความเร็วออกด้วย ทำให้ฉันสามารถเพิ่มเวลาในการบันทึกได้ถึง 7 วินาที

ด้วย UNO คุณสามารถรับรู้ถึงสถานีวนรอบ MIDI ที่ "ใช้งานได้" แต่มีข้อ จำกัด อย่างมาก

ขั้นตอนที่ 4: ซอฟต์แวร์

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

Arduino IDE และชุมชนเป็นอีกส่วนสำคัญของ "ความสำเร็จ" นี้

ฉันจะไม่ลงรายละเอียดเกี่ยวกับวิธีการอัปโหลดภาพร่างไปยัง Arduino DUE ของคุณ หากนี่เป็นประสบการณ์ครั้งแรกของคุณกับ arduino IDE โปรดอ่านสิ่งนี้ก่อน

ฉันเขียนโค้ดสองเวอร์ชันที่แตกต่างกัน โดยอิงจากแนวทางที่แตกต่างกันโดยสิ้นเชิงสองวิธี

หลักการทำงานของเวอร์ชัน 1 คือระหว่างการบันทึกหรือ overdubbing Arduino DUE ให้ตรวจสอบและจัดเก็บเหตุการณ์ MIDI ที่รองรับในหน่วยความจำ (ระเหย) (บันทึกบน ปิดบันทึก ควบคุมการเปลี่ยนแปลง แกนเวลาจะถูกกำหนดปริมาณในขั้นตอน 20 ms และข้อความที่ได้รับจะถูกเก็บไว้ในช่องเหล่านั้นตามลำดับ ขณะเล่น ข้อความ MIDI ที่จัดเก็บไว้จะถูกส่งกลับไปยังซินธ์ตามการควอนไทซ์เวลา

หลักการทำงานของเวอร์ชัน 2 แทน คือ "เพียง" บันทึกเหตุการณ์ midi และเวลาที่เหตุการณ์ต้องถูกทริกเกอร์ เวอร์ชัน 2 มีขีดจำกัดที่แตกต่างจากเวอร์ชัน 1 (แสดงรายการในขั้นตอนก่อนหน้า) ลองใช้ทั้งสองอย่างและใช้อันที่ได้ผลดีกว่าสำหรับคุณ

มีการจัดการนาฬิกาเบื้องต้นด้วย แต่จะต้องมีการปรับแต่งบางอย่างเพื่อให้ทำงานได้ตามที่ควรจะเป็น รหัสถือว่าคุณบันทึกลูป 4/4 - 4 บาร์ (16 จังหวะ)

คุณสามารถปิดใช้งานนาฬิกาภายนอกได้โดยกดปุ่ม "ตื่นตระหนก" ค้างไว้เมื่อเปิดเครื่องวนซ้ำ

รหัสถูกอัปโหลดที่นี่ ความคิดเห็นจะถูกวางไว้ทั่วเพื่อให้คุณสามารถโค้งงอเฟิร์มแวร์เหล่านั้นได้ตามต้องการ;)

ขั้นตอนที่ 5: การเดินสายไฟ

สายไฟ
สายไฟ
สายไฟ
สายไฟ
สายไฟ
สายไฟ

มีการรายงานวงจร MIDI IN และ MIDI OUT ในรูปที่แนบมา โปรดสังเกตว่ามีการใช้ TX1 และ RX1 ไม่ใช่ TX0 และ RX0

พินอินพุต Arduino DUE ไม่สามารถจัดการ 5V แต่ 3.3V; นี่คือเหตุผลที่ใช้ออปโตคัปเปลอร์ H11L1 แทน 6N138 ทั่วไป ฉันมีหลักฐานว่าการใช้ 6N138 ร่วมกับตัวแบ่งแรงดันไฟฟ้าเพื่อลดแรงดันสัญญาณไปที่ TX1 เช่นเดียวกับในโปรโตไทป์แรกของฉันสามารถทำงานผิดปกติในการตั้งค่าบางอย่าง

LED เชื่อมต่อกับพินเอาต์พุต Arduino DUE ผ่านตัวต้านทาน 470 โอห์ม คุณสามารถใช้ตัวต้านทานได้สูงถึง 1K โอห์ม เพื่อลดกระแสไฟที่ส่งไปยัง LED และลดความส่องสว่าง

ปุ่ม/สวิตช์/แจ็คเชื่อมต่อโดยตรงกับพินอินพุตของ Arduino ด้วยตัวต้านทานอินพุตแบบดึงขึ้นซึ่งเปิดใช้งานในภาพร่าง ไม่จำเป็นต้องใช้ตัวต้านทานภายนอก (แบบดึงลง)

ตัวเข้ารหัสแบบออปติคัลเชื่อมต่อกับ GND และ +5V มันไปที่พินอินพุตของ Arduino ผ่านตัวต้านทาน 2 480 โอห์มหนึ่งตัวสำหรับเอาต์พุตข้อมูลออปติคัลแต่ละตัว

Arduino DUE ได้รับพลังงานโดยตรงจากพิน 5V และกราวด์ผ่านฮับ DC +5V

พื้นที่ทั้งหมดผูกติดกัน

ที่แนบมาเป็นตารางที่มีการเชื่อมต่อจากพิน Arduino ไปยังอุปกรณ์ต่อพ่วง IN / OUT หมายเลขพินของ Arduino สะท้อนถึงสิ่งเหล่านั้นในฮาร์ดแวร์ต้นแบบของฉันและอาจดูเหมือน (เป็นอย่างใดอย่าง…) แบบสุ่ม คุณสามารถแก้ไขตำแหน่งพินในภาพร่างได้อย่างง่ายดายตามต้องการ;)

ขั้นตอนที่ 6: จะเกิดอะไรขึ้นหากฉันมีแหล่ง MIDI มากกว่าหนึ่งแหล่ง

จะเกิดอะไรขึ้นหากฉันมีแหล่ง MIDI มากกว่าหนึ่งแหล่ง
จะเกิดอะไรขึ้นหากฉันมีแหล่ง MIDI มากกว่าหนึ่งแหล่ง

หลังจากค้นหาการควบรวมกิจการ MIDI สั้น ๆ ฉันพบว่าโซลูชันที่ใช้งานได้จริง (และราคาถูก) ที่สุดคือตัวสลับ MIDI

ตัวสลับ MIDI เป็นอุปกรณ์แบบพาสซีฟที่เปิดใช้งานแหล่ง MIDI และปิดใช้งานแหล่งอื่นทั้งหมด ง่ายๆ อย่างนั้น

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

ที่ลิงค์นี้

แนะนำ: