[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[netbsd,07478] SD-90 USB MIDI support
- To: netbsd@xxxxxxxxxxxxx
- Subject: [netbsd,07478] SD-90 USB MIDI support
- From: kay@xxxxxxxxxxxx
- Date: Sun, 31 Mar 2002 14:02:32 +0900 (JST)
kayです。
最近 Roland の SC-8850 に続いて SD-90 を購入したので使えるようにして
みました。
#なんかいい、MIDI のツール類ないですかねぇ?SONAR はあるんですが、
#NetBSD で使えるツールが欲しいので、、、、
あと、umidi.c におそらく BUG が一個と、UMIDI_DEBUG を定義するとコン
パイルできないという問題があるので、とりあえずコンパイル可能にするため
の修正も入ってます。
とりあえず、SC-8850 も SD-90 も複数のパートを持っているわけですが、
とりあえず使えるのは一つだけです。
複数使えるようにすると最初の1回はちゃんと動く(みたいな)んですが、二
回目以降が正しく働きません。ただ、DEBUG オプションをつけたカーネルで
midi_debug, umidi_debug, usb_debug などを変更してデバッグメッセージを
大量に出すようにすると何度か動くこともありますので、タイミング的な問題
なのかも知れません。
一応、SD-90 の usbctl の結果を載せておきます。SC-8850 と比べてインター
フェースが2つほど増えていて、USB の入出力機能もあるようなので、uaudio
で入出力できるようにできるのではないかと思いますが、どうやったらいいか
調べてないので手を出していません。
#uaudio_quirks.c とかつくって誤魔化す必要があるのかな?
#友人談「なんでいまさら MIDI なんかにはまる?」ごもっとも、、、、
DEVICE addr 5
DEVICE descriptor:
bLength=18 bDescriptorType=device(1) bcdUSB=1.10 bDeviceClass=255 bDeviceSubClass=255
bDeviceProtocol=255 bMaxPacketSize=8 idVendor=0x0582 idProduct=0x0016 bcdDevice=100
iManufacturer=1(Roland) iProduct=2(EDIROL SD-90) iSerialNumber=0() bNumConfigurations=1
CONFIGURATION descriptor 0:
bLength=9 bDescriptorType=config(2) wTotalLength=159 bNumInterface=3
bConfigurationValue=1 iConfiguration=0() bmAttributes=c0 bMaxPower=0 mA
INTERFACE descriptor 0:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=0 bAlternateSetting=0
bNumEndpoints=0 bInterfaceClass=255 bInterfaceSubClass=2
bInterfaceProtocol=0 iInterface=0()
INTERFACE descriptor 1:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=0 bAlternateSetting=1
bNumEndpoints=1 bInterfaceClass=255 bInterfaceSubClass=2
bInterfaceProtocol=0 iInterface=0()
Unknown descriptor (class 255/2):
bLength=7 bDescriptorType=36 bDescriptorSubtype=1 ...
Unknown descriptor (class 255/2):
bLength=11 bDescriptorType=36 bDescriptorSubtype=2 ...
ENDPOINT descriptor:
bLength=9 bDescriptorType=endpoint(5) bEndpointAddress=1-out
bmAttributes=isochronous wMaxPacketSize=288 bInterval=1
Unknown descriptor (class 255/2):
bLength=7 bDescriptorType=37 bDescriptorSubtype=1 ...
INTERFACE descriptor 2:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=1 bAlternateSetting=0
bNumEndpoints=0 bInterfaceClass=255 bInterfaceSubClass=2
bInterfaceProtocol=0 iInterface=0()
INTERFACE descriptor 3:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=1 bAlternateSetting=1
bNumEndpoints=1 bInterfaceClass=255 bInterfaceSubClass=2
bInterfaceProtocol=0 iInterface=0()
Unknown descriptor (class 255/2):
bLength=7 bDescriptorType=36 bDescriptorSubtype=1 ...
Unknown descriptor (class 255/2):
bLength=11 bDescriptorType=36 bDescriptorSubtype=2 ...
ENDPOINT descriptor:
bLength=9 bDescriptorType=endpoint(5) bEndpointAddress=1-in
bmAttributes=isochronous wMaxPacketSize=288 bInterval=1
Unknown descriptor (class 255/2):
bLength=7 bDescriptorType=37 bDescriptorSubtype=1 ...
INTERFACE descriptor 4:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=2 bAlternateSetting=0
bNumEndpoints=2 bInterfaceClass=255 bInterfaceSubClass=255
bInterfaceProtocol=0 iInterface=0()
ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=2-out
bmAttributes=bulk wMaxPacketSize=32 bInterval=1
ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=2-in
bmAttributes=bulk wMaxPacketSize=32 bInterval=1
INTERFACE descriptor 5:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=2 bAlternateSetting=1
bNumEndpoints=2 bInterfaceClass=255 bInterfaceSubClass=255
bInterfaceProtocol=0 iInterface=0()
ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=2-out
bmAttributes=bulk wMaxPacketSize=32 bInterval=1
ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=2-in
bmAttributes=interrupt wMaxPacketSize=32 bInterval=1
current configuration 1
----------
Index: umidi.c
===================================================================
RCS file: /export/home3/NetBSD-CVS/syssrc/sys/dev/usb/umidi.c,v
retrieving revision 1.14
diff -u -r1.14 umidi.c
--- umidi.c 2002/03/08 17:24:06 1.14
+++ umidi.c 2002/03/31 04:28:17
@@ -812,7 +812,7 @@
{
if ((mididev->flags&FWRITE) && mididev->out_jack)
close_out_jack(mididev->out_jack);
- if ((mididev->flags&FWRITE) && mididev->in_jack)
+ if ((mididev->flags&FREAD) && mididev->in_jack)
close_in_jack(mididev->in_jack);
if (mididev->out_jack)
@@ -1073,8 +1073,8 @@
static void
dump_jack(struct umidi_jack *jack)
{
- DPRINTFN(10, ("\t\t\tep=%p, mididev=%p\n",
- jack->endpoint, jack->mididev));
+ DPRINTFN(10, ("\t\t\tep=%p\n",
+ jack->endpoint));
}
#endif /* UMIDI_DEBUG */
@@ -1241,7 +1241,7 @@
}
if (!jack->binded || !jack->opened)
return;
- DPR_PACKET(in, ep->sc, &jack->buffer);
+ DPR_PACKET(in, ep->sc, &jack->packet);
if (jack->u.in.intr) {
for (i=0; i<len; i++) {
(*jack->u.in.intr)(jack->arg, ep->buffer[i+1]);
Index: umidi_quirks.c
===================================================================
RCS file: /export/home3/NetBSD-CVS/syssrc/sys/dev/usb/umidi_quirks.c,v
retrieving revision 1.3
diff -u -r1.3 umidi_quirks.c
--- umidi_quirks.c 2001/11/13 06:24:56 1.3
+++ umidi_quirks.c 2002/03/31 04:28:17
@@ -108,6 +108,36 @@
/*
+ * ROLAND SD-90
+ */
+UMQ_FIXED_EP_DEF(ROLAND, ROLAND_SD90, 2, 1, 1) = {
+ /* out */
+ { 0, 1 },
+ /* in */
+ { 1, 1 }
+};
+
+UMQ_DEF(ROLAND, ROLAND_SD90, 2) = {
+ UMQ_FIXED_EP_REG(ROLAND, ROLAND_SD90, 2),
+ UMQ_TERMINATOR
+};
+
+/*
+ * ROLAND SC-8850
+ */
+UMQ_FIXED_EP_DEF(ROLAND, ROLAND_SC8850, 2, 1, 1) = {
+ /* out */
+ { 0, 1 },
+ /* in */
+ { 1, 1 }
+};
+
+UMQ_DEF(ROLAND, ROLAND_SC8850, 2) = {
+ UMQ_FIXED_EP_REG(ROLAND, ROLAND_SC8850, 2),
+ UMQ_TERMINATOR
+};
+
+/*
* ROLAND UM-1
*/
UMQ_FIXED_EP_DEF(ROLAND, ROLAND_UM1, 2, 1, 1) = {
@@ -146,6 +176,8 @@
struct umidi_quirk umidi_quirklist[] = {
UMQ_REG(YAMAHA, YAMAHA_UX256, ANYIFACE),
UMQ_REG(YAMAHA, ANYPRODUCT, ANYIFACE),
+ UMQ_REG(ROLAND, ROLAND_SD90, 2),
+ UMQ_REG(ROLAND, ROLAND_SC8850, 2),
UMQ_REG(ROLAND, ROLAND_UM1, 2),
UMQ_REG(ROLAND, ROLAND_UM880N, 0),
UMQ_TERMINATOR
Index: usbdevs
===================================================================
RCS file: /export/home3/NetBSD-CVS/syssrc/sys/dev/usb/usbdevs,v
retrieving revision 1.239
diff -u -r1.239 usbdevs
--- usbdevs 2002/03/28 20:42:08 1.239
+++ usbdevs 2002/03/31 04:28:17
@@ -1030,9 +1030,11 @@
product RAINBOW IKEY2000 0x1200 i-Key 2000
/* Roland products */
+product ROLAND SC8850 0x0003 EDIROL SC-8850 MIDI
product ROLAND UM1 0x0009 UM-1 MIDI I/F
product ROLAND UM880N 0x0014 EDIROL UM-880 MIDI I/F (native)
product ROLAND UM880G 0x0015 EDIROL UM-880 MIDI I/F (generic)
+product ROLAND SD90 0x0016 EDIROL SD-90 MIDI
/* Rockfire products */
product ROCKFIRE GAMEPAD 0x2033 gamepad 203USB
--
吉田恵介@川崎市高津区千年 (kay@xxxxxxxxxxxx)
ホームページ http://www.kaynet.or.jp/~kay/