สารบัญ:

ถุงมือเต้นรำ: 9 ขั้นตอน
ถุงมือเต้นรำ: 9 ขั้นตอน

วีดีโอ: ถุงมือเต้นรำ: 9 ขั้นตอน

วีดีโอ: ถุงมือเต้นรำ: 9 ขั้นตอน
วีดีโอ: ล้างมือ 7 ขั้นตอน 2024, กรกฎาคม
Anonim
ถุงมือเต้นรำ
ถุงมือเต้นรำ

ในบทช่วยสอนนี้ ฉันจะแนะนำคุณเกี่ยวกับการออกแบบถุงมือที่ให้คุณโต้ตอบกับดนตรีผ่านการเต้น คุณจะต้องสร้างถุงมือที่เปิดใช้งานมาตรความเร่ง ออกแบบองค์ประกอบใน Ableton แล้วเชื่อมต่อทั้งสองอย่างเข้าด้วยกันด้วยวิธีที่ซับซ้อนหรือเรียบง่ายตามที่คุณต้องการ!

เสบียง

  • Ableton (หรือทดลองใช้ฟรี)
  • Arduino
  • สายจัมเปอร์
  • หัวแร้ง
  • กระดาษแข็ง
  • ปืนกาวร้อน
  • จินตนาการล้ำเลิศ

ขั้นตอนที่ 1: แนวคิด

โครงการนี้จัดทำขึ้นเพื่อความสนุกสนาน หากวิธีการทำงานของโครงการตัวอย่างในบทช่วยสอนนี้ไม่สนุกสำหรับคุณ ให้ออกแบบใหม่!

ฉันแนะนำให้ใส่เพลงโปรดของคุณ ขยับมือไปหาพวกเขา และดูว่าเกิดอะไรขึ้น คุณขยับมือขึ้นลงหรือไม่? เคียงข้างกัน? ช้าหรือเร็ว? แง่มุมใดของดนตรีที่ทำให้คุณอยากขยับมือ? หากคุณมีรายการของสิ่งเหล่านี้เขียนไว้ คุณอาจจะสามารถหาวิธีที่จะรวมการเคลื่อนไหวที่คุณชอบเข้ากับอัลกอริธึมในท้ายที่สุดได้

นี่คือการเคลื่อนไหวที่ฉันใช้:

  • การเคลื่อนไหวขึ้นและลงอย่างรวดเร็วจะกระตุ้นการเริ่มเพลง กลอง หรือเบส (สิ่งเหล่านี้เกิดขึ้นที่จุดต่าง ๆ ในเพลง ไม่จำเป็นต้องพร้อมกัน!)
  • การเคลื่อนไหวจากด้านหนึ่งไปอีกด้านหนึ่งที่ช้าและเอียงจะกระตุ้นเสียงที่สะท้อนและแหลมสูง
  • ที่ช่วงหนึ่งของเพลง การยกมือขึ้นทำให้เพลงเงียบลง - ดังนั้นฉันจึง "จับ" มันด้วยกำปั้นที่ปิด

ใช้สิ่งเหล่านี้หรือสร้างของคุณเอง!

(โปรดทราบ: บทช่วยสอนนี้ไม่ครอบคลุมถึงวิธีสร้างเพลงหรือท่วงทำนองใน Ableton! หากคุณปฏิบัติตามคำแนะนำเหล่านี้ คุณจะสามารถเพิ่ม/ลดระดับเสียงของแทร็กหรือการใช้เอฟเฟกต์เสียงเท่านั้น)

ขั้นตอนที่ 2: เตรียมมาตรความเร่ง

เตรียมมาตรความเร่ง
เตรียมมาตรความเร่ง

ขั้นแรก ให้หาว่าคุณมีมาตรความเร่งประเภทใด ฉันใช้อันนี้ มาตรความเร่งแบบสามแกนจะทำได้ (หรือลองใช้เซ็นเซอร์ประเภทอื่นหากต้องการใช้งาน) ตรวจสอบให้แน่ใจว่าคุณรู้วิธีอ่านข้อมูลมาตรความเร่งจาก Arduino คุณอาจต้องดาวน์โหลดไลบรารีสำหรับมาตรความเร่งของคุณ หากไลบรารีนั้นใช้อะไรที่ซับซ้อนกว่าอินพุตแบบอะนาล็อก

หลังจากทดสอบกับเขียงหั่นขนมแล้ว ให้บัดกรีสายรหัสสีสั้นๆ เข้ากับหมุดของมาตรความเร่งของคุณ ใส่สายไฟสีแดงในพิน สายไฟสีดำที่พินกราวด์ และสายไฟอื่นๆ ที่จำเป็นสำหรับการสื่อสารของมาตรความเร่ง (หากคุณมีมาตรความเร่ง I2C นี่จะเป็นพิน SCL และ SDA หากคุณมีมาตรความเร่งแบบแอนะล็อก น่าจะมีพินเดียวสำหรับเอาต์พุต x, y และ z แต่ละตัว) ตรวจสอบให้แน่ใจว่าบัดกรีของคุณแข็งและ ว่าลูกปัดไม่ทับซ้อนกันระหว่างหมุดที่อยู่ติดกัน

ขั้นตอนที่ 3: สร้างถุงมือ

สร้างถุงมือ
สร้างถุงมือ

ตัดกระดาษแข็งบางๆ หรือกระดาษหนาเป็นสี่เหลี่ยมที่ใหญ่กว่ามาตรความเร่งเล็กน้อย กาวเครื่องวัดความเร่งกับกระดาษแข็ง ตรวจสอบให้แน่ใจว่าคุณติดกาวที่ด้านล่าง จากนั้นติดมาตรความเร่งที่มีกระดาษแข็งด้านหลังถุงมือของคุณ เย็บลวดแต่ละเส้นอย่างหลวม ๆ กับข้อมือของถุงมือเพื่อลดความตึงเครียดบนมาตรความเร่ง จากนั้นถุงมือของคุณก็พร้อม เชื่อมต่อกับสายไฟที่ยาวขึ้นเพื่อให้มีพื้นที่เพียงพอในการขยับมือเมื่อเสียบปลั๊ก

ขั้นตอนที่ 4: เขียนใน Ableton

ถึงเวลาแต่งเพลงที่คุณจะต้องใช้ถุงมือควบคุมในที่สุด ฉันแนะนำการวนซ้ำของ Ableton ที่ฟังดูเข้ากันได้ดี แต่สามารถใช้เพื่อสร้างทีละน้อยได้ เช่น ลองใช้เมโลดี้ คอร์ด เบส และเครื่องเพอร์คัชชัน คุณจะสามารถใช้ถุงมือของคุณเพื่อควบคุมเวลาที่แต่ละวงเล่นหรือไม่เล่น

หากคุณสามารถนึกถึงเสียงประเภทใดที่น่าสนใจเพื่อรวมเข้ากับเพลงได้เป็นครั้งคราว เช่น เอฟเฟกต์เสียงแปลก ๆ หรือเครื่องดนตรีแหวกแนว ให้ลองเพิ่มเข้าไปหนึ่งหรือสองเสียงด้วยเช่นกัน! คุณสามารถผูกมันไว้กับการเคลื่อนไหวของมือที่ไม่ธรรมดาเพื่อนำเสนอสิ่งที่น่าสนใจเป็นครั้งคราว

นี่คือลิงค์ไปยังองค์ประกอบที่เข้ากันได้กับ Arduino ในกรณีที่คุณไม่ต้องการเขียนองค์ประกอบของคุณเอง:

(ขออภัย การสอนคุณ Ableton นั้นไม่อยู่ในขอบเขตของบทช่วยสอน อย่างไรก็ตาม มีวิดีโอแนะนำวิธีการดีๆ มากมาย และ Ableton เปิดให้ทดลองใช้งานฟรี 90 วัน! ฉันขอแนะนำวิดีโอนี้)

ขั้นตอนที่ 5: เริ่มใช้ Firmata

เริ่มใช้ Firmata
เริ่มใช้ Firmata

เพื่อให้ Arduino ของคุณสามารถสื่อสารกับ Ableton คุณจะต้องใช้ไลบรารีชื่อ Firmata คุณจะต้องดาวน์โหลด Connection Kit สำหรับ Ableton ด้วย

ใน Ableton คลิก Packs>Connection Kit>Devices ในเมนูด้านบนซ้าย จากนั้นดับเบิลคลิกที่อุปกรณ์เครื่องแรก (Arduino) เพื่อเพิ่ม อย่าลืมว่าแทร็ก Ableton ใดที่คุณเพิ่มอุปกรณ์เข้าไป!

ขั้นตอนที่ 6: ทดสอบ Firmata

ทดสอบ Firmata
ทดสอบ 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 ตัวอย่างโค้ดที่รวมเกือบทุกอย่างในบทช่วยสอนนี้ รวมทั้งโค้ดบางส่วนถูกแนบมาด้วย ในกรณีที่คุณต้องการดูในทางปฏิบัติ

แนะนำ: