หน้าแรก ดูโปรเจกต์ทั้งหมด
Intermediate

โปรเจกต์ Organ Pedalboard MIDI Controller

คอนโทรลเลอร์สำหรับ Organ Pedalboard เพื่ออ่านค่าจาก Hall sensors และ Foot pistons switches สามารถตรวจพบเป็น MIDI device โดย Hauptwerk โปรเจกต์นี้ไม่รวม Swell pedals แต่สามารถต่อยอดได้ง่าย

โปรเจกต์ Organ Pedalboard MIDI Controller
1,538 การดู

รายการอุปกรณ์และเครื่องมือ

1x Multimeter
-
2x Foot Pistons
-
1x Osciloscope
-
3x CD74HC4067 16-Kanal Analog Digital Multiplexer
-
1x seeeduino xiao
-

แอปพลิเคชันและแพลตฟอร์ม

รายละเอียดและวิธีทำ

Intro

แนวคิดคือการใช้ Hall sensors (A3144 unipolar) เพื่อตรวจจับว่ามีการกด pedal หรือไม่ โดย Hall sensor ถูกจัดวงจรแบบ open collector ดังนั้น Output ของ Hall sensor จึงเชื่อมต่อกับ internal pull up resistor ของ Arduino และอ่านค่าได้ HIGH หากไม่มีแม่เหล็กอยู่ใกล้ๆ หากมีการกด pedal ตัว Output ของ Hall sensor จะเชื่อมต่อลง ground และ Pin ที่เชื่อมต่อกับ Output จะอ่านค่าได้ LOW เนื่องจากเรามี 30 (หรือ 32) pedals + foot pistons ผมจึงใช้ Multiplexer (CD74HC4067) จำนวน 3 ตัว ใน main loop ของ Program แต่ละ Channel จะถูกเลือกด้วยการผสมผสานค่า HIGH และ LOW ที่สอดคล้องกันบน Pin s0 ถึง s3 สถานะของ signal pin ทั้ง 3 จะถูกอ่านและส่งข้อความ Midi ตามนั้น สิ่งสำคัญคือต้องปิดการทำงานของ Multiplexers ในขณะที่ตั้งค่าสถานะของ Pin s0 ถึง s3 เนื่องจากขั้นตอนการเขียนข้อมูล (write operations) ไม่ได้เกิดขึ้นพร้อมกันในทันที และอาจเกิดสัญญาณรบกวนกับ Channel อื่นๆ ได้ นอกจากนี้ แรงดันไฟฟ้าที่ Input pin ของแต่ละ Hall sensor ยังต้องใช้เวลาสักพักในการเพิ่มระดับขึ้น (รูปที่ 4) ดังนั้นจึงมีการเพิ่ม delay ขนาด 20 microseconds ก่อนที่จะอ่านสถานะของ Out pin ของ Sensor

เนื่องจาก 16 Channel สุดท้าย (จากทั้งหมด 48 Channel โดยใช้ 3 Multiplexer) ถูกสำรองไว้สำหรับ foot pistons ผมจึงได้เพิ่ม software debounce ด้วยเวลา 50 ms ในการประมวลผลข้อมูลของ Multiplexer ตัวที่ 3 เนื่องจากผมพบปัญหาเกี่ยวกับ sequencer + และ - ที่ข้ามลำดับการลงทะเบียน (registration) มากกว่าหนึ่งตำแหน่งแบบสุ่ม

เพื่อพิสูจน์ว่าการตั้งค่านี้ใช้งานได้จริง ผมได้บันทึกเสียงเพลง BWV578 โดยใช้ Midi controller ตัวนี้: https://audio.com/stylx/audio/bwv578

Schemas

fig.1: Layout ของ Mainboard ที่ประกอบด้วย seeeduino Xiao SAMD2 โดยใช้ Output 3.3V สำหรับจ่ายไฟให้ Multiplexers (CD74HC4067) ทั้ง 3 ตัว และ Output 5V สำหรับจ่ายไฟให้ Hall sensors ทั้ง 30 ตัว

fig.2: บอร์ดตัวที่สองที่ใช้บรรจุ Multiplexers และ screwterminals สำหรับเชื่อมต่อ Sensors และ foot pistons ทั้งหมด การเชื่อมต่อทำโดยใช้สาย Ribbon cables 16 เส้น และคอนเน็กเตอร์ JST-HXT แบบ 2 pin สำหรับแหล่งจ่ายไฟของ Hall sensors โดยใช้ decoupling capacitors ขนาด 0.1 micro Farad

fig.3: แรงดันไฟฟ้าของ Channel แรก (สีฟ้า) ทุก Channel จะเชื่อมต่อกับ internal pull-up resistor ของ seeeduino ดังนั้นหาก Channel ถูกเลือกโดย Multiplexer ค่าจะเปลี่ยนจาก LOW เป็น HIGH หากไม่ได้กด pedal แต่ถ้ามีการกด pedal ลงไป แรงดันไฟฟ้าจะยังคงเป็น LOW และจะมีการกระตุ้นสัญญาณ MIDI On

fig.4: แรงดันไฟฟ้าของ Hall sensor ต้องใช้เวลาประมาณ 20 microseconds ในการเพิ่มระดับขึ้น จากนั้นเราจึงทำการ READ ที่ pin

fig.5: การติดตั้งที่สมบูรณ์

fig.6: รายละเอียดของ Hall sensors โดยแม่เหล็กจะถูกติดตั้งบนขาเหล็กขนาดเล็กที่ติดอยู่กับ pedals

fig.7: การติดตั้งที่ (เกือบ) สมบูรณ์ ในส่วนของ Keyboards, swell pedals และ thumb pistons จะถูกควบคุมโดย Interface จาก Gino Midi

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: organ-pedalboard-midi-controller-bec26b
299 บาท
PromptPay QR Code

ประเมิน Project

อยากได้งานคล้ายโปรเจคนี้? กดไปหน้าประเมินราคา

เอาฟอร์มยาวออกจากท้ายหน้า Project แล้ว เหลือเป็นปุ่มให้กดไปกรอกหน้าเดียว ตัวใหญ่ เว้นบรรทัดเยอะ อ่านง่ายกว่า

รีวิวจากคนใช้งานจริง

รีวิวจากลูกค้าและคนที่เคยใช้งาน

ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย

กำลังโหลดรีวิว...