Rockband Drums (Harmonix)
Jo tinc el Wii kit, no el XBox o el PS3 kits. I tinc el USB, no el wireless ni el wireless-usb. El dispostiu es reconeix automàticament:
$ lsusb Bus 002 Device 009: ID 1bad:0005 Harmonix Music Bus 002 Device 003: ID 045e:0084 Microsoft Corp. Basic Optical Mouse Bus 002 Device 002: ID 8087:0020 Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0c45:6406 Microdia Bus 001 Device 002: ID 8087:0020 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ sudo lsusb -v -s 002:009
Bus 002 Device 009: ID 1bad:0005 Harmonix Music
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x1bad Harmonix Music
idProduct 0x0005
bcdDevice 10.00
iManufacturer 1 Licensed by Nintendo of America
iProduct 2 Harmonix Drum Controller for Nintendo Wii
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 41
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 137
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
Device Status: 0x0000
(Bus Powered)
Quan connecto el dispositiu:
$ dmesg ... [ 17.729503] Synaptics Touchpad, model: 1, fw: 7.2, id: 0x1e0b1, caps: 0xd04731/0xa40000 [ 17.865698] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input13 [ 18.169056] ppdev: user-space parallel port driver [ 27.519145] hda-intel: IRQ timing workaround is activated for card #1. Suggest a bigger bdl_pos_adj. [ 27.622958] eth1: no IPv6 routers present [ 34.728852] usb 2-1.1: new full speed USB device using ehci_hcd and address 4 [ 34.811826] input: Licensed by Nintendo of America Harmonix Drum Controller for Nintendo Wii as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/input/input14 [ 34.812029] generic-usb 0003:1BAD:0005.0002: input,hidraw1: USB HID v1.11 Gamepad [Licensed by Nintendo of America Harmonix Drum Controller for Nintendo Wii] on usb-0000:00:1d.0-1.1/input0
He trobat dues solucions per afegir el dispositiu RockBand (Harmonix) Drums al mòdul xpad del kernel de Linux:
També:
El codi rbd2midi.cpp està malament en els include, i per tal que compili correctament he de posar:
#include <alsa/asoundlib.h> #include "stdio.h" #include <stdlib.h> #include <linux/joystick.h>
Ara sí:
$ g++ -o rbd2midi_test rbd2midi.cpp -lasound $ ./rbd2midi_test Opened "Rock Band Drums" [129:0]
També:
el codi usbpad.cpp funciona correctament, i puc veure com responen els botons del joystick, els botons normals, els pad (que representen un sol botó?), i el pedal. Per tant, és una solució aproximada.
Una altra aproximació:
- http://randommatt.wordpress.com/2012/02/12/rockband-drumkit-midi-driver-for-linux-with-cymbal-support-driver-midi-per-batteria-rockband-con-supporto-per-i-piatti/
- http://sourceforge.net/projects/rbdrum2midi/
This userland program uses libusb to gain access to the velocity sensitive data in the rockband 3 wireless usb prodrum controller (with cymbals) and Guitar Hero drumkit and use it as an ALSA MIDI controller. It has a low latency setup so that it can give a fairly good drumming experience. Nota: jo no tinc el wireless usb, sinó el USB.
Descarrego rbdrum2midi-0.1.tar.gz.
El projecte compila bé, però no troba el dispositiu. De fet, aquest projecte està fet per si tens cymbals (RockBand 3), i jo no en tinc (el meu deu ser RockBand 2), i per tant m'he de mirar el projecte en el que aquest s'inspira.
Descarrego i compilo rockband2-drum-0.1a.tgz.
$ make $ cat /proc/usb/devices $ ls -l /dev/usbdev* $ ./rbdrum2 & $ sleep 2 $ timidity -iA -B2,8 -Os -EFreverb=0 & $ sleep 2 $ aconnect -lio $ aconnect 128:0 129:0
libusb couldn't open usb device permission denied
Per evitar problemes de permisos amb el dispositiu USB, creem el fitxer /etc/udev/rules.d/55-rockband-usb.rules:
SYSFS{idProduct}=="0005",SYSFS{idVendor}=="1bad",MODE="666",OWNER="joan",GROUP="joan"
ja no cal executar-lo com a sudo
Projecte. Versió final
S'ha fet dues versions del projecte: una per a ALSA i una per a JACK. Per arrencar el projecte el millor és utilitzar el script, que arrenca JACK (per a la versió de JACK), arrenca Hydrogen amb la cançó que ja carrega les llibreries (ALSA o JACK), arrenca el meu client arbdrum o jrbdrum, i fa les connexions.
creat per Joan Quintana Compte, octubre 2012