Mục lục:

Găng tay khiêu vũ: 9 bước
Găng tay khiêu vũ: 9 bước

Video: Găng tay khiêu vũ: 9 bước

Video: Găng tay khiêu vũ: 9 bước
Video: 💥NỐI VÒNG TAY LỚN💥BIÊN ĐẠO MÀN NHẢY ĐỒNG DIỄN💥( hướng dẫn nhịp đếm bấm⬇️) 2024, Tháng bảy
Anonim
Găng tay khiêu vũ
Găng tay khiêu vũ

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cách thiết kế một chiếc găng tay cho phép bạn tương tác với âm nhạc thông qua khiêu vũ. Bạn sẽ chế tạo một chiếc găng tay hỗ trợ gia tốc kế, thiết kế một bố cục trong Ableton, sau đó kết nối cả hai theo cách phức tạp hay đơn giản tùy thích!

Quân nhu

  • Ableton (hoặc dùng thử miễn phí)
  • Một Arduino
  • Cáp nhảy
  • Hàn sắt
  • Các tông
  • Súng bắn keo nóng
  • Rất nhiều trí tưởng tượng

Bước 1: Khái niệm

Dự án này được thiết kế để trở nên thú vị. Nếu cách dự án ví dụ trong hướng dẫn này hoạt động không thú vị với bạn, hãy thiết kế lại nó!

Tôi khuyên bạn nên đặt một số bài hát yêu thích của bạn, di chuyển bàn tay của bạn theo chúng và xem điều gì sẽ xảy ra. Bạn có di chuyển tay lên xuống không? Song song? Từ từ hay nhanh chóng? Những khía cạnh nào của âm nhạc khiến bạn muốn vận động? Nếu bạn có một danh sách được viết ra, có thể bạn sẽ tìm ra một số cách để kết hợp các chuyển động mà bạn thích vào các thuật toán cuối cùng của mình.

Đây là các chuyển động tôi đã sử dụng:

  • Một chuyển động lên xuống nhanh chóng sẽ kích hoạt phần bắt đầu của bài hát, trống hoặc âm trầm. (Những điều này xảy ra ở các điểm khác nhau trong bài hát, không nhất thiết đồng thời!)
  • Chuyển động chậm, nghiêng từ bên này sang bên kia tạo ra âm thanh cao và vang hơn.
  • Ở một đoạn cụ thể của bài hát, việc đưa tay lên trên làm cho âm nhạc lắng xuống - vì vậy tôi đã "nắm lấy" nó trong nắm tay khép chặt của mình.

Sử dụng những thứ này hoặc làm của riêng bạn!

(Xin lưu ý: hướng dẫn này không bao gồm cách tạo nhạc hoặc giai điệu trực tiếp trong Ableton! Nếu bạn tuân theo các hướng dẫn này, bạn sẽ chỉ có thể tăng / giảm âm lượng của các bản nhạc hoặc áp dụng hiệu ứng âm thanh.)

Bước 2: Chuẩn bị Gia tốc kế

Chuẩn bị Gia tốc kế
Chuẩn bị Gia tốc kế

Trước tiên, hãy tìm ra loại gia tốc kế bạn có. Tôi đã sử dụng cái này; bất kỳ gia tốc kế ba trục nào sẽ làm được. (Hoặc thử một loại cảm biến khác nếu bạn muốn sử dụng.) Đảm bảo rằng bạn biết cách đọc dữ liệu gia tốc kế từ Arduino. Bạn có thể cần tải xuống thư viện cho gia tốc kế của mình nếu nó sử dụng bất kỳ thứ gì phức tạp hơn đầu vào tương tự.

Sau khi đã kiểm tra nó bằng bảng mạch, hãy hàn các dây ngắn có mã màu vào các chân của máy đo gia tốc của bạn. Đặt một dây màu đỏ vào chân nguồn, một dây màu đen vào chân nối đất và bất kỳ dây nào cần thiết khác để liên lạc với gia tốc kế. (Nếu bạn có gia tốc kế I2C, đây sẽ là chân SCL và SDA. Nếu bạn có gia tốc kế tương tự, có thể sẽ có một chân cho mỗi đầu ra x, y và z.) Đảm bảo rằng vật hàn của bạn chắc chắn và để các hạt không chồng lên nhau giữa các ghim liền kề.

Bước 3: Chế tạo găng tay

Xây dựng găng tay
Xây dựng găng tay

Cắt một miếng bìa cứng mỏng hoặc giấy dày thành một hình chữ nhật lớn hơn một chút so với gia tốc kế của bạn. Dán keo đo gia tốc vào bìa cứng, đảm bảo rằng bạn đang đặt keo ở dưới cùng. Sau đó, dán gia tốc kế có bìa cứng vào mặt sau của găng tay của bạn. May lỏng từng dây vào cổ tay của găng tay để giảm lực căng trên gia tốc kế, và sau đó găng tay của bạn đã sẵn sàng. Kết nối nó với dây dài hơn để có đủ không gian để di chuyển tay của bạn khi nó được cắm vào.

Bước 4: Soạn trong Ableton

Bây giờ là lúc soạn bài hát, cuối cùng bạn sẽ sử dụng găng tay để điều khiển. Tôi khuyên bạn nên sử dụng các vòng lặp Ableton mà tất cả đều có âm thanh tốt với nhau, nhưng có thể được sử dụng để xây dựng dần dần: thử giai điệu, hợp âm, âm trầm và bộ gõ. Bạn sẽ có thể sử dụng găng tay của mình để kiểm soát khi mỗi vòng lặp diễn ra hay không.

Nếu bạn có thể nghĩ ra bất kỳ loại âm thanh thú vị nào để thỉnh thoảng kết hợp vào bài hát, chẳng hạn như hiệu ứng âm thanh kỳ lạ hoặc nhạc cụ độc đáo, hãy thử thêm một hoặc hai trong số đó! Bạn có thể buộc chúng vào các chuyển động tay ít phổ biến hơn để thỉnh thoảng mang lại điều gì đó thú vị.

Đây là liên kết đến thành phần tương thích với Arduino của tôi, trong trường hợp bạn không muốn viết một trong những thành phần của riêng mình:

(Thật không may, việc dạy bạn Ableton không nằm trong phạm vi của hướng dẫn. Tuy nhiên, có rất nhiều video hướng dẫn thực hiện tốt và Ableton có 90 ngày dùng thử miễn phí! Tôi đề xuất video này.)

Bước 5: Bắt đầu sử dụng Firmata

Bắt đầu sử dụng Firmata
Bắt đầu sử dụng Firmata

Để cho phép Arduino của bạn giao tiếp với Ableton, bạn sẽ cần sử dụng một thư viện có tên là Firmata. Bạn cũng sẽ cần tải xuống Bộ công cụ kết nối cho Ableton.

Trong Ableton, nhấp vào Gói> Bộ kết nối> Thiết bị trong menu ở trên cùng bên trái, sau đó nhấp đúp vào thiết bị đầu tiên (Arduino) để thêm nó. Đảm bảo rằng bạn nhớ bản nhạc Ableton mà bạn đã thêm thiết bị vào!

Bước 6: Kiểm tra Firmata

Kiểm tra Firmata
Kiểm tra Firmata

Đầu tiên, chúng tôi sẽ kiểm tra và đảm bảo rằng Arduino của bạn đang giao tiếp với Ableton. Tải đoạn mã này lên Arduino của bạn và chạy nó:

#include void analogWriteCallback (byte pin, int value) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (pin), value); }} void setup () {Firmata.setFirmwareVersion (FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach (ANALOG_MESSAGE, analogWriteCallback); Firmata.begin (57600);} void loop () {Firmata.sendAnalog (0, 800);}

Đây là mức tối thiểu cần thiết để giao tiếp với Firmata. Nó liên tục gửi một đầu ra 800 (trong số 1024) đến cổng 0 của thiết bị Firmata ở Ableton. Nếu bạn tải mã này lên Arduino của mình trong khi bạn đang mở thiết bị Firmata trong Ableton, nó sẽ giống như hình trên. (Ánh xạ cổng 0 với bất kỳ thứ gì trong Ableton để có thể xem các giá trị.)

Bạn có thể nhấp vào nút Bản đồ và sau đó nhấp vào bất kỳ thiết bị nào tương thích với Firmata trong Ableton để thêm ánh xạ giữa đầu vào nhận được đến cổng đó và giá trị của thiết bị Ableton đó. Ví dụ dễ hiểu bao gồm âm lượng của bất kỳ bản nhạc nào hoặc bất kỳ mặt số nào trong hiệu ứng âm thanh. Khám phá và xem những gì bạn có thể tìm thấy để lập bản đồ!

Bước 7: Ảnh hưởng đến âm nhạc bằng chuyển động tay của bạn

Ảnh hưởng đến âm nhạc bằng chuyển động tay của bạn!
Ảnh hưởng đến âm nhạc bằng chuyển động tay của bạn!

Vào lúc này, bạn sẽ có một số bản nhạc trong Ableton, một tập lệnh Firmata trên Arduino của bạn và một găng tay gia tốc kế được đính kèm. Hãy làm một số âm nhạc!

Ánh xạ các cổng của thiết bị Arduino trong Ableton với những thứ khác nhau (tôi đề xuất khối lượng theo dõi), sau đó thêm các dòng mã để gửi dữ liệu đến từng cổng từ Arduino.

Firmata.sendAnalog (cổng, volumeLevel);

Sử dụng mã như thế này cho mỗi cổng Firmata.

Nếu bạn muốn làm điều gì đó đơn giản, bạn có thể gửi các giá trị gia tốc kế chưa được xử lý đến các cổng Ableton và ánh xạ chúng từ đó. Để có trải nghiệm tinh vi hơn, bạn có thể quyết định: giá trị gia tốc kế nào sẽ kích hoạt âm thanh, cách thức và thời điểm?

Sau đó, chơi tất cả các vòng Ableton của bạn, chạy mã Arduino của bạn và nhảy đi!

(Tuyên bố từ chối trách nhiệm: nếu bạn định tạo bất kỳ loại thuật toán phức tạp nào cho bài hát của mình, có thể mất rất nhiều thời gian để tinh chỉnh. "Dance away" có thể kém chính xác hơn dự kiến.)

Bước 8: Lớp theo dõi (tiền thưởng!)

Nếu bạn không bận tâm đến việc âm lượng bật ra hoặc có một cách khác để giảm thiểu nó, hãy bỏ qua bước này. Nếu không, hãy đọc tiếp!

Tôi nhận thấy rằng việc chuyển đổi âm lượng từ tắt tiếng sang đầy đủ trong một lần sẽ tạo ra một số âm thanh bật ra khó chịu và thật tuyệt khi có thể giảm âm lượng dần dần. Tuy nhiên, thật khó để thực hiện điều này trong môi trường lập trình đồng bộ của Arduino. Vì vậy, đây là một số mã để làm cho popping biến mất:

lớp Track {public: int volume; int volumeGoal; int updateSpeed; Theo dõi () {volume = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int goal) {volumeGoal = goal; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int fastness) {updateSpeed = fastness; } int getVolume () {khối lượng trả về; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } else if ((volume = updateSpeed)) {volume + = updateSpeed; }} void mute (int fastness) {volumeGoal = 50; updateSpeed = độ nhanh; } void full (int fastness) {volumeGoal = 950; updateSpeed = độ nhanh; }};

Mỗi Bản nhạc có khối lượng hiện tại, khối lượng mục tiêu và tốc độ tiến tới khối lượng mục tiêu đó. Khi bạn muốn thay đổi âm lượng của một bản nhạc, hãy gọi setVolumeGoal (). Mỗi khi bạn chạy hàm loop () trong Arduino, hãy gọi updateVolume () trên mọi bản nhạc, sau đó gửi thông tin đó đến Firmata bằng getVolume (). Thay đổi tốc độ cập nhật để nhanh hơn hoặc tắt dần! Ngoài ra, tránh đặt âm lượng thành 0 nếu bạn có thể; thay vào đó, hãy đặt nó thành một giá trị rất thấp (mặc định trong mute () là 100).

Bước 9: Theo dõi Độ dài, Nhịp đập và hơn thế nữa (phần thưởng!)

Bạn có thể làm nhiều điều để làm cho âm thanh phát ra từ dự án của bạn dễ nghe hơn. Dưới đây là một số tùy chọn:

Bạn có thể theo dõi bài hát đã chạy trong bao lâu. Để làm được điều này, bạn sẽ phải tìm ra thời điểm bài hát bắt đầu; Tôi khuyên bạn nên sử dụng vòng lặp while trong hàm setup () để trì hoãn việc chạy mã của bạn cho đến khi nó cảm nhận được chuyển động của tay. Lưu trữ thời gian bắt đầu của bài hát trong một biến bằng cách sử dụng millis () và kiểm tra xem nó đã diễn ra trong bao lâu mỗi khi bạn lặp lại (). Bạn có thể sử dụng tính năng này để bật hoặc tắt một số tính năng nhất định tại một số thời điểm nhất định của bài hát.

Nếu bạn biết thời lượng các vòng lặp của mình tính bằng mili giây, bạn cũng có thể theo dõi số vòng lặp mà bạn đã trải qua để hiểu rõ hơn về cấu trúc bài hát!

Một vấn đề tiềm ẩn khác mà bạn có thể gặp phải là khi nào bắt đầu và dừng phát một bản nhạc. Tôi đã giải quyết vấn đề này bằng cách theo dõi nhịp của bài hát hiện đang ở. Sau đó, tôi có thể phát các bản nhạc cho bất kỳ số nhịp nào sau một cử chỉ, thay vì cắt nó ngay lập tức. Điều này làm cho mọi thứ trôi chảy hơn rất nhiều. Đây là một ví dụ:

if (millis () - lastLoop> = 4000) {vòng lặp + = 1; lastLoop = millis (); for (int j = 0; j <8; j ++) {beatNow [j] = false; }} beat = (millis () - lastLoop) / 250; if (beat! = lastBeat) {lastBeat = beat; beatLeft - = 1; }

Đảm bảo rằng bạn cập nhật âm lượng phù hợp với các giá trị của beatNow [beat] và / hoặc beatLeft. Mã ví dụ kết hợp gần như mọi thứ trong hướng dẫn này, cộng với một số, được đính kèm trong trường hợp bạn muốn xem nó trong thực tế.

Đề xuất: