สารบัญ:

(เกือบ) Universal MIDI SysEx CC Programmer (และซีเควนเซอร์): 7 ขั้นตอน (พร้อมรูปภาพ)
(เกือบ) Universal MIDI SysEx CC Programmer (และซีเควนเซอร์): 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: (เกือบ) Universal MIDI SysEx CC Programmer (และซีเควนเซอร์): 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: (เกือบ) Universal MIDI SysEx CC Programmer (และซีเควนเซอร์): 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: SysEx Beginner Tutorial, System Exclusive MIDI (JP-8000) 2024, พฤศจิกายน
Anonim
(เกือบ) Universal MIDI SysEx CC Programmer (และซีเควนเซอร์…)
(เกือบ) Universal MIDI SysEx CC Programmer (และซีเควนเซอร์…)
(เกือบ) Universal MIDI SysEx CC Programmer (และซีเควนเซอร์…)
(เกือบ) Universal MIDI SysEx CC Programmer (และซีเควนเซอร์…)

ในช่วงกลางทศวรรษที่ 80 ผู้ผลิตซินธิไซเซอร์เริ่มกระบวนการ "น้อยกว่าดีกว่า" ซึ่งนำไปสู่การสังเคราะห์แบบแบร์โบน ซึ่งทำให้ลดต้นทุนด้านผู้ผลิตได้ แต่ทำให้กระบวนการแพตช์นั้นน่าเบื่อถ้าไม่สามารถทำได้สำหรับผู้ใช้ขั้นสุดท้าย

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

โปรเจ็กต์นี้มาจากความต้องการของฉันในการเขียนโปรแกรมแพตช์อย่างง่ายดายในการซื้อ synths ล่าสุดของฉัน: Roland Alpha Juno 2 และ JX8P มันเริ่มต้นจากการเป็นตัวควบคุม SysEx ธรรมดา จากนั้นก็เติบโตขึ้นมากับฉันและกลายเป็นสิ่งที่ซับซ้อนมากขึ้น โดยมีซินธิไซเซอร์อื่นๆ ที่รองรับระหว่างทาง (Korg DW8000, Oberheim Matrix 6/6R, SCI MAX) และซีเควนเซอร์ในตัว

ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นถึงวิธีสร้างคอนโทรลเลอร์ของคุณเอง: เครื่องมือราคาถูกที่จำลองกล่องควบคุมพารามิเตอร์ราคาสูงเหล่านั้น… และอื่นๆ (อ่านต่อเพื่อดูรายละเอียด…)

ขั้นตอนที่ 1: สิ่งนี้คืออะไร (และอะไรที่ไม่ใช่…)

สิ่งนี้คืออะไร (และอะไรไม่ใช่…)
สิ่งนี้คืออะไร (และอะไรไม่ใช่…)
สิ่งนี้คืออะไร (และอะไรไม่ใช่…)
สิ่งนี้คืออะไร (และอะไรไม่ใช่…)
สิ่งนี้คืออะไร (และอะไรไม่ใช่…)
สิ่งนี้คืออะไร (และอะไรไม่ใช่…)

ตัวควบคุม MIDI SysEx และ Control Change มีปุ่ม 16 ปุ่ม (โพเทนชิโอมิเตอร์) และตัวควบคุม MIDI 4 ปุ่ม ร่างเริ่มต้นจัดการ "หน้า" สามหน้า รวมพารามิเตอร์เสียงสังเคราะห์ 48 รายการ

ฉันทำให้ตัวควบคุมเข้ากันได้กับข้อความ MIDI การเปลี่ยนแปลงการควบคุม (ข้อความ MIDI แบบธรรมดาและ "สากล" ที่ใช้กันอย่างแพร่หลายโดยผู้ผลิต synth โดยเฉพาะจากยุค 90) และข้อความ SysEx (ข้อความ MIDI อีกประเภทหนึ่งซึ่งมีความเฉพาะเจาะจงน้อยกว่าและมีความเฉพาะเจาะจงสูง ใช้ในยุค 80)

โดยเฉพาะอย่างยิ่ง คอนโทรลเลอร์ตามค่าเริ่มต้นจะเข้ากันได้กับ:

- โรแลนด์ อัลฟ่า จูโน (1/2)

- โรแลนด์ JX8P

- คอร์ก DW8000

- Oberheim Matrix 6/6R (> 2.14 เฟิร์มแวร์)

- วงจรซีเควนเชียล MAX/SixTrak

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

เนื่องจากเป็นลักษณะโอเพ่นซอร์สของโปรเจ็กต์ มันจึงง่ายมากที่จะสนับสนุนซินธ์อื่นๆ ที่คุณเลือก (ดูขั้นตอนโค้ดสำหรับรายละเอียด)

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

คุณสามารถดาวน์โหลดแผ่นรูปภาพด้วย "เลย์เอาต์" 4x4 ที่ฉันรู้จักสำหรับ Alpha-Junos, JX8P, DW8000, Matrix 6 และ MAX/SixTrak ในหน้านี้: พารามิเตอร์สีน้ำเงินคือค่าที่คุณปรับแต่งได้ในขณะที่อยู่ในหน้า 1 สีดำที่อยู่ในหน้า 2 และ สีส้มในหน้า 3

แม้ว่าคอนโทรลเลอร์จะไม่มีหน้าจอ แต่การใช้ซินธิไซเซอร์ที่แสดงให้คุณเห็นว่าพารามิเตอร์ใดที่กำลังถูกปรับแบบเรียลไทม์ทำให้กระบวนการสร้างแพตช์เป็นเรื่องสนุก ตัวอย่างเช่น JX8P และ Matrix 6 มีความสามารถนี้ Alpha Juno จะไม่แสดงให้คุณเห็นถึงการเปลี่ยนแปลงของพารามิเตอร์และทำให้สิ่งต่าง ๆ ยากขึ้นเล็กน้อย (แต่การสร้างแพตช์ที่ยอดเยี่ยมนั้นทำได้และง่ายกว่าการใช้อินเทอร์เฟซแบบไม่มีปุ่มในตัว); DW8000 มีการแสดงตัวเลขเท่านั้น แต่คุณสามารถเห็น tweakins ของคุณแบบเรียลไทม์ ดังนั้นมันจึงอยู่ระหว่างนี้

แล้วปุ่มเหล่านั้นล่ะ?

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

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

ที่สามสำหรับฟังก์ชันรอง: randomizer/patcher! หมุนปุ่มหมุนทวนเข็มนาฬิกาตามเข็มนาฬิกาที่คุณต้องการให้พารามิเตอร์ทำงานเพื่อล็อคค่าต่ำสุด (เช่น ออสซิลเลเตอร์ LFO, ออสซิลเลเตอร์เอนเวโลป เป็นต้น) หรือหมุนตามเข็มนาฬิกาจนสุดเพื่อเพิ่มค่าสูงสุด (เช่น ออสซิลเลเตอร์มิกซ์โวลุ่ม โวลุ่ม VCA ฯลฯ) แล้วกด ปุ่มเพื่อเริ่มกระบวนการสุ่มสำหรับพารามิเตอร์อื่น ๆ ทั้งหมด

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

กดปุ่ม MODE อีกครั้งเพื่อกลับไปที่โหมดคอนโทรลเลอร์/แพตเชอร์

แล้ว LED เหล่านั้นล่ะ?

มีไฟ LED 4 ดวงที่สอดคล้องกับแต่ละปุ่ม (ทางด้านขวาของแต่ละปุ่มในเลย์เอาต์ของฉัน); ไฟ LED เหล่านี้มีหลายช่อง:

1) พวกเขาบอกคุณว่าหน้าพารามิเตอร์ใดที่คุณอยู่ (ไฟ LED ด้านบนติดเมื่อคุณอยู่ในหน้า 1, LED ข้างใต้จะสว่างเมื่อหน้า 2 ทำงานอยู่, LED 3 ติดสว่าง…คุณคิดเอง) เราจำกัด ATM ไว้ที่ 3 หน้า แต่สามารถปรับรหัสได้อย่างง่ายดายเพื่อรองรับหน้าเพิ่มเติม

2) ไฟ LED ที่สองระบุพารามิเตอร์หน้า 2 และติดสว่างเมื่อไมโครคอนโทรลเลอร์กำลังส่งแพตช์ก่อนหน้า (เรียกคืนแพตช์);

3) LED ที่สามระบุพารามิเตอร์หน้า 3 และสว่างขึ้นระหว่างกระบวนการสุ่ม

LED ดวงที่สี่ไม่ทำอะไรเลยในโหมดตัวควบคุม MIDI และใช้สำหรับการเปลี่ยนแปลง MODE ทั่วโลก

ฟังก์ชันทั้งหมดเหล่านี้จะถูกส่งเป็นข้อความ MIDI ดังนั้น synth ของคุณจะต้องมีความสามารถ/เปิดใช้งานในการรับและตีความข้อความประเภทนี้จึงจะมีประสิทธิภาพ

ขั้นตอนที่ 2: ซีเควนเซอร์ 16 ขั้นตอน "ซ่อนเร้น"

NS
NS

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

คุณสามารถสลับระหว่างโหมดคอนโทรลเลอร์และโหมดซีเควนเซอร์โดยกดปุ่ม #4 (ปุ่ม MODE)

ในขณะที่ปุ่มโหมดซีเควนเซอร์ทำงานต่างกัน และไฟ LED จะให้ข้อมูลใหม่แก่คุณ:

- ปุ่มแรก (ปุ่ม SHIFT) เมื่อกดช่วยให้สามารถกำหนดจังหวะ ความยาวของโน้ต ช่อง และการปรับเปลี่ยนอ็อกเทฟได้ ค่าจังหวะกำหนดโดยตำแหน่งของโพเทนชิออมิเตอร์ตัวแรก ความยาวโน้ตคำนวณจากตำแหน่งโพเทนชิออมิเตอร์ที่สอง ช่อง MIDI จากตำแหน่งโพเทนชิออมิเตอร์ที่สามและสี่ และอ็อกเทฟ (-1 o ถึง +2) จากหม้อที่ห้า คุณสามารถควบคุมจังหวะจาก 40 BPM (หมุนโพเทนชิออมิเตอร์ #1 เต็มทวนเข็มนาฬิกาในขณะที่กดปุ่ม #1 ค้างไว้) เป็นเกือบ 240 BPM (หมุนโพเทนชิออมิเตอร์ #1 เต็มตามเข็มนาฬิกาในขณะที่กดปุ่ม #1 ค้างไว้) คุณสามารถตั้งค่าความยาวของโน้ตเป็นโน้ตครึ่งตัว โน้ตตัวหนึ่งในสี่ตัว โน้ตแปดตัว โน้ตตัวที่สิบหกโดยหมุนหม้อ #2 ในขณะที่กดปุ่ม SHIFT ค้างไว้ คุณสามารถตั้งค่าแชนเนล MIDI (แชนเนลหลักและแชนเนลรอง) จาก 1 ถึง 16 ช่วงเบสโน้ต (จาก C2 ถึง F#4) สามารถลดระดับลงหนึ่งอ็อกเทฟหรือเพิ่มขึ้นหนึ่งหรือสองอ็อกเทฟ

โดยค่าเริ่มต้น จังหวะถูกตั้งค่าเป็น 120 BPM และความยาวของโน้ตเป็นโน้ตไตรมาส

- ปุ่มที่สองเริ่มต้นและหยุดลำดับบันทึกย่อ ดังที่กล่าวไว้ หากคุณเปลี่ยนโหมดโดยการกดปุ่ม #4 (MODE) ในขณะที่รันซีเควนซ์ คุณจะเข้าสู่โหมดคอนโทรลเลอร์ แต่ซีเควนซ์จะยังคงทำงานต่อไป

- ปุ่มที่สามคือ PANIC! โดยการกดบันทึกทั้งหมดจะถูกปิด

- โหมดที่สี่ใช้เพื่อสลับระหว่างโหมดสากล (pather หรือซีเควนเซอร์) เมื่อไม่ได้กดปุ่ม #1 หรือระหว่างโหมดซีเควนซ์ (ดูในต่อไปนี้) เมื่อกด #1

ในโหมดซีเควนเซอร์ หากคุณกดปุ่มเลือกโหมดในขณะที่กดปุ่ม #1 (SHIFT) ค้างไว้ คุณสามารถสลับระหว่าง 3 โหมดซีเควนซ์ที่แตกต่างกัน:

ลำดับโมโน 1 - 16 ขั้นตอน

ลำดับโพลีซีเควนซ์ 2 - 16 สเต็ป: โน้ตหนึ่งอ็อกเทฟที่ต่ำกว่าที่กำหนดโดยพ็อตจะถูกกระตุ้นด้วย (วิธีนี้จะระบาย 2 เสียงต่อจังหวะ)

ลำดับโพลี 3 - 8 ขั้นตอน, ช่องสัญญาณคู่: ลำดับขั้นตอน 8 ขั้นตอนแบบขนานสองช่องจะถูกส่งไปยังสองช่องสัญญาณที่แตกต่างกัน (CH1 และ CH2 โดยค่าเริ่มต้น); โดยการตั้งค่าแชนเนลเดียวกันทั้งบนแชนเนลหลักและแชนเนลที่สอง คุณสามารถมีลำดับ 8 ขั้นคู่ขนานที่เล่นโดยซินธิไซเซอร์ (โพลีโฟนิก) เดียวกันได้

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

คุณลักษณะของซีเควนเซอร์ขั้นตอนที่พลาดซึ่งบางคนอาจพบว่าจำเป็น: การซิงค์ MIDI, การหยุดขั้นตอน (คุณสามารถปิดได้เพียงขั้นตอนเดียว), CV ออก

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

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

ขั้นตอนที่ 3: ฮาร์ดแวร์ที่จำเป็นและการสร้าง

ฮาร์ดแวร์ที่จำเป็นและการสร้าง
ฮาร์ดแวร์ที่จำเป็นและการสร้าง
ฮาร์ดแวร์ที่จำเป็นและการสร้าง
ฮาร์ดแวร์ที่จำเป็นและการสร้าง
ฮาร์ดแวร์ที่จำเป็นและการสร้าง
ฮาร์ดแวร์ที่จำเป็นและการสร้าง
ฮาร์ดแวร์ที่จำเป็นและการสร้าง
ฮาร์ดแวร์ที่จำเป็นและการสร้าง

หลังจากจบคำเหล่านี้แล้ว มาสนุกกันเถอะ!

เรากำลังดำเนินการตามแนวทาง Arduino ทั่วไป ฉันใช้ Arduino MEGA เพราะมีอินพุตแบบอะนาล็อกจำนวนมาก (เราต้องการกล่องที่เต็มไปด้วยลูกบิดใช่ไหม:))

โดยเฉพาะอย่างยิ่ง Arduino MEGA สามารถรองรับอินพุตแบบอะนาล็อกได้ 16 ช่อง (ด้วยการปรับแต่งฮาร์ดแวร์บางอย่าง เช่น โดย muxing คุณสามารถเพิ่มสิ่งนี้ได้ แต่เราจะไม่ดำเนินการตามเส้นทางนี้ที่นี่) ดังนั้นเราจะส่งข้อความ MIDI 48 รายการผ่านโพเทนชิโอมิเตอร์ 16 ตัว โพเทนชิออมิเตอร์แต่ละตัวจะควบคุมพารามิเตอร์สามตัว หนึ่งพารามิเตอร์สำหรับแต่ละ "หน้า"; หน้าจะถูกเลือกโดยปุ่มสวิตช์

รายการฮาร์ดแวร์:

- 1x Arduino MEGA

- โพเทนชิโอมิเตอร๋ 10 K โอห์มแบบเส้นตรง 16x รอบเดียว

- ลูกบิดหม้อ 16x

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

- 4x LED

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

- 1x ขั้วต่อ MIDI

- กล่องโปรเจ็กต์ ABS 1x

สายเคเบิล ลวดบัดกรี และเวลาว่างหก - แปดชั่วโมง

ฉันใช้ perfboard และส่วนหัวของพินเพื่อให้ทราบถึงโล่ประเภทหนึ่งที่ฉันบัดกรีตัวต้านทานและควบคุมสายเคเบิล สิ่งนี้มีประโยชน์ในการให้คุณนำ Arduino ของคุณออกมาและใช้สำหรับโครงการอื่น ๆ (เราทุกคนมีบอร์ด Arduino เหลือน้อยในบางจุด!) มันไม่ได้บังคับอยู่แล้วและแนวทางที่ดีอีกวิธีหนึ่งอาจเป็นการ desolder pinheaders arduino MEGA และสายบัดกรีเข้าที่โดยตรง

ฉันใช้ตัวต้านทาน 200 โอห์มแทนตัวต้านทาน 220 โอห์มและพวกมันก็ทำงานได้ดี ฉันพนันได้เลยว่าแม้แต่ตัวต้านทาน 150 โอห์มก็ใช้งานได้ดี (สำหรับทั้งการสื่อสาร MIDI และ LED)

ในการขึ้นรูปกล่อง อันดับแรก ฉันใช้กระดาษกาวบนพื้นผิวกล่อง โดยวัดว่าควรเจาะรูที่ไหน (ฉันมี 3 ซม. จากรูหนึ่งไปอีกรูหนึ่งเพื่อให้หม้อทั้งหมดพอดี) ทำรูไกด์แล้วขยายไปทางขวา ขนาดเพื่อให้ด้ายหม้อหรือกระดุมผ่านด้วยสว่านขนาดเล็ก ฉันใช้เวลามากกว่าหรือน้อยกว่า 2 ชั่วโมงในการทำกล่องให้เสร็จ ฉันรู้รูเล็กๆ เหมือนกัน และติดไฟ LED เข้าที่

ฉันยังเจาะรูสำหรับขั้วต่อ MIDI OUT และอีกช่องสำหรับขั้วต่อไฟ Arduino (ฉันใช้ขั้วต่อไฟ USB ในตัวโดยตรงและล็อค Arduino MEGA อย่างแน่นหนา)

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

จากนั้นฉันก็วางหม้อและปุ่มทั้งหมดแล้วบัดกรีส่วนประกอบตามภาพที่แนบมา วิธีที่มีประสิทธิภาพในการลดน้ำหนักของวัตถุขั้นสุดท้าย (และความยาวของสายเคเบิล) คือการต่อโซ่เดซี่หม้อทั้งหมดทั้งบนสาย 5V และสาย GND

และก่อนที่ใครจะถามว่า: ฉันรู้ กล่องที่ฉันใช้น่าเกลียด! แต่มันฟรีและไม่มีอะไรเต้นฟรี:)

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

การเดินสายไฟ
การเดินสายไฟ

การเดินสายไฟทำได้ง่ายเพียงแค่เดินสายโพเทนชิออมิเตอร์ (x16) ปุ่มกด (x4) และ LED (x4) เข้ากับบอร์ดไมโครคอนโทรลเลอร์ Arduino พื้นฐาน Arduino ทั้งหมดครอบคลุมที่นี่:)

สิ่งที่แนบมาคือสายไฟ สังเกตว่า:

- ใช้พินอะนาล็อกทั้งหมด (ตั้งแต่ A0 ถึง A15) หนึ่งอันสำหรับโพเทนชิออมิเตอร์แต่ละตัว

- ใช้พินดิจิตอล 4 พิน (อินพุต) (จาก D51, D49, D47, D45) หนึ่งอันสำหรับแต่ละปุ่ม

- พินดิจิทัลอีก 4 ตัว (เอาต์พุต) ใช้สำหรับ LED (D43, D41, D39, D37)

- การเชื่อมต่อ MIDI ออกนั้นง่ายมากและขอตัวต้านทาน 220 โอห์มสองตัว (แต่จะลดเหลือ 150 โอห์ม)

- ปุ่มต่างๆ จะไม่ขอตัวต้านทานแบบดึงลงเนื่องจากภาพสเก็ตช์เปิดใช้งานตัวต้านทานแบบดึงขึ้นของ Arduino ภายใน

- LED แต่ละตัวจะขอตัวต้านทานจำกัดกระแส (200-220 โอห์มสำหรับไฟ LED สีเขียว)

ฉันใช้หมุดดิจิทัลที่ระบุไว้สำหรับสินค้าโภคภัณฑ์ แต่ไม่ใช่หมุด "พิเศษ" (เราไม่ได้ใช้ความสามารถ pwm ของหมุดบางตัวที่นี่หรือคุณลักษณะเฉพาะของหมุดอื่นๆ): คุณสามารถตั้งค่าหมุดดิจิทัลที่คุณชื่นชอบได้ แต่อย่าลืมปรับเปลี่ยน รหัสตามนั้น มิฉะนั้น ปุ่ม/ไฟ LED ของคุณจะไม่ทำงาน!

โปรดสังเกตว่าการเชื่อมต่อ MIDI OUT ในภาพเป็นมุมมองด้านหน้า (ไม่ใช่มุมมองด้านหลัง)

ขั้นตอนที่ 5: ซอฟต์แวร์ - ลิงก์บางส่วนไปยังทฤษฎี

ฉันจะไม่อธิบายทฤษฎีฉบับสมบูรณ์ที่อยู่เบื้องหลังข้อความ System Exclusive หรือ Control Change เนื่องจากมีบทความดีๆ มากมาย และการเขียนซ้ำสิ่งที่เขียนไปแล้วนั้นเป็นเรื่องงี่เง่า

เพียงลิงค์ด่วนสำหรับการใช้งาน Roland SysEx:

- https://erha.se/~ronny/juno2/Roland%20Juno%20MIDI%2… (ภาษาอังกฤษ)

- https://www.2writers.com/eddie/tutsysex.htm (ภาษาอังกฤษ)

- https://www.chromakinetics.com/handsonic/rolSysEx.h… (ภาษาอังกฤษ)

- https://www.audiocentralmagazine.com/system-exclusi… (อิตาลี)

และลิงค์สำหรับ MIDI โดยทั่วไป:

-

-

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

แนบนี่คือภาพร่างที่คุณควรอัปโหลดไปยัง Arduino Mega ของคุณ

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

รหัสเริ่มต้น/ร่าง/เฟิร์มแวร์รองรับพารามิเตอร์ "เฉพาะ" 48 รายการ (แต่ละปุ่มมีสามหน้า 16 ปุ่ม) ดังนั้นจึงไม่สามารถควบคุมข้อความ MIDI ทั้งหมดที่ซินธิคุณรองรับได้ (ลองนึกถึง Access Virus หรือ Novation Supernova: พวกเขายอมรับมากกว่านั้น หรือน้อยกว่า 110 พารามิเตอร์ที่สอดคล้องกับ MIDI) คุณสามารถเปลี่ยนภาพร่างเพื่อรองรับข้อความเพิ่มเติมได้อย่างง่ายดาย หากจำเป็น

รองรับข้อความ SysEx ที่เข้ากันได้กับ Roland Alpha-Juno, JX8P, Korg DW8000 และ Oberheim Matrix 6 ฉันทิ้งรหัสไว้สำหรับข้อความที่เข้ากันได้กับ Juno 106 ในกรณีที่คุณต้องการ

สำหรับ Matrix 6 ฉันต้องเลือกพารามิเตอร์ที่จะควบคุม ฉันลืมซองจดหมายที่สาม ทางลาดที่สอง และอย่างอื่น ไม่สามารถควบคุมเมทริกซ์ผ่าน MIDI ได้ ดังนั้นมันจึงออกมาด้วย คุณต้องมีเฟิร์มแวร์ที่อัปเดต (เวอร์ชัน 2.14 ขึ้นไป) และคุณควรตั้งค่าพารามิเตอร์ "Master -> Sysex Enable" เป็น "3"

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

รหัสประกอบด้วยความคิดเห็น ดังนั้นจึงไม่จำเป็นต้องแสดงความคิดเห็นเพิ่มเติมที่นี่

เช่นเคย จำไว้ว่าฉันไม่ใช่นักเขียนโค้ดในชีวิตจริง และแน่นอนว่ามีวิธีที่ดีกว่าในการเขียนโค้ดสิ่งที่เราต้องการที่นี่ หากคุณเป็นนักเขียนโค้ดและมีข้อเสนอแนะ ยินดีต้อนรับ! โปรดส่งรูปแบบใดๆ ที่สามารถเพิ่มประสิทธิภาพ/ประสิทธิผลของโค้ดมาให้ฉัน แล้วฉันจะรวมไว้ในร่างหลัก (โดยอ้างถึง Contributor อย่างชัดเจน!)

ฉันเรียนรู้สิ่งใหม่เสมอโดยการอ่านโค้ดของ coder ดีๆ;)

ขั้นตอนที่ 7: โครงการที่เกี่ยวข้อง

เท่าที่ฉันรู้ไม่มีตัวควบคุมพารามิเตอร์ MIDI และซีเควนเซอร์อยู่ที่นั่น (อาจเป็น Behringer BCR2000 รุ่นเก่าที่มีเฟิร์มแวร์ที่ดัดแปลงแล้ว)

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

- โปรแกรมแก้ไข CTRL MIDI: นี่เป็นโปรแกรมโอเพ่นซอร์สที่ยอดเยี่ยมและฟรีที่ทำงานบน win/Linux/mac ที่สามารถเปลี่ยนพีซีของคุณให้เป็นคอนโทรลเลอร์เต็มรูปแบบสำหรับ Synths ของ SysEx

- ตัวแปลง CC "junosex" ของ David Konsumer: โปรเจ็กต์นี้ขอให้ฮาร์ดแวร์ย่อยทำงานเคียงข้างคุณ และแนวคิดก็ยอดเยี่ยม - ตัวแปลง CC เป็น SysEx ที่ใช้ Arduino ซึ่งช่วยให้คุณใช้คอนโทรลเลอร์ทั่วไปที่ไม่ใช่ SysEx MIDI (เช่น คีย์บอร์ดหลัก AKAI MPK) เพื่อพูดคุยกับ SysEx-ready synth. ของคุณ

แนะนำ: