สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: แนวคิด
- ขั้นตอนที่ 2: เตรียมมาตรความเร่ง
- ขั้นตอนที่ 3: สร้างถุงมือ
- ขั้นตอนที่ 4: เขียนใน Ableton
- ขั้นตอนที่ 5: เริ่มใช้ Firmata
- ขั้นตอนที่ 6: ทดสอบ Firmata
- ขั้นตอนที่ 7: โน้มน้าวดนตรีด้วยมือของคุณ
- ขั้นตอนที่ 8: คลาสแทร็ก (โบนัส!)
- ขั้นตอนที่ 9: ติดตามความยาว จังหวะ และอื่นๆ (โบนัส!)
วีดีโอ: ถุงมือเต้นรำ: 9 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
ในบทช่วยสอนนี้ ฉันจะแนะนำคุณเกี่ยวกับการออกแบบถุงมือที่ให้คุณโต้ตอบกับดนตรีผ่านการเต้น คุณจะต้องสร้างถุงมือที่เปิดใช้งานมาตรความเร่ง ออกแบบองค์ประกอบใน Ableton แล้วเชื่อมต่อทั้งสองอย่างเข้าด้วยกันด้วยวิธีที่ซับซ้อนหรือเรียบง่ายตามที่คุณต้องการ!
เสบียง
- Ableton (หรือทดลองใช้ฟรี)
- Arduino
- สายจัมเปอร์
- หัวแร้ง
- กระดาษแข็ง
- ปืนกาวร้อน
- จินตนาการล้ำเลิศ
ขั้นตอนที่ 1: แนวคิด
โครงการนี้จัดทำขึ้นเพื่อความสนุกสนาน หากวิธีการทำงานของโครงการตัวอย่างในบทช่วยสอนนี้ไม่สนุกสำหรับคุณ ให้ออกแบบใหม่!
ฉันแนะนำให้ใส่เพลงโปรดของคุณ ขยับมือไปหาพวกเขา และดูว่าเกิดอะไรขึ้น คุณขยับมือขึ้นลงหรือไม่? เคียงข้างกัน? ช้าหรือเร็ว? แง่มุมใดของดนตรีที่ทำให้คุณอยากขยับมือ? หากคุณมีรายการของสิ่งเหล่านี้เขียนไว้ คุณอาจจะสามารถหาวิธีที่จะรวมการเคลื่อนไหวที่คุณชอบเข้ากับอัลกอริธึมในท้ายที่สุดได้
นี่คือการเคลื่อนไหวที่ฉันใช้:
- การเคลื่อนไหวขึ้นและลงอย่างรวดเร็วจะกระตุ้นการเริ่มเพลง กลอง หรือเบส (สิ่งเหล่านี้เกิดขึ้นที่จุดต่าง ๆ ในเพลง ไม่จำเป็นต้องพร้อมกัน!)
- การเคลื่อนไหวจากด้านหนึ่งไปอีกด้านหนึ่งที่ช้าและเอียงจะกระตุ้นเสียงที่สะท้อนและแหลมสูง
- ที่ช่วงหนึ่งของเพลง การยกมือขึ้นทำให้เพลงเงียบลง - ดังนั้นฉันจึง "จับ" มันด้วยกำปั้นที่ปิด
ใช้สิ่งเหล่านี้หรือสร้างของคุณเอง!
(โปรดทราบ: บทช่วยสอนนี้ไม่ครอบคลุมถึงวิธีสร้างเพลงหรือท่วงทำนองใน Ableton! หากคุณปฏิบัติตามคำแนะนำเหล่านี้ คุณจะสามารถเพิ่ม/ลดระดับเสียงของแทร็กหรือการใช้เอฟเฟกต์เสียงเท่านั้น)
ขั้นตอนที่ 2: เตรียมมาตรความเร่ง
ขั้นแรก ให้หาว่าคุณมีมาตรความเร่งประเภทใด ฉันใช้อันนี้ มาตรความเร่งแบบสามแกนจะทำได้ (หรือลองใช้เซ็นเซอร์ประเภทอื่นหากต้องการใช้งาน) ตรวจสอบให้แน่ใจว่าคุณรู้วิธีอ่านข้อมูลมาตรความเร่งจาก Arduino คุณอาจต้องดาวน์โหลดไลบรารีสำหรับมาตรความเร่งของคุณ หากไลบรารีนั้นใช้อะไรที่ซับซ้อนกว่าอินพุตแบบอะนาล็อก
หลังจากทดสอบกับเขียงหั่นขนมแล้ว ให้บัดกรีสายรหัสสีสั้นๆ เข้ากับหมุดของมาตรความเร่งของคุณ ใส่สายไฟสีแดงในพิน สายไฟสีดำที่พินกราวด์ และสายไฟอื่นๆ ที่จำเป็นสำหรับการสื่อสารของมาตรความเร่ง (หากคุณมีมาตรความเร่ง I2C นี่จะเป็นพิน SCL และ SDA หากคุณมีมาตรความเร่งแบบแอนะล็อก น่าจะมีพินเดียวสำหรับเอาต์พุต x, y และ z แต่ละตัว) ตรวจสอบให้แน่ใจว่าบัดกรีของคุณแข็งและ ว่าลูกปัดไม่ทับซ้อนกันระหว่างหมุดที่อยู่ติดกัน
ขั้นตอนที่ 3: สร้างถุงมือ
ตัดกระดาษแข็งบางๆ หรือกระดาษหนาเป็นสี่เหลี่ยมที่ใหญ่กว่ามาตรความเร่งเล็กน้อย กาวเครื่องวัดความเร่งกับกระดาษแข็ง ตรวจสอบให้แน่ใจว่าคุณติดกาวที่ด้านล่าง จากนั้นติดมาตรความเร่งที่มีกระดาษแข็งด้านหลังถุงมือของคุณ เย็บลวดแต่ละเส้นอย่างหลวม ๆ กับข้อมือของถุงมือเพื่อลดความตึงเครียดบนมาตรความเร่ง จากนั้นถุงมือของคุณก็พร้อม เชื่อมต่อกับสายไฟที่ยาวขึ้นเพื่อให้มีพื้นที่เพียงพอในการขยับมือเมื่อเสียบปลั๊ก
ขั้นตอนที่ 4: เขียนใน Ableton
ถึงเวลาแต่งเพลงที่คุณจะต้องใช้ถุงมือควบคุมในที่สุด ฉันแนะนำการวนซ้ำของ Ableton ที่ฟังดูเข้ากันได้ดี แต่สามารถใช้เพื่อสร้างทีละน้อยได้ เช่น ลองใช้เมโลดี้ คอร์ด เบส และเครื่องเพอร์คัชชัน คุณจะสามารถใช้ถุงมือของคุณเพื่อควบคุมเวลาที่แต่ละวงเล่นหรือไม่เล่น
หากคุณสามารถนึกถึงเสียงประเภทใดที่น่าสนใจเพื่อรวมเข้ากับเพลงได้เป็นครั้งคราว เช่น เอฟเฟกต์เสียงแปลก ๆ หรือเครื่องดนตรีแหวกแนว ให้ลองเพิ่มเข้าไปหนึ่งหรือสองเสียงด้วยเช่นกัน! คุณสามารถผูกมันไว้กับการเคลื่อนไหวของมือที่ไม่ธรรมดาเพื่อนำเสนอสิ่งที่น่าสนใจเป็นครั้งคราว
นี่คือลิงค์ไปยังองค์ประกอบที่เข้ากันได้กับ Arduino ในกรณีที่คุณไม่ต้องการเขียนองค์ประกอบของคุณเอง:
(ขออภัย การสอนคุณ Ableton นั้นไม่อยู่ในขอบเขตของบทช่วยสอน อย่างไรก็ตาม มีวิดีโอแนะนำวิธีการดีๆ มากมาย และ Ableton เปิดให้ทดลองใช้งานฟรี 90 วัน! ฉันขอแนะนำวิดีโอนี้)
ขั้นตอนที่ 5: เริ่มใช้ Firmata
เพื่อให้ Arduino ของคุณสามารถสื่อสารกับ Ableton คุณจะต้องใช้ไลบรารีชื่อ Firmata คุณจะต้องดาวน์โหลด Connection Kit สำหรับ Ableton ด้วย
ใน Ableton คลิก Packs>Connection Kit>Devices ในเมนูด้านบนซ้าย จากนั้นดับเบิลคลิกที่อุปกรณ์เครื่องแรก (Arduino) เพื่อเพิ่ม อย่าลืมว่าแทร็ก Ableton ใดที่คุณเพิ่มอุปกรณ์เข้าไป!
ขั้นตอนที่ 6: ทดสอบ Firmata
ก่อนอื่น เราจะทดสอบและตรวจสอบให้แน่ใจว่า Arduino ของคุณกำลังสื่อสารกับ Ableton อัปโหลดข้อมูลโค้ดนี้ไปยัง Arduino ของคุณและเรียกใช้:
#include โมฆะ analogWriteCallback (พินไบต์, ค่า int) { ถ้า (IS_PIN_PWM (พิน)) { pinMode (PIN_TO_DIGITAL (พิน), OUTPUT); analogWrite(PIN_TO_PWM(พิน), ค่า); }}การตั้งค่าเป็นโมฆะ() { Firmata.setFirmwareVersion(FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach (ANALOG_MESSAGE, analogWriteCallback); Firmata.begin (57600);} วงเป็นโมฆะ () { Firmata.sendAnalog (0, 800);}
นี่เป็นขั้นต่ำที่จำเป็นในการสื่อสารกับ Firmata มันส่งเอาต์พุต 800 (จาก 1024) อย่างต่อเนื่องไปยังพอร์ต 0 ของอุปกรณ์ Firmata ใน Ableton หากคุณอัปโหลดโค้ดนี้ไปยัง Arduino ขณะที่คุณเปิดอุปกรณ์ Firmata ใน Ableton โค้ดนี้ควรมีลักษณะเหมือนภาพด้านบน (แมปพอร์ต 0 กับอะไรก็ได้ใน Ableton เพื่อให้สามารถเห็นค่าได้)
คุณสามารถคลิกปุ่มแผนที่ แล้วคลิกอุปกรณ์ที่รองรับ Firmata ใน Ableton เพื่อเพิ่มการจับคู่ระหว่างอินพุตที่ได้รับไปยังพอร์ตนั้นและค่าของอุปกรณ์ Ableton นั้น ตัวอย่างง่ายๆ ได้แก่ ระดับเสียงของแทร็กหรือแป้นหมุนใดๆ ภายในเอฟเฟกต์เสียง สำรวจและดูว่าคุณสามารถค้นหาอะไรเพื่อทำแผนที่!
ขั้นตอนที่ 7: โน้มน้าวดนตรีด้วยมือของคุณ
ถึงเวลานี้ คุณควรมีเพลงใน Ableton, สคริปต์ Firmata บน Arduino ของคุณและแนบถุงมือมาตรความเร่ง มาทำเพลงกันเถอะ!
แมปพอร์ตของอุปกรณ์ Arduino ใน Ableton กับสิ่งต่าง ๆ (ฉันแนะนำปริมาณแทร็ก) จากนั้นเพิ่มบรรทัดของรหัสเพื่อส่งข้อมูลไปยังแต่ละพอร์ตจาก Arduino
Firmata.sendAnalog(พอร์ต, VolumeLevel);
ใช้รหัสนี้สำหรับพอร์ต Firmata แต่ละพอร์ต
หากคุณต้องการทำอะไรง่ายๆ คุณสามารถส่งค่ามาตรความเร่งที่ยังไม่ได้ประมวลผลไปยังพอร์ตของ Ableton และจับคู่ค่าดังกล่าวจากที่นั่น สำหรับประสบการณ์ที่ซับซ้อนยิ่งขึ้น คุณตัดสินใจได้: ค่าความเร่งควรส่งเสียงอย่างไร อย่างไร และเมื่อใด
จากนั้นเล่น Ableton loops ทั้งหมดของคุณ รันโค้ด Arduino ของคุณ และเต้นออกไป!
(ข้อจำกัดความรับผิดชอบ: หากคุณกำลังวางแผนที่จะสร้างอัลกอริธึมที่ซับซ้อนสำหรับเพลงของคุณ อาจต้องใช้เวลามากในการปรับแต่ง "เต้นรำออกไป" อาจแม่นยำน้อยกว่าที่คาดไว้)
ขั้นตอนที่ 8: คลาสแทร็ก (โบนัส!)
ถ้าคุณไม่รังเกียจที่เสียงจะดังหรือมีวิธีอื่นในการลดเสียง ให้ข้ามขั้นตอนนี้ มิฉะนั้นอ่านต่อ!
ฉันสังเกตเห็นว่าการเปลี่ยนระดับเสียงจากปิดเสียงเป็นเต็มเสียงในคราวเดียวทำให้เกิดเสียงป๊อบปิ้งที่ไม่น่าพอใจ และเป็นเรื่องดีที่จะค่อยๆ ค่อยๆ ลดเสียงลง อย่างไรก็ตาม มันยากที่จะทำเช่นนี้ในสภาพแวดล้อมการเขียนโปรแกรมแบบซิงโครนัสของ Arduino ดังนั้นนี่คือรหัสบางส่วนที่จะทำให้การ popping หายไป:
คลาส Track { สาธารณะ: ปริมาณ int; ปริมาณเป้าหมาย; int อัปเดตความเร็ว; ติดตาม () { ปริมาณ = 0; ปริมาณเป้าหมาย = 0; อัปเดตความเร็ว = 0; } เป็นโมฆะ setVolumeGoal (เป้าหมาย int) { volumeGoal = เป้าหมาย; } int getVolumeGoal () { ส่งคืน volumeGoal; } เป็นโมฆะ setUpdateSpeed (ความรวดเร็ว int) { updateSpeed = ความรวดเร็ว; } int getVolume () { ปริมาณการส่งคืน; } เป็นโมฆะ updateVolume() { if((volume > volumeGoal) && ((volume - volumeGoal) >= updateSpeed)) { volume -= updateSpeed; } else if ((volume = updateSpeed)) { ปริมาณ += updateSpeed; } } โมฆะ mute (ความคงทน int) { volumeGoal = 50; updateSpeed = ความคงทน; } โมฆะเต็ม (ความคงทน int) { volumeGoal = 950; updateSpeed = ความคงทน; }};
แต่ละแทร็กมีปริมาณปัจจุบัน ปริมาณเป้าหมาย และความเร็วที่เคลื่อนไปสู่ปริมาณเป้าหมายนั้น เมื่อคุณต้องการเปลี่ยนระดับเสียงของแทร็ก ให้เรียก setVolumeGoal() ทุกครั้งที่คุณเรียกใช้ฟังก์ชัน loop() ใน Arduino ให้เรียก updateVolume() ในทุกแทร็ก แล้วส่งข้อมูลนั้นไปยัง Firmata ด้วย getVolume() เปลี่ยนความเร็วในการอัปเดตเพื่อให้เฟดเอาต์เร็วขึ้นหรือค่อยเป็นค่อยไป! หลีกเลี่ยงการตั้งค่าระดับเสียงเป็น 0 ถ้าทำได้ ให้ตั้งค่าเป็นค่าที่ต่ำมากแทน (ค่าเริ่มต้นใน mute() คือ 100)
ขั้นตอนที่ 9: ติดตามความยาว จังหวะ และอื่นๆ (โบนัส!)
คุณสามารถทำสิ่งต่างๆ มากมายเพื่อทำให้เสียงที่เกิดจากโปรเจ็กต์ของคุณฟังง่ายขึ้น นี่คือตัวเลือกบางส่วน:
คุณสามารถติดตามระยะเวลาที่เพลงวิ่งได้ ในการทำเช่นนี้ คุณจะต้องคิดให้ออกว่าเพลงเริ่มต้นเมื่อใด ฉันขอแนะนำการวนรอบในฟังก์ชัน setup() ซึ่งจะทำให้โค้ดของคุณทำงานล่าช้า จนกว่าจะรู้สึกถึงการเคลื่อนไหวของมือ จัดเก็บเวลาเริ่มต้นของเพลงในตัวแปรโดยใช้มิลลิวินาที () และตรวจสอบว่ามันผ่านไปนานแค่ไหนในแต่ละครั้งที่คุณวน () คุณสามารถใช้สิ่งนี้เพื่อเปิดใช้งานหรือปิดใช้งานคุณสมบัติบางอย่างในบางช่วงเวลาของเพลง
หากคุณรู้ว่าลูปของคุณมีความยาวเท่าใดในหน่วยมิลลิวินาที คุณยังสามารถติดตามจำนวนลูปที่คุณผ่านไปเพื่อให้เข้าใจโครงสร้างเพลงได้ดียิ่งขึ้น!
ปัญหาที่อาจเกิดขึ้นอีกประการหนึ่งที่คุณอาจพบคือเมื่อใดควรเริ่มและหยุดเล่นเพลง ฉันแก้ไขปัญหานี้โดยติดตามว่าเพลงอยู่ในบีทใดในการวัด จากนั้นฉันสามารถเล่นแทร็กเป็นจำนวนเท่าใดก็ได้หลังจากทำท่าทางสัมผัส แทนที่จะตัดออกทันที ทำให้สิ่งต่างๆ ไหลลื่นขึ้นมาก นี่คือตัวอย่าง:
if(millis() - lastLoop >= 4000) { ลูป += 1; LastLoop = มิลลิวินาที (); สำหรับ (int j = 0; j <8; j++) { beatNow[j] = false; } } จังหวะ = (มิลลิวินาที () - LastLoop) / 250; if(beat !=lastBeat) {lastBeat = จังหวะ; beatsLeft -= 1; }
ตรวจสอบให้แน่ใจว่าคุณอัปเดตโวลุ่มตามค่าของ beatNow[beat] และ/หรือ beatsLeft ตัวอย่างโค้ดที่รวมเกือบทุกอย่างในบทช่วยสอนนี้ รวมทั้งโค้ดบางส่วนถูกแนบมาด้วย ในกรณีที่คุณต้องการดูในทางปฏิบัติ
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง