Jeffrey Cross
Jeffrey Cross

เล่นไฟล์ MIDI บน Arduino ของ LittleBits ที่ Heart และ Synth Bits

นับตั้งแต่ฉันเล่นกับเหตุการณ์ RadioShack / littleBits ใน NYC เมื่อไม่กี่สัปดาห์ที่ผ่านมาฉันก็หมกมุ่นอยู่กับเครื่องเล่นเพลงเล็ก ๆ ของ Manny Alvear จาก RadioShack techspecs และสนุกกับการเล่น Carol of the Bells ตลอดช่วงวันหยุด ฉันเลือกโมดูล synth LittleBits บางตัวเพื่อเพิ่ม trippy มากขึ้น: ตัวกรองซองจดหมายและความล่าช้า

แต่ถึงกระนั้นก็มีเพลงหนึ่งเพลงไม่เพียงพอสำหรับฉัน แต่ฉันไม่ได้อ่านเพลงดังนั้นฉันจึงไม่น่าจะถอดความแผ่นเพลงเป็นเฮิร์ตซเร็ว ๆ นี้ มันไม่ได้จนกว่าฉันจะดูที่หน้า Wikipedia สำหรับ Coventry Carol และสังเกตว่ามีไฟล์ MIDI ที่ฉันสามารถดาวน์โหลดได้ มีซอฟต์แวร์ที่ยอดเยี่ยมสำหรับการแยกวิเคราะห์รูปแบบไฟล์ MIDI ฉันจับ midicsv ซึ่งแปลงไฟล์ MIDI เป็นค่าที่คั่นด้วยเครื่องหมายจุลภาคดังนี้:

2, 192, Note_on_c, 0, 62, 110 2, 192, Note_on_c, 0, 67, 110 2, 384, Note_on_c, 0, 62, 0 2, 384, Note_on_c, 0, 67, 0 2, 384, Note_on_c, 0, 62, 110 2, 384, Note_on_c, 0, 66, 110 2, 576, Note_on_c, 0, 62, 0 2, 576, Note_on_c, 0, 66, 0

ฉันรู้ว่าฉันมีทางออกที่ฉันกำลังมองหา…อืมเกือบ

นั่นมันเยอะมากเลย!

ฉันดูไฟล์ใน Aria Maestosa ที่ยอดเยี่ยม (และฟรี) และตระหนักว่านี่ไม่ใช่เรื่องของการแปลทำนองเพลง เห็นได้ชัดว่าเพลงทำจากคอร์ด! ดังนั้นฉันจึงเดินในถิ่นทุรกันดารของจิตใจของฉันเล็กน้อยจนกว่าฉันจะรู้ว่าฉันสามารถเปลี่ยนคอร์ดเป็น arpeggios Dawsons 'บทความ Arpeggiator คืออะไรเปิดใจของฉัน ฉันหา Arpeggiator ที่ฉันไม่เข้าใจเสียบเข้ากับเวิร์กโฟลว์บรรทัดคำสั่งน้อยลง

แต่ก่อนที่ฉันจะไปถึงจุดนั้นฉันจะลองใช้กำลังดุร้าย: ฉันใช้ Aria Maestosa เพื่อเขียงเนื้อ (เพลงลบการสุ่มบันทึก) เป็นชิ้นเดียวและรวบรวมโปรแกรมง่ายๆที่สามารถแปลง CSV เป็นบันทึกและระยะเวลา ต้องการโดยโปรแกรมของ Manny แต่มันฟังผิด (ไม่แปลกใจใช่มั้ย); ฉันต้องการเล่นโน้ตอื่น แต่วิธีที่ฉันออกแบบโปรแกรมของฉันไม่เหมาะที่จะแบ่งคอร์ดออกเป็นโน้ตแยกกันในแต่ละช่วงเวลา ดังนั้นฉันจึงเขียนมันใหม่เพื่อเก็บอาร์เรย์ของโน้ตที่จะฟังในขั้นตอนใดก็ตาม:

192: 62, 67 384: 62, 66

เมื่อดูข้อมูลด้วยวิธีนี้มันเป็นเรื่องง่ายสำหรับฉันที่จะแปลงการแสดง MIDI เป็นรูปแบบที่โปรแกรมของ Manny ต้องการ ฉันต้องใช้การแปลงเพื่อเปลี่ยนหมายเลขบันทึก MIDI เป็น Hz และจากนั้นมันง่ายที่จะได้รับผลลัพธ์เช่นนี้:

int melody [] = {392, 294, 392, ... } int noteDurations [] = {96, 96, ... }

ฉันวางสคริปต์การแปลงของฉันไว้ที่ Github และมันมีร่างของ Manny ที่ดัดแปลงแล้ว เพียงวางผลลัพธ์ของสคริปต์ลงในภาพร่างนั้น (แทนที่คำจำกัดความของ ทำนอง [], noteDurations []และ นับ) นี่คือวิธีที่ฉันเรียกใช้โปรแกรมบน Mac ของฉัน, ไพพ์ไลน์เอาต์พุตของ midicsv ไปยังสคริปต์ midi2littleBits_arp.pl:

midicsv coventry_carol.mid | ./midi2littleBits_arp.pl 2

หมายเลข 2 ระบุหมายเลขแทร็กจากภายในไฟล์ CSV ที่ฉันต้องการแตกดังนั้นโปรดดูผลลัพธ์ของ midicsv ก่อนที่คุณจะเลือกแทร็ก จากประสบการณ์ของฉันมันเป็นหมายเลขสองหรือสูงกว่า

อัปโหลดภาพร่างที่ดัดแปลงไปยัง Arduino LittleBits ที่ Heart บิตแล้วเล่นเพลง! คุณควรผ่านบทช่วยสอนของ Manny ก่อนที่คุณจะลองเวอร์ชันดัดแปลงนี้เพื่อให้แน่ใจว่ามันใช้งานได้

arpeggios นั้นหยาบคายจริงๆและพวกมันยุ่งกับจังหวะ แต่มันก็ยังสนุกอยู่ ฉันพนันว่ามีคนที่มีความรอบรู้ด้านดนตรีมากขึ้นด้วยแนวคิดในการปรับปรุงสิ่งนี้

หุ้น

แสดงความคิดเห็น