메뉴 전체보기

회원메뉴

Space Drums 2.0 - 학습을 게임화한 스마트 에어 드럼 스틱 > 게시판

본문 바로가기

쇼핑몰 검색

NO. 3301
제목 : Space Drums 2.0 - 학습을 게임화한 스마트 에어 드럼 스틱
2026-09-22 19:17

소개: Space Drums 2.0 - 학습을 게임화한 스마트 에어 드럼 스틱


소개: Space Drums 2.0 - 학습을 게임화한 스마트 에어 드럼 스틱


소개: Space Drums 2.0 - 학습을 게임화한 스마트 에어 드럼 스틱


소개: Space Drums 2.0 - 학습을 게임화한 스마트 에어 드럼 스틱


얼마 전, 저는 오픈 소스 Space Drums 프로토타입을 만들었습니다. 얇은 공기 중에서 풀 드럼 키트를 연주할 수 있게 해 주는 스마트 모션 트래킹 스틱 한 쌍입니다. 재미있었지만, 거의 모든 에어 드러머가 겪는 문제 중 하나(여러 문제 중 하나)가 있었습니다.

상용 에어 드럼의 리뷰를 살펴보면, 구매자의 대부분은 초보자입니다. 거대하고 비싼 실제 드럼 키트를 구매하지 않고도 저렴하고 조용하며 휴대하기 좋은 방식으로 드럼을 배우고 싶어 하기 때문입니다. 하지만 초보자들이 연주를 시작하면 꽤 어렵다는 것을 알게 됩니다. 제품을 홍보한 YouTuber들의 연주 방식을 따라 할 수 없어서 포기하고, 스틱은 서랍 속에서 먼지만 쌓이게 됩니다. 저는 그 문제를 해결하고 싶었습니다.

Space Drums 2.0과 Space Drums Trainer를 만나보세요!

Space Drums 2.0은 독립형 모션 트래킹, 햅틱 피드백, 무선 풋 페달을 하드웨어에 완전히 업그레이드했으며, 모두 보기 좋은 3D 프린팅 하우징에 담았습니다. 하지만 진짜 핵심은 화면에 있습니다. Beat Saber 같은 VR 인기 게임의 플레이 방식에서 영감을 받아 Python으로 완전한 아케이드 학습 엔진을 만들었습니다. 게임을 즐기면서 드럼 연주도 배울 수 있습니다!

음표는 공중에서 스틱이 휘두르는 위치에 직접 매핑된 3D 시각 고속도로를 따라 내려옵니다. 템포는 느린 42 BPM에서 시작해 연주할수록 서서히 빨라지며, 스틱은 칠 때마다 햅틱 피드백과 소리를 제공합니다. 복잡한 손과 다리의 협응을 중독성 있는(정말입니다!) 게임으로 바꿔줍니다.




STEP 1. 준비물


전자 부품 및 하드웨어(드럼스틱 2개)

  1. 맞춤형 Space Drums 2.0 PCB(2개): Gerber 파일과 BOM은 제 GitHub 저장소에서 확인할 수 있습니다.
  2. 3.7V 충전식 LiPo 배터리(2개): 구매 링크
  3. 순간식 전원 스위치(2개): 구매 링크
  4. 3M 양면 폼 테이프: 구매 링크
  5. M2 나사(총 6개): 구매 링크

풋 페달 허브 어셈블리

  1. Esp32 S3(1개): 저는 xiao esp32s3를 사용하고 있습니다. 구매 링크
  2. 순간식 풋 스위치(2개): 구매 링크
  3. USB-C 데이터 케이블: XIAO 허브를 컴퓨터에 연결합니다.

3D 프린팅 부품 및 인클로저

  1. 드럼스틱 베이스 및 팁 세트(2세트): STL 파일은 GitHub 저장소에 제공되어 있습니다.
  2. 전원 버튼 커버(2개): 전원 스위치용 선택 사항인 프린팅 캡입니다.
  3. Adafruit USB 풋 스위치 인클로저(2개): 프린팅 가능한 페달 하우징 디자인입니다. GitHub 저장소.

소프트웨어 및 디지털 리소스

  1. PC: Python 3.10 이상 실행.
  2. Python 패키지: pygame-ce(그래픽/오디오) 및 pyserial(허브 통신).
  3. 드럼 샘플( WAV 파일 9개): audio/ 디렉터리에 배치합니다(crash.wav, snare.wav, tom1.wav, tom2.wav, ride.wav, floor_tom.wav, kick.wav, hihat_open.wav, hihat_closed.wav). 모두 제 GitHub 저장소에 있습니다.
  4. Arduino IDE: 스틱과 XIAO 허브에 펌웨어를 플래시하는 데 사용합니다.

필요한 도구

  1. 납땜 인두 및 납
  2. 와이어 스트리퍼 및 연결용 전선




STEP 2. 게임 개요


게임 개요


게임 개요


게임 개요


게임 개요


게임 개요


게임 개요


이 Instructable은 두 부분으로 구성됩니다. 첫 번째에서는 스틱 제작을 다루고, 다음에서는 게임을 설명하겠습니다.

게임 개요(Space Drums Trainer)

Space Drums Trainer는 pygame을 사용해 Python으로 만든 아케이드 스타일의 시각 게임입니다. 음표는 3D 공간에서 팔이 휘두르는 방식에 맞춰 설계된 공간형 고속도로를 따라 내려옵니다.

  1. 시각 요소: 레인은 공중에서 드럼이 놓이는 위치에 맞게 배치되며, 타깃 패드는 두 층으로 나뉩니다(위쪽은 심벌/탐, 아래쪽은 스네어/플로어 탐). 음표는 색상으로 구분됩니다. 파란색은 왼손, 빨간색은 오른손, 노란색 막대는 킥 페달 타격, 점선 노란색 띠는 하이햇 페달을 들어 올리라는 지시입니다.
  2. 모드 1: 연주 배우기(20레벨): 완전 초보자를 위한 단계별 커리큘럼입니다. 모든 레벨은 느린 42 BPM에서 시작해 연주할수록 속도가 부드럽게 올라가며, 기본 4분음표 스네어 타격부터 필이 포함된 풀 키트 2마디 그루브까지 안내합니다.
  3. 모드 2: 리듬 배우기: 독립형 루프(Rock, Disco, Shuffle, Funk) 라이브러리입니다. 오디오 미리듣기를 듣고, 원하는 느린 시작 BPM을 선택한 뒤, 템포가 목표 속도까지 동적으로 올라가는 동안 편안한 속도로 연습할 수 있습니다.
  4. 모드 3: 커스텀 리듬(출시 예정): 모든 곡에 대해 커스텀 MIDI 드럼 파일을 가져와 낙하 타일 트랙을 자동 생성하고, 게임을 통해 곡을 배울 수 있도록 설계된 예정 모드입니다.

위 동영상에서 게임을 명확하게 설명합니다.




STEP 3. 하드웨어 개요


하드웨어 개요


하드웨어 개요


하드웨어 개요


The 원래 Space Drums 프로토타입 에는 몇 가지 큰 결함이 있었습니다. 사용자의 자세를 추적하고 어느 가상 드럼을 가리키는지 판단하는 데 전적으로 스마트폰 카메라에 의존했습니다. 이 때문에 설치가 번거로웠고 지연 시간이 상당히 발생했으며, 드럼을 칠 때 물리적인 피드백이 전혀 없었습니다.

Space Drums 2.0은 방향 추적과 스윙 감지를 스틱 자체에 직접 탑재하여 이러한 문제를 해결합니다:

  1. 독립형 센싱: 각 스틱에는 ESP32-S3 마이크로컨트롤러, 듀얼 ICM-42688-P IMU, MMC5983MA 자력계가 내장되어 있습니다. 이 센서들은 함께 스틱의 피치, 롤, 타격 시 감속을 정확하게 추적합니다.
  2. 내장 햅틱 피드백: 온보드 햅틱 모터가 가상 타격이 등록되는 정확한 순간에 촉각 진동 펄스를 발생시켜 손에 물리적인 타격 피드백을 제공합니다.
  3. 초저지연: 스틱은 ESP-NOW 프로토콜을 사용해 타격 패킷을 중앙 페달 허브로 직접 전송하므로, 지연이 큰 Wi-Fi나 Bluetooth 방식을 완전히 우회합니다.
  4. 3D 프린팅 하우징: 무겁던 PVC 파이프 스틱은 이제 사라졌습니다. 이제는 세련되고 가벼운 ABS 프린팅 스틱과 풋 페달을 사용합니다.




STEP 4. Space Drums 2.0의 작동 방식


Space Drums 2.0의 작동 방식


Space Drums 2.0의 작동 방식


이제부터 하드웨어의 작동 원리와 제작 과정을 설명하겠습니다. 게임에 관한 자세한 내용은 Step 11

납땜 인두를 가열하기 전에 모든 부품이 어떻게 함께 작동하는지 간단히 살펴보겠습니다.

Space Drums 2.0은 세 가지 주요 부분으로 구성됩니다:

  1. 동작을 추적하고 타격을 감지하는 ESP32-S3 기반 드럼스틱 2개
  2. 스틱의 무선 데이터를 수신하고 페달을 읽는 ESP32-S3 풋 페달 허브
  3. 이벤트를 드럼 소리로 변환하고 사용자 인터페이스를 제공하는 PC 또는 Android 애플리케이션

두 스틱은 ESP-NOW를 사용해 허브와 통신합니다. 그런 다음 허브는 드럼 및 페달 이벤트를 USB serial을 통해 컴퓨터로 전송하고, 오디오 애플리케이션이 해당 샘플을 재생합니다.

드럼스틱

스틱을 보정할 때는 스네어를 배치하고 싶은 위치를 향해 스틱을 가리킵니다. 스네어 가 있을 위치를 말합니다. 그 방향이 가상 드럼 키트의 기준점이 됩니다.

그 후 펌웨어가 스틱의 방향을 계속 추적합니다. 스틱을 휘두르면 스윙을 감지하고, 스틱이 가리키는 방향에 해당하는 가상 드럼을 판단합니다.

드럼 배치는 두 개의 행으로 나뉩니다.

스틱이 수평 연주 기준 35도보다 위쪽으로 기울어져 있으면 위쪽 행이 선택되고, 35도 아래쪽이면 아래쪽 행이 선택됩니다. 각 행에서는 스틱의 yaw가 가리키는 드럼 영역을 결정합니다. 정의된 각도 영역을 벗어나면 어떤 드럼도 트리거되지 않습니다.

타격 감지

펌웨어는 동작 데이터를 사용해 스윙과 그에 따른 감속을 감지합니다. 타격이 감지되면 드럼 ID와 velocity 값을 생성합니다. velocity는 1에서 6까지의 음량 값으로 표시됩니다.

스틱은 햅틱 액추에이터도 트리거할 수 있어 가상 타격이 발생할 때 물리적인 피드백을 제공합니다.

풋 페달 허브

풋 페달은 별도의 Xiao ESP32-S3에 직접 연결되며, 이 장치가 두 스틱의 수신 허브 역할을 합니다.

왼쪽 페달은 GPIO 1에, 오른쪽 페달은 GPIO 2에 연결됩니다. 스위치는 GPIO 핀과 ground 사이에 연결되며, ESP32의 내부 pull-up으로 입력이 active-low가 됩니다.

오른쪽 페달은 항상 킥 드럼으로 작동합니다.

왼쪽 페달은 두 번째 킥 드럼 또는 하이햇 컨트롤러로 설정할 수 있습니다. 하이햇 모드에서는 페달을 누르면 하이햇이 닫히고, 발을 떼면 열립니다. 이 할당은 애플리케이션(PC/Android)에서 처리하므로 왼쪽 페달의 기능을 변경할 때 허브를 다시 플래싱할 필요가 없습니다.




STEP 5. 3D 프린팅


3D 프린팅


3D 프린팅


3D 프린팅


3D 프린팅


어셈블리는 Fusion 360

에서 설계했습니다. 인쇄해야 할 어셈블리는 세 가지입니다. 모든 파일은 제 Github repo

드럼스틱 어셈블리 1개

  1. 스틱 베이스
  2. 스틱 팁
  3. 전원 버튼 커버(선택 사항)

풋 페달 어셈블리 2개

  1. 이 설계는 Adafruit 프로젝트에서 가져왔습니다. 여기에서 해당 가이드를 따라 하세요.

전자 부품 조립을 시작하기 전에 모든 부품을 출력하세요. 스틱 인클로저는 맞춤형 PCB를 기준으로 설계되었으며 USB-C 커넥터와 전원 버튼을 위한 개구부가 있습니다. 따라서 출력된 부품이 깨끗하고 관련 개구부가 막히지 않았는지 확인하세요.




STEP 6. 드럼스틱 제작


드럼스틱 제작


드럼스틱 제작


드럼스틱 제작


드럼스틱 제작


드럼스틱 제작


드럼스틱 제작


PCB 장착

먼저 Space Drums PCB를 출력한 스틱 베이스 안에 배치합니다.

강력한 3M 양면테이프를 사용해 PCB를 제자리에 고정합니다. 보드가 인클로저에 올바르게 놓였고 USB-C 커넥터가 출력 하우징의 개구부와 맞는지 확인하세요.

USB-C 포트는 외부에서 접근할 수 있으므로 스틱을 열지 않고도 배터리를 충전하고 새 펌웨어를 업로드할 수 있습니다.

배터리 연결

스틱은 충전식 배터리로 작동합니다.

배터리 전선을 PCB의 BAT 패드에 납땜하되 극성이 올바른지 확인하세요.

전원 버튼 설치

그다음 순간식 스위치를 PCB의 전용 스위치 패드에 납땜합니다.

출력된 스틱 하우징에는 이 스위치를 장착할 위치가 있어 외부에서 버튼을 조작할 수 있습니다. 스위치가 제자리에 장착된 후 끼울 수 있도록 작은 3D 프린팅 커버도 설계했습니다.

두 번째 스틱에도 같은 과정을 반복합니다.

풋 페달은 Adafruit의 가이드에 따라 만들 수 있습니다: https://learn.adafruit.com/usb-foot-switch-circuit-python/overview

그런 다음 앞서 설명한 대로 스위치를 허브 ESP32에 연결할 수 있습니다.




STEP 7. 펌웨어 플래시하기


펌웨어 플래시하기


펌웨어 플래시하기


펌웨어 플래시하기


하드웨어 조립이 끝났으므로 이제 펌웨어를 업로드하고 드럼 이벤트를 소리로 변환하는 소프트웨어를 설정할 차례입니다.

관련된 펌웨어 프로그램은 두 가지입니다:

  1. 스틱 펌웨어 — 두 드럼스틱에서 실행되며 모션 감지, 타격 감지, 보정 및 배터리 모니터링을 처리합니다.
  2. SpaceDrums2 허브— XIAO ESP32-S3에서 실행되며 ESP-NOW 통신, 풋 페달 및 컴퓨터와의 USB 시리얼 연결을 처리합니다.

ESP32-S3 허브부터 시작합니다.

Arduino IDE에서 허브 펌웨어를 열고 XIAO ESP32-S3에 업로드합니다. 부팅이 완료되면 500000 baud로 Serial Monitor를 엽니다.

허브는 시작할 때 MAC 주소를 출력합니다. 두 드럼스틱이 무선 데이터를 어디로 보내야 하는지 알아야 하므로 이 주소를 기록해 둡니다.

드럼스틱 구성하기

스틱 펌웨어를 열고 각 스틱에 대해 간단한 두 가지를 변경합니다.

먼저 고유 ID를 할당합니다:

Left stick → STICK_ID = 0
Right stick → STICK_ID = 1

그런 다음 허브에서 출력된 MAC 주소를 hubAddress[] 설정에 입력합니다.

두 스틱은 동일한 허브 주소를 사용해야 하지만, 각각 고유한 STICK_ID를 사용해야 합니다.

이제 각 스틱에 펌웨어를 플래시합니다.

Arduino IDE 설정

스틱에 사용되는 ESP32-S3-MINI-1-N8에는 위 이미지의 설정을 사용합니다.




STEP 8. PC 애플리케이션 설정(선택 사항)


Space Drums의 PC 버전은 오디오 엔진과 사용자 인터페이스에 Python을 사용합니다. 내 Github의 Android 앱을 사용하는 경우 이 단계를 건너뛰세요.

먼저 필요한 Python 패키지를 설치합니다:

pip install -r requirements.txt

그런 다음 애플리케이션을 시작합니다:

python audio_hub.py

실행하기 전에 audio_hub.py 상단 근처의 COM_PORT를 다음에 해당하는 시리얼 포트로 설정합니다: 허브드럼스틱 어느 쪽도 아닌 허브의 시리얼 포트여야 합니다.

오디오 애플리케이션은 드럼 샘플이 같은 폴더에 있어야 한다고 가정합니다. 기본 샘플 이름은 다음과 같습니다:

crash.wav
snare.wav
tom1.wav
tom2.wav
ride.wav
hihat.wav
floor_tom.wav
kick.wav
hihat_pedal.wav

샘플이 없으면 애플리케이션은 충돌하는 대신 버즈음으로 대체합니다.

대신 Android를 사용하는 경우 제공된 SpaceDrums.apk를 PC 애플리케이션 대신 사용할 수 있습니다. 두 애플리케이션 모두 오디오 재생, 키트 UI 및 배터리 표시 기능을 수행합니다.




STEP 9. 보정 및 연주


보정 및 연주


보정 및 연주


하드웨어와 소프트웨어가 준비되었습니다. 드럼 연주를 시작하기 전에 보정 단계 몇 가지만 완료하면 됩니다.

스틱 보정하기

먼저 전원 버튼을 길게 눌러 두 드럼스틱을 모두 켭니다.

스틱의 전원이 켜지면 스네어를 배치하려는 위치를 향하게 하고 움직이지 않도록 잡습니다. 보정 과정에서는 이 방향을 가상 드럼 키트의 영점으로 사용합니다.

스틱은 짧은 안정화 및 보정 과정을 거칩니다. 보정이 실행되는 동안 스틱을 움직이지 마세요. 이 시간 동안 움직이면 보정 시간이 다시 시작되므로, 완료될 때까지 스틱을 그대로 잡고 있으면 됩니다.

보정이 완료되면 해당 위치가 연주 기준점이 됩니다.

보정 과정에서는 자이로 바이어스를 다시 측정하고 중력을 사용해 스틱의 자세를 설정합니다. 사용자가 가리키는 방향을 기준으로 피치와 요의 영점을 설정하므로, 방 안에서 어느 방향을 향하고 있든 작동합니다.

최초 1회 자력계 보정

새 펌웨어를 설치한 후에는 스틱마다 한 번씩 별도의 자력계 보정을 수행해야 합니다.

이 과정은 배터리, 햅틱 액추에이터 및 PCB를 포함해 스틱 자체의 구성 요소로 인해 발생하는 자기 왜곡을 보정합니다.

수행 방법:

  1. 스피커, 컴퓨터, 철제 가구 및 기타 자기 간섭원에서 멀리 이동합니다.
  2. 스틱의 시리얼 연결을 엽니다.
  3. magcal을 입력합니다. Enter 키를 누릅니다.
  4. 다음 18초 동안 스틱을 천천히 8자 모양으로 움직입니다.
  5. 보정 결과를 확인합니다.

보정에 실패한 데이터는 저장되지 않으므로, 실패한 시도가 이전의 정상적인 보정 데이터를 덮어쓰지 않습니다.

연주 중 재보정하기

장시간 연주하다 보면 가상 드럼 위치가 약간 이동한 것처럼 느껴질 수 있습니다.

그런 경우 스틱을 다시 스네어 위치를 향하게 하고 전원 버튼을 짧게 누르면 됩니다.

스틱은 동일한 짧은 영점 설정 과정을 다시 실행합니다. 보정이 완료되면 눈앞의 공간이 드럼 키트가 됩니다.




STEP 10. 조정 및 문제 해결


