GyuSpace
프로젝트 목록으로PROJECT

OpenCV 가상 드럼 패드

OpenCV와 MediaPiple를 활용하여 웹캠 앞에서 도구 없이 맨손으로 화면속 8개의 드럼 패드를 터치하여 연주할 수 있는 실시간 가상 드럼 머신

개발 기간
3일
2026.05.21 ~ 2026.05.23
사용 기술
4개
Python · OpenCV · MediaPipe · PyGame

사용 기술

  • Python
  • OpenCV
  • MediaPipe
  • PyGame

주요 기능 및 특징

  • 하이브리드 2중 타격 판정 (Dual-Mode Hitting):
    • 일반 타격 모드: 검지 손가락이 드럼 패드 원 밖에서 안으로 진입하는 순간 즉시 감지합니다.
    • Z축 찌르기 모드: 드럼 패드 영역 내에 손가락을 머무르게 한 상태에서 박자에 맞춰 카메라 방향으로 '쿡!' 찌르면, 화면상 검지 마디의 면적 변화율()을 순간적으로 계산하여 박자를 놓치지 않고 완벽하게 타격합니다. ΔSize
  • 레이턴시(지연 시간) 최소화: 오디오 출력을 담당하는 pygame.mixer 버퍼 사이즈를 512로 최적화하여 손을 뻗는 순간 밀림 없이 즉시 드럼 소리가 출력됩니다.
  • 유연한 창 모드 지원: 실행 시 기본 크기의 창으로 열리며, 우측 상단의 최대화 버튼을 누르면 모니터 해상도에 맞춰 캠 화면이 꽉 차는 전체화면(Full Screen) 연주를 지원합니다. (키보드 F 키로도 전체화면 토글이 가능합니다.)

기술 스택

  • Python
  • ovencv-python
  • mediapipe
  • pygame

파일 구조

프로젝트를 실행하기 전, 같은 폴더 내에 sounds라는 이름의 폴더를 생성하고 사용할 드럼 원샷 샘플 음원(.wav) 8개를 아래 이름에 맞춰 배치해야 합니다.

📁 프로젝트 폴더/
│   ├── drum.py
│   └── 📁 sounds/
│       ├── crash.wav    (크래쉬 심벌)
│       ├── ride.wav     (라이드 심벌)
│       ├── tom1.wav     (하이 톰톰)
│       ├── tom2.wav     (로우 톰톰)
│       ├── hihat.wav    (하이햇 심벌)
│       ├── snare.wav    (스네어 드럼)
│       ├── rimshot.wav  (림샷 효과음)
│       └── bass.wav     (베이스/킥 드럼)

설치 및 실행 방법

라이브러리 설치

터미널이나 명령 프롬프트(CMD)를 열고 아래 명령어를 입력하여 필수 패키지를 설치합니다.

pip install opencv-python mediapipe pygame numpy

프로젝트 실행

python drum.py

게임 조작 및 사용법

드럼 연주: 화면에 2x4 격자로 정렬된 8개의 원형 드럼 패드가 나타나면, 양손 검지 손가락 끝을 카메라에 비춰 조준선(크로스헤어)을 움직입니다.

타격 판정: 검지 끝 조준선을 드럼 원 안으로 툭 집어넣으면 해당 드럼의 고유 사운드가 터지며, 타격된 패드는 0.12초 동안 고유의 색상으로 꽉 채워집니다.

단축키 안내:

F : 화면 전체화면 / 일반창 모드 토글

Q : 프로그램 및 웹캠 즉시 종료

Github 링크

🔗 https://github.com/Gyulo94/virtual-drum