MIDI SysEx Daten mit Fortschrittsanzeige senden ?

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Holger
Beiträge: 53
Registriert: 25.02.2005 21:17

MIDI SysEx Daten mit Fortschrittsanzeige senden ?

Beitrag von Holger »

Hallo,

gibt es eine Möglichkeit, die Anzahl der schon gesendeten oder noch zu sendenden SysEx Bytes zu ermitteln ?

Folgende Prozedur sendet den Inhalt des SysEx Puffers.
MIDI Device wurde schon vorher geöffnet, SysEx Puffer und Länge ist definiert und die Übertragung funktioniert - ich möchte aber zusätzlich ein Fortschrittsbalken:

Code: Alles auswählen

Procedure SysexUpdateStart()
SysexUpdate.MIDIHDR
SysexUpdate\lpData=*Sysex
SysexUpdate\dwBufferLength=SysExOSLength
SysexUpdate\dwBytesRecorded=SysExOSLength

If midiOutPrepareHeader_(hMidiOut,SysexUpdate,SizeOf(MIDIHDR))=#MMSYSERR_NOERROR
Debug "midiOutPrepareHeader"
EndIf
If midiOutLongMsg_(hMidiOut,SysexUpdate,SizeOf(MIDIHDR))=#MMSYSERR_NOERROR
Debug "midiOutLongMsg"
EndIf
While midiOutUnprepareHeader_(hMidiOut,SysexUpdate,SizeOf(MIDIHDR))=#MIDIERR_STILLPLAYING	 : Wend
Debug "midiOutUnprepareHeader"
Debug SysexUpdate\dwBytesRecorded
EndProcedure
Vielen Dank für Eure Hilfe
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Wie lang ist die SysEx-Message denn, dass du einen Fortschrittsbalken benötigst? :o
Naja...

Ich würde vorschlagen du startest direkt nach dem Senden einen Thread, der dir die "RecordedBytes" irgendwo ausgibt, wo du es willst.
Holger
Beiträge: 53
Registriert: 25.02.2005 21:17

Beitrag von Holger »

Ich habe einen Synthesizer gebaut, der einen Z180 besitzt.
Das Betriebssystem des Z180 möchte ich per SysEx aktualisieren.
Das OS hat max. 8kB und ein komplettes Backup des Soundspeichers
max. 2MB - bei 31250 Bits/s Übertragungsrate möchte ich schon gerne einen Fortschrittsbalken.

Wenn ich die dwBytesRecorded nach dem UnpreapareHeader ermittle,
müßte der Wert doch 0 sein? Aber vor und nach dem Senden wird immer die volle Länge des SysEx Puffers ausgegeben.
Antworten