이제 에어 드러밍 스틱 한 쌍이 정상적으로 작동해야 합니다. 하지만 전체 시스템이 오픈 소스이므로 여기서 멈출 필요는 없습니다. 스틱의 조작감을 조정하거나, 드럼 배치를 변경하거나, 하드웨어와 소프트웨어 간의 통신을 자세히 살펴볼 수 있습니다.

연주 환경 미세 조정

스틱의 조작감에 영향을 주는 대부분의 매개변수는 stick_firmware.ino 상단 근처에 모여 있습니다.

예를 들어 TOP_ROW_PITCH, TOP_YAW_CRASH, TOP_YAW_RIDE 및 하단 행의 요 한계와 같은 매개변수를 사용해 가상 드럼의 경계를 조정할 수 있습니다. 이를 통해 각 드럼에 도달하기 위해 스틱을 얼마나 움직여야 하는지와 각 가상 연주 영역의 크기를 변경할 수 있습니다.

타격 감지 임계값도 조정할 수 있습니다:

  1. SWING_START_THRESHOLD는 스윙이 감지 대기 상태로 전환되기 위해 필요한 스윙의 세기를 제어합니다.
  2. HIT_DECEL_THRESHOLD는 타격을 등록하는 데 필요한 감속량을 제어합니다.

오작동으로 타격이 감지된다면 이러한 임계값을 높여 시스템의 민감도를 낮출 수 있습니다. 타격이 안정적으로 등록되지 않는다면 임계값을 낮춰 보세요.

방향 보정과 자이로 바이어스 학습, 페달 디바운스 및 페달 속도를 제어하는 매개변수도 있습니다.

레이턴시에 관한 참고 사항

시스템이 빠르게 반응한다고 느껴지는 이유 중 하나는 통신 경로를 가볍게 유지하기 때문입니다.

스틱은 소형 ESP-NOW 패킷을 허브로 전송합니다. 타격 패킷에는 이벤트 유형, 스틱 ID, 드럼 ID, 속도 및 배터리 정보가 포함됩니다. 그런 다음 허브는 이러한 이벤트를 오디오 애플리케이션용 간단한 시리얼 메시지로 변환합니다.

예를 들어 타격은 다음과 같이 표시됩니다:

H,<stick_id>,<drum_id>,<velocity>

페달 이벤트에는 P를 사용하고, 배터리 업데이트에는 B를 사용합니다.

PC 애플리케이션을 통해 연주하는 경우 일반적인 사용 중에는 CONSOLE_LOG를 비활성화해 두세요. 모든 타격을 터미널에 출력하면 Windows에서 측정 가능한 레이턴시가 추가됩니다.

문제 해결

스틱이 허브에 연결되지 않습니다

먼저 허브를 플래시했는지, 그리고 두 스틱의 hubAddress[]에 허브의 MAC 주소가 올바르게 입력되어 있는지 확인하세요. 또한 왼쪽 스틱과 오른쪽 스틱의 STICK_ID 값이 서로 다른지 확인하세요.

캘리브레이션이 계속 다시 시작됩니다

캘리브레이션 시간 동안 스틱을 움직이지 않은 상태로 유지해야 합니다. 움직이면 캘리브레이션 과정이 자동으로 다시 시작됩니다.

드럼 위치가 회전된 것처럼 느껴집니다

스틱을 원하는 스네어 위치를 향하도록 가리킨 다음 전원 버튼을 짧게 눌러 영점을 다시 설정하세요.

자력계 캘리브레이션에 실패합니다

스피커, 컴퓨터, 철제 가구 및 기타 자기 간섭원에서 떨어진 곳에서 일회성 magcal 절차를 수행하세요. 8자 동작 중에 스틱을 여러 방향으로 회전시키고 있는지 확인하세요.

페달이 반복적으로 작동합니다

허브는 페달 디바운스를 위해 소프트웨어 잠금 시간을 사용합니다. 기본 PEDAL_LOCKOUT_MS는 35 ms입니다. 한 번 눌렀을 때 반복 트리거가 발생하면 50 ms에 가깝게 높이되, 빠른 더블 베이스 연주를 위해 대략 75 ms 미만으로 유지하세요.




STEP 11. 내부 작동 원리


내부 작동 원리


이미 긴 Instrucctable에서 코드를 모두 설명하기에는 코드가 상당히 깁니다. 제 repo를 참고하고 Readme를 읽어 보세요. 많은 내용이 설명되어 있습니다.

간단히 개요를 설명하면 다음과 같습니다:

스틱은 오디오 샘플에 대해 아무것도 알 필요가 없습니다. 단순히 이벤트를 감지하고 어느 스틱이 어느 드럼을 어떤 속도로 쳤는지 보고합니다.

허브 역시 어떤 소리를 재생할지 결정하지 않습니다. 무선 이벤트를 수신하고, 페달을 읽고, 모든 정보를 애플리케이션으로 전달합니다.

이러한 분리 덕분에 프로젝트를 수정하기가 더 쉬워집니다. 현재 프로토콜은 이미 타격, 배터리 및 페달 이벤트를 구분하며, 애플리케이션에서 이러한 이벤트를 어떻게 표시하거나 소리로 재생할지 결정할 수 있습니다.




STEP 12. 트레이너 소프트웨어 설정


트레이너 소프트웨어 설정


트레이너 소프트웨어 설정


트레이너 소프트웨어 설정


필수 구성 요소 설치: Python 3.10 이상이 설치되어 있는지 확인하세요. 터미널 또는 명령 프롬프트를 열고 프로젝트 디렉터리로 이동한 다음 필요한 종속성을 설치합니다: pip install -r requirements.txt (또는 pygame-ce와 pyserial을 수동으로 설치하세요).

드럼 샘플 추가: 게임 디렉터리에 audio/라는 폴더를 만들고 표준 .wav 파일 9개를 넣으세요:

  1. crash.wav, snare.wav, tom1.wav, tom2.wav, ride.wav, floor_tom.wav, kick.wav, hihat_open.wav, hihat_closed.wav. 이 파일들은 모두 제 github repo에서 이용할 수 있습니다.
  2. 오디오 샘플이 누락된 경우에도 게임은 소프트 신스 버즈로 자연스럽게 대체하므로 계속 연주할 수 있습니다.

게임 실행: XIAO ESP32-S3 페달 허브를 USB로 연결하고 다음을 실행하세요: python -m spacedrums_trainer.

  1. 소프트웨어가 시리얼 포트를 자동으로 검색하고, 500,000 baud로 허브에 연결하며, 분리되면 자동으로 다시 연결합니다.
  2. 오프라인 테스트: 키보드 단축키를 사용하면 하드웨어 없이 테스트할 수 있습니다(드럼은 A~J, 킥은 Space, 하이햇 리프트는 Shift).

다음은 설치 및 시작 방법에 대한 안내입니다.




STEP 13. UI 이해하기


UI 이해하기


UI 이해하기


UI 이해하기


트레이너는 실제 드럼 키트의 구조를 기반으로 설계된 시각적 하이웨이를 사용합니다:

  1. 키트에 맞춘 레인: 현재 그루브에 필요한 드럼에 해당하는 레인만 나타나며, 허공에서 스윙하는 위치와 일치하도록 왼쪽에서 오른쪽으로 배치됩니다. 하단의 타깃 패드는 두 개의 세로 층으로 나뉩니다. 위쪽은 심벌과 탐, 아래쪽은 스네어와 플로어 탐에 해당합니다.
  2. 시각적 색상 규칙:
  3. 파란색 디스크: 다음으로 연주하세요: 왼쪽 스틱.
  4. 빨간색 디스크: 다음으로 연주하세요: 오른쪽 스틱.
  5. 단색 노란색 막대: 다음을 밟으세요: 킥 페달 오른발로.
  6. 점선 노란색 밴드(LIFT): 왼발을 들어 하이햇을 열고, 밴드가 지나가면 다시 발을 내리세요.
  7. 연결선: 동시에 연주해야 하는 노트를 연결합니다.
  8. 실시간 마이크로 타이밍 바: 하단의 가로 막대는 실제 타격이 약간 빠른지 또는 늦은지실시간으로 시각적 피드백을 제공합니다.




STEP 14. 게임 모드 마스터하기


게임 모드 마스터하기


모드 1: 연주 배우기

  1. 완전 초보자를 위한 20단계의 단계별 커리큘럼입니다.
  2. 레벨 1("첫 박자")에서 느린 42 BPM으로 시작해, 연주하면서 목표 템포까지 부드럽게 빨라집니다.
  3. 한 팔다리의 4분음표부터 3팔다리 협응, 필인, 풀 키트 패턴까지 단계적으로 발전합니다.

모드 2: 리듬 배우기

  1. 독립적인 그루브(Rock, Disco, Half Time, Shuffle, Funk, Tribal Toms, Stadium Anthem)가 포함된 연습 라이브러리입니다.
  2. Space를 눌러 오디오 미리듣기를 재생하세요. 선택한 후 슬라이더로 편안한 시작 BPM을 선택합니다. 연주하면서 그루브의 속도가 동적으로 올라가 자신감을 키울 수 있습니다.

모드 3: 커스텀 리듬(출시 예정)

  1. 메인 대시보드에서 커스텀 .mid 드럼 트랙을 가져오고, 어떤 곡이든 낙하 타일 레벨을 자동으로 생성할 수 있도록 배치되어 있습니다.

점수 및 타이밍 보정

  1. 채점 시스템: 각 타격은 노트가 도달하는 시점과의 타이밍을 기준으로 판정됩니다: Perfect (100점), Good (75점), OK (45점), 또는 Miss (0점)입니다. 인접한 노트가 절대 겹치지 않도록 타이밍 판정 구간은 템포에 따라 동적으로 조정됩니다.
  2. 플레이 결과: 한 곡을 완료하면 XP, 정확도 별(65%에서 별 1개, 80%에서 별 2개, 92%에서 별 3개), 그리고 타이밍 진단(예: "24ms 늦게 연주하고 있습니다")이 제공되어 스윙을 정확히 어떻게 보정해야 하는지 알려 줍니다.
  3. 타이밍 보정: 직렬 처리나 디스플레이 지연으로 타격이 계속 어긋나는 것처럼 느껴진다면 ~/.config/spacedrums/settings.json을 열고 input_offset_ms를 조정하여 시각적 목표선과 실제 움직임이 정확히 일치하도록 하세요. 하지만 아마 이 작업까지 할 필요는 없을 것입니다.





STEP 15. 마무리하며


마무리하며


마무리하며


마무리하며


Space Drums 2.0을 지금의 단계까지 만드는 데 거의 1년이 걸렸습니다. 이런 것이 가능한지 조사하는 일부터 첫 버전 제작, PCB 설계 학습, 전자 장치와 펌웨어 개발, 설계 반복 작업까지 진행했습니다.

상용 제품으로 만들 생각으로 제작한 것은 아닙니다. 그저 궁금증을 해소하고 싶어서 시작한 일이었습니다.

그리고 그것이 궁극적으로 제가 이 프로젝트를 오픈 소스로 공개하는 이유입니다.

전체 프로젝트를 공개했으니 직접 버전을 만들거나, 트래킹을 수정·개선하거나, 펌웨어를 실험하거나, 자신만의 케이스를 설계하거나, 완전히 다른 무언가의 출발점으로 사용할 수 있습니다.

무언가를 만들 줄 알아야만 시도할 수 있는 것은 아닙니다.

현재 자신의 능력보다 조금 벅차 보이는 무언가를 만들 생각을 하고 있었다면, 한번 도전해 보세요.

호기심을 잃지 말고, 계속 실험하며, 만드는 과정을 즐기세요.


원문: https://www.instructables.com/Space-Drums-20-Smart-Air-Drum-Sticks-That-Gamify-Y/

좋아요 0
게시판

회사명 공방유니언 주소 각 공방 주소 참조
사업자 등록번호 0000 대표 공방유니언 전화 019-60105846 팩스 0000 이메일 gongbangunion@gmail.com
통신판매업신고번호 0000 개인정보관리책임자 공방유니언
Copyright © 2017 공방유니언. All Rights Reserved.