Hey @ all,
ich hab soeben die BassMidi.dll runtergeladen. Gibt es dazu eigentlich schon eine BassMidi.au3? Ich habe in Google dazu nichts gefunden.
mfG
Developer30
Hey @ all,
ich hab soeben die BassMidi.dll runtergeladen. Gibt es dazu eigentlich schon eine BassMidi.au3? Ich habe in Google dazu nichts gefunden.
mfG
Developer30
Nein, die gibt es noch nicht...
Falls du Lust und Laune hast, könntest du ja damit anfangen
mfgE
probieren kann man es ja mal^^. nur erfolg ist bei mir nicht garantiert xD
Nimm am besten eine der mitgelieferten Quellcodes (z.b. BassMidi.bas im Verzeichnis VB) und übertrage Zeile für Zeile in AutoIt Code
Dann hast du mal alle Konstanten und Funktionsheader fertig.
Für die Funktionen selber halte dich an eine der fertigen UDF´s, z.B.: BassMix.au3
Da kannst du auch vergleichen, wie die Funktionen aus BassMix.chm übersetzt wurden und es dann nachmachen...
Ist zwar etwas Zeitaufwändig, aber sollte nicht allzu schwierig sein...
danke für die Tipps
ich werde es mal probieren
Sollte so aussehen:
[autoit]Global Const $BASS_MIDI_FONT = "long font; long preset; long bank"
[/autoit]ich habe eine Frage bezüglich Pointern. Also ich habe hier ein Auszug aus der BassMidi.chm:
Zitat von BassMidi.chmDWORD BASS_MIDI_StreamGetEvents(
HSTREAM handle,
DWORD track,
DWORD filter,
BASS_MIDI_EVENT *events
);
BASS_MIDI_EVENT sieht in VB so aus:
und in C so:
jetzt hab ich das in AutoIt so zusammengefasst:
Global Const $BASS_MIDI_EVENT = "long event_; long param; long chan; long tick; long pos"
[/autoit]
Die Beschreibung von events lautet: Pointer to an array to receive the events... NULL = get the number of events without getting the events themselves.
Wie komme ich nun in AutoIt auf den Richtigen Wert für >> BASS_MIDI_EVENT *events << heraus? Wie komme ich auf events und wie muss ich BASS_MIDI_EVENT auf events anwenden?
mfG
Developer30
Nicht getestet, aber ich vermute, daß es so funktionieren sollte:
[autoit]Func _BASS_MIDI_StreamGetEvents($handle, $track, $filter)
Local $BASS_ret_ = DllCall($_ghBassMidiDll, "dword", "BASS_MIDI_StreamGetEvents", "dword", $handle, "dword", $track, "dword", $filter, "ptr", 0)
If @error Then Return SetError(1, 1, 0)
If $BASS_ret_[0] = $BASS_DWORD_ERR Then Return SetError(_BASS_ErrorGetCode(), 0, 0)
Local $iCnt = $BASS_ret_[0]
Local $tEvents = DllStructCreate("DWORD event[" & $iCnt & "]; DWORD param[" & $iCnt & "]; DWORD chan[" & $iCnt & "]; DWORD tick[" & $iCnt & "]; DWORD pos[" & $iCnt & "];")
$BASS_ret_ = DllCall($_ghBassMidiDll, "dword", "BASS_MIDI_StreamGetEvents", "dword", $handle, "dword", $track, "dword", $filter, "ptr", DllStructGetPtr($tEvents))
If @error Then Return SetError(1, 1, 0)
If $BASS_ret_[0] = $BASS_DWORD_ERR Then Return SetError(_BASS_ErrorGetCode(), 0, 0)
Local $aReturn[$iCnt + 1][5]
$aReturn[0][0] = $iCnt
For $i = 1 To $iCnt
$aReturn[$i][0] = DllStructGetData($tEvents, "event", $i)
$aReturn[$i][1] = DllStructGetData($tEvents, "param", $i)
$aReturn[$i][2] = DllStructGetData($tEvents, "chan", $i)
$aReturn[$i][3] = DllStructGetData($tEvents, "tick", $i)
$aReturn[$i][4] = DllStructGetData($tEvents, "pos", $i)
Next
Return $aReturn
EndFunc
mfgE