วิธีสร้างคอนโทรลเลอร์ 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 อื่นๆ กระบวนการประกอบด้วยสองขั้นตอน:

  1. เปลี่ยนเฟิร์มแวร์ปัจจุบันบนโปรแกรมที่รองรับ Arduino Uno เป็น MIDI
  2. อัปโหลดร่าง 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 เพื่อสิ่งนี้:

  1. มาอัปโหลดโค้ดสุดท้ายไปยัง Arduino
  2. ลองถอดสาย USB ออกจาก Arduino
  3. สลับ Arduino เป็นโหมด MIDI โดยถอดจัมเปอร์ออกจากพิน ISCP
  4. มาติดตั้งสาย USB ใน Arduino กัน

หากทุกอย่างเป็นไปด้วยดี ให้เปิดโปรแกรมเพลงแล้วเริ่มแตะหมุด เสียงวิเศษต้องดัง...

ขั้นตอนที่ 11: ประสานคลิปหนีบกระดาษเข้ากับจัมเปอร์

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

กระบวนการบัดกรีคลิปหนีบกระดาษเข้ากับสายไฟนั้นค่อนข้างง่าย:

  1. ตัดปลั๊กด้านหนึ่งของสายไฟออก
  2. เราปอกสายไฟฉนวนออก 5 มม.
  3. บัดกรีลวดที่ปอกเข้ากับคลิปหนีบกระดาษ
  4. ทำซ้ำกับคลิปหนีบกระดาษทั้ง 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
ไมโครคอนโทรลเลอร์PIC16F841 ไปยังสมุดบันทึก
ชิปKR1533ID71 ไปยังสมุดบันทึก
ชิปKR1533KP71 ไปยังสมุดบันทึก
ตัวควบคุมเชิงเส้น

LM7805

1 ไปยังสมุดบันทึก
ไดโอด

KD522A

64 ไปยังสมุดบันทึก
ตัวเก็บประจุ22 พิโคเอฟ2 ไปยังสมุดบันทึก
ตัวเก็บประจุ0.1 µF2 ไปยังสมุดบันทึก
100 µF2 ไปยังสมุดบันทึก
ตัวต้านทาน

220 โอห์ม

2 ไปยังสมุดบันทึก
ตัวต้านทาน

6.8 โอห์ม

8 ไปยังสมุดบันทึก
เครื่องสะท้อนควอตซ์4 เมกะเฮิรตซ์1 ไปยังสมุดบันทึก
ปุ่มคีย์บอร์ด 64 ไปยังสมุดบันทึก
โครงการที่ 2
ไมโครคอนโทรลเลอร์PIC16F841 ไปยังสมุดบันทึก
ชิปKR1533ID72 ไปยังสมุดบันทึก
ชิปKR1533KP72 ไปยังสมุดบันทึก
ชิปKR1533IR232 ไปยังสมุดบันทึก
ตัวควบคุมเชิงเส้น

LM7805

1 ไปยังสมุดบันทึก
ทรานซิสเตอร์แบบไบโพลาร์

KT315A

5 ไปยังสมุดบันทึก
ไดโอด

KD522A

80 ไปยังสมุดบันทึก
ตัวเก็บประจุ22 พิโคเอฟ2 ไปยังสมุดบันทึก
ตัวเก็บประจุ0.1 µF2 ไปยังสมุดบันทึก
ตัวเก็บประจุด้วยไฟฟ้า100 µF2 ไปยังสมุดบันทึก
ตัวต้านทาน

180 โอห์ม

7 ไปยังสมุดบันทึก
ตัวต้านทาน

220 โอห์ม

2 ไปยังสมุดบันทึก
ตัวต้านทาน

6.8 โอห์ม

16 ไปยังสมุดบันทึก
ตัวต้านทาน

8 kโอห์ม

1 ไปยังสมุดบันทึก
เครื่องสะท้อนควอตซ์4 เมกะเฮิรตซ์1 ไปยังสมุดบันทึก
ตัวบ่งชี้ดิจิตอล LED 3 หลักพร้อมขั้วบวกทั่วไป 1 ไปยังสมุดบันทึก
ไดโอดเปล่งแสงสีแดง12 ไปยังสมุดบันทึก
สวิตช์กุญแจ 64 ไปยังสมุดบันทึก
ปุ่ม 16 ไปยังสมุดบันทึก
โครงการที่ 3
ไมโครคอนโทรลเลอร์PIC16F841 ไปยังสมุดบันทึก
ชิปKR1533ID71 ไปยังสมุดบันทึก
ชิปKR1533KP72 ไปยังสมุดบันทึก
เครื่องเปรียบเทียบ

เป็นเวลานานแล้วสำหรับโปรดิวเซอร์และวิศวกรเสียง ตัวควบคุม 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