สารบัญ:

Micro Midi Synthesizer: 5 ขั้นตอน (พร้อมรูปภาพ)
Micro Midi Synthesizer: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Micro Midi Synthesizer: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Micro Midi Synthesizer: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: MicroKorg MIDI Controller Setup 2024, กรกฎาคม
Anonim
ไมโคร Midi ซินธิไซเซอร์
ไมโคร Midi ซินธิไซเซอร์
ไมโคร Midi ซินธิไซเซอร์
ไมโคร Midi ซินธิไซเซอร์
ไมโคร Midi ซินธิไซเซอร์
ไมโคร Midi ซินธิไซเซอร์

คำแนะนำนี้สาธิตการใช้ชิป VLSI VS1053b Audio และ Midi DSP ในโหมด Midi แบบเรียลไทม์ ในโหมดนี้มันทำหน้าที่เป็น 64 เสียงโพลีโฟนิก GM (General Midi) Midi ซินธิไซเซอร์ Arduino Uno แบบสแตนด์อโลนไมโครควบคุมจอแสดงผล OLED สามปุ่ม (เลือกฟังก์ชันและขึ้นหรือลง และส่งกระแสข้อมูล Midi ผ่านไปยัง DSP เสียง กระดานเพลงที่เลือกคือ Adafruit VS1053 codec breakout board แต่เป็น Sparkfun music breakout board ได้รับการทดสอบเรียบร้อยแล้ว ห้องสมุด Adafruit VS1053b ถูกใช้แทนไลบรารี SFEMP3 ที่ใหญ่กว่ามาก (แนะนำโดย Sparkfun แม้ว่าจะมีชุดไลบรารีของตัวเองด้วย) เพราะฉันพบว่าโค้ด Adafruit เข้าใจง่ายขึ้น

โค้ดส่วนใหญ่ที่ใช้ควบคุม audio/midi DSP ได้รับการพัฒนาโดยใช้ Arduino Uno ที่เชื่อมต่อกับบอร์ด audio/midi breakout ผ่านเขียงหั่นขนม หลังจากที่พบว่าฟังก์ชั่นทำงานได้อย่างน่าพอใจ Uno ถูกใช้เป็นโปรแกรมเมอร์สำหรับ ATmega 328 แบบสแตนด์อโลน จากนั้นจึงวางบน Veroboard ขนาด 30x20 ขนาดเล็กพร้อมกับ IC opto-isolator 6N139 ที่จำเป็นสำหรับซ็อกเก็ตอินพุต Midi (DIN 5 พิน). ที่เชื่อมต่อกันยังมีแผงป้องกัน OLED ขนาดเล็ก (64x48) ปุ่มสามปุ่ม ไฟ LED แสดงกิจกรรม Midi และขั้วต่อบาร์เรล +5 โวลต์สำหรับการจ่ายไฟและเพิ่มขั้วต่อเอาต์พุตสเตอริโอเสียง ความต้องการพลังงานนั้นค่อนข้างเรียบง่าย - ประมาณ 20 mA ที่ 5 โวลต์

ขั้นตอนที่ 1: รายการชิ้นส่วน

ATmega328 Micro 28 pin DIP + 28 pin DIP socket6N138 หรือ 6N139 optoisolator + 4 pin DIP socketWemos 64x48 I2C OLED Display หรือใกล้เคียงAdafruit VS1053b Codec breakout board3 ปุ่มกดขนาดเล็ก 5 พิน DIN Midi socket PCB mount ที่ต้องการ LED ขนาดเล็กสีใดๆ บาร์เรลประเภท power socket สำหรับ 5 โวลต์ supplyStereo audio ซ็อกเก็ตเพื่อเชื่อมต่อกับเครื่องขยายเสียงหรือหูฟังตัวต้านทาน: 7 x 10k, 2 x 470 โอห์ม, 2 x 220 โอห์มตัวเก็บประจุ: พลาสติก 0.1uF 50v, อิเล็กโทรไลต์ 10uf 25v, เซรามิก 2 x 27 pF Veroboard ชิ้นเล็ก ๆ (30 แถบ 20 คอลัมน์และ 4 แถบ โดย 16 คอลัมน์), ตู้พลาสติก ABS ประมาณ 85x55x25 มม., สายไฟ และน็อตสกรูสองสามตัวและแหวนรอง

ขั้นตอนที่ 2: การก่อสร้าง

การก่อสร้าง
การก่อสร้าง
การก่อสร้าง
การก่อสร้าง
การก่อสร้าง
การก่อสร้าง

ฝาปิดของตัวเครื่องประกอบด้วยจอแสดงผล OLED ปุ่มสามปุ่มที่ติดตั้งบน Veroboard ชิ้นเล็กๆ อีกชิ้นหนึ่ง และขั้วต่อสายไฟแบบบาร์เรล แผงวงจรหลักของ Vero มีสองรูสำหรับยึดบอร์ด Music breakout เหนือ ATmega328 สำหรับรายละเอียดการเชื่อมต่อ โปรดดูแผนภาพบอร์ดแถบ Fritzing

ATmega328 ที่ตั้งโปรแกรมไว้ (โปรดดูรหัสในส่วนถัดไป) จะถูกเสียบเข้าไปในซ็อกเก็ตแล้วตามด้วย 6N139 และทุกอย่างเชื่อมต่อกัน

LED ใช้เป็นตัวบ่งชี้กิจกรรม Midi และติดตั้งที่ด้านหน้าของตัวเครื่อง มันเชื่อมต่อกับเอาต์พุต D2 ของ ATmega328 ผ่านตัวต้านทาน 470 โอห์ม

จอแสดงผล OLED ใช้เอาต์พุต 3.3 โวลต์จากบอร์ด Adafruit เพื่อจ่ายไฟ โดยต้องการพลังงานน้อยกว่า 20 mA

ลองสลับการเชื่อมต่อ Midi Din ทั้งสองตัว หากคุณไม่ได้ยินเสียงใด ๆ เมื่อคุณใช้ synth เป็นครั้งแรก

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

รายละเอียดของภาพสเก็ตช์ที่ควรอัปโหลดไปยัง ATmega328 มีให้ใน MidA.ino มีเจ็ดฟังก์ชั่นให้เลือก:

ตัวเลือก P: Change Program - เปลี่ยน GM Midi Instrument จาก 1 เป็น 128 (ฉันใช้ 0 ถึง 127) เช่น Piano หรือ Synth sound ตัวเลือก B: เปลี่ยนช่อง Instrument ระหว่าง Melodic (Bank 0) กับ Percussion (Bank 1) ตัวเลือก V: ปรับระดับเสียงตั้งแต่ 1 ถึง 10 ตัวเลือก C: เปลี่ยนช่องสัญญาณ Midi ที่ Synth จะตอบสนอง ตัวเลือกคือ Channel 0, channel 1, channel 9 (percussion), channel 0 and 9, and channel 1 and 9. Option R: Switch the Reverb effect on or off. Option S: บันทึกพารามิเตอร์ปัจจุบันไปยังหน่วยความจำ Eeprom (ขึ้น) หรืออ่าน (ลง) กลับจากหน่วยความจำ Eeprom เนื่องจากการตั้งค่าจะไม่ถูกบันทึกเมื่อปิดเครื่อง ตัวเลือก X: ส่งข้อความปิดบันทึกทั้งหมด (รีเซ็ต Midi)

ยังไม่ได้ใช้ตัวเลือกที่แปด - สิ่งนี้จะข้าม ATmega เป็นตัวกรอง Midi และเชื่อมต่อเอาต์พุตของ optoisolator โดยตรงกับพิน Rx ของบอร์ด DSP

โปรดทราบว่า VS1053b บูทในโหมด Midi แบบเรียลไทม์โดยการโหลดโปรแกรมแก้ไขบีบอัดขนาด 1039 ไบต์ระหว่างการบูท ซึ่งจะเป็นการเพิ่มขนาดของบัฟเฟอร์ Midi และตัวกรองไบต์ข้อมูล Midi ที่เป็นเอกสิทธิ์เฉพาะของระบบ รายละเอียดของแพทช์นี้สามารถพบได้บนเว็บไซต์ VLSI

ไลบรารี Adafruit Graphics รุ่นที่ได้รับการแก้ไขเล็กน้อยถูกนำมาใช้เพื่อรองรับความละเอียด 64x48 พิกเซลของจอแสดงผล OLED โปรดดูลิงก์ที่ให้ไว้ตอนท้ายสำหรับ Mr Mcauser รายชื่อไลบรารีที่จำเป็นจะได้รับในโค้ดแบบร่าง

ที่สำคัญเมื่อร่างภาพร่างเป็นครั้งแรกบน ATmega328 ไม่ว่าจะเป็น Uno หรือสแตนด์อโลน โค้ดจะโหลดค่าพารามิเตอร์ที่ตั้งไว้ล่วงหน้าจาก ATmega328 Eeprom ที่อาจไม่ถูกต้อง ในกรณีนั้น คุณสามารถเขียนเลขศูนย์ทั้งหมดไปยัง Eeprom โดยใช้ตัวเลือก X ด้วยปุ่มลง หรือใส่เครื่องหมายในช่องในฟังก์ชันการตั้งค่า void ที่โหลดค่าจาก Eeprom เมื่อเริ่มใช้งานครั้งแรก ปรับเครื่องมือของคุณ ฯลฯ ไปที่ ถูกใจแล้วบันทึกค่าที่ตั้งไว้ล่วงหน้าของคุณด้วยปุ่มตัวเลือก S ขึ้น

เครดิตจะมอบให้กับบุคคลและหน่วยงานทั้งหมดที่กล่าวถึงรหัสและห้องสมุดของพวกเขา..

ขั้นตอนที่ 4: ลิงค์

VLSI:

อดาฟรุ๊ต:

Github VS1053b:

กราฟิก Github:

เก่า:

Sparkfun:

ขั้นตอนที่ 5: การใช้ Sparkfun Board กับ Adafruit Libraries

การใช้บอร์ด Sparkfun กับ Adafruit Libraries
การใช้บอร์ด Sparkfun กับ Adafruit Libraries

ตารางในภาพอธิบายวิธีเชื่อมต่อ Adafruit หรือ Sparkfun Music Boards เพื่อใช้ห้องสมุดอื่น

แนะนำ: