วิธีสร้างคอนโทรลเลอร์ MIDI ที่ใช้ Arduino ราคาถูกด้วยมือของคุณเอง วิธีสร้างคอนโทรลเลอร์ MIDI ราคาถูกบน Arduino ด้วยมือของคุณเอง อ่านตำแหน่งโพเทนชิออมิเตอร์
ฉันอยากจะปลุกนักแต่งเพลงในตัวฉันมานานแล้ว และเริ่มสร้างดนตรีอิเล็กทรอนิกส์ของตัวเอง อย่างไรก็ตาม ฉัน (พูดตรงๆ) รู้สึกท้อแท้กับราคาที่สูงของคอนโทรลเลอร์ MIDI แต่หลังจากท่องอินเทอร์เน็ต ฉันก็เกิดไอเดียที่จะสร้างคอนโทรลเลอร์ของตัวเองโดยใช้ Arduino Uno และสีนำไฟฟ้า!
เริ่มกันเลย)
ขั้นตอนที่ 1: การเลือกชิ้นส่วน
คุณสามารถเบี่ยงเบนไปจากวัสดุที่นำเสนอได้เล็กน้อย และตัวควบคุม MIDI ที่คุณประกอบจะยังคงใช้งานได้ (โดย "เบี่ยงเบนเล็กน้อย" ฉันหมายความว่าคุณสามารถติดตั้งตัวต้านทานด้วยค่าที่แตกต่างกันเล็กน้อยหรือปล่อยให้พินตัวใดตัวหนึ่งไม่ได้เชื่อมต่อ)
จากอุปกรณ์อิเล็กทรอนิกส์เราต้องการ:
- 1 Arduino Uno พร้อมสาย USB;
- สีนำไฟฟ้า 1 ขวด
- แผ่นยึด 1 แผ่นขนาด 5x7 ซม.
- 3 ปุ่ม;
- ตัวต้านทานที่มีความต้านทาน 2.2 kOhm;
- ไฟ LED 1 ดวง;
- ตัวต้านทานที่มีความต้านทาน 10 kOhm;
- เซ็นเซอร์ LDR 1 ตัว;
- ตัวต้านทานที่มีความต้านทาน 4.7 kOhm;
- จัมเปอร์ 1 อัน;
- ตัวต้านทาน 12 ชิ้น 2.7 MΩ;
- 30 หมุดตรง
- หมุดงอ 12 อัน;
- อะแดปเตอร์ 12 ตัว;
- คลิปหนีบกระดาษ 12 อัน
นอกจากอุปกรณ์อิเล็กทรอนิกส์แล้ว คุณจะต้องมีเครื่องมือดังต่อไปนี้ด้วย:
- หัวแร้งและบัดกรี
- เครื่องตัดลวด
- ขาตั้งสำหรับบัดกรีชิ้นส่วน (มือที่สาม);
- มัลติมิเตอร์;
- สายไฟหลายเส้นและ/หรือลวดโลหะบาง
ขั้นตอนที่ 2: ประสานหมุด
มาเริ่มสร้างบอร์ดด้วยการบัดกรีพินกัน มาโพสต์กัน หมุดงอตรงกลางแถวแรกบนกระดาน พวกเขาจะทำหน้าที่เป็นหมุด "ละเอียดอ่อน" ที่จะเชื่อมต่อแป้นพิมพ์ในภายหลัง
หลังจากติดตั้งพินแล้ว ให้สังเกตว่าพินแบบสั้นยื่นออกมาจากบอร์ด เรากดทับมันเพื่อให้ทุกอย่างราบรื่น ตอนนี้เราประสานพวกมันและตรวจสอบการเชื่อมต่อทันทีว่ามีไฟฟ้าลัดวงจรหรือไม่
หมายเหตุ: อย่าบัดกรีหมุดนานเกินไป ไม่เช่นนั้นหมุดจะร้อนและละลายพลาสติก
ขั้นตอนต่อไป ให้วางหวีตรงในช่อง อาร์ดูโน่- มาติดตั้งบอร์ดที่ด้านบนของพินที่เสียบเข้าไปใน Arduino การดำเนินการนี้ต้องใช้แรงเล็กน้อยเนื่องจากหมุดไม่อยู่ในแนวเดียวกับรูบนกระดานอย่างสมบูรณ์
เมื่อคุณติดตั้งบอร์ดเข้ากับพินเรียบร้อยแล้ว ตรวจสอบให้แน่ใจว่าพินอยู่ในระนาบเดียวกับขอบด้านบนของบอร์ด หลังจากนั้นก็สามารถบัดกรีได้
ขั้นตอนที่ 3: ประสานจัมเปอร์
ทีนี้ลองถอดบอร์ดออกจาก Arduino แล้วพลิกกลับด้าน มาประสานจัมเปอร์ที่จะต่อส่วนประกอบต่างๆ ในภายหลัง มีสองวิธีในการทำเช่นนี้:
- เติมรูที่จำเป็นทั้งหมดด้วยการบัดกรีแล้วเชื่อมต่อเข้าด้วยกัน
- ใช้ลวดเส้นเล็ก
ฉันแนะนำให้คุณใช้วิธีที่สองเพราะมันง่ายกว่าและเร็วกว่า หากคุณเลือกวิธีนี้ ให้วางสายไฟไว้บนกระดานตามที่แสดงในภาพ
- จุดสีแดงหมายถึงบัดกรีลวดเข้าไปในรู
- จุดสีเหลือง - เชื่อมต่อลวดเส้นเล็กเข้ากับพินที่อยู่อีกด้านหนึ่งของบอร์ด (ดังในภาพที่สาม)
อย่างที่คุณเห็น ฉันเลอะมุมซ้ายล่างเล็กน้อยเมื่อฉันบัดกรีมากเกินไป ดังนั้นระวังด้วย!
เคล็ดลับ: หากคุณไม่มีลวดเส้นเล็ก ให้ใช้เศษตัวนำของตัวต้านทานที่คุณใช้อยู่
ขั้นตอนที่ 4: ประสานตัวต้านทานแบบสัมผัส capacitive
เราติดตั้งส่วนประกอบต่างๆ ได้แก่ 2.7 โมห์มตัวต้านทานซึ่งจะทำหน้าที่รับความรู้สึก
หมายเหตุ: หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับพื้นฐานทางทฤษฎีและการใช้งานจริงของเซ็นเซอร์สัมผัสคาปาซิทีฟ ฉันขอแนะนำให้คุณดูลิงก์ต่อไปนี้:
มาวางอันหนึ่งกันเถอะ 2.7 โมห์มตัวต้านทานจากด้านล่างของหมุดงอขวาสุดแล้วดันขาผ่านรู (ดังภาพแรก) ทีนี้ลองพลิกบอร์ดแล้วดันตัวต้านทานตัวหนึ่งกลับเข้าไปในรูถัดไป (ดังแสดงในภาพที่สอง) บัดกรีขาส่วนล่างของตัวต้านทานเข้ากับรู และบัดกรีขาด้านบนของตัวต้านทานเข้ากับขั้วต่อพิน จากนั้นเราจะแนบ 7 ซม. ลวดลงบนหมุดนี้ (ดังที่เห็นจากภาพที่สาม)
ทำซ้ำขั้นตอนนี้กับตัวต้านทานและสายไฟทั้งหมดโดยบัดกรีให้เข้าที่ ขาด้านล่างของตัวต้านทานควรสร้างการเชื่อมต่อแบบยาว
คำแนะนำ: เลือกสีสลับสำหรับสายไฟ - ซึ่งจะทำให้การเชื่อมต่อง่ายขึ้นในขั้นตอนต่อๆ ไป
ขั้นตอนที่ 5: ประสานปุ่ม
เริ่มต้นด้วยการวางปุ่มและตัวต้านทานบนบอร์ดดังเช่นในภาพแรกและภาพที่สอง ในกรณีของฉันฉันใช้ 2.2 ตัวต้านทาน kOhmแต่คุณสามารถใช้ตัวต้านทานใดก็ได้ที่มีค่าระหว่าง 2kOhm ถึง 10KOhm
พลิกกระดานแล้วประสานทุกอย่างให้เข้าที่ ภาพที่ 3 อธิบายการเชื่อมต่อต่างๆ ที่คุณต้องทำ:
- จุดสีน้ำเงิน - ระบุขากระดุมที่ต้องบัดกรีบนกระดาน
- จุดสีชมพู - หมายถึงขาของตัวต้านทานซึ่งจะต้องบัดกรีเข้ากับบอร์ด
- เส้นสีแดงหมายความว่าคุณควรประสานสองจุดเป็นการเชื่อมต่อเดียว
- เส้นสีดำหมายถึงสายไฟที่จะต่อจากขาข้างหนึ่งของปุ่มผ่านรูในบอร์ด จากนั้นจะต่อเข้ากับหมุดที่อยู่อีกด้านหนึ่ง
หากทุกอย่างบัดกรีอย่างถูกต้อง ปุ่มซ้ายสุดสองปุ่มจะช่วยให้คุณเปลี่ยนอ็อกเทฟได้ในขณะที่ปุ่มขวาสุดจะเปิดใช้งานเซ็นเซอร์แอลดีอาร์
ขั้นตอนที่ 6: ประสาน LDR และ LED
หลังจากบัดกรีปุ่มแล้วเราจะทำการติดตั้ง LDR, LED และตัวต้านทานที่เกี่ยวข้องต่อไป ก่อนที่จะทำเช่นนี้ ควรทดลองกับค่าของตัวต้านทานที่จะไปที่ LED บางทีคะแนนของฉันสูงเกินไปที่จะเปิด LED ของคุณ ทดลองเล็กน้อยเพื่อค้นหาค่าตัวต้านทานที่ถูกต้อง
เคล็ดลับ: ตัวต้านทานใดๆ ระหว่าง 330โอห์มและ 5kOhmน่าจะเป็นทางออกที่ดีสำหรับ 5มมนำ.
ตอนนี้เราจะจัดเรียง LED, LDR และตัวต้านทาน ( 4.7 เคสำหรับแอลดีอาร์) ในสถานที่ที่เหมาะสม พลิกกระดานและประสานทุกอย่าง รูปภาพที่สามจะอธิบายการเชื่อมต่อต่างๆ ที่ต้องทำ:
- จุดสีน้ำตาลคือพิน LDR ที่ควรบัดกรีเข้ากับบอร์ด
- จุดสีชมพูคือขาตัวต้านทานที่ควรบัดกรีเข้ากับบอร์ด
- จุดสีส้มคือพิน LED ที่ต้องบัดกรีบนบอร์ด
- แถบสีแดง - คุณต้องประสานสองจุดในการเชื่อมต่อเดียว
- แถบสีดำคือลวดที่จะต่อจากเอาต์พุตของตัวต้านทานผ่านรูบอร์ด ซึ่งจะต่อเข้ากับพิน
หมายเหตุ: ก่อนที่จะบัดกรี LED ตรวจสอบให้แน่ใจว่าขั้วของ LED ถูกต้อง ขั้วบวกของ LED ควรเชื่อมต่อกับตัวต้านทาน และขั้วลบกับกราวด์
ขั้นตอนที่ 7: ทดสอบการเชื่อมต่อทั้งหมด
ตอนนี้เป็นเวลาที่ดีในการทดสอบว่าการเชื่อมต่อของปุ่ม, LDR และ LED ได้รับการบัดกรีสำเร็จหรือไม่ นี่เป็นโอกาสสุดท้ายในการแก้ไขข้อผิดพลาด ฉันแนะนำให้คุณดาวน์โหลดโค้ดที่แนบมาและรันโปรแกรม และดาวน์โหลด Arduino_Test_Fixture_Codeไปยังบอร์ด Arduino
หากทุกอย่างสำเร็จและการทดสอบเสร็จสิ้น คุณสามารถไปยังขั้นตอนถัดไปได้ ถ้าไม่เช่นนั้น ให้ตรวจสอบการเชื่อมต่อแบบบัดกรีบนบอร์ดอีกครั้ง ควรมีมัลติมิเตอร์ไว้ดีกว่าฉันพูดแบบนี้จากประสบการณ์อันขมขื่นของตัวเอง
ขั้นตอนที่ 8: จบคณะกรรมการ
เริ่มต้นด้วยการติดตั้งสายไฟเข้าไปในรูดังที่เห็นในภาพแรก สะดวกในการใช้สายไฟสองเส้นที่มีสีต่างกันสำหรับขั้นตอนนี้
พลิกกระดานแล้วตัดสายไฟตามความยาวที่ต้องการ ประสานเข้ากับพินที่ต่อเข้ากับขั้วต่อ Arduino ก่อนที่คุณจะเริ่มใช้งานตัวควบคุม MIDI ก่อนอื่นคุณต้องทดสอบการเชื่อมต่อโดยใช้แบบทดสอบ อัปโหลดภาพร่าง เปิดพอร์ตอนุกรมแล้วแตะหมุด "ละเอียดอ่อน" บนกระดาน หากคุณเห็นข้อความ 'หมายเหตุ x ทำงานอยู่' สำหรับแต่ละพินเมื่อคุณสัมผัส แสดงว่าพินทั้งหมดทำงานอย่างถูกต้อง
ขั้นตอนที่ 9: แปลง Arduino เป็นอุปกรณ์ MIDI
เมื่อบอร์ดพร้อม ก็ถึงเวลาแปลง Arduino ให้เป็นตัวควบคุม MIDI ที่จะได้รับการยอมรับจากโปรแกรมเพลง เช่น Ableton และ Fl Studio หรือแม้แต่อุปกรณ์ MIDI อื่นๆ กระบวนการประกอบด้วยสองขั้นตอน:
- เปลี่ยนเฟิร์มแวร์ปัจจุบันบนโปรแกรมที่รองรับ Arduino Uno เป็น MIDI
- อัปโหลดร่าง MIDI ไปยัง Arduino
เริ่มจากจุดแรกกันก่อน โหลดเข้า Arduino ตามเงื่อนไข เฟิร์มแวร์พอร์ตอนุกรม USBซึ่งช่วยให้ Arduino สามารถแลกเปลี่ยนข้อความกับพีซีและ Arduino IDE ด้วยโปรแกรมใหม่ ดูอัลโมโคโหมดที่สองจะถูกเพิ่มซึ่งจะทำให้ Arduino ทำหน้าที่เป็นได้ อุปกรณ์ MIDI.
เราจะใช้โปรแกรม FLIP และทำตามคำแนะนำเพื่อเปลี่ยนเฟิร์มแวร์ Arduino คุณจะพบไฟล์ที่ทำงานอยู่ในไฟล์เก็บถาวรในโฟลเดอร์เฟิร์มแวร์ - ไฟล์ DualMoco.hex
หลังจากดาวน์โหลดเฟิร์มแวร์ใหม่แล้ว ให้เชื่อมต่อ Arduino กับพีซีอีกครั้ง หากทุกอย่างเป็นไปด้วยดี Arduino IDE ไม่ควรตรวจพบ Arduino เนื่องจากโปรแกรมใหม่อยู่ใน ( มิดิโหมด- เปิดโปรแกรมเพลงที่สามารถบันทึก MIDI และตรวจสอบว่าชื่อ Arduino หรือไม่ มิดิ/ โมโค่สำหรับลูฟาแสดงอยู่เหนือการตั้งค่า MIDI ดังที่คุณเห็นในภาพที่ 1
ขั้นตอนที่ 10: การเตรียมการขั้นสุดท้าย
ลักษณะเฉพาะ ดูอัลโมโคคือมันมีโหมดที่สอง - พอร์ตอนุกรม USBซึ่งช่วยให้คุณอัปโหลดภาพร่างจาก Arduino IDE ได้เช่นเดียวกับเฟิร์มแวร์ทั่วไป หากต้องการทำให้ Arduino เข้าสู่โหมดที่สอง ให้เชื่อมต่อหมุด ISCP สองตัวเข้าด้วยกันดังแสดงในภาพที่ 1 และ 2 คุณสามารถใช้ลวดเส้นเดียวหรือลวดจัมเปอร์เล็กๆ ก็ได้ตามที่แสดงในภาพ ตอนนี้ถอดสาย USB ออกจาก Arduino สักสองสามวินาทีแล้วเชื่อมต่อใหม่ Arduino ควรปรากฏใน Arduino IDE
หมายเหตุ: เมื่อคุณต้องการเปลี่ยนจากโหมดยูเอสบี-พอร์ตอนุกรมวีโหมด MIDI ให้ถอดจัมเปอร์ออกปักหมุด ISCP ดังแสดงในภาพที่ 3 แล้วเชื่อมต่อใหม่Arduino กับพีซี
ถึงเวลาอัปโหลดร่างปัจจุบันไปยัง Arduino อาร์ดูโน่_สุดท้าย_รหัส- ดาวน์โหลดแล้วแปลง Arduino เป็น ยูเอสบี— พอร์ตอนุกรมโหมดและดาวน์โหลดรหัส หากคุณต้องการปรับแต่งเกณฑ์ ให้ทดลองกับค่าต่างๆ เกณฑ์และ เรส- เมื่อทุกอย่างทำงานได้ตามที่คาดไว้ ให้เปลี่ยนบรรทัดปัจจุบัน 17 จาก:
midiMode บูลีน = เท็จ; // ถ้า midiMode = false Arduino จะทำหน้าที่เป็นอุปกรณ์ usb เป็นอนุกรม
บูลีน midiMode = จริง;// ถ้า midiMode = true Arduino จะทำหน้าที่เป็นอุปกรณ์ MIDI ดั้งเดิม
หลังจากทำการเปลี่ยนแปลงโค้ดครั้งสุดท้ายแล้วก็ถึงเวลาทดสอบโปรแกรมเพลงที่สามารถรองรับอุปกรณ์ MIDI ก่อนอื่นเรามาเปลี่ยน Arduino เป็นโหมด MIDI เพื่อสิ่งนี้:
- มาอัปโหลดโค้ดสุดท้ายไปยัง Arduino
- ลองถอดสาย USB ออกจาก Arduino
- สลับ Arduino เป็นโหมด MIDI โดยถอดจัมเปอร์ออกจากพิน ISCP
- มาติดตั้งสาย USB ใน Arduino กัน
หากทุกอย่างเป็นไปด้วยดี ให้เปิดโปรแกรมเพลงแล้วเริ่มแตะหมุด เสียงวิเศษต้องดัง...
ขั้นตอนที่ 11: ประสานคลิปหนีบกระดาษเข้ากับจัมเปอร์
เมื่อบอร์ด Arduino เสร็จสมบูรณ์แล้ว ก็ถึงเวลาโฟกัสไปที่คีย์บอร์ดและวิธีเชื่อมต่อกับบอร์ด มีหลายวิธีในการทำเช่นนี้ แต่ฉันเลือกคลิปหนีบกระดาษที่จะยึดไว้กับกระดาษทาสี (ยึดได้ง่ายและสามารถนำกลับมาใช้ใหม่ได้)
กระบวนการบัดกรีคลิปหนีบกระดาษเข้ากับสายไฟนั้นค่อนข้างง่าย:
- ตัดปลั๊กด้านหนึ่งของสายไฟออก
- เราปอกสายไฟฉนวนออก 5 มม.
- บัดกรีลวดที่ปอกเข้ากับคลิปหนีบกระดาษ
- ทำซ้ำกับคลิปหนีบกระดาษทั้ง 12 คลิป
หมายเหตุ: ไม่ควรเคลือบลวดเย็บด้วยสารเคลือบใดๆ (สีหรือพลาสติก)
ขั้นตอนที่ 12: วาดภาพเทมเพลต
แม้ว่าคุณจะสามารถเล่นคีย์บอร์ด Arduino MIDI ได้โดยเพียงแค่แตะคลิปหนีบกระดาษ แต่การสร้างลายฉลุของคุณเองและใช้งานจะสนุกกว่ามาก ลงสีเทมเพลตที่พิมพ์แล้ว เทมเพลตอยู่ในไฟล์เก็บถาวรของโครงการ
การระบายสีเทมเพลตนั้นค่อนข้างง่าย เพียงตรวจสอบให้แน่ใจว่าคุณเว้นช่องว่างระหว่างบรรทัดและใช้สีที่เหมาะสม ไม่เช่นนั้นจะไม่ทำงาน หลังจากที่สีแห้งแล้ว ให้ติดคลิปหนีบกระดาษไว้ที่ “กุญแจ” แล้วคุณก็เริ่มมีเสียงดนตรีได้
ขอขอบคุณสำหรับความสนใจของคุณ!)
แป้นพิมพ์ได้รับการออกแบบมาเพื่อเชื่อมต่อกับโมดูลเสียงภายนอกหรือคอมพิวเตอร์ (หากมีอินเทอร์เฟซที่เหมาะสม) โดยใช้โปรโตคอล MIDI - สำหรับบันทึกเพลงลงในโปรแกรมซีเควนเซอร์หรือการแสดงสด จำนวนคีย์ในเวอร์ชันที่เสนอคือ 48 แต่สามารถเพิ่มเป็น 64 คีย์ได้โดยไม่ต้องเปลี่ยนวงจร คุณลักษณะที่โดดเด่นของแป้นพิมพ์ที่นำเสนอคือความไวต่อแรงกระแทกบนคีย์
ประวัติความเป็นมาของอุปกรณ์
เมื่อไม่นานมานี้ เกี่ยวกับการซื้ออพาร์ทเมนต์ ฉันถูกบังคับให้สูญเสียเครื่องดนตรีหรูหราที่ทำหน้าที่เป็นคีย์บอร์ด MIDI สำหรับฉัน นั่นคือ YAMAHA DX-7 ในตำนาน เมื่อความโศกเศร้าบรรเทาลง คำถามก็เกิดขึ้นทั้งความรุนแรงและความอัปลักษณ์: จะทำอย่างไรดี? ในขณะนี้เองที่วงจรครึ่งประกอบสำหรับ KR1816BE39 (ในฝ่ายตรงข้ามเรียกว่าโปรเซสเซอร์นี้เรียกว่า 8048) ตกไปอยู่ในมือของฉันด้วยความพยายามของเพื่อนของฉัน วงจรนี้ประกอบและติดตั้งได้ง่าย และที่สำคัญที่สุดคือสามารถจัดส่งได้ในเวลาที่เหมาะสม ฉันประกอบคีย์บอร์ดในรูปแบบของเมทริกซ์ 8x6 โดยใช้ KR1533ID7 และ KR1533KP7 นอกจากนี้ยังมีแมลงวันอยู่ในครีม - ข้อเสียสองประการของโครงการนี้ฆ่าข้อดีทั้งหมดจนตาย: การขาดความไวต่อความเร็วในการกดแป้นพิมพ์ (ลำโพง) และวงล้อ PITCH WEEL ครั้งหนึ่งฉันเคยตั้งโปรแกรมบน Z-80 (และยังสร้างซีเควนเซอร์ที่ใช้งานได้ด้วย) และตัดสินใจที่จะสลัดวันเก่า ๆ ออกไป ฉันยกเลิก Z-80 อย่างเด็ดขาดในฐานะ CPU เนื่องจากล้าสมัยทางศีลธรรม นอกจากนี้ ฉันไม่ต้องการทำการบัดกรีมากนัก และฉันตัดสินใจใช้อุปกรณ์เดียวกันนี้กับ KR1816BE39 เป็นพื้นฐาน โดยติดตั้งมัลติเพล็กเซอร์ตัวอื่นสำหรับหน้าสัมผัสปุ่มหัก (ด้านบน) ฉันพบเอกสาร (คุณจะไม่เชื่อเลย - ในห้องสมุดหนังสือ "การออกแบบอุปกรณ์ดิจิทัลบนไมโครโปรเซสเซอร์แบบชิปตัวเดียว") สำหรับแอสเซมเบลอร์ KR1816BE39 และเขียนโปรแกรม... แล้วปรากฎว่าโปรแกรมเมอร์ ROM ของเพื่อนมี เสียชีวิตและไม่มีอะไรจะแฟลชโปรแกรมด้วย... ด้วยความเศร้าโศกฉันเสียสติไปอย่างสิ้นเชิงและตัดสินใจเขียนอัลกอริทึมเดียวกันสำหรับ PIC อีกครั้ง ในครึ่งวัน โปรแกรมเมอร์ (LUDIPIPO) ถูกบัดกรีเข้าด้วยกัน จากนั้นจึงสร้างต้นแบบจากซ็อกเก็ต KR1533ID7 และ KR1533KP7 หนึ่งคู่ และ MGTF ดำเนินการติดตั้งทั้งหมดโดยไม่มีการประทับตราใดๆ และกระบวนการก็เริ่มขึ้น...
ขั้นแรกมีการเปิดตัวโปรแกรมเวอร์ชันที่ไม่ใช่ไดนามิก (ฉันขอนำเสนอสำหรับผู้ที่มีแป้นพิมพ์ที่มีหนึ่งผู้ติดต่อต่อคีย์) จากนั้นเวอร์ชันไดนามิกก็เริ่มต้นขึ้น และแล้วก็มีแนวคิดที่จะเพิ่มปุ่มและตัวบ่งชี้ ความจริงก็คือฉันมี WAVEBLASTER (เครื่องสังเคราะห์เสียงแบบปรับคลื่นได้สำหรับระบบเสียงเก่ามาก) ที่ไม่ได้ใช้งานมาเป็นเวลานาน ด้วยการเชื่อมต่อกับการสร้างสรรค์ของฉัน ฉันได้บางอย่างที่คุณสามารถเล่นได้ (อย่างสุดความสามารถและความสามารถของคุณ) โดยไม่ต้องใช้คอมพิวเตอร์ ซึ่งบางครั้งก็ค่อนข้างสะดวก สิ่งนี้กำหนดชุดฟังก์ชั่นบนปุ่ม - มันจะมีประโยชน์เมื่อเชื่อมต่อกับโมดูลเสียงระหว่างการเล่น "สด" ฟังก์ชั่นของปุ่มต่างๆ นั้นง่ายต่อการเปลี่ยนแปลงโดยการเขียนตัวจัดการของคุณเอง และใช้ขั้นตอนการโพลและการแสดงผลของฉัน อย่างไรก็ตาม คีย์บอร์ดที่ประกอบในกล่องเหล็กกลับกลายเป็นว่าสะดวกกว่า YAMAHA PSS (ยังคงเป็นปุ่มขนาดเต็ม คันเหยียบ และที่สำคัญที่สุดคือไดนามิก!) ท่ามกลางกระบวนการสร้างสรรค์ ความปรารถนาอันยากลำบากเกิดขึ้นที่จะสร้างคีย์บอร์ด MIDI เวอร์ชันหนึ่งสำหรับคอมพิวเตอร์โดยเฉพาะ - ตัวบ่งชี้และปุ่มต่างๆ เป็นทางเลือก แต่จำเป็นต้องใช้วงล้อ PITCH WEEL และ MODULATION ฉันต่อสู้กับมันมาระยะหนึ่งแล้ว แต่ในที่สุดก็ยอมแพ้และเปิดหัวแร้งขึ้นมาใหม่ อุปกรณ์อิเล็กทรอนิกส์ประกอบได้ไม่ยาก แต่กลไกค่อนข้างยากกว่า และฉันเริ่มย่นคิ้วเหนือดีไซน์ล้อ หลังจากคิดอยู่พักหนึ่ง ฉันตัดสินใจละทิ้งวงล้อที่สอง - อย่างไรก็ตาม ฉันไม่เคยหมุนทั้งสองวงล้อพร้อมกันเลย ฉันมักจะเขียนโน้ตและขว้างก่อน จากนั้นจึงเพิ่มการมอดูเลต สิ่งที่ต้องพิจารณาน้อยที่สุดก็คือการลดปริมาณงานเครื่องจักรกลที่ฉันชอบมากลงครึ่งหนึ่ง สำหรับผู้ที่ขี้เกียจน้อยกว่า ฉันจะอธิบายด้านล่างถึงวิธีสร้างสองล้อโดยแทบไม่ซับซ้อนเลย เพื่อให้ยังคงสามารถเขียนการมอดูเลชั่นได้ ฉันจึงตัดสินใจจัดโหมดการทำงานของวงล้อสามโหมด: พิทช์สำหรับ 2 เซมิโทน, พิตช์สำหรับ 1 เซมิโทน (สะดวก) และมอดดูเลชั่น คุณสามารถสลับทั้งหมดนี้ได้ด้วยปุ่มเดียว และระบุโหมดด้วยไฟ LED คู่หนึ่ง เพื่อให้วงจรง่ายขึ้น ฉันจึงตัดปุ่มและตัวบ่งชี้ที่เหลือออกไป ทั้งหมดนี้ไม่จำเป็นสำหรับการทำงานกับโปรแกรมซีเควนเซอร์สมัยใหม่
แน่นอนว่าต้องวางล้อบนแกนโพเทนชิออมิเตอร์ซึ่งเข้าใจได้ แต่ควรเชื่อมต่อกับอะไร? ความคิดแรกของฉันคือการใช้ one-shot กับตัวจับเวลา 555 แต่การคำนวณแสดงให้เห็นว่าการวัดระยะเวลาพัลส์จะมีความแม่นยำและความเสถียรได้ยากเมื่อพยายามให้อัตราการสุ่มตัวอย่างล้อที่ยอมรับได้ เนื่องจากโปรเซสเซอร์ยุ่งอยู่กับการวัดเป็นหลัก เวลาเปลี่ยนของหน้าสัมผัสแป้นพิมพ์ วิธีเดียวที่เหลือคือการใช้ตัวแปลงแอนะล็อกเป็นดิจิทัล (ADC) เนื่องจากฉันใช้ Pic16F84 โดยไม่มี ADC ในตัว ฉันจึงจำประวัติด้านวิศวกรรมของฉันได้ (และโรงงานในประเทศของฉัน) และสร้าง ADC จากตัวต้านทานหลายตัวพร้อมตัวเปรียบเทียบ (และชิ้นส่วนของโปรแกรม) มันดูเรียบง่าย ราคาถูก และค่อนข้างแม่นยำ
ฉันนำเสนอทั้งสองไดอะแกรม - ทั้งแบบมีปุ่มและวงล้อรวมถึงโปรแกรมสำหรับพวกมัน หากต้องการ ทั้งสองวงจรสามารถรวมกันได้อย่างง่ายดายโดยการเปลี่ยนที่อยู่ของอุปกรณ์ภายนอกเล็กน้อย คุณเพียงแค่ต้องจำไว้ว่าโหมด CHORUS (สเตอริโอ) ใช้ระดับเสียงเพื่อรับ detuning และคุณต้องลบมันออก หรือกังวลเกี่ยวกับการส่งระดับเสียงด้วย detuning ข้ามช่องทาง
ดังนั้น - แป้นพิมพ์จริง
แผนภาพอุปกรณ์
สิ่งแรกที่ปรากฏคือเวอร์ชันที่ไม่ไดนามิก ซึ่งไม่ไวต่อแรงกระแทกที่คีย์ - เพื่อทดสอบการทำงานของเลย์เอาต์
ฉันใช้ PIC16F84 เป็นโปรเซสเซอร์ด้วยเหตุผลหลายประการ: ชิปนี้มีจำหน่าย ราคาถูก และตั้งโปรแกรมได้ง่าย และเป็นชิปตัวที่ฉันมี ข้อควรสนใจ: PIC16C84 ไม่เหมาะ - มี RAM เพียง 36 เซลล์และโปรแกรมจะไม่ทำงาน อย่างไรก็ตาม วงจรล้อใช้เซลล์ RAM น้อยลง และสามารถบีบโปรแกรมลงใน PIC16C84 ได้โดยการลดเซลล์เพิ่มอีกสองสามเซลล์ เช่น MIDCH (โดยการกำหนดช่อง MIDI คงที่ให้กับข้อมูลที่ส่งทั้งหมด)
ไดอะแกรมของแป้นพิมพ์ไดนามิกพร้อมตัวบ่งชี้แสดงอยู่ด้านล่าง:
วงจรนี้เป็นแบบดั้งเดิมในหลาย ๆ ด้าน - เป็นการยากที่จะประดิษฐ์จักรยานขึ้นมาใหม่โดยไม่มีคันเหยียบและล้อ J Port B ใช้สำหรับการส่งผ่าน - บิต 7 บิตด้านล่างจะส่งออกที่อยู่คีย์ในเมทริกซ์หรือข้อมูลสำหรับอุปกรณ์ภายนอก (ตัวบ่งชี้และ DAC ของล้อ) บิตที่สำคัญที่สุดใช้เพื่อส่งออกข้อมูล MIDI เป็นรหัสซีเรียล - การแปลงและเอาต์พุตเสร็จสิ้นในซอฟต์แวร์ ดังนั้นคริสตัลควรอยู่ที่ 4 MHz เว้นแต่คุณต้องการเขียนรูทีนเอาท์พุต MIDI ไบต์ใหม่ บิตที่มีนัยสำคัญน้อยที่สุดสองบิตของพอร์ต A ทำงานสำหรับการรับสัญญาณ - รับสัญญาณจากมัลติเพล็กเซอร์ของหน้าสัมผัสคีย์ "ปล่อย" และ "กด" และบิตที่สำคัญที่สุดสามบิตจะกำหนดที่อยู่ของอุปกรณ์ภายนอก (ผ่านตัวถอดรหัส KR1533ID7 อื่น) ในวงจรที่มีวงล้อ ฉันละทิ้งตัวถอดรหัสที่อยู่อุปกรณ์ภายนอกเพื่อลดความซับซ้อนของวงจรและเพิ่มบิตสูงของพอร์ต PA4 สำหรับการป้อนข้อมูลจากตัวเปรียบเทียบ ดังนั้นที่อยู่ของแป้นพิมพ์และปุ่มจึงแตกต่างกัน เมื่อรวมวงจรเข้าด้วยกัน จะต้องส่งคืนไมโครวงจรนี้เพื่อถอดรหัสที่อยู่ ใช้บิตพอร์ต PA2 และ PA3 และระบุที่อยู่อุปกรณ์ 4 ตัว ได้แก่ แป้นพิมพ์ ปุ่ม การลงทะเบียนข้อมูลตัวบ่งชี้แบบไดนามิก และการลงทะเบียนความคุ้นเคยของตัวบ่งชี้แบบไดนามิก จะต้องเขียนตัวบ่งชี้โหมดล้อใหม่
วงจรที่มีวงล้อ PITCH WEEL / MODULATION มีลักษณะดังนี้:
มีการติดตั้งไดโอดหนึ่งตัวในแต่ละคีย์สำหรับการแยกการเชื่อมต่อ ตัวต้านทานที่อินพุตของมัลติเพล็กเซอร์ไม่ควรเกิน 8k มิฉะนั้นอาจเกิดข้อผิดพลาดได้เนื่องจากความจุในการติดตั้ง ตัวบ่งชี้ - ใดๆ ที่มีขั้วบวกร่วมสำหรับ 3 หลัก หากเทอร์มินัลของส่วนของแต่ละหลักถูกส่งออกแยกกัน เทอร์มินัลของส่วนที่มีชื่อเดียวกันจะต้องรวมกัน - ตัวบ่งชี้จะเป็นไดนามิกและตัวเลขจะสว่างขึ้นตามลำดับ ปุ่มใดๆ ที่ไม่มีการล็อค การเด้งกลับของหน้าสัมผัสจะถูกควบคุมโดยซอฟต์แวร์ มีการติดตั้งไฟ LED ใกล้กับปุ่มที่มีชื่อเดียวกันและระบุการเปิดใช้งานโหมดที่เกี่ยวข้อง ปุ่ม "+" และ "-" ไม่มีไฟ LED ทรานซิสเตอร์บนตัวบ่งชี้คือการนำไฟฟ้าแบบย้อนกลับที่มีกำลังต่ำและมีความถี่สูง รีจิสเตอร์ KR1533IR23 สองตัวใช้เพื่อสลับที่อยู่และรหัสของตัวเลขตัวบ่งชี้ปัจจุบัน (ไฟ LED ยังถูกจัดกลุ่มเป็นเลขเสมือนสองหลักด้วย) ฉันใช้แป้นพิมพ์มาตรฐานจากออร์แกนไฟฟ้าของโซเวียตที่มี 48 ปุ่ม (ผลิตแยกต่างหากในฐานะนักออกแบบวิทยุ "START" และค่อนข้างแพร่หลาย) เพื่อลดความสูงของคีย์บอร์ดและความหนาของเครื่องดนตรี จึงเหลือกลุ่มผู้ติดต่อสองในหกกลุ่มไว้ใต้แต่ละคีย์ และทั้งหมดก็ถูกตัดและติดกาวใหม่ โดยทั่วไปกลุ่มสวิตชิ่งหนึ่งกลุ่มต่อคีย์ก็เพียงพอแล้ว แต่จะสะดวกกว่าในการติดกาวด้วยวิธีนี้ บัสบาร์ของหน้าสัมผัส "ปล่อย" และ "กด" มีความยาว 8 ปุ่ม หากต้องการ คุณสามารถใช้แป้นพิมพ์แทนการใช้กลุ่มการสลับกลุ่มผู้ติดต่อ โดยจะใช้หน้าสัมผัสปิดสองคู่ - คู่หนึ่งปิดที่จุดเริ่มต้นของการเคลื่อนคีย์ และอีกคู่หนึ่งปิดที่ส่วนท้าย (เช่นเดียวกับเครื่องดนตรี YAMAHA) ในกรณีนี้จะต้องส่งสัญญาณไปยัง PA0 จากเอาต์พุตผกผันของมัลติเพล็กเซอร์ (พิน 6) หากไม่มีการเปลี่ยนแปลงวงจร คุณสามารถใช้คีย์บอร์ดที่มี 64 คีย์ (มาตรฐาน - 61 เช่น 5 อ็อกเทฟ) หากจำเป็น สามารถเพิ่มจำนวนคีย์เป็นอย่างน้อย 127 ในการดำเนินการนี้ คุณต้องแนะนำตัวถอดรหัส KR1533ID7 อื่นในวงจร
สิ่งสำคัญมากคือต้องตั้งค่ากลไกให้ดี - หน้าสัมผัสด้านบนต้องปิดเมื่อปล่อยกุญแจ หากยังไม่เสร็จสิ้น โปรแกรมจะถือว่ามีการกดปุ่มดังกล่าวและพยายามประมวลผล ดังนั้นการกดปุ่มเหล่านี้อีกครั้งจะไม่ส่งเสียง นอกจากนี้ จำนวนโน้ตสูงสุดที่สามารถเล่นพร้อมกันได้คือ 10 (หากใครมีนิ้วบนมือมากกว่า จำนวนนี้สามารถเปลี่ยนแปลงได้ง่าย) และการไม่ปล่อยคีย์จะลดจำนวนนี้ ด้วยเหตุผลเดียวกัน จำนวนคีย์ที่ระบุในขั้นตอนการโพลแป้นพิมพ์จะต้องตรงกับจำนวนคีย์จริง การตีกลับผู้ติดต่อถูกระงับโดยซอฟต์แวร์
สำหรับเมทริกซ์ตัวต้านทาน R-2R ADC ขอแนะนำให้เลือกตัวต้านทานที่มีความแม่นยำ 1–2% และค่าสัมบูรณ์อาจแตกต่างกันอัตราส่วนเป็นสิ่งสำคัญ อย่างไรก็ตาม คุณไม่ควรเพิ่มค่าเล็กน้อยมากนัก ซึ่งจะเพิ่มเวลาในการแปลงเนื่องจากความจุอินพุตของตัวเปรียบเทียบ ฉันใช้ตัวต้านทาน SMD โดยไม่จับคู่ แม้ว่าการวัดจะแสดงให้เห็นว่าในแถบยึดแถบเดียว ตัวต้านทานมักจะจับคู่ด้วยความแม่นยำที่สูงกว่า 1% ฉันแน่ใจว่าวงจรจะทำงานกับตัวต้านทานที่ไม่แม่นยำ แต่ความเป็นเส้นตรงของคุณสมบัติจะลดลง ตัวล้อนั้นทำมาจากที่จับจากทีวีเก่าและมีสปริงบนแกนโพเทนชิออมิเตอร์ที่จะคืนตำแหน่งตรงกลาง เพื่อความสะดวกในการตั้งค่ากลไก เมื่อคุณเปิดเครื่องโดยกดปุ่มโหมด โปรแกรมแก้ไขจุดบกพร่องจะถูกเปิดใช้งานซึ่งจะสว่างขึ้น LED เมื่อล้ออยู่ในตำแหน่งตรงกลาง ซึ่งช่วยให้คุณปรับแต่งตำแหน่งศูนย์ได้อย่างละเอียด ของล้อบนแกนโพเทนชิออมิเตอร์ หากมีความต้องการและความปรารถนาที่จะสร้างล้อ MODULATION แยกต่างหากจำเป็นต้องเชื่อมต่อกับองค์ประกอบตัวเปรียบเทียบอิสระ (มีสี่ล้อ) และเมทริกซ์ R-2R นั้นเป็นเรื่องปกติสำหรับทั้งสองล้อ หากต้องการเปลี่ยนเอาต์พุตของตัวเปรียบเทียบ ควรใช้วงจรขนาดเล็กเพิ่มเติม และใช้ PA2 เป็นสัญญาณควบคุม
หากต้องการ คุณสามารถประกอบแป้นพิมพ์เวอร์ชันไดนามิกโดยไม่มีตัวบ่งชี้ ปุ่ม และวงล้อ PITCH WEEL / MODULATION โดยไม่ต้องประกอบส่วนที่ไม่ได้ใช้ของวงจร พารามิเตอร์ที่เปลี่ยนแปลงได้ทั้งหมดจะถูกตั้งค่าเป็นค่าเริ่มต้นเมื่อเปิดเครื่อง...
ทั้งหมดนี้สามารถรับพลังงานจากอะไรก็ได้ ปริมาณการใช้กระแสไฟขึ้นอยู่กับตัวบ่งชี้เฉพาะและไม่เกิน 100 mA ฉันมีโคลง 7805 บนบอร์ดโดยไม่มีฮีทซิงค์ (มองเห็นได้ชัดเจนในภาพถ่าย) จำเป็นต้องใช้หม้อน้ำขนาดเล็กหากมีการจ่ายไฟมากกว่า 9v ตัวเปรียบเทียบใช้พลังงานจากแรงดันไฟฟ้า 9 - 12 โวลต์ซึ่งมีความเสถียรมากกว่า ใช่ ฉันใช้วงจรไมโครที่ผลิตโดยโซเวียตจากสต๊อกเก่า - มีอะนาล็อกสมัยใหม่จำนวนมาก สามารถทดแทนได้และเป็นที่ต้องการด้วยซ้ำ - อะนาล็อกสมัยใหม่มีการบริโภคน้อยกว่า
โปรแกรม
อัลกอริธึมสำหรับการประมวลผลปุ่มกดมาจากที่เสนอในนิตยสาร "เครื่องมือและระบบไมโครโปรเซสเซอร์" ฉบับที่ 5, 1986 มันเป็นสิ่งพิมพ์นี้ (หรือค่อนข้างเป็นข้อผิดพลาดในโปรแกรมที่เสนอ) ที่ทำให้ฉันต้องศึกษาแอสเซมเบลอร์ จริงๆ แล้ว แนวคิดเดียวที่นำมาจากที่นั่นคือการบันทึกจำนวนของแต่ละคีย์ที่กดไว้ในพื้นที่ RAM ที่จัดสรรเป็นพิเศษ (CHAN) เพื่อที่ว่าเมื่อคีย์บอร์ดถูกโพลอีกครั้ง มันจะไม่ประมวลผลคีย์ที่ประมวลผลไปแล้วอีก ฉันมีเซลล์ RAM สองเซลล์ที่จัดสรรสำหรับแต่ละปุ่มที่กด (รวมไม่เกิน 10): ในตอนแรกจำนวนคีย์ที่กดจะถูกบันทึกในวินาที - VELOCITY (ความเร็วในการกด) ฉันขอย้ำอีกครั้ง - มีเพียง 20 เซลล์เหล่านี้และที่อยู่เริ่มต้นได้รับจากชื่อ CHAN เครื่องหมายของคู่อิสระคือบิตที่สำคัญที่สุดที่กำหนดไว้ในเซลล์แรก บิตที่สำคัญที่สุดของเซลล์ที่สองที่ถูกตั้งค่าหมายความว่าหมายเหตุ เปิดสำหรับคีย์นี้ได้ถูกถ่ายโอนไปแล้ว และไม่จำเป็นต้องประมวลผลเพิ่มเติม
ฉันจะไม่อธิบายรายละเอียดโปรแกรมทั้งหมด ซอร์สโค้ดเต็มไปด้วยความคิดเห็นและสามารถเข้าถึงได้โดยผู้ที่ได้รับการฝึกอบรม ส่วนที่เหลือฉันจะจัดเตรียมเฟิร์มแวร์สำเร็จรูปในไฟล์ Dinamic.hex และ Pitchmod.hex ทันที ผมจะอธิบายเฉพาะจุดที่ไม่ชัดเจนเท่านั้น ก่อนอื่นเลย เกี่ยวกับการเปลี่ยนแปลง: ในขณะที่หน้าสัมผัสด้านบนของคีย์เปิดขึ้น หมายเลขของมันจะถูกเขียนลงในเซลล์แรกของคู่อิสระคู่แรกจากพื้นที่ CHAN พร้อมรีเซ็ตเครื่องหมายคู่อิสระ ค่าเริ่มต้น VELOCITY = 127 ถูกเขียนลงในเซลล์ที่สอง ความไวของแป้นพิมพ์ถูกกำหนดโดยความถี่ขัดจังหวะ เนื่องจากการประมวลผลขัดจังหวะจะลดค่า VELOCITY สำหรับคีย์ทั้งหมดที่ยังไม่ได้ส่ง NOTE ON การขัดจังหวะเกิดจากการจับเวลาในตัว ในขณะที่หน้าสัมผัสด้านล่างของปุ่มปิดอยู่ เครื่องหมาย "ถ่ายโอน" จะถูกตั้งค่าในเซลล์ CHAN ที่เกี่ยวข้อง และหมายเหตุ ON จะถูกส่งด้วย VELOCITY ปัจจุบัน เพื่อปรับปรุงกราฟความไว ค่า VELOCITY จะลดลงตามกฎลอการิทึม: 1/16 ของส่วนนั้นลดลง 1 จะถูกลบออกจากค่า VELOCITY ปัจจุบัน ดังนั้นในขณะที่คีย์เคลื่อนที่จากหน้าสัมผัสด้านบนไปยังด้านล่าง ประการแรก ค่า VELOCITY ในเซลล์ CHAN ที่เกี่ยวข้องจะลดลงตามกฎลอการิทึม และยิ่งคีย์เคลื่อนที่เร็วเท่าไร VELOCITY ก็จะยิ่งมากขึ้นในขณะที่หน้าสัมผัสด้านล่างของคีย์ถูกปิดและส่ง NOTE ON การขัดจังหวะยังควบคุมการแสดงผลแบบไดนามิก ซึ่งทำเพื่อกำจัดการกะพริบของตัวบ่งชี้
ฟังก์ชั่นปุ่ม: TRANSPOSE - ปุ่มทั้งหมดจะถูกลดขนาดให้เป็น A minor ที่คุณชื่นชอบ: ช่วง +/- 15 ครึ่งเสียง PRG กำหนดเสียงต่ำ (เครื่องดนตรี) ให้กับค่าที่ตั้งล่วงหน้าที่กำหนด (UP1-UP5) และ VOL จะกำหนดระดับเสียง พารามิเตอร์ปัจจุบันจะแสดงบนตัวบ่งชี้และสามารถเปลี่ยนได้โดยใช้ปุ่ม "+" และ "-" TWIN จะแสดงเสียงต่ำ "สองเท่า" - หนึ่งในค่าที่ตั้งไว้ล่วงหน้า (UP1-UP5) และในเวลาเดียวกันค่าที่ตั้งไว้ล่วงหน้าต่ำ เสียงพร้อมกัน STEREO จะส่งเสียงของค่าที่ตั้งไว้ล่วงหน้าในปัจจุบันไปยังช่องสเตอริโอด้านขวาและซ้ายพร้อมเอฟเฟกต์ "detuning" ("คอรัส") เล็กน้อย ปุ่ม SPLIT ไม่ได้เปิดใช้งาน แป้นเหยียบ SUSTAIN ได้รับการออกแบบตามวงจรโดยเป็นหนึ่งในปุ่มต่างๆ ความจุของสายไฟไม่ควรใหญ่มาก ที่อยู่ของตัวจัดการปุ่มจะถูกรวบรวมไว้ในตารางที่จุดเริ่มต้นของโปรแกรม เมื่อเปลี่ยนฟังก์ชันของปุ่ม คุณสามารถแทนที่ฟังก์ชันของคุณเองได้
ADC ของวงล้อเป็นซอฟต์แวร์ครึ่งหนึ่ง ทำงานโดยใช้อัลกอริธึมการประมาณต่อเนื่อง เมทริกซ์ R-2R ทำการแปลงดิจิทัลเป็นอะนาล็อก ขั้นแรก ให้ใช้ 1 ในหลักที่สำคัญที่สุดกับเมทริกซ์ R-2R และเครื่องเปรียบเทียบจะพิจารณาว่ามีค่ามากหรือน้อย หากมีน้อย 1 จะยังคงอยู่ในบิตที่สำคัญที่สุด หากมีมาก - 0 จากนั้นสิ่งเดียวกันนี้จะเกิดขึ้นกับแต่ละบิตลำดับต่ำที่ตามมา (รวม 6 ขั้นตอน) และเราจะได้ตัวเลขหกบิตที่สอดคล้องกับ มุมการหมุนของล้อ ความแม่นยำนี้ดูเหมือนเพียงพอสำหรับฉัน แต่คุณสามารถเพิ่มอีกหนึ่งบิตโดยการเพิ่มเมทริกซ์และโปรแกรมการแปลง
ออกแบบ
ในฐานะที่เป็นคีย์บอร์ดจริง ๆ ฉันใช้เครื่องมือสร้าง "Start" ที่ผลิตโดยโซเวียต ตอนนี้บางทีการหา Yamaha หรือ Casio รุ่นเก่าที่ใช้งานไม่ได้ง่ายกว่านี่จะช่วยแก้ปัญหาในการทำเคสได้ - ถ้าแน่นอน เครื่องเก่าค่อนข้างสมบูรณ์ครับ...
แผงวงจรพิมพ์ไม่ได้รับการพัฒนา - ฉันคิดว่าไม่เหมาะสมที่จะใช้เวลาเดินสายไฟและทำบอร์ดเพื่อผลิตสำเนาของอุปกรณ์เพียงชุดเดียวและทำเลย์เอาต์บนแผงวงจรโดยใช้จัมเปอร์ MGTF เราใช้สายเคเบิลจากฟล็อปปี้ดิสก์จากคอมพิวเตอร์ที่มีขั้วต่อที่สอดคล้องกันในแต่ละด้านเพื่อใช้เป็นตัวเชื่อมต่อและสายเคเบิลกับคีย์บอร์ด ซึ่งช่วยให้ประกอบ/ถอดแยกชิ้นส่วนอุปกรณ์ที่เสร็จแล้วได้ง่ายขึ้น
ในกรณีของฉัน ตัวถังโค้งงอจากเหล็กแผ่นบาง (สิ่งที่อยู่ในมือ) - ขอบไม้ (เหมือนเครื่องดนตรีโซเวียตเก่า)
ในระยะสั้นนั่นคือทั้งหมด สร้างสรรค์สำเร็จ!
รายชื่อธาตุกัมมันตภาพรังสี
การกำหนด | พิมพ์ | นิกาย | ปริมาณ | บันทึก | ร้านค้า | สมุดบันทึกของฉัน | |
---|---|---|---|---|---|---|---|
โครงการที่ 1 | |||||||
ไมโครคอนโทรลเลอร์ | PIC16F84 | 1 | ไปยังสมุดบันทึก | ||||
ชิป | KR1533ID7 | 1 | ไปยังสมุดบันทึก | ||||
ชิป | KR1533KP7 | 1 | ไปยังสมุดบันทึก | ||||
ตัวควบคุมเชิงเส้น | LM7805 | 1 | ไปยังสมุดบันทึก | ||||
ไดโอด | KD522A | 64 | ไปยังสมุดบันทึก | ||||
ตัวเก็บประจุ | 22 พิโคเอฟ | 2 | ไปยังสมุดบันทึก | ||||
ตัวเก็บประจุ | 0.1 µF | 2 | ไปยังสมุดบันทึก | ||||
100 µF | 2 | ไปยังสมุดบันทึก | |||||
ตัวต้านทาน | 220 โอห์ม | 2 | ไปยังสมุดบันทึก | ||||
ตัวต้านทาน | 6.8 โอห์ม | 8 | ไปยังสมุดบันทึก | ||||
เครื่องสะท้อนควอตซ์ | 4 เมกะเฮิรตซ์ | 1 | ไปยังสมุดบันทึก | ||||
ปุ่มคีย์บอร์ด | 64 | ไปยังสมุดบันทึก | |||||
โครงการที่ 2 | |||||||
ไมโครคอนโทรลเลอร์ | PIC16F84 | 1 | ไปยังสมุดบันทึก | ||||
ชิป | KR1533ID7 | 2 | ไปยังสมุดบันทึก | ||||
ชิป | KR1533KP7 | 2 | ไปยังสมุดบันทึก | ||||
ชิป | KR1533IR23 | 2 | ไปยังสมุดบันทึก | ||||
ตัวควบคุมเชิงเส้น | LM7805 | 1 | ไปยังสมุดบันทึก | ||||
ทรานซิสเตอร์แบบไบโพลาร์ | KT315A | 5 | ไปยังสมุดบันทึก | ||||
ไดโอด | KD522A | 80 | ไปยังสมุดบันทึก | ||||
ตัวเก็บประจุ | 22 พิโคเอฟ | 2 | ไปยังสมุดบันทึก | ||||
ตัวเก็บประจุ | 0.1 µF | 2 | ไปยังสมุดบันทึก | ||||
ตัวเก็บประจุด้วยไฟฟ้า | 100 µF | 2 | ไปยังสมุดบันทึก | ||||
ตัวต้านทาน | 180 โอห์ม | 7 | ไปยังสมุดบันทึก | ||||
ตัวต้านทาน | 220 โอห์ม | 2 | ไปยังสมุดบันทึก | ||||
ตัวต้านทาน | 6.8 โอห์ม | 16 | ไปยังสมุดบันทึก | ||||
ตัวต้านทาน | 8 kโอห์ม | 1 | ไปยังสมุดบันทึก | ||||
เครื่องสะท้อนควอตซ์ | 4 เมกะเฮิรตซ์ | 1 | ไปยังสมุดบันทึก | ||||
ตัวบ่งชี้ดิจิตอล LED 3 หลักพร้อมขั้วบวกทั่วไป | 1 | ไปยังสมุดบันทึก | |||||
ไดโอดเปล่งแสง | สีแดง | 12 | ไปยังสมุดบันทึก | ||||
สวิตช์กุญแจ | 64 | ไปยังสมุดบันทึก | |||||
ปุ่ม | 16 | ไปยังสมุดบันทึก | |||||
โครงการที่ 3 | |||||||
ไมโครคอนโทรลเลอร์ | PIC16F84 | 1 | ไปยังสมุดบันทึก | ||||
ชิป | KR1533ID7 | 1 | ไปยังสมุดบันทึก | ||||
ชิป | KR1533KP7 | 2 | ไปยังสมุดบันทึก | ||||
เครื่องเปรียบเทียบ |
เป็นเวลานานแล้วสำหรับโปรดิวเซอร์และวิศวกรเสียง ตัวควบคุม MIDI ได้กลายเป็นคุณลักษณะสำคัญที่ช่วยสร้างเพลงที่ไพเราะ เครื่องดนตรีเสมือนจริงมักจะฟังดูพิเศษอยู่เสมอ ดังนั้นจึงเป็นการตกแต่งท่วงทำนองใดๆ
เนื่องจากนักดนตรีหลายคนมีความกังวลอย่างมากเกี่ยวกับคุณภาพของผลิตภัณฑ์ของตน จึงเกิดคำถามขึ้น: จะเลือกตัวควบคุมประเภท MIDI ได้อย่างไร? บทความนี้จะอธิบายเคล็ดลับและเกณฑ์การคัดเลือกขั้นพื้นฐาน
คอนโทรลเลอร์ MIDI คืออะไร?
ย้อนกลับไปในทศวรรษ 1980 อุปกรณ์ที่เรียกว่าคอนโทรลเลอร์ถูกใช้เพื่อให้นักดนตรีควบคุมการทำงานของซินธิไซเซอร์หลายตัวพร้อมกันโดยใช้คีย์บอร์ดเพียงตัวเดียว แนวคิดนี้ประสบความสำเร็จ ดังนั้นอุปกรณ์ประเภทนี้จึงแพร่หลายไปในทันที ถ้าไม่ใช่ทุกคนสามารถซื้อได้แสดงว่าตอนนี้คอนโทรลเลอร์มีราคาลดลงอย่างมาก นักดนตรี วิศวกรเสียง นักแต่งเพลง นักแสดง ดีเจ ทุกคนใช้อุปกรณ์ดังกล่าว
อุปกรณ์ที่มีคีย์บอร์ดคืออะไร? คล้ายกับคีย์เปียโนและซินธิไซเซอร์ มีการเพิ่มปุ่มหมุน ปุ่มต่างๆ และแถบเลื่อน เมื่อโต้ตอบกับพวกมัน ทำนองจะถูกส่งไปยังโมดูลเสียงซึ่งมีประเภทภายนอก เรากำลังพูดถึงแล็ปท็อปและอุปกรณ์อื่นๆ กล่าวอีกนัยหนึ่ง ตัวควบคุม (ส่วนใหญ่) ไม่สามารถสร้างเสียงได้ด้วยตัวเอง ได้รับการออกแบบมาเพื่อควบคุมบิต บันทึก และพารามิเตอร์อื่นๆ ที่สร้างซ้ำจากอุปกรณ์ภายนอก (โมดูลเสียง)
ข้อดีของคอนโทรลเลอร์ MIDI คืออะไร? ที่ชัดเจนที่สุด: ใช้งานได้หลากหลายและพกพาได้ ต้องขอบคุณมันที่ทำให้คุณสามารถใช้เอฟเฟกต์เสมือนจริงทั้งหมดและควบคุมซอฟต์แวร์สมัยใหม่ได้ สามารถพกพาได้อย่างง่ายดายโดยใช้กระเป๋าแล็ปท็อป
สิ่งที่ต้องมองหาเมื่อซื้อ?
ก่อนที่จะซื้อคอนโทรลเลอร์ใด ๆ คุณต้องพิจารณาว่ามีไว้เพื่ออะไร มันจะมีประโยชน์ในการตอบคำถามต่อไปนี้ พวกเขาจะให้ความคิดที่ถูกต้องว่าตัวเลือกใดจากหลากหลายประเภทที่เหมาะสม
คอนโทรลเลอร์จะใช้ทำอะไร? อุปกรณ์ที่ใช้สำหรับการแสดงบนเวทีจะต้องมีวัสดุที่ทนทานต่อความเค้นทางกล เมื่อพิจารณาว่าคอนโทรลเลอร์ส่วนใหญ่ทำจากพลาสติก คุณจึงต้องใส่ใจกับตัวเลือกที่เป็นโลหะ คุณต้องตัดสินใจเกี่ยวกับประเภทของกลไกและจำนวนคีย์ด้วย หากมีมากเกินไป ก็อาจสร้างความสับสนให้กับวัตถุประสงค์ของการแสดงสดได้
ตัวควบคุม MIDI ขนาดเล็กจะทำงานได้ดีสำหรับดีเจ การทำด้วยมือของคุณเองไม่ใช่เรื่องยากเลยหากมีคนเข้าใจอุปกรณ์อิเล็กทรอนิกส์ ซึ่งหมายความว่าดีเจมักจะใช้อุปกรณ์ที่ทำเองที่บ้าน คุณสามารถอ่านเพิ่มเติมเกี่ยวกับสิ่งนี้ได้ด้านล่าง คุณต้องซื้ออุปกรณ์ดังกล่าวโดยคำนึงถึงข้อเท็จจริงที่ว่าคุณต้องมีที่จับและแถบเลื่อนด้วย หากไม่มีพวกเขา โปรแกรม (ตัวควบคุม MIDI ทำงานควบคู่กับมันเท่านั้น) จะไม่ทำหน้าที่ที่ต้องการ
หากนักดนตรีตัดต่อแทร็กบนเตียง บนเครื่องบิน ในรถยนต์ หรือสถานที่อื่นๆ สิ่งที่ต้องพิจารณาหลักในการเลือกคือการพกพาได้ เมื่อพิจารณาว่าอุปกรณ์นั้นใช้พลังงานอยู่ คุณจะต้องใส่ใจกับอุปกรณ์ที่สามารถชาร์จจากบัส USB ได้
ตัวควบคุม MIDI จาก Pioneer
คอนโทรลเลอร์ Pioneer MIDI เป็นอุปกรณ์ที่เป็นที่ต้องการมาโดยตลอด ผู้ผลิตรายนี้เป็นหนึ่งในผู้นำสามอันดับแรกในตลาดสำหรับอุปกรณ์ดังกล่าวมายาวนาน อะไรทำให้ Pioneer รุ่น “ที่เกี่ยวข้อง” แตกต่างจากกัน? เพียงแค่มีฟังก์ชั่นเพิ่มเติมที่ดูเหมือนปุ่มกลไกธรรมดาบนแผงควบคุม คอนโทรลเลอร์ของแบรนด์นี้มีล้อเขย่าเบา ๆ ที่ยอดเยี่ยม รูปลักษณ์ภายนอกดูจริงจังและสง่างาม ขนาดที่น่าประทับใจของอุปกรณ์ได้รับการชดเชยด้วยฟังก์ชันการทำงานสูงสุด
ไม่ต้องสงสัยว่าจะเลือกรุ่นไหน คุณควรพิจารณา DDJ-T1 ให้ละเอียดยิ่งขึ้นทันที หลายคนแนะนำอุปกรณ์นี้อัตราส่วนราคาต่อคุณภาพค่อนข้างดี แผงควบคุมสะดวกกดปุ่มได้โดยไม่มีปัญหาและอุปกรณ์พกพาสะดวก
ตัวควบคุม Novation Launchpad
คอนโทรลเลอร์ Novation Launchpad MIDI ได้รับการออกแบบมาโดยเฉพาะเพื่อทำงานร่วมกับ Ableton Live อุปกรณ์นี้เหมาะสำหรับกิจกรรมทั้งบนเวทีและโฮมสตูดิโอ นอกจากนี้ยังจะง่ายต่อการถือดิสโก้ด้วย ตารางอุปกรณ์ประกอบด้วย 64 ปุ่ม มีเอฟเฟกต์เพิ่มเติมรวมถึงฟังก์ชั่นสำหรับการทำงานกับซอฟต์แวร์ อุปกรณ์สามารถเชื่อมต่อกับคอมพิวเตอร์และทำงานได้กับทั้งตระกูล Windows และระบบปฏิบัติการอื่นบางระบบ
ตัวควบคุม DIY MIDI - ความจริงหรือตำนาน?
ตัวควบคุม MIDI แบบโฮมเมดเป็นที่ต้องการมาเป็นเวลานาน สิ่งที่จำเป็นในการทำให้ความคิดของคุณเป็นจริง? คุณต้องมีไดอะแกรมตามที่อุปกรณ์จะถูกบัดกรีและประกอบ, งบประมาณ, นักฟิสิกส์หรือช่างไฟฟ้าที่มีประสบการณ์ในสาขานี้
นอกจากจะรู้ด้านเทคนิคแล้ว คุณยังต้องถามตัวเองด้วยว่าผู้สร้างรู้เกี่ยวกับคอนโทรลเลอร์มากแค่ไหน ในการประกอบอุปกรณ์อย่างเหมาะสมซึ่งตรงตามความคาดหวังทั้งหมด คุณต้องเข้าใจว่าฐานใดดีที่สุดที่จะใช้ เหตุใดจึงประกอบโมเดลนี้ และตำแหน่งที่จะติดตั้งแผงควบคุม ปัญหาค่อนข้างซับซ้อน แต่แก้ไขได้อย่างสมบูรณ์ ปัจจุบันมีวงจรสำเร็จรูปจำนวนมากที่สามารถใช้ประกอบคอนโทรลเลอร์ได้ สิ่งสำคัญคือความมั่นใจในแผนและความอดทนของคุณ
รุ่นแบรนด์อากาอิ
Akai เพิ่งเปิดตัวคอนโทรลเลอร์ใหม่ชื่อ MPC Touch ต่างจากอุปกรณ์ที่เกี่ยวข้อง เครื่องนี้มีหน้าจอขนาด 7 นิ้ว ทำให้การทำงานกับมันง่ายขึ้นมาก จากรีวิวต้องบอกว่าเป็นรุ่นที่อธิบายไว้ซึ่งใช้เป็นตัวอย่างเมื่อพูดถึงผู้ควบคุมมืออาชีพ เมื่อพิจารณาถึงฟังก์ชันการทำงานแล้ว คำถามว่าจะเลือกอุปกรณ์ดังกล่าวอย่างไรก็จะหายไปทันที ซอฟต์แวร์ทำงานค่อนข้างเร็วและมีประสิทธิภาพ ไม่มีปัญหาเกิดขึ้น และความล้มเหลวเกิดขึ้นน้อยมาก
ข้อเสียเปรียบเพียงอย่างเดียวคือคอนโทรลเลอร์ไม่สามารถทำงานได้หากไม่มีแหล่งพลังงานเนื่องจากไม่มีแบตเตอรี่ แบรนด์อากาอิเป็นที่รู้จักในตลาดมายาวนาน ตัวควบคุม MIDI เป็นอุปกรณ์ที่ทรงพลังและมีคุณภาพสูงที่สามารถรับน้ำหนักได้มาก บ่อยครั้งมีบางรุ่นใช้บนเวที
ตัวควบคุม MIDI คืออุปกรณ์ที่แปลงกระบวนการทางกายภาพบางอย่างให้เป็นชุดคำสั่งดิจิทัลในรูปแบบ MIDI กระบวนการทางกายภาพอาจเป็นอะไรก็ได้ตั้งแต่การกดปุ่มด้วยนิ้วไปจนถึงการหมุนปุ่มปรับระดับเสียง สตรีมคำสั่งผลลัพธ์จะถูกส่งผ่านโปรโตคอล MIDI ไปยังอุปกรณ์อื่น ๆ เช่น คอมพิวเตอร์ ฮาร์ดแวร์แซมเพลอร์ ซินธิไซเซอร์ หรือซีเควนเซอร์ภายนอก และถูกถอดรหัสด้วยวิธีใดวิธีหนึ่ง ตัวควบคุม MIDI ประเภทที่พบบ่อยที่สุดคือคีย์บอร์ด MIDI ซึ่งเทียบเท่ากับคีย์บอร์ดเปียโนแบบอิเล็กทรอนิกส์ นอกจากนี้ยังมีคอนโทรลเลอร์ประเภทอื่นๆ อีกมากมาย รวมถึงชุดกลองอิเล็กทรอนิกส์
ตลาดสมัยใหม่มีตัวควบคุม MIDI ที่แตกต่างกันจำนวนมากสำหรับการติดตั้งทางอิเล็กทรอนิกส์ โดยมีเกณฑ์ที่แตกต่างกัน เช่น ราคา คุณภาพ ลักษณะทางเทคนิค เป็นต้น นอกจากนี้ยังมีอุปกรณ์ผู้ใช้สำเร็จรูปหลายเครื่องที่นำไปใช้เป็นโครงการเชิงพาณิชย์ (eDrum, megaDrum) แต่ถึงกระนั้นความปรารถนาที่จะสร้างอุปกรณ์ดังกล่าวด้วยมือของคุณเองยังคงอยู่ในจิตใจของ Kulibins ยุคใหม่
ไม่กี่ปีที่ผ่านมาฉันเริ่มสนใจที่จะสร้างอุปกรณ์ดังกล่าวอย่างล่าช้าเล็กน้อยเนื่องจากฉันเข้าร่วมในกลุ่มดนตรีหนัก เราเล่นฮาร์ดร็อกหรืออะไรทำนองนั้น เช่น บรูทัลเดธ โกเร็กรินด์ กรินด์คอร์ ฉันเล่นกีตาร์ไฟฟ้า ก่อนหน้านี้เล็กน้อยเราซื้อกลองชุด Sonor และส่งเสียงดังในโรงรถในตอนเย็น ต่อมาโรงจอดรถถามเรา และเกิดคำถามเกี่ยวกับสถานที่นี้ เมื่อพบว่าไม่มีอะไรคุ้มค่า เราจึงตัดสินใจซ้อมที่บ้านซึ่งนำไปสู่ความขัดแย้งกับเพื่อนบ้านทันที นี่คือที่มาของคำถามเกี่ยวกับกลองอิเล็กทรอนิกส์
ควบคู่ไปกับการเล่นเครื่องดนตรีสด ฉันกำลังเขียนดนตรีอิเล็กทรอนิกส์และใช้เครื่องดนตรี VST และปลั๊กอิน เพื่อสร้างชิ้นส่วนกลอง ฉันชอบกลองเสพติดและ ezDrums ซึ่งมีความสามารถในการทำงานร่วมกับอินเทอร์เฟซ MIDI โดยไม่ได้อ่านหัวข้อนี้ด้วยซ้ำ ฉันก็รีบมุ่งหน้าสู่การพัฒนาตัวควบคุม MIDI ของตัวเองบนไมโครคอนโทรลเลอร์ ATMega32 ราคาไม่แพงในแพ็คเกจ DIP ซึ่งมีช่อง ADC 8 ช่องบนบอร์ด ฉันไม่ต้องการล้อมรั้ววงจร และตัดสินใจจำกัดตัวเองไว้ที่ 8 อินพุต เนื่องจาก ATMega32 ไม่มีฮาร์ดแวร์ USB ฉันจึงใช้การเชื่อมต่อมาตรฐานกับคอมพิวเตอร์ผ่าน usb เสมือน หลังจากเล่นซอกับการเขียนโปรแกรมมาหลายวัน ฉันก็จัดการเพื่อเริ่มต้นอุปกรณ์ได้ ลองนึกภาพความประหลาดใจของฉันเมื่อบนอินเทอร์เน็ตฉันค้นพบอุปกรณ์สำเร็จรูปพร้อมแผนภาพวงจรและเฟิร์มแวร์ (MegaDrum) แต่ทุกสิ่งที่ยังไม่ได้ทำก็ดีขึ้นทั้งหมด
ยูเอสบีเต็มรูปแบบ
โดยอาชีพแล้ว ฉันเป็นโปรแกรมเมอร์ แต่โดยอาชีพแล้ว ฉันเป็นโปรแกรมเมอร์อิเล็กทรอนิกส์ ผู้สมัครสาขาวิทยาศาสตร์เทคนิค และอย่างที่อดีตหัวหน้างานเคยพูดไว้ว่าฉันเป็นคนสวิส นักเกี่ยวข้าว และนักเล่นทรัมเป็ต ตามปกติแล้ว ฉันเริ่มจับจ้องไปที่ AVR ไม่ใช่เพราะฉันมีความรู้สึกต่อพวกเขา แต่เป็นเพราะฉันพอใจกับประสิทธิภาพและคุณลักษณะทางเทคนิคของพวกเขาโดยสิ้นเชิง แต่ถึงเวลาที่พวกเขาไม่เพียงพออีกต่อไป จากนั้น stm32 ก็เข้ามาแทนที่โดยมีอินเทอร์เฟซ usb เต็มรูปแบบบนเครื่อง นี่คือที่มาของแนวคิดในการสร้างตัวควบคุม MIDI ที่มีคุณสมบัติครบถ้วน นอกจากนี้ ฉันมีประสบการณ์ในการทำงานกับอินเทอร์เฟซ MIDI แล้ว
จะเริ่มต้นที่ไหน? เราไม่มี stm32 ในแพ็คเกจ DIP (หากมีอยู่ตามธรรมชาติ) ดังนั้นแนวคิดในการบัดกรีบนแผงวงจรจึงหายไปทันที ทันใดนั้นบอร์ดพัฒนาราคาถูกที่ใช้ไมโครคอนโทรลเลอร์ stm32 เช่น DISCOVERY ก็เริ่มปรากฏให้เห็น และตอนนี้ฉันเป็นเจ้าของบอร์ดดีบั๊ก STM32F407DISCOVERY อย่างมีความสุขซึ่งรวมถึงโปรแกรมเมอร์ ST-Link ด้วย โปรเซสเซอร์ STM32F407 มีช่อง ADC 16 ช่องแม้ว่าอุปกรณ์ต่อพ่วงจะครอบครอง 4 ช่องซึ่งบอร์ดตรวจแก้จุดบกพร่องนั้นอัดแน่นไปด้วย แต่สำหรับจุดประสงค์ของฉัน 12 ช่องก็เพียงพอแล้ว
หลังจากใช้เวลาศึกษาสภาพแวดล้อมการเขียนโปรแกรม Keil สถาปัตยกรรมของไมโครโปรเซสเซอร์ STM32F407 รวมถึงไลบรารีอุปกรณ์ต่อพ่วงมาตรฐานสำหรับการทำงานกับ USB ฉันได้สร้างโปรแกรมสำหรับสำรวจช่อง ADC ทั้งหมดโดยใช้ช่องสัญญาณเข้าถึงหน่วยความจำโดยตรง รวมถึง USB คอมโพสิต อุปกรณ์ที่มีอุปกรณ์เสียง MIDI และ HID เพื่อเปลี่ยนการตั้งค่าอุปกรณ์
ในฐานะเซนเซอร์สำหรับดรัม ผมใช้เพียโซเบล ZP-1 ซึ่งหาซื้อได้ในร้านค้าในราคาที่ไม่แพง
ฉันเอาแผนผังการเดินสายจาก MegaDrum
ฉันเขียนโปรแกรมควบคุมใน Delphi โดยมีช่องสำรอง 16 ช่อง โดยหลักการแล้ว จำนวนช่องสัญญาณของอุปกรณ์สามารถเพิ่มได้ไม่จำกัดโดยการเพิ่มมัลติเพล็กเซอร์แบบอะนาล็อกลงในวงจร เช่นเดียวกับที่ทำใน Megadrum แต่สำหรับจุดประสงค์ของเรา 16 ช่องก็เพียงพอแล้วเนื่องจากเราไม่ใช่นักดนตรีขั้นสูง และสำหรับมือกลองมือใหม่ กลองจำนวนเท่านี้คงเป็นเรื่องง่าย
อุปกรณ์ได้รับการทดสอบทั้งบน Windows และ Linux โดยใช้ Renoise tracker ไม่พบปัญหาพิเศษในการทำงาน
แต่ฉันตัดสินใจที่จะไม่หยุดอยู่เพียงผลลัพธ์นี้ STM32F407 เป็นโปรเซสเซอร์ที่ค่อนข้างซับซ้อน ดังนั้นจึงมีราคาค่อนข้างแพง การสร้างอุปกรณ์โดยใช้ STM32F103 นั้นถูกกว่า อีเบย์มาช่วยเหลือ ฉันซื้อบอร์ดพัฒนาที่มี STM32F103RBT6 อยู่บนเครื่อง
จริงอยู่ที่มันไม่มีโปรแกรมเมอร์ในตัว ฉันโชคดีเพราะฉันยังมีโปรแกรมเมอร์ ST-Link จากงานก่อนหน้านี้
ฉันต้องเขียนเฟิร์มแวร์ใหม่ทั้งหมดเนื่องจากหลักการทำงานของโปรเซสเซอร์ 407 และ 103 แม้ว่าจะไม่แตกต่างกันอย่างสิ้นเชิงก็ตาม
จากนั้นฉันก็เจอบอร์ดแก้ไขจุดบกพร่องบนอินเทอร์เน็ตซึ่งจริงๆ แล้วมีราคาเพนนี และตัดสินใจว่าด้วยวิธีนี้ฉันสามารถลดต้นทุนของส่วนประกอบให้เหลือน้อยที่สุด
บทความส่วนใหญ่บนอินเทอร์เน็ตเกี่ยวกับการสร้างคีย์บอร์ด MIDI, ตัวควบคุม, รีโมท ฯลฯ ขึ้นอยู่กับการใช้ตัวเชื่อมต่อ MIDI การเชื่อมต่อกับคอมพิวเตอร์สมัยใหม่อาจเป็นปัญหาได้ การ์ดเสียงรุ่นเก่ามีพอร์ตเกมซึ่งคุณสามารถเชื่อมต่อจอยสติ๊กหรืออุปกรณ์ MIDI ได้:
อย่างไรก็ตาม เมนบอร์ดใหม่ทั้งหมดมาพร้อมกับตัวควบคุมเสียงในตัว และการ์ดเสียงมักจะขาดความสามารถในการเชื่อมต่ออุปกรณ์ MIDI
สิ่งที่เหลืออยู่คือซื้อคีย์บอร์ด MIDI คอนโซล DJ ฯลฯ ด้วยเอาต์พุต USB เพื่อเชื่อมต่อกับคอมพิวเตอร์ หรือซื้อ/บัดกรีอะแดปเตอร์ หรือซื้อการ์ดเสียงพิเศษที่สามารถเชื่อมต่ออุปกรณ์ MIDI ได้ แน่นอนว่าการซื้อไม่ใช่ปัญหา แต่นั่นไม่ใช่สาเหตุที่เรามาที่เว็บไซต์นี้ใช่ไหม
ในบทความนี้ ฉันต้องการแสดงวิธีที่คุณสามารถใช้คอนโทรลเลอร์ Arduino ราคาไม่แพงเพื่อสร้างคีย์บอร์ด MIDI อย่างง่ายพร้อมการเชื่อมต่อ USB สำหรับ 8 ปุ่มและล้อเลื่อน
ดังนั้นฉันจึงใช้:
คอนโทรลเลอร์ Arduino UNO
8 ชิ้น ปุ่ม
ตัวต้านทาน 8 ตัว 10 kOhm
โรตารีเอ็นโค้ดเดอร์ 25LB22-Q
เขียงหั่นขนมและจัมเปอร์
แผนภาพการเชื่อมต่อมีดังนี้:
ในการเชื่อมต่อฉันใช้ตัวเลือกที่ง่ายที่สุด: 1 คีย์ - 1 อินพุต อย่างไรก็ตาม ด้วยจำนวนคีย์ที่มากขึ้น ตัวควบคุมที่แตกต่างกัน เป็นต้น อินพุตอาจมีไม่เพียงพอ ดังนั้น คุณจะต้องใช้ข้อมูลที่อ่านผ่านอินพุตแบบอะนาล็อก (โดยการเพิ่มตัวต้านทานที่มีค่าต่างกัน) หรือผ่านมัลติเพล็กซ์ อย่างไรก็ตาม หากคุณแนบหลายปุ่มเข้ากับอินพุตแบบอะนาล็อก ปัญหาอาจเกิดขึ้นกับการอ่านสถานะเมื่อมีการกดหลายปุ่มพร้อมกัน ดังนั้นในความคิดของฉัน มัลติเพล็กซ์จึงเป็นตัวเลือกที่ยอมรับได้มากกว่า
ซอฟต์แวร์อาดูโน่
ฉันจะไม่พิจารณาโครงสร้างของข้อมูล MIDI เพราะ... สิ่งนี้อธิบายไว้ในบทความ:
ตัวเข้ารหัสเชื่อมต่อกับอินพุตขัดจังหวะของฮาร์ดแวร์ ฉันจะไม่พิจารณาคำอธิบายการทำงานด้วยเพราะ โปรแกรมนี้เรียบง่ายและนำมาจากเว็บไซต์ Arduino อย่างเป็นทางการ
ในโปรเจ็กต์นี้ ตัวเข้ารหัสจะใช้เป็นล้อเลื่อนเพื่อเปลี่ยนวงล้อมอดูเลชั่น แต่สามารถกำหนดใหม่เพื่อวัตถุประสงค์อื่นได้ (การโค้งงอของพิตช์ ฯลฯ)
ข้อมูล MIDI จากตัวเข้ารหัสจาก Arduino จะถูกส่งไปพร้อมกับบรรทัดต่อไปนี้:
noteOn(0xB0, 0x01, ตัวเข้ารหัส0Pos);
โดยที่ 0xB0 คือข้อความคอนโทรลเลอร์ (การเปลี่ยนแปลงการควบคุม)
0x01 - รหัสคอนโทรลเลอร์ (ในกรณีของเรา Modulation)
encoder0Pos - ค่าคอนโทรลเลอร์ (ในกรณีของเรา 0-127)
ด้วยการเปลี่ยนรหัสคอนโทรลเลอร์ คุณจะสามารถใช้ล้อเลื่อน (ตัวเข้ารหัส) สำหรับคอนโทรลเลอร์ต่างๆ ได้
Pitch Bend ก็คุ้มค่าที่จะกล่าวถึงเช่นกัน จากข้อกำหนด MIDI เป็นไปตามว่าจำเป็นต้องส่งข้อความสามไบต์: 0xE0 (รหัส Pitch Bend), MSB (ไบต์สูง), LSB (ไบต์ต่ำ)
ไบต์ภายนอกสองตัวเก็บค่าพิทช์ 14 บิตซึ่งสามารถอยู่ในช่วงตั้งแต่ 0...16383 (0x3FFF) ตรงกลางคือ 0x2000 ทุกสิ่งที่อยู่เหนือค่านี้จะทำให้ระดับเสียงสูงขึ้น หากต่ำลง ระดับเสียงจะเปลี่ยนลง
ในโค้ดโปรแกรม ฉันใส่ความคิดเห็นในบรรทัดต่างๆ หากคุณต้องการใช้ Pitch Bend แทนการมอดูเลตในทันที (ค่าตรงกลาง การแบ่งย่อยเป็น 2 ไบต์ ฯลฯ)
รหัสการตรวจจับการกดปุ่มประกอบด้วยสามสถานะ: กดปุ่ม, กดปุ่มค้างไว้ และปล่อยปุ่ม สิ่งนี้ทำเพื่อให้สามารถส่งค่าระยะเวลาของการกดปุ่มได้ หากไม่จำเป็นคุณสามารถปล่อยให้มีเพียงสถานะเดียว (กดปุ่ม) โปรแกรมในกรณีนี้จะง่ายขึ้นอย่างมาก
ในการจัดการสถานะของแต่ละคีย์ทั้งแปดคีย์ จะใช้โค้ดต่อไปนี้:
ถ้า (buttonState_C == HIGH && note_C_send_on == false) // กดปุ่ม ( noteOn (0x90, note_C, 0x7F); note_C_send_on = true; // หมายเหตุในคำสั่งที่ส่ง note_C_send_off = false; // ไม่ได้ส่งคำสั่ง Note Off ) มิฉะนั้นหาก (buttonState_C == HIGH && note_C_send_on == true) // หากคีย์ถูกค้างไว้ ( noteOn(0x00, note_C, 0x7F); note_C_send_on = true; note_C_send_off = false; ) else if (buttonState_C == LOW && note_C_send_off == false) // หากปล่อยคีย์ ( noteOn(0x90, note_C, 0x00); note_C_send_on = false; note_C_send_off = true; encoder0Pos = 0; // คืนตำแหน่งล้อให้เป็นศูนย์ ) ....... ..... .. ... .... // ฟังก์ชั่นสำหรับการส่งข้อความ MIDI ไปยังพอร์ตอนุกรม void noteOn(int cmd, int pitch, int velocity) ( Serial.write(cmd); Serial.write(pitch); Serial. เขียน (ความเร็ว); ล่าช้า (20)
โปรดทราบว่าหากใช้ pitch Bend ดังนั้น encoder0Pos จะต้องคืนค่าไม่ให้เป็นศูนย์ แต่เป็น 0x2000 (หรือควรตั้งค่ากำหนดที่จุดเริ่มต้นของโปรแกรม)
ดังนั้นเมื่อประกอบวงจรแล้วอัพโหลดแบบร่างไปยังคอนโทรลเลอร์เราเปิดตัว Serial Monitor เปลี่ยนความเร็วในการส่งข้อมูลเป็น 115200 แล้วกดปุ่มหรือหมุนตัวเข้ารหัสแล้วดูค่า
หากทุกอย่างเรียบร้อยดีให้ไปยังส่วนถัดไป ฉันจะบอกทันทีว่าสำหรับฉันมันกลายเป็นปัญหามากที่สุดและหากฉันไม่พบตัวแปลง USB -> Midi เสมือนบทความนี้ก็คงจะไม่มีอยู่
ซอฟต์แวร์พีซี (วินโดวส์)
ในการรับข้อมูลผ่านพอร์ต COM เสมือน USB จาก Arduino และถ่ายโอนไปยังโปรแกรมซีเควนเซอร์ MIDI คุณต้องมียูทิลิตี้พิเศษ: Serial MIDI Converter V2D (ไซต์สำนักงาน)
โปรแกรมนี้เป็นหลายแพลตฟอร์ม มันใช้งานได้สำหรับฉันใน Windows 7 x64 แม้ว่าจะมีปัญหาอยู่บ้างก็ตาม
เราเปิดตัวเลือกพอร์ต USB อัตรารับส่งข้อมูล (115200) และพอร์ตอินพุต MIDI และพอร์ตเอาต์พุต MIDI
ตอนนี้ ข้อมูล MIDI ทั้งหมดที่มากับพอร์ต COM เสมือน USB 12 จะถูกเปลี่ยนเส้นทางไปยังพอร์ต MIDI Yoke 6 (ฉันใช้โปรแกรม MIDI Yoke เพื่อสร้างพอร์ต MIDI เสมือน) คุณสามารถเปลี่ยนเส้นทางไปยัง Microsoft GS Wavetable Synth และพอร์ตอื่นๆ ได้
ต้องเปิดโปรแกรมไว้ตลอดเวลา เมื่อคุณกดปุ่มหรือหมุนปุ่มเข้ารหัส ไฟแสดง Serial RX ที่ด้านล่างควรกะพริบ
ในการแสดงข้อมูล MIDI ขาเข้าจากพอร์ตด้วยสายตา ฉันพบว่าโปรแกรม MIDI-OX (ไซต์สำนักงาน) มีประโยชน์มาก:
โปรดทราบว่าในการตั้งค่าอุปกรณ์ MIDI คุณต้องตั้งค่าพอร์ตอินพุต MIDI
ตอนนี้ เมื่อคุณกดปุ่มโน้ตหรือหมุนวงล้อ คุณจะเห็นข้อมูล MIDI ใน Monitor-Output
ที่. ด้วยการใช้ซอฟต์แวร์และฮาร์ดแวร์ เราสามารถสร้างคีย์บอร์ด MIDI แบบธรรมดาบนคอนโทรลเลอร์ Arduino พร้อมการถ่ายโอนข้อมูลไปยังคอมพิวเตอร์เพื่อการประมวลผลในภายหลัง เช่น ใน Cubase เป็นต้น รวม แบบเรียลไทม์
จากโปรเจ็กต์นี้คุณสามารถสร้างคอนโซล DJ, คีย์บอร์ด MIDI ที่มีคุณสมบัติครบถ้วน ฯลฯ
ด้านล่างนี้คุณสามารถดาวน์โหลดภาพร่าง INO, Serial MIDI Converter V2D, MIDI-OX และ MIDI Yoke