@@ -3,7 +3,8 @@ module PortMidi
33using PortMidi_jll
44export PortMidi_jll
55
6- using CEnum
6+ to_c_type (:: Type{<:AbstractString} ) = Cstring # or Ptr{Cchar}
7+ to_c_type (t:: Type{<:Union{AbstractArray,Ref}} ) = Ptr{eltype (t)}
78
89const PmQueue = Cvoid
910
2122
2223const PortMidiStream = Cvoid
2324
24- @cenum PmError:: Int32 begin
25+ @enum PmError:: Int32 begin
2526 pmNoError = 0
26- pmNoData = 0
27+ # pmNoData = 0
2728 pmGotData = 1
2829 pmHostError = - 10000
2930 pmInvalidDeviceId = - 9999
@@ -163,7 +164,7 @@ function Pm_WriteSysEx(stream, when, msg)
163164 ccall ((:Pm_WriteSysEx , libportmidi), PmError, (Ptr{PortMidiStream}, PmTimestamp, Ptr{Cuchar}), stream, when, msg)
164165end
165166
166- @cenum PtError:: Int32 begin
167+ @enum PtError:: Int32 begin
167168 ptNoError = 0
168169 ptHostError = - 10000
169170 ptAlreadyStarted = - 9999
@@ -196,10 +197,6 @@ function Pt_Sleep(duration)
196197 ccall ((:Pt_Sleep , libportmidi), Cvoid, (int32_t,), duration)
197198end
198199
199- const FALSE = 0
200-
201- const TRUE = 1
202-
203200const PM_DEFAULT_SYSEX_BUFFER_SIZE = 1024
204201
205202const PmStream = PortMidiStream
@@ -252,4 +249,19 @@ const PM_FILT_TUNE = 1 << 0x06
252249
253250const PM_FILT_SYSTEMCOMMON = ((PM_FILT_MTC | PM_FILT_SONG_POSITION) | PM_FILT_SONG_SELECT) | PM_FILT_TUNE
254251
252+ Pm_Message (status, data1, data2) = ((((data2) << 16 ) & 0xFF0000 ) | (((data1) << 8 ) & 0xFF00 ) | ((status) & 0xFF ))
253+ Pm_MessageStatus (msg) = ((msg) & 0xFF )
254+ Pm_MessageData1 (msg) = (((msg) >> 8 ) & 0xFF )
255+ Pm_MessageData2 (msg) = (((msg) >> 16 ) & 0xFF )
256+
257+ export Pm_Message, Pm_MessageStatus, Pm_MessageData1, Pm_MessageData2
258+
259+ # exports
260+ const PREFIXES = [" Pm" ]
261+ for name in names (@__MODULE__ ; all= true ), prefix in PREFIXES
262+ if startswith (string (name), prefix)
263+ @eval export $ name
264+ end
265+ end
266+
255267end # module
0 commit comments