* News


คลังกระทู้เก่าคลังที่สอง อ่านได้อย่างเดียว

ไม่มีการโพสท์กระทู้ใหม่ใดๆอีกแล้ว

>>> ย้ายห้องซื้อขายไปเปิดกลุ่มที่เฟสบุค <<<

..... คลิคไปที่กลุ่ม .....

* ค้นหากระทู้ในบอร์ดด้วย Google

Author Topic: DIY MIDI Controller ด้วย Arduino Leonardo  (Read 4443 times)

Offline Wutipong Wongsakuldej

  • พลทหาร
  • Posts: 2
  • Karma: +1/-0
DIY MIDI Controller ด้วย Arduino Leonardo
« on: September 06, 2013, 04:10:51 AM »
สวัสดีครับ แนะนำตัวนิด ผมชื่อหนุ่มครับ คุ้น ๆ ว่าเคยเป็นสมาชิกเมื่อชาติปางก่อน แอบดอดเข้ามาถามสองสามคำถามแล้วก็จากไป 555

พอดีช่วงนี้กำลังมีโครงการ  DIY ส่วนตัว ทำคอนโทรลเลอร์โดยใช้ Arduino Leonardo ก็เลยอยากมาเม้าให้ฟังเผื่อมีใครสนใจเหมือนกัน (เอ๊ะ หรือว่าเลิกเล่นกันไปแล้ว !) คือเรื่องมันเริ่มมาจากผมใช้ Line6 Tonport UX2 ร่วมกับ Pod Farm 2 (ที่ซื้อมาทีหลัง กะซิกๆ) แล้วแบบว่าอยากมีฟุตสวิทช์เอาไว้สลับ  A/B  แต่พอลองๆ มอง ๆ ดู MIDI Foot Controller แล้วจะเป็นลม ราคายังกับซื้อเอฟเฟคมัลติได้อีกตัว พอดีไปเห็นว่า Arduino มันก็ทำได้นี่ ก็เลยลองซื้อมาเล่นดู เพราะว่าอุปกรณ์อื่น ๆ อย่างฟุตสวิทช์ก็มีอยู่แล้ว

ทีนี้ที่ไปซื้อรุ่น Leonardo มาเพราะว่า ... เพราะว่ามันหล่อครับ เพราะพอดีไปเห็นโครงการระดมทุนใน Indiegogo ขายกันบอร์ดละ $12  เหรียญรวมค่าส่ง ผมว่ามันก็ถูกดี เลยคุยกับเพื่อน ๆ สั่งมาเลย 10 ชุด (เพื่อนเอา 4 ผมเก็บเอง 2 ที่เหลือบริจาคโรงเรียนที่เพื่อนเป็นอาจารย์สอนอยู่ครับ) ที่ราคา $99 แต่ว่าระหว่างรอก็อยากลองเอามาเล่นก่อน ก็เลยสั่งรุ่นเดียวกันมาจาก ThaiEasyElec มาก่อนในราคาห้าร้อยกว่าบาท


บรรยากาศการทดสอบ

ส่วนตัวผมเป็นโปรแกรมเมอร์อาชีพ เขียน C++ หากินอยู่แล้ว สบายอยู่แล้วครับ (แค่ระวังไม่ให้เขียนเพลินจนเมมหมดก็พอ) เสียบสาย ลงโปรแกรมปุ๊บ ก็ลงมือเขียนเลย ที่จริงการทำ Midi Controller ด้วย Arduino มันง่ายมากครับ Library ก็มีคนเขียนเอาไว้แล้ว ตัวบอร์ดเองก็มี 10bit Analog Input อยู่ถึง 6 ช่อง Digital I/O อีก 16 ช่อง แค่ไปอ่านค่ามาจากสักช่องหนึ่งแล้วก็ไปเรียกฟังก์ชั่นใน MIDI Library ก็จบ ง่ายมาก

ปัญหาคือ Arduino  นั้นมันทำตัวเองเป็น Serial Port ไม่ใช่ MIDI Port ดังนั้นโปรแกรมทำเพลงก็จะไม่เห็น ... ต้องใช้โปรแกรมเพิ่มอีกสองตัว (MIDI OX สำหรับเพิ่มพอร์ท MIDI กับ โปรแกรมแปลง Serial <->MIDI) คือกว่าจะใช้ได้ก็เหนื่อยล่ะครับ ...

ทางแก้มีอยู่สองทาง ทางแรกคือใช้ Bootloader ตัวใหม่ (อย่างเช่นโครงการ Hiduino ที่ใช้ LUFA เป็นโครงสร้าง) ต้องมีตัวแฟลชเฟิร์มแวร์ เสียตังค์อีก ... ผมไม่ได้มาทางนี้ครับ เพราะว่าไม่มีเวลาว่างไปบ้านหม้อซื้อของ

อีกวิธีคือการแก้ตัวโปรแกรมของ Arduino เอง คือสำหรับรุ่น Arduino Leonardo นั้น ตัวมันเองเป็น  Composite Device (จำลองเหมือนว่ามีอุปกรณ์มากกว่า 1 ชิ้นต่ออยู่) โดยตัวหลักจะเป็น Serial Port และตัวรองเป็น  HID (พวกคีย์บอร์ด-เมาส์) ก็มีคนหัวใสไปแก้โค๊ดเปลี่ยนจาก HID มาเป็น MIDI Port  ซะ ผมก็ไปโหลดโค๊ดมาจาก GitHub แล้วก็นำมาใช้ สะดวกกว่ามาก ข้อเสียคือต้องเขียนโค๊ดรับ-ส่งข้อความ MIDI ใหม่ เพราะ MIDI Library ไม่รองรับ MIDI Port ที่ว่านี่

ผมก็เขียนโปรแกรมให้อ่านค่าจาก Analog 1 แล้วส่ง CC#64 (Sustain Pedal) ทุกครั้งที่มีการเปลี่ยนแปลงค่า (หาร 8 เพื่อให้อยู่ในช่วง 0-127) คือผมเริ่มจาก Sustain ก่อนเพราะว่า  controller ที่ผมใช้มันไม่มีช่องนี้ครับ (Korg MicroKontrol) โค๊ดที่เขียนสั้นมากจนน่าตกใจ แล้วก็ง่ายมาก ๆ ด้วย



จากนั้นก็เปิด Studio One  เพื่อทดลอง ก็ใช้งานได้ สุขขีมากครับ 555

สิ่งที่จะทำต่อไปคือการใส่  Analog Multiplexer/Demultiplexer เบอร์ 4051 ทำให้สามารถต่อ Analog Input 8 ช่อง เข้าไปใน  Analog Input ช่องเดียวครับ

อ้อ ผมได้ resistive touch panel  มาเล่นด้วยครับ เดี๋ญวเอามาพ่วงในนี้แหละ

เขียนคร่าว ๆ แค่นี้ก่อนละกันครับ ถ้ามีคนสนใจผมจะมาขยายความเพิ่มนะครับ อ้อ ถ้าท่านใดมีอะไรจะแจมก็สามารถแสดงความเห็นกันได้นะครับ



Offline KBKB

  • สิบตรี
  • Posts: 238
  • Karma: +7/-0
Re: DIY MIDI Controller ด้วย Arduino Leonardo
« Reply #1 on: September 07, 2013, 11:45:10 AM »
แจ๋วมากครับ

Offline thassuya

  • สิบตรี
  • Posts: 165
  • Karma: +6/-0
Re: DIY MIDI Controller ด้วย Arduino Leonardo
« Reply #2 on: September 10, 2013, 06:29:09 PM »
ชอบมากเลย D.I.Y แบบนี้  :clap: รออ่านเรื่อยๆครับ

Offline คนแก่งคอย

  • สิบตรี
  • Posts: 316
  • Karma: +19/-0
Re: DIY MIDI Controller ด้วย Arduino Leonardo
« Reply #3 on: September 26, 2013, 08:07:26 PM »
สนใจมาก....เขียนต่อนะครับ  รออ่าน


ปล. เข้าไปหาข้อมูลเจ้า Arduino เรื่อง midi แล้วน่าสนใจมาก ...
« Last Edit: September 26, 2013, 08:56:05 PM by wasan »

Offline mcky

  • สิบโท
  • Posts: 554
  • Karma: +14/-0
Re: DIY MIDI Controller ด้วย Arduino Leonardo
« Reply #4 on: November 04, 2013, 02:33:22 PM »
มหัศจรรย์มากครับ

Offline Xenon

  • ร้อยตรี
  • Posts: 2398
  • Karma: +82/-0
Re: DIY MIDI Controller ด้วย Arduino Leonardo
« Reply #5 on: March 14, 2014, 10:17:44 PM »
เพิ่งเข้ามาเห็น เยี่ยมมากครับ ผมก็เคยทำเล่นเหมือนกัน แต่คนละเคส
คือให้ Arduino รับ MDI แล้วแปลงเป็นสวิทช์รีเลย์
ด้วยความที่ผมไม่รู้เรื่องเขียนโปรแกรม แต่ก็มีฝรั่งเขาเคยทำกันแล้ว
ผมก็ลอกโค้ดเค้ามาเลย สบาย 555
ทดลองแล้วก็สนุกดี แล้วก็กองไว้งั้น หมดไฟ
เห็นมีคนเล่นแนวนี้สงสัยว่างๆ ได้เอามาปัดฝุ่นพัฒนาต่อ

Offline 1000Sound

  • สิบโท
  • Posts: 663
  • Karma: +9/-0
Re: DIY MIDI Controller ด้วย Arduino Leonardo
« Reply #6 on: March 24, 2015, 10:30:17 PM »
 :clap: :clap: