สารบัญ:

MIDI to CV Box อื่น: 7 ขั้นตอน (พร้อมรูปภาพ)
MIDI to CV Box อื่น: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: MIDI to CV Box อื่น: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: MIDI to CV Box อื่น: 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: [ $8 ] DIY eurorack modular synth MIDI to CV with Arduino MIDI library / switched on bach BWV846 2024, กรกฎาคม
Anonim
MIDI อื่นเป็น CV Box
MIDI อื่นเป็น CV Box

กล่อง MIDI to CV อีกอันคือโครงการที่ฉันพัฒนาขึ้นเมื่อ Korg MS10 มาเคาะประตูบ้านฉันและเกิดขึ้นในสตูดิโอของฉัน เนื่องจากการตั้งค่าของฉันเกี่ยวข้องกับ MIDI อย่างมากในการทำให้เครื่องมือทั้งหมดเป็นแบบอัตโนมัติและซิงโครไนซ์ เมื่อฉันซื้อ MS10 ปัญหาแรกที่ฉันต้องเผชิญคือวิธีการใช้การควบคุมดังกล่าว

Korg MS20/10 ไม่ใช่ซินธ์ที่ง่ายที่สุดในการปรับใช้ MIDI กับ: อย่างแรกเลย พวกเขาพึ่งพาการควบคุม Hz/V (ความสัมพันธ์เชิงเส้นระหว่างแรงดันควบคุมและความถี่โน้ต) แทนที่จะเป็น oct/V (1V ต่ออ็อกเทฟ); ประการที่สอง ในการเรียกโน้ต คุณต้องส่งสัญญาณเกตเชิงลบและลัดวงจรอินพุตไปที่กราวด์ (S-Trig) ไม่ใช่สัญญาณ +5 V (V-trig)

ทุกวันนี้มีวิธีแก้ไขปัญหาเชิงพาณิชย์มากมายในการควบคุมเครื่องมือดังกล่าว (เช่น Arturia Beatstep Pro, Korg SQ-1, Kenton Solo) แต่ฉันเป็นคนเลวราคาถูกและแม้แต่ 100 ยูโรก็มากเกินไปสำหรับอุปกรณ์ที่ "ไม่ส่งเสียง":)

เราอยู่ที่นี่แล้ว: ให้ฉันแสดงวิธีสร้างกล่อง MIDI เป็น CV ราคาประหยัดเพื่อควบคุม/ทำให้พิทช์ เกต ความเร็ว และความถี่คัตออฟของซินธิซินล่วงหน้าของ MIDI โดยอัตโนมัติด้วยตัวควบคุม MIDI ภายนอก (คีย์บอร์ด, DAW, ซีเควนเซอร์หรืออะไรก็ตาม).

"แล้ว MS20 mini ใหม่ล่ะ"

อย่างที่เกือบทุกคนรู้ MS20 ใหม่นั้นพร้อม MIDI พร้อมขั้วต่อ MIDI 5 ขั้วและ IN/OUT พร้อมขั้วต่อ USB

"ดังนั้น ถ้าฉันมี MS20 mini สิ่งนี้ไม่มีประโยชน์!"

ดีไม่มี MS20 mini รับรู้เฉพาะข้อความเปิด/ปิดโน้ต และแป้นพิมพ์ไม่ไวต่อความเร็ว ไม่มีทางที่จะเอาชนะสิ่งนี้ด้วยคีย์บอร์ดวินเทจหรือมินิ MS10/20 แต่ด้วยกล่อง midi และคีย์บอร์ดที่ไวต่อความเร็ว แสดงว่าคุณเป็นสีทอง นอกจากนี้ ด้วยกล่อง MIDI คุณสามารถตัดตัวกรองอัตโนมัติ (หรือพารามิเตอร์ควบคุมแรงดันไฟฟ้าอื่น ๆ ได้) หรือปรับเปลี่ยนโดยบันทึก MIDI ขาเข้าเกี่ยวกับความเร็ว อีกครั้ง MIDI ช่อง MS20 mini เดียวที่ตอบสนองต่อคือช่อง 1 ด้วยกล่องนี้ คุณสามารถเอาชนะขีดจำกัดนี้ได้เช่นกัน

"จะเป็นอย่างไรถ้าฉันมีซินธ์ Oct/V"

ไม่มีปัญหา! รหัสที่ฉันเขียนนั้นเข้ากันได้กับซินธิไซเซอร์ Oct/V (ยังไม่ทดลอง แต่ฉันมั่นใจว่าจะใช้งานได้ทันที;))

ขั้นตอนที่ 1: !! ข้อควรระวัง - ข้อสงวนสิทธิ์ !

อุปกรณ์ของคุณมีค่ามากและไม่ควรใช้เพื่อทำการทดสอบ

การเล่นด้วยไฟฟ้าอาจทำให้อุปกรณ์เสียหายหรือทำร้ายตัวเองได้

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

คุณได้รับการเตือน!

ขั้นตอนที่ 2: วิศวกรรมฮาร์ดแวร์

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

- Pitch โดยการแปลงเอาต์พุต pwm เป็นแรงดันแอนะล็อกเพื่อขับเคลื่อน VCO ผ่านตัวแปลงดิจิทัลเป็นแอนะล็อก (DAC)

- ความเร็วโดยการกรองเอาต์พุต pwm เพื่อขับเคลื่อน VCA ด้วยตัวกรอง RC แบบง่าย

- กรองความถี่ตัดโดยการกรองเอาต์พุต pwm เพื่อขับเคลื่อน VCF ด้วยตัวกรอง RC แบบง่าย

- เกตโดยตรงจากดิจิตอลเอาท์ในกรณีของ V-trig (ใส่ 1Kohm ในชุดที่มีเอาต์พุตเพื่อลดการระบายน้ำปัจจุบัน) หรือโดยทรานซิสเตอร์ pnp ธรรมดาสลับออกจากดิจิตอลเอาท์ (ดูแผนผังที่แนบมากับขั้นตอนแผนผัง).

Arduino ไม่สามารถส่งออกแรงดันไฟฟ้าคงที่ได้โดยตรง แต่มีพัลส์ 0/+5 V ด้วยช่วงเวลาต่างๆ (PWM) เราต้องการตัวแปลงดิจิทัลเป็นแอนะล็อก (DAC) สำหรับเท ตัวกรอง RC เป็น DAC ที่ง่ายที่สุดที่ฉันคิดได้ ตัวกรอง RC นั้นดีเพียงพอสำหรับเครื่องขยายเสียงและตัวกรองที่ควบคุมแรงดันไฟฟ้า (VCA และ VCF) ตัวกรอง RC ได้รับการปรับแต่งเพื่อให้มีความถี่ตัด < 20Hz (ความถี่ที่ได้ยินต่ำสุด)

ฉันทำการทดสอบด้วยตัวเก็บประจุแบบไม่มีโพลาไรซ์ความจุต่ำ และจบลงด้วยค่าความจุ 0.1uF เพื่อให้เหมาะสมที่สุด ทดสอบได้ดีกับ MS20 MKII

น่าเสียดายที่เราไม่สามารถพึ่งพาตัวกรอง RC เพื่อขับเคลื่อนออสซิลเลเตอร์ที่ควบคุมด้วยแรงดันไฟฟ้า (VCO) ได้ เนื่องจากมันจะไม่ถูกต้องเพียงพอ (ในระดับ Hz/V ที่ปลายล่างสองอะดิเอเซนด์เซมิโทนต่างกันน้อยกว่า 0.02V ใน V /oct สองเสียงครึ่งเสียงต่างกันสำหรับ 0.083 V); เราจะใช้ IC DAC (MPC4725) สำหรับสิ่งนี้

ขีดจำกัดที่ทราบ

การจำกัดแรงดันไฟฟ้าของไดรฟ์ไว้ที่ 5V (แรงดันเอาต์พุต Arduino) ช่วง 0 ถึง 5V ทั้งหมดครอบคลุมสำหรับความเร็ว ตัวตัดถูกปิดไว้ครึ่งหนึ่ง (-5V ถึง +5V); ช่วง VCO ครอบคลุมบางส่วนเนื่องจากใน Hz/V ต้องใช้แรงดันไฟฟ้า 8 V เพื่อให้ไปถึง 440 Hz A4 ด้วยขีดจำกัดเอาต์พุต 5V เราสามารถปรับออสซิลเลเตอร์ได้ถึงความถี่ D4 ในหน่วย Hz/V

ขั้นตอนที่ 3: รายการส่วนประกอบ

รายการส่วนประกอบ
รายการส่วนประกอบ
รายการส่วนประกอบ
รายการส่วนประกอบ
รายการส่วนประกอบ
รายการส่วนประกอบ

คุณต้องการ:

1X Arduino UNO (หรือนาโน)

1X MPC4725 บอร์ด DAC

ขั้วต่อโมโน 4X 1/8" หรือ 1/4"

ขั้วต่อ MIDI 1X

1X 6N138 ออปโตคัปเปลอร์

1X 1N4148 ไดโอด

1X220 โอห์ม 1/4 W ตัวต้านทาน

1X 470 โอห์ม 1/4 W ตัวต้านทาน

1X 10K โอห์ม 1/4 W ตัวต้านทาน

4X 1K โอห์ม 1/4 W ตัวต้านทาน

ตัวเก็บประจุ 2X 0.1 ยูเอฟ

1X BC547 pnp ทรานซิสเตอร์ (ในกรณีของ S-trig)

1X กล่อง ABS (อย่างน้อย 55 x 70 x 100 มม.)

… และเห็นได้ชัดว่าเป็นเขียงหั่นขนมหรือแผ่นไม้อัด เหล็กบัดกรี ลวดบัดกรี และสายเคเบิล (2 เมตรจาก 28 AWG ควรเพียงพอ)

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

ฉันใช้ตัวเชื่อมต่อเพิ่มเติมเพื่อจ่ายพลังงานให้กับ Arduino ของฉัน ไม่จำเป็นต้องคั้นไมโครคอนโทรลเลอร์โดยตรงผ่านขั้วต่อ mini USB ในตัว

ขั้นตอนที่ 4: การเชื่อมต่อ/แผนผัง

การเชื่อมต่อ/แผนผัง
การเชื่อมต่อ/แผนผัง
การเชื่อมต่อ/แผนผัง
การเชื่อมต่อ/แผนผัง
การเชื่อมต่อ/แผนผัง
การเชื่อมต่อ/แผนผัง

MIDI IN

วงจร MIDI IN นั้นเรียบง่ายและอธิบายได้ดีบนเน็ต ใช้คำสั่งที่ยอดเยี่ยมนี้บน MIDI และ Arduino โดย Amanda Gassaei เป็นต้น ฉันทำแผนผังที่ n เกี่ยวกับเรื่องนี้

ขอให้สังเกตว่าฉันได้เพิ่มสวิตช์ในรูปแบบ MIDI IN (สวิตช์ 1): นี่เป็นสิ่งจำเป็นเมื่ออัปโหลดภาพร่างใหม่ไปยัง Arduino เนื่องจาก opto จะรบกวนบรรทัด RX แม้จะไม่มีข้อความ midi เข้ามาก็ตาม คุณต้องเปิดสวิตช์ก่อนที่จะอัปโหลดภาพร่างของคุณ มิฉะนั้น IDE จะไม่สามารถอัปโหลดภาพร่างใหม่ได้

ในที่สุดคุณสามารถแก้ไขภาพร่างเพื่อใช้การสื่อสารซอฟต์แวร์แบบอนุกรม

DAC, ฟิลเตอร์ RC, ซินธิไซเซอร์

การเชื่อมต่อสำหรับ DAC, RC filter และ Synth (pitch, gate และ velocity) แสดงในแผนภาพด้านบน ฉันใช้เพื่ออ้างอิงแผงแพตช์ Korg MS20 แต่ฉันทดสอบทุกอย่างบน MS10 ด้วย การเชื่อมต่อโดยตรงของ CV CV กับ VCA "initial gain" patch point ไม่มีผล (ฉันต้องขุดสิ่งนี้เพิ่มเติม) แต่ถ้าคุณเชื่อมต่อกับจุดแก้ไข "Total" และเพิ่ม pot ภายนอกทั้งหมดของคุณ (MG/T. EXT) คุณจะได้ยินการแปรผันของโทนเสียงที่ดีซึ่งเป็นผลมาจากความเร็วของโน้ต

แผนผังของฉัน (และต้นแบบของฉันด้วย) ไม่ได้ใช้ตัวต้านทานจำกัดกระแสที่เอาต์พุต DAC แต่ควรวางตัวต้านทานหนึ่งตัวเพื่อให้แน่ใจว่าวงจรของคุณมีอายุการใช้งานยาวนาน ตัวต้านทาน 220 โอห์มจะเพียงพอ

โปรดสังเกตว่าในแผนผังที่สูงกว่า 100 uF electrolitic caps มีการรายงาน แต่ช้าเกินไปเนื่องจากเวลาในการชาร์จความจุ ไม่มีโพลาไรซ์ แคป 0.1uF เป็นตัวเลือกที่เหมาะสม

ประตูออก

ในกรณีที่คุณกำลังจะจัดลำดับซินธ์ที่เข้ากันได้กับสัญญาณ V-Trig (ตัวกระตุ้นแรงดันไฟฟ้า) ตัวต้านทานซีรีย์ 1k ohm เพื่อลดการระบายกระแสไฟก็เพียงพอแล้ว ในกรณีของซินธิก S-Trig (สวิตช์ทริกเกอร์) คุณสามารถใช้วงจรสวิตช์ PNP อย่างง่าย (ดูโครงร่างที่แนบมา)

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

ซอฟต์แวร์
ซอฟต์แวร์

ฉันพยายามทำให้ภาพร่างนั้นชัดเจนและ "อ่านได้" มากที่สุด

ฉันทำงานบนแผ่นคำนวณง่ายๆ ฉันพบที่นี่ เพื่อหาเส้นโค้ง Voltage Vs Note# และใช้สมการโดยตรงในไมโครคอนโทรลเลอร์ สมการแสดงในกราฟด้านบน ฉันใช้ C2 เป็นบันทึกอ้างอิงเพื่อรับความสัมพันธ์ของบันทึกย่อ Vs ที่สอดคล้องกับ Arp/Korg (C0 - 0.25V, C1 - 0.5V, C2 - 1V, C3 - 2V, C4 - 4V, C5 - 8V เป็นต้น)

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

เราจะเพิ่มความถี่ pwm ของตัวจับเวลา/ตัวนับเพื่อลดการกระเพื่อมของแรงดันไฟขาออก (ง่ายเหมือนบรรทัดของโค้ด)

เพื่อให้โค้ดตอบสนองต่อไบต์ที่เข้ามา โค้ดต้องอาศัยการเรียกกลับของฟังก์ชันเป็นอย่างมาก

คุณต้องการไลบรารี "Adafruit_MCP4725.h" ของ Sparkfun และ Forty Seven Effects/Francois Best ของ "MIDI.h" เพื่อคอมไพล์! (ขอบคุณมากสำหรับบุคคลเหล่านี้: หากไม่มีความพยายาม โครงการนี้จะไม่มีวันเกิดขึ้นจริง!)

ฉันจะถือว่าคุณมี Arduino IDE พร้อมในพีซีของคุณและคุณรู้วิธีโหลดภาพร่างไปยังบอร์ด Arduino ของคุณ

ฉันไม่ใช่นักเขียนโค้ดในชีวิตจริง ดังนั้นจึงเป็นไปได้สูงที่ภาพสเก็ตช์สามารถเขียนได้ดีขึ้น ฉันเปิดรับข้อเสนอแนะ (ฉันมักจะเรียนรู้บางสิ่งที่ดูโค้ดของ coder;))

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

ขั้นตอนที่ 6: การแก้ไขปัญหา

แม้ว่าโครงการจะอยู่ในระดับต่ำ แต่ก็มีหลายสิ่งหลายอย่างที่อาจผิดพลาดได้ หากคุณกำลังประสบปัญหาขณะพยายามสร้างกล่อง MIDI to CV ของคุณเอง ให้ทำตามขั้นตอนเหล่านี้:

1. ตรวจสอบให้แน่ใจว่า Arduino ได้รับข้อความ MIDI อย่างถูกต้อง

ตรวจสอบช่องสัญญาณเอาต์พุตที่แป้นพิมพ์หรือ DAW หรือ Sequencer กำลังส่งข้อความ MIDI ไปที่ Arduino กำลังฟังช่อง 1 โดยค่าเริ่มต้น อัปโหลด "TEST_MIDI_IN.ino" เพื่ออ่านข้อความ noteON ที่เข้ามา

2. ตรวจสอบสายไฟของคุณอีกครั้ง

… หรือดีกว่า: ตรวจสอบสามครั้ง! ให้เวลาของคุณสำหรับสิ่งนี้

3. ตรวจสอบที่อยู่ DAC และเอาต์พุต

สามารถตั้งค่า DAC ให้รับข้อมูลในที่อยู่อื่นนอกเหนือจากที่ฉันตั้งไว้ในแบบร่างได้ ตรวจสอบที่อยู่โดยเรียกใช้ "I2C_scanner.ino" หากเกิดข้อผิดพลาด "ไม่พบอุปกรณ์" ให้ตรวจสอบการเดินสาย DAC ของคุณ (อินพุต SDA และ SCL บนบอร์ด Arduino ต่างกัน!) หากคุณมีออสซิลโลโคป (แม้แต่ออสซิลโลสโคปแบบดิจิทัลราคา 15 ยูโรก็ยังดีพอ… และสนุกกับการเล่นด้วย!) คุณสามารถตรวจสอบเอาต์พุตของ DAC ของคุณได้โดยอัปโหลดตัวอย่างเครื่องกำเนิดคลื่นสามเหลี่ยมที่มาพร้อมกับการติดตั้งไลบรารี DAC

โปรดจำไว้ว่าเมื่อเชื่อมต่อออปโตคัปเปลอร์กับอินพุต RX ของบอร์ด Arduino ของคุณ คุณจะไม่สามารถอัปโหลดภาพร่างใหม่ได้!! วางสวิตช์ (อาจเป็นจัมเปอร์ธรรมดา) ก่อนพิน RX

แบบร่างการทดสอบเหล่านี้ส่วนใหญ่ไม่ใช่ของฉันหรืออย่างน้อยก็อ้างอิงจากสื่อออนไลน์ที่มีอยู่

สิ่งนี้ฟังดูไม่เข้าท่าสำหรับฉัน!?

นี่ไม่ใช่ปัญหาจริง: สมการที่ได้จากการควบคุม Hz/V นั้น "เหมาะสม" การเบี่ยงเบนจากพฤติกรรมในอุดมคติบางอย่างอาจเพิ่มขึ้นจาก +5V ที่คุณจ่ายไม่ใช่ 5.000V จาก DAC และจากตัวเครื่องมือเอง ในการแก้ปัญหา คุณต้องดำเนินการกับโพเทนชิออมิเตอร์ synth tune/fine tune และ "voilà" การควบคุม MIDI ที่ปรับแต่งได้อย่างสมบูรณ์แบบ;)

ขั้นตอนที่ 7: ลิงค์ที่มีประโยชน์

en.wikipedia.org/wiki/CV/gate

www.instructables.com/id/Send-and-Receive-…

www.songstuff.com/recording/article/midi_me…

pages.mtu.edu/~suits/NoteFreqCalcs.html

espace-lab.org/activites/projets/en-arduin…

learn.sparkfun.com/tutorials/midi-shield-h…

provideyourown.com/2011/analogwrite-conver…

www.midi.org/specifications/item/table-3-c…

arduino-info.wikispaces.com/Arduino-PWM-Fr…

sim.okawa-denshi.jp/en/PWMtool.php

แนะนำ: