Index: trunk/ab5.0/ablib/src/Classes/ActiveBasic/Windows/MM/Joystick.ab
===================================================================
--- trunk/ab5.0/ablib/src/Classes/ActiveBasic/Windows/MM/Joystick.ab	(revision 592)
+++ trunk/ab5.0/ablib/src/Classes/ActiveBasic/Windows/MM/Joystick.ab	(revision 594)
@@ -6,15 +6,24 @@
 Namespace MM
 
-
+'ジョイスティックの構成を表す列挙体
 Enum JoyCapability
+	'ジョイスティックはZ軸情報を所有
 	HasZ = &H0001
+	'ジョイスティックはR軸情報を所有
 	HasR = &H0002
+	'ジョイスティックはU軸情報を所有
 	HasU = &H0004
+	'ジョイスティックはV軸情報を所有
 	HasV = &H0008
+	'ジョイスティックはPoint of View情報を所有
 	HasPointOfView = &H0010
+	'ジョイスティックは4方向Point of Viewサポート
 	PointOfView4Direction = &H0020
+	'ジョイスティックは連続した角度のPoint of Viewをサポート
 	PointOfViewContinuous = &H0040
 End Enum
 
+
+'ジョイスティックの性能を取得するためのJOYCAPS構造体のラップクラス
 Class JoyCaps
 	caps As JOYCAPS
@@ -25,74 +34,121 @@
 	End Sub
 
-Public
+Public 'Property
+	'製造業者IDの取得
 	Function ManufacturerID () As Word
 		Return This.caps.wMid
 	End Function
+
+	'製品IDの取得
 	Function ProductID () As Word
 		Return This.caps.wPid
 	End Function
+
+	'製品名の取得
 	Function ProductName () As String
 		Return New System.String(This.caps.szPname As LPTSTR)
 	End Function
+
+	'X軸の最小値の取得
 	Function MinimumX () As DWord
 		Return This.caps.wXmin
 	End Function
+
+	'X軸の最大値の取得
 	Function MaximumX () As DWord
 		Return This.caps.wXmax
 	End Function
+
+	'Y軸の最小値の取得
 	Function MinimumY () As DWord
 		Return This.caps.wYmin
 	End Function
+
+	'Y軸の最大値の取得
 	Function MaximumY () As DWord
 		Return This.caps.wYmax
 	End Function
+
+	'Z軸の最小値の取得
 	Function MinimumZ () As DWord
 		Return This.caps.wZmin
 	End Function
+
+	'Z軸の最大値の取得
 	Function MaximumZ () As DWord
 		Return This.caps.wZmax
 	End Function
+
+	'
 	Function NumberOfButtons () As DWord
 		Return This.caps.wNumButtons
 	End Function
-	Function MinimumMessagePeriod () As DWord
+
+	'キャプチャ時のメッセージ送信間隔の最小値の取得
+	Function MinimumPeriod () As DWord
 		Return This.caps.wPeriodMin
 	End Function
-	Function MaximumMessagePeriod () As DWord
+
+	'キャプチャ時のメッセージ送信間隔の最大値の取得
+	Function MaximumPeriod () As DWord
 		Return This.caps.wPeriodMax
 	End Function
+
+	'4軸目であるラダー(R軸)の最小値の取得
 	Function MinimumR () As DWord
 		Return This.caps.wRmin
 	End Function
+
+	'4軸目であるラダー(R軸)の最大値の取得
 	Function MaximumR () As DWord
 		Return This.caps.wRmax
 	End Function
+
+	'5軸目であるU軸の最小値の取得
 	Function MinimumU () As DWord
 		Return This.caps.wUmin
 	End Function
+
+	'5軸目であるU軸の最大値の取得
 	Function MaximumU () As DWord
 		Return This.caps.wUmax
 	End Function
+
+	'6軸目であるV軸の最小値の取得
 	Function MinimumV () As DWord
 		Return This.caps.wVmin
 	End Function
+
+	'6軸目であるV軸の最大値の取得
 	Function MaximumV () As DWord
 		Return This.caps.wVmax
 	End Function
+
+	'ジョイスティックの構成を取得
 	Function Capabilities () As JoyCapability
 		Return This.caps.wCaps As JoyCapability
 	End Function
-	Function NumberOfAxesSupported () As DWord
+
+	'サポートしている動きの軸の数を取得
+	Function NumberOfSupportedAxes () As DWord
 		Return This.caps.wMaxAxes
 	End Function
-	Function NumberOfAxesUsed () As DWord
+
+	'実際に使用している動きの軸の数を取得
+	Function NumberOfUsedAxes () As DWord
 		Return This.caps.wNumAxes
 	End Function
-	Function NumberOfButtonsSupported () As DWord
+
+	'サポートしているボタン数を取得
+	Function NumberOfSupportedButtons () As DWord
 		Return This.caps.wMaxButtons
 	End Function
+
+	'登録キーを文字列の取得
 	Function RegistryKey () As String
 		Return New System.String(This.caps.szRegKey As LPTSTR)
 	End Function
+
+	'OEMジョイスティックドライバを特定する文字列の取得
 	Function OEM_VxD () As String
 		Return New System.String(This.caps.szOEMVxD As LPTSTR)
@@ -100,4 +156,6 @@
 End Class
 
+
+'ジョイスティックのボタンの状態を取得するためのクラス
 Class JoyButtons
 	dwButtons As DWord
@@ -108,5 +166,6 @@
 	End Sub
 
-Public
+Public 'Property
+	'各ボタンの状態を取得する
 	Function Button1 () As Boolean
 		Return This.Button( 1 )
@@ -206,17 +265,25 @@
 	End Function
 
-Public
+Public 'Method
+	'指定した番号のボタンの状態を取得
 	Function Button ( n As DWord ) As Boolean
 		Return (1<<(n-1) And This.dwButtons) <> 0
 	End Function
 
-Public
+Public 'Operator
+	'DWord値へ変換
 	Function Operator () As DWord
 		Return This.dwButtons
 	End Function
 
+	'DWord値と比較
 	Function Operator== (dw As DWord) As Boolean
 		Return This.dwButtons = dw
 	End Function
+	Function Operator<> (dw As DWord) As Boolean
+		Return This.dwButtons <> dw
+	End Function
+
+	'DWord値とAnd演算
 	Function Operator And (dw As DWord) As Boolean
 		Return (This.dwButtons And dw) <> 0
@@ -225,68 +292,105 @@
 End Class
 
+
+'PointOfView値を格納するクラス
 Class JoyPointOfView
-	dwPOV As DWord
+	pov As DWord
 
 Protected
 	Sub _Initialize ( dw As DWord )
-		If LOWORD(dw) = &HFFFF Then dw = -1 
-		This.dwPOV = dw
-	End Sub
-
-Public
+		If LOWORD(dw) = &HFFFF Then dw = (-1) As DWord
+		This.pov = dw
+	End Sub
+
+Public 'Static Constant
+	'中心
 	Static Const Centered = (-1) As DWord
+	'前方
 	Static Const Forward = 0 As DWord
+	'右前方
 	Static Const ForwardAndRight = 4500 As DWord
+	'右
 	Static Const Right = 9000 As DWord
+	'右後方
 	Static Const BackwardAndRight = 13500 As DWord
+	'後方
 	Static Const Backward = 18000 As DWord
+	'左後方
 	Static Const BackwardAndLeft = 22500 As DWord
+	'左
 	Static Const Left = 27000 As DWord
+	'左前方
 	Static Const ForwardAndLeft = 31500 As DWord
 
-Public
+Public 'Proparty
+	Function IsCentered() As Boolean
+		Return This.pov <> Centered
+	End Function
+	Function IsForward() As Boolean
+		Return This.pov <> Forward
+	End Function
+	Function IsRight() As Boolean
+		Return This.pov <> Right
+	End Function
+	Function IsBackward() As Boolean
+		Return This.pov <> Backward
+	End Function
+	Function IsLeft() As Boolean
+		Return This.pov <> Left
+	End Function
+
+Public 'Method
+	'角度に変換
+	Function ToDegrees() As Double
+		Return (This.pov / 100)
+	End Function
+
+
+Public 'Operator
+	'DWord値へ変換
 	Function Operator () As DWord
-		Return This.dwPOV
-	End Function
-
-	Function Operator== (value As DWord) As Boolean
-		Return This.dwPOV = value
-	End Function
-	Function Operator<> ( value As DWord) As Boolean
-		Return This.dwPOV <> value
-	End Function
-	Function Operator<= ( value As DWord) As Boolean
-		Return This.dwPOV <= value
-	End Function
-	Function Operator>= ( value As DWord) As Boolean
-		Return This.dwPOV >= value
-	End Function
-	Function Operator< ( value As DWord) As Boolean
-		Return This.dwPOV < value
-	End Function
-	Function Operator> ( value As DWord) As Boolean
-		Return This.dwPOV > value
-	End Function
-
-	Function Operator== ( value As JoyPointOfView ) As Boolean
-		Return This = value As DWord
-	End Function
-	Function Operator<> ( value As JoyPointOfView ) As Boolean
-		Return This <> value As DWord
-	End Function
-	Function Operator<= ( value As JoyPointOfView ) As Boolean
-		Return This <= value As DWord
-	End Function
-	Function Operator>= ( value As JoyPointOfView ) As Boolean
-		Return This >= value As DWord
-	End Function
-	Function Operator< ( value As JoyPointOfView ) As Boolean
-		Return This < value As DWord
-	End Function
-	Function Operator> ( value As JoyPointOfView ) As Boolean
-		Return This > value As DWord
-	End Function
-End Class
-
+		Return This.pov
+	End Function
+
+	'DWord値と比較
+	Function Operator== (value As DWord ) As Boolean
+		Return This.pov = value
+	End Function
+	Function Operator<> ( value As DWord ) As Boolean
+		Return This.pov <> value
+	End Function
+	Function Operator<= ( value As DWord ) As Boolean
+		Return This.pov <= value
+	End Function
+	Function Operator>= ( value As DWord ) As Boolean
+		Return This.pov >= value
+	End Function
+	Function Operator< ( value As DWord ) As Boolean
+		Return This.pov < value
+	End Function
+	Function Operator> ( value As DWord ) As Boolean
+		Return This.pov > value
+	End Function
+
+	'DWord値と演算
+	Function Operator+ ( value As DWord ) As DWord
+		Return This.pov + value
+	End Function
+	Function Operator- ( value As DWord ) As DWord
+		Return This.pov - value
+	End Function
+	Function Operator* ( value As DWord ) As DWord
+		Return This.pov * value
+	End Function
+	Function Operator Mod ( value As DWord ) As DWord
+		Return This.pov Mod value
+	End Function
+	Function Operator / ( value As DWord ) As Double
+		Return This.pov / value
+	End Function
+End Class
+
+
+'ジョイスティックの情報を格納するJOYINFOEX構造体のラップクラス
 Class JoyInfo
 	info As JOYINFOEX
@@ -299,26 +403,41 @@
 	End Sub
 
-Public
+Public 'Property
+	'X軸の値を取得
 	Function X () As DWord
 		Return This.info.dwXpos
 	End Function
+
+	'Y軸の値を取得
 	Function Y () As DWord
 		Return This.info.dwYpos
 	End Function
+
+	'Z軸の値を取得
 	Function Z () As DWord
 		Return This.info.dwZpos
 	End Function
+
+	'ラダー(R軸)の値を取得
 	Function R () As DWord
 		Return This.info.dwRpos
 	End Function
+
+	'U軸の値を取得
 	Function U () As DWord
 		Return This.info.dwUpos
 	End Function
+
+	'V軸の値を取得
 	Function V () As DWord
 		Return This.info.dwVpos
 	End Function
+
+	'ボタンの状態を取得
 	Function Buttons () As JoyButtons
 		Return New Detail._System_JoyButtons(This.info.dwButtons)
 	End Function
+
+	'ボタンの状態を取得
 	Function ButtonNumber () As DWord
 		Return This.info.dwButtonNumber
@@ -329,5 +448,7 @@
 End Class
 
-Class Joystick
+
+'ジョイスティックを扱うためのクラス
+Class JoystickDevice
 	id As DWord
 
@@ -337,24 +458,32 @@
 	End Sub
 
-Public
+Public 'Property
+	'スティックの動きの閾値を設定
 	Sub Threshold ( value As DWord )
 		joySetThreshold(id,value)
 	End Sub
+
+	'スティックの動きの閾値を取得
 	Function Threshold () As DWord
-		joyGetThreshold(id,VarPtr(Threshold))
-	End Function
-
-Public
+		joyGetThreshold(id,Threshold)
+	End Function
+
+Public 'Method
+	'ジョイステックの性能を取得
 	Function GetCapabilities () As JoyCaps
 		Return New Detail._System_JoyCaps(This.id)
 	End Function
+
+	'ジョイステックの現在の状態を取得
 	Function GetInfo() As JoyInfo
 		Return New Detail._System_JoyInfo(This.id)
 	End Function
 
-Public
+	'キャプチャを開始
 	Sub SetCupture ( hwnd As HWND, period As DWord, changed As Boolean)
 		joySetCapture(hwnd,id,period,changed)
 	End Sub
+
+	'キャプチャを終了
 	Sub ReleaseCapture()
 		joyReleaseCapture(id)
@@ -362,12 +491,20 @@
 End Class
 
-Class Joysticks
-
-Public
+
+'ジョイスティックデバイスを取得するためのクラス
+Class Joystick
+Public 'Static Constant
+	Static Const Joystick1 = 0
+	Static Const Joystick2 = 1
+
+Public 'Static Property
+	'ドライバによってサポートされるジョイスティック数を取得
 	Static Function NumberOfDevices () As DWord
 		Return joyGetNumDevs()
 	End Function
+
+	'物理的に接続されたジョイスティック数を取得
 	Static Function NumberOfConnectedDevices () As DWord
-		Dim max = Joysticks.NumberOfDevices()
+		Dim max = NumberOfDevices()
 		Dim cnt=0 As DWord
 		Dim info As JOYINFO
@@ -379,15 +516,34 @@
 	End Function
 
-	Static Function GetJoysticks() As System.Collections.Generic.List<Joystick>
-		Dim list As System.Collections.Generic.List<Joystick>
+Public 'Static Method
+	'使用可能なジョイスティックIDを列挙したIListを取得
+	Static Function GetJoystickIDs() As System.Collections.Generic.IList<DWord>
+		Dim max = NumberOfDevices()
+		GetJoystickIDs = New System.Collections.Generic.List<DWord>
 		Dim cnt As DWord
-		For cnt=0 To NumberOfConnectedDevices() - 1
-			list.Add(Joysticks.GetJoystick(cnt))
+		Dim info As JOYINFO
+		For cnt=0 To max-1
+			If joyGetPos(cnt,info) = JOYERR_NOERROR Then
+				GetJoystickIDs.Add(cnt)
+			End If
 		Next
-		Return list
-	End Function
-
-	Static Function GetJoystick( id As DWord ) As Joystick
-		Return New Detail._System_Joystick(id)
+	End Function
+
+	'使用可能なジョイスティックデバイスを列挙したIListを取得
+	Static Function GetDevices() As System.Collections.Generic.IList<JoystickDevice>
+		Dim max = NumberOfDevices()
+		GetDevices = New System.Collections.Generic.List<JoystickDevice>
+		Dim cnt As DWord
+		Dim info As JOYINFO
+		For cnt=0 To max-1
+			If joyGetPos(cnt,info) = JOYERR_NOERROR Then
+				GetDevices.Add(GetDeviceFromID(cnt))
+			End If
+		Next
+	End Function
+
+	'ジョイスティックデバイスを取得
+	Static Function GetDeviceFromID( id As DWord ) As JoystickDevice
+		Return New Detail._System_JoystickDevice(id)
 	End Function
 
@@ -443,8 +599,8 @@
 End Class
 
-Class _System_Joystick
-	Inherits Joystick
+Class _System_JoystickDevice
+	Inherits JoystickDevice
 Public
-	Sub _System_Joystick ( id As DWord )
+	Sub _System_JoystickDevice ( id As DWord )
 		This._Initialize(id)
 	End Sub
Index: trunk/ab5.0/ablib/src/Classes/ActiveBasic/Windows/MM/MidiOut.ab
===================================================================
--- trunk/ab5.0/ablib/src/Classes/ActiveBasic/Windows/MM/MidiOut.ab	(revision 594)
+++ trunk/ab5.0/ablib/src/Classes/ActiveBasic/Windows/MM/MidiOut.ab	(revision 594)
@@ -0,0 +1,268 @@
+
+'#require <api_mmsys.sbp>
+
+Namespace ActiveBasic
+Namespace Windows
+Namespace MM
+
+'MIDI出力デバイスの種類を表す列挙子
+Enum MidiOutDeviceType
+	'デバイスはポート
+	HardwarePort = 1
+	'デバイスはシンセサイザ
+	Synthesizer = 2
+	'デバイスは方形波シンセサイザ
+	SquareWaveSynthesizer = 3
+	'デバイスはFMシンセサイザ
+	FrequencyModulationSynthesizer = 4
+	'デバイスはマッパー
+	Mapper = 5
+	'デバイスはハードウェアのウェーブテーブルシンセサイザ
+	HardwareWavetableSynthesizer = 6
+	'デバイスはソフトウェアシンセサイザ
+	SoftwareSynthesizer = 7
+End Enum
+
+
+'MIDI出力デバイスの持つ機能を表す列挙子
+Enum MidiDeviceFunction
+	'デバイスはモノラルの音量調節が可能
+	VolumeControl = &H0001
+	'デバイスはステレオの音量調節が可能
+	LRVolumeControl = &H0002
+	'デバイスはキャッシングが可能
+	PatchCaching = &H0004
+	'デバイスはmidiSteamOut関数を直接サポート
+	DirectSupportedMidiStreamOut = &H0008
+End Enum
+
+Class MidiOutCaps
+	caps As MIDIOUTCAPS
+
+Protected
+	Sub _Initialize ( id As DWord )
+		midiOutGetDevCaps(id,caps,SizeOf(MIDIOUTCAPS))
+	End Sub
+
+Public 'Property
+	'製造業者IDの取得
+	Function ManufacturerID () As Word
+		Return This.caps.wMid
+	End Function
+
+	'製品IDの取得
+	Function ProductID () As Word
+		Return This.caps.wPid
+	End Function
+
+	'デバイスドライバのバージョンの取得
+	Function DriverVersion () As DWord
+		Return This.caps.vDriverVersion
+	End Function
+
+	'デバイス名の取得
+	Function DeviceName () As String
+		Return New System.String(This.caps.szPname As LPTSTR)
+	End Function
+
+	'MIDI出力デバイスの種類を取得
+	Function DeviceType () As MidiOutDeviceType
+		Return This.caps.wTechnology As MidiOutDeviceType
+	End Function
+
+	'MIDI出力デバイスがサポートするボイス数を取得
+	Function NumberOfVoices () As Word
+		Return This.caps.wVoices
+	End Function
+
+	'MIDI出力デバイスが同時に演奏することができるノート数
+	Function NumberOfNotes () As Word
+		Return This.caps.wNotes
+	End Function
+
+/*	Function Channel() As Word
+		TODO
+		This.caps.wChannelMask
+	End Function*/
+
+	'デバイスが提供している機能を取得
+	Function SupportedFunctions () As MidiDeviceFunction
+		Return This.caps.dwSupport As MidiDeviceFunction
+	End Function
+
+End Class
+
+'MIDI出力デバイスを扱うためのクラス
+Class MidiOutDevice
+	id As DWord
+	handle As HMIDIOUT
+
+Protected
+	Sub _Initialize ( id As DWord )
+		This.id = id
+	End Sub
+	Function Handle () As HMIDIOUT
+		Return This.handle
+	End Function
+
+Public
+	Sub ~MidiOutDevice ()
+		This.Close()
+	End Sub
+
+Public 'Property
+	Function GetCapabilities () As MidiOutCaps
+		Return New Detail._System_MidiOutCaps(This.id)
+	End Function
+
+Public 'Method
+	'デバイスを閉じる
+	Sub Close ()
+		Dim ret = midiOutClose(InterlockedExchangePointer(ByVal VarPtr(This.handle) As VoidPtr, NULL))
+	End Sub
+
+	'デバイスのステレオ音量の左側の値を取得
+	Function GetLeftVolume() As Word
+		If This.handle=NULL Then Return 0
+		Dim volume As DWord
+		Dim ret = midiOutGetVolume(This.handle,volume)
+		Return LOWORD(volume)
+	End Function
+
+	'デバイスのステレオ音量の右側の値を取得
+	Function GetRightVolume() As Word
+		If This.handle=NULL Then Return 0
+		Dim volume As DWord
+		Dim ret = midiOutGetVolume(This.handle,volume)
+		Return HIWORD(volume)
+	End Function
+
+	'デバイスのモノラル音量を取得
+	Function GetVolume () As Word
+		If This.handle=NULL Then Return 0
+		Return This.GetLeftVolume()
+	End Function
+
+	'デバイスを開く
+	Sub Open ()
+		Dim ret = midiOutOpen(This.handle,This.id,0,0,CALLBACK_NULL)
+	End Sub
+
+	'コールバックにSystem.Threading.EventWaitHandleを使用してデバイスを開く
+	Sub Open ( callback As System.Threading.EventWaitHandle )
+		Dim ret = midiOutOpen(This.handle,This.id,callback.Handle() As DWORD_PTR,0,CALLBACK_FUNCTION)
+	End Sub
+
+	'コールバックに関数を指定してデバイスを開く
+	Sub Open ( callback As MIDICALLBACK )
+		Dim ret = midiOutOpen(This.handle,This.id,callback As DWORD_PTR,0,CALLBACK_FUNCTION)
+	End Sub
+
+	'コールバックにSystem.Threading.Threadを使用してデバイスを開く
+	Sub Open ( callback As System.Threading.Thread )
+		Dim ret = midiOutOpen(This.handle,This.id,callback.ThreadId() As DWORD_PTR,0,CALLBACK_THREAD)
+	End Sub
+
+	'コールバックにウィンドウハンドルを指定してデバイスを開く
+	Sub Open ( callback As HWND )
+		Dim ret = midiOutOpen(This.handle,This.id,callback As DWORD_PTR,0,CALLBACK_WINDOW)
+	End Sub
+
+	'デバイスの出力を全て停止
+	Sub Reset ()
+		Dim ret = midiOutReset(This.handle)
+	End Sub
+
+	'デバイスにショートメッセージを送信
+	Sub SendShortMsg ( msg As DWord )
+		If This.handle=NULL Then Exit Sub
+		Dim ret = midiOutShortMsg(This.handle,msg)
+	End Sub
+
+	'デバイスのステレオ音量の左側の値を設定
+	Sub SetLeftVolume ( volume As Word )
+		If This.handle=NULL Then Exit Sub
+		Dim ret = midiOutSetVolume(This.handle,MAKELONG(volume,This.GetRightVolume()))
+	End Sub
+
+	'デバイスのステレオ音量の右側の値を設定
+	Sub SetRightVolume ( volume As Word )
+		If This.handle=NULL Then Exit Sub
+		Dim ret = midiOutSetVolume(This.handle,MAKELONG(This.GetLeftVolume(),volume))
+	End Sub
+
+	'デバイスのモノラル音量を設定
+	Sub SetVolume ( volume As Word )
+		If This.handle=NULL Then Exit Sub
+		This.SetLeftVolume(volume)
+	End Sub
+
+End Class
+
+Class MidiOut
+Public
+	'MIDI出力デバイス数を取得
+	Static Function NumberOfDevices () As DWord
+		Return midiOutGetNumDevs()
+	End Function
+
+	'MIDIマッパーを取得
+	Static Function GetMIDIMapper () As MidiOutDevice
+		Return GetDeviceFromID(MIDI_MAPPER)
+	End Function
+
+	'MIDI出力デバイス名を全て取得
+	Static Function GetDeviceNames () As System.Collections.Generic.IList<String>
+		GetDeviceNames = New System.Collections.Generic.List<String>
+		Dim dev = GetDevices()
+		Dim d = Nothing As MidiOutDevice
+		Foreach d In dev
+			GetDeviceNames.Add(d.GetCapabilities().DeviceName())
+		Next
+	End Function
+
+	'MIDI出力デバイスを全て取得
+	Static Function GetDevices () As System.Collections.Generic.IList<MidiOutDevice>
+		GetDevices = New System.Collections.Generic.List<MidiOutDevice>
+		Dim num = NumberOfDevices
+		Dim cnt As DWord
+		For cnt=0 To num-1
+			GetDevices.Add(GetDeviceFromID(cnt))
+		Next
+	End Function
+
+	'IDを指定してMIDI出力デバイスを取得
+	Static Function GetDeviceFromID ( id As DWord ) As MidiOutDevice
+		Return New Detail._System_MidiOutDevice(id)
+	End Function
+End Class
+
+Namespace Detail
+Class _System_MidiOutCaps
+	Inherits MidiOutCaps
+Public
+	Sub _System_MidiOutCaps ( id As DWord )
+		This._Initialize(id)
+	End Sub
+
+	Override Function ToString () As String
+		Return "MidiOutCaps"
+	End Function
+End Class
+
+Class _System_MidiOutDevice
+	Inherits MidiOutDevice
+Public
+	Sub _System_MidiOutDevice ( id As DWord )
+		This._Initialize(id)
+	End Sub
+
+	Override Function ToString () As String
+		Return "MidiOutDevice"
+	End Function
+End Class
+End Namespace
+
+End Namespace
+End Namespace
+End Namespace
