From 90d5b8b4a064420d74678654e94ea4755b377f21 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 15 Dec 2005 00:57:02 +0000 Subject: checking in missing files on behalf of Miller (cleared it with him first). The files are from portmidi17nov04.zip svn path=/trunk/; revision=4216 --- pd/portmidi/pm_mac/pm_mac.pbproj/project.pbxproj | 1324 ++++++++++++++++++ pd/portmidi/pm_mac/pm_mac.pbproj/rbd.pbxuser | 1508 +++++++++++++++++++++ pd/portmidi/pm_mac/pm_test.pbproj/project.pbxproj | 337 +++++ pd/portmidi/pm_mac/pmmac.c | 42 + pd/portmidi/pm_mac/pmmac.h | 4 + pd/portmidi/pm_mac/pmmacosxcm.c | 701 ++++++++++ pd/portmidi/pm_mac/pmmacosxcm.h | 4 + 7 files changed, 3920 insertions(+) create mode 100644 pd/portmidi/pm_mac/pm_mac.pbproj/project.pbxproj create mode 100644 pd/portmidi/pm_mac/pm_mac.pbproj/rbd.pbxuser create mode 100644 pd/portmidi/pm_mac/pm_test.pbproj/project.pbxproj create mode 100644 pd/portmidi/pm_mac/pmmac.c create mode 100644 pd/portmidi/pm_mac/pmmac.h create mode 100644 pd/portmidi/pm_mac/pmmacosxcm.c create mode 100644 pd/portmidi/pm_mac/pmmacosxcm.h (limited to 'pd/portmidi/pm_mac') diff --git a/pd/portmidi/pm_mac/pm_mac.pbproj/project.pbxproj b/pd/portmidi/pm_mac/pm_mac.pbproj/project.pbxproj new file mode 100644 index 00000000..f35008ed --- /dev/null +++ b/pd/portmidi/pm_mac/pm_mac.pbproj/project.pbxproj @@ -0,0 +1,1324 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 38; + objects = { + 3D9CFCAA067657D50002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXHeadersBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3D9CFCAB067657D50002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXResourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3D9CFCAC067657D50002CE69 = { + buildActionMask = 2147483647; + files = ( + 3D9CFCB8067657FA0002CE69, + ); + isa = PBXSourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3D9CFCAD067657D50002CE69 = { + buildActionMask = 2147483647; + files = ( + 3D9CFCBA067658A90002CE69, + 3D9CFCBB067658AA0002CE69, + 3D9CFCBC067658AA0002CE69, + 3D9CFCBD067659FE0002CE69, + ); + isa = PBXFrameworksBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3D9CFCAE067657D50002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXRezBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3D9CFCAF067657D50002CE69 = { + buildPhases = ( + 3D9CFCAA067657D50002CE69, + 3D9CFCAB067657D50002CE69, + 3D9CFCAC067657D50002CE69, + 3D9CFCAD067657D50002CE69, + 3D9CFCAE067657D50002CE69, + ); + buildSettings = { + OPTIMIZATION_CFLAGS = ""; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = latency; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; + WRAPPER_EXTENSION = app; + }; + comments = "a test program to measure OS latency"; + dependencies = ( + ); + isa = PBXApplicationTarget; + name = latency; + productInstallPath = "$(USER_APPS_DIR)"; + productName = latency; + productReference = 3D9CFCB0067657D50002CE69; + productSettingsXML = " + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + + CFBundleGetInfoString + + CFBundleIconFile + + CFBundleIdentifier + + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + + CFBundlePackageType + APPL + CFBundleShortVersionString + + CFBundleSignature + ???? + CFBundleVersion + 0.0.1d1 + + +"; + }; + 3D9CFCB0067657D50002CE69 = { + isa = PBXApplicationReference; + path = latency.app; + refType = 3; + }; + 3D9CFCB8067657FA0002CE69 = { + fileRef = 3DA774110663E9DA0002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3D9CFCBA067658A90002CE69 = { + fileRef = 3DA774480663EAE60002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3D9CFCBB067658AA0002CE69 = { + fileRef = 3DA7744E0663EBB20002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3D9CFCBC067658AA0002CE69 = { + fileRef = 3DA774500663EBBF0002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3D9CFCBD067659FE0002CE69 = { + fileRef = 5851D5380479562300EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712AE0664C7C50002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXHeadersBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712AF0664C7C50002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXResourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712B00664C7C50002CE69 = { + buildActionMask = 2147483647; + files = ( + 3DA712B90664C8490002CE69, + ); + isa = PBXSourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712B10664C7C50002CE69 = { + buildActionMask = 2147483647; + files = ( + 3DA712B60664C8400002CE69, + 3DA712B70664C8400002CE69, + 3DA712B80664C8410002CE69, + 3DA712BA0664C8A40002CE69, + ); + isa = PBXFrameworksBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712B20664C7C50002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXRezBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712B30664C7C50002CE69 = { + buildPhases = ( + 3DA712AE0664C7C50002CE69, + 3DA712AF0664C7C50002CE69, + 3DA712B00664C7C50002CE69, + 3DA712B10664C7C50002CE69, + 3DA712B20664C7C50002CE69, + ); + buildSettings = { + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = midithread; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; + WRAPPER_EXTENSION = app; + }; + comments = "Demonstrates the use of a low-latency thread for midi processing"; + dependencies = ( + ); + isa = PBXApplicationTarget; + name = midithread; + productInstallPath = "$(USER_APPS_DIR)"; + productName = midithread; + productReference = 3DA712B40664C7C50002CE69; + productSettingsXML = " + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + + CFBundleGetInfoString + + CFBundleIconFile + + CFBundleIdentifier + + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + + CFBundlePackageType + APPL + CFBundleShortVersionString + + CFBundleSignature + ???? + CFBundleVersion + 0.0.1d1 + + +"; + }; + 3DA712B40664C7C50002CE69 = { + isa = PBXApplicationReference; + path = midithread.app; + refType = 3; + }; + 3DA712B60664C8400002CE69 = { + fileRef = 3DA774480663EAE60002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712B70664C8400002CE69 = { + fileRef = 3DA7744E0663EBB20002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712B80664C8410002CE69 = { + fileRef = 3DA774500663EBBF0002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712B90664C8490002CE69 = { + fileRef = 3DA774160663E9DA0002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712BA0664C8A40002CE69 = { + fileRef = 5851D5380479562300EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712BB0664C9B40002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXHeadersBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712BC0664C9B40002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXResourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712BD0664C9B40002CE69 = { + buildActionMask = 2147483647; + files = ( + 3DA712C40664C9C40002CE69, + ); + isa = PBXSourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712BE0664C9B40002CE69 = { + buildActionMask = 2147483647; + files = ( + 3DA712C30664C9C20002CE69, + 3DA712C50664C9C70002CE69, + 3DA712C60664C9C70002CE69, + 3DA712C70664C9C80002CE69, + ); + isa = PBXFrameworksBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712BF0664C9B40002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXRezBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712C00664C9B40002CE69 = { + buildPhases = ( + 3DA712BB0664C9B40002CE69, + 3DA712BC0664C9B40002CE69, + 3DA712BD0664C9B40002CE69, + 3DA712BE0664C9B40002CE69, + 3DA712BF0664C9B40002CE69, + ); + buildSettings = { + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = midithru; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; + WRAPPER_EXTENSION = app; + }; + comments = "Demonstrates midi thru processing in a low-priority thread"; + dependencies = ( + ); + isa = PBXApplicationTarget; + name = midithru; + productInstallPath = "$(USER_APPS_DIR)"; + productName = midithru; + productReference = 3DA712C10664C9B40002CE69; + productSettingsXML = " + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + + CFBundleGetInfoString + + CFBundleIconFile + + CFBundleIdentifier + + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + + CFBundlePackageType + APPL + CFBundleShortVersionString + + CFBundleSignature + ???? + CFBundleVersion + 0.0.1d1 + + +"; + }; + 3DA712C10664C9B40002CE69 = { + isa = PBXApplicationReference; + path = midithru.app; + refType = 3; + }; + 3DA712C30664C9C20002CE69 = { + fileRef = 5851D5380479562300EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712C40664C9C40002CE69 = { + fileRef = 3DA7741B0663E9DA0002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712C50664C9C70002CE69 = { + fileRef = 3DA774480663EAE60002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712C60664C9C70002CE69 = { + fileRef = 3DA7744E0663EBB20002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712C70664C9C80002CE69 = { + fileRef = 3DA774500663EBBF0002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712C80664CB1B0002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXHeadersBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712C90664CB1B0002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXResourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712CA0664CB1B0002CE69 = { + buildActionMask = 2147483647; + files = ( + 3DA712D10664CB430002CE69, + ); + isa = PBXSourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712CB0664CB1B0002CE69 = { + buildActionMask = 2147483647; + files = ( + 3DA712D00664CB3F0002CE69, + 3DA712D20664CB470002CE69, + 3DA712D30664CB480002CE69, + 3DA712D40664CB480002CE69, + ); + isa = PBXFrameworksBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712CC0664CB1B0002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXRezBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA712CD0664CB1B0002CE69 = { + buildPhases = ( + 3DA712C80664CB1B0002CE69, + 3DA712C90664CB1B0002CE69, + 3DA712CA0664CB1B0002CE69, + 3DA712CB0664CB1B0002CE69, + 3DA712CC0664CB1B0002CE69, + ); + buildSettings = { + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = sysex; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; + WRAPPER_EXTENSION = app; + }; + comments = "System exclusive input and output test"; + dependencies = ( + ); + isa = PBXApplicationTarget; + name = sysex; + productInstallPath = "$(USER_APPS_DIR)"; + productName = sysex; + productReference = 3DA712CE0664CB1B0002CE69; + productSettingsXML = " + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + + CFBundleGetInfoString + + CFBundleIconFile + + CFBundleIdentifier + + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + + CFBundlePackageType + APPL + CFBundleShortVersionString + + CFBundleSignature + ???? + CFBundleVersion + 0.0.1d1 + + +"; + }; + 3DA712CE0664CB1B0002CE69 = { + isa = PBXApplicationReference; + path = sysex.app; + refType = 3; + }; + 3DA712D00664CB3F0002CE69 = { + fileRef = 5851D5380479562300EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712D10664CB430002CE69 = { + fileRef = 3DA774210663E9DA0002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712D20664CB470002CE69 = { + fileRef = 3DA774480663EAE60002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712D30664CB480002CE69 = { + fileRef = 3DA7744E0663EBB20002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA712D40664CB480002CE69 = { + fileRef = 3DA774500663EBBF0002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA774070663E8EB0002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXHeadersBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA774080663E8EB0002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXResourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA774090663E8EB0002CE69 = { + buildActionMask = 2147483647; + files = ( + 3DA774390663E9DA0002CE69, + ); + isa = PBXSourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA7740A0663E8EB0002CE69 = { + buildActionMask = 2147483647; + files = ( + 3DA774470663EA6A0002CE69, + 3DA774490663EAE60002CE69, + 3DA7744F0663EBB20002CE69, + 3DA774510663EBBF0002CE69, + ); + isa = PBXFrameworksBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA7740B0663E8EB0002CE69 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXRezBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 3DA7740C0663E8EB0002CE69 = { + buildPhases = ( + 3DA774070663E8EB0002CE69, + 3DA774080663E8EB0002CE69, + 3DA774090663E8EB0002CE69, + 3DA7740A0663E8EB0002CE69, + 3DA7740B0663E8EB0002CE69, + ); + buildSettings = { + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = test; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; + WRAPPER_EXTENSION = app; + }; + comments = "A PortMidi test program"; + dependencies = ( + ); + isa = PBXApplicationTarget; + name = test; + productInstallPath = "$(USER_APPS_DIR)"; + productName = test; + productReference = 3DA7740D0663E8EB0002CE69; + productSettingsXML = " + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + + CFBundleGetInfoString + + CFBundleIconFile + + CFBundleIdentifier + + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + + CFBundlePackageType + APPL + CFBundleShortVersionString + + CFBundleSignature + ???? + CFBundleVersion + 0.0.1d1 + + +"; + }; + 3DA7740D0663E8EB0002CE69 = { + isa = PBXApplicationReference; + path = test.app; + refType = 3; + }; + 3DA774100663E9DA0002CE69 = { + children = ( + 3DA774110663E9DA0002CE69, + 3DA774120663E9DA0002CE69, + 3DA774130663E9DA0002CE69, + 3DA774140663E9DA0002CE69, + 3DA774150663E9DA0002CE69, + 3DA774160663E9DA0002CE69, + 3DA774170663E9DA0002CE69, + 3DA774180663E9DA0002CE69, + 3DA774190663E9DA0002CE69, + 3DA7741A0663E9DA0002CE69, + 3DA7741B0663E9DA0002CE69, + 3DA7741C0663E9DA0002CE69, + 3DA7741D0663E9DA0002CE69, + 3DA7741E0663E9DA0002CE69, + 3DA7741F0663E9DA0002CE69, + 3DA774200663E9DA0002CE69, + 3DA774210663E9DA0002CE69, + 3DA774220663E9DA0002CE69, + 3DA774230663E9DA0002CE69, + 3DA774240663E9DA0002CE69, + 3DA774250663E9DA0002CE69, + 3DA774260663E9DA0002CE69, + 3DA774270663E9DA0002CE69, + 3DA774280663E9DA0002CE69, + 3DA774290663E9DA0002CE69, + 3DA7742A0663E9DA0002CE69, + 3DA7742B0663E9DA0002CE69, + ); + isa = PBXGroup; + name = pm_test; + path = /Users/rbd/portmidi/pm_test; + refType = 0; + }; + 3DA774110663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = latency.c; + refType = 4; + }; + 3DA774120663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = latency.dsp; + refType = 4; + }; + 3DA774130663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = latency.plg; + refType = 4; + }; + 3DA774140663E9DA0002CE69 = { + children = ( + ); + isa = PBXGroup; + path = latencyDebug; + refType = 4; + }; + 3DA774150663E9DA0002CE69 = { + children = ( + ); + isa = PBXGroup; + path = latencyRelease; + refType = 4; + }; + 3DA774160663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = midithread.c; + refType = 4; + }; + 3DA774170663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = midithread.dsp; + refType = 4; + }; + 3DA774180663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = midithread.plg; + refType = 4; + }; + 3DA774190663E9DA0002CE69 = { + children = ( + ); + isa = PBXGroup; + path = midithreadDebug; + refType = 4; + }; + 3DA7741A0663E9DA0002CE69 = { + children = ( + ); + isa = PBXGroup; + path = midithreadRelease; + refType = 4; + }; + 3DA7741B0663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = midithru.c; + refType = 4; + }; + 3DA7741C0663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = midithru.dsp; + refType = 4; + }; + 3DA7741D0663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = midithru.dsw; + refType = 4; + }; + 3DA7741E0663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = midithru.plg; + refType = 4; + }; + 3DA7741F0663E9DA0002CE69 = { + children = ( + ); + isa = PBXGroup; + path = midithruDebug; + refType = 4; + }; + 3DA774200663E9DA0002CE69 = { + children = ( + ); + isa = PBXGroup; + path = midithruRelease; + refType = 4; + }; + 3DA774210663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = sysex.c; + refType = 4; + }; + 3DA774220663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = sysex.dsp; + refType = 4; + }; + 3DA774230663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = sysex.plg; + refType = 4; + }; + 3DA774240663E9DA0002CE69 = { + children = ( + ); + isa = PBXGroup; + path = sysexDebug; + refType = 4; + }; + 3DA774250663E9DA0002CE69 = { + children = ( + ); + isa = PBXGroup; + path = sysexRelease; + refType = 4; + }; + 3DA774260663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = test.c; + refType = 4; + }; + 3DA774270663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = test.dsp; + refType = 4; + }; + 3DA774280663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = test.plg; + refType = 4; + }; + 3DA774290663E9DA0002CE69 = { + children = ( + ); + isa = PBXGroup; + path = testDebug; + refType = 4; + }; + 3DA7742A0663E9DA0002CE69 = { + children = ( + ); + isa = PBXGroup; + path = testRelease; + refType = 4; + }; + 3DA7742B0663E9DA0002CE69 = { + fileEncoding = 30; + isa = PBXFileReference; + path = txdata.syx; + refType = 4; + }; + 3DA774390663E9DA0002CE69 = { + fileRef = 3DA774260663E9DA0002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA774470663EA6A0002CE69 = { + fileRef = 5851D5380479562300EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA774480663EAE60002CE69 = { + isa = PBXFrameworkReference; + name = CoreMIDI.framework; + path = /System/Library/Frameworks/CoreMIDI.framework; + refType = 0; + }; + 3DA774490663EAE60002CE69 = { + fileRef = 3DA774480663EAE60002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA7744E0663EBB20002CE69 = { + isa = PBXFrameworkReference; + name = CoreFoundation.framework; + path = /System/Library/Frameworks/CoreFoundation.framework; + refType = 0; + }; + 3DA7744F0663EBB20002CE69 = { + fileRef = 3DA7744E0663EBB20002CE69; + isa = PBXBuildFile; + settings = { + }; + }; + 3DA774500663EBBF0002CE69 = { + isa = PBXFrameworkReference; + name = CoreAudio.framework; + path = /System/Library/Frameworks/CoreAudio.framework; + refType = 0; + }; + 3DA774510663EBBF0002CE69 = { + fileRef = 3DA774500663EBBF0002CE69; + isa = PBXBuildFile; + settings = { + }; + }; +//3D0 +//3D1 +//3D2 +//3D3 +//3D4 +//580 +//581 +//582 +//583 +//584 + 5851D5140479552300EE98CD = { + children = ( + 5851D51D047955A100EE98CD, + 5851D51C0479553600EE98CD, + 5851D51B0479553500EE98CD, + 5851D51A0479553300EE98CD, + 5851D5190479552E00EE98CD, + 5851D5390479562300EE98CD, + 3DA774100663E9DA0002CE69, + 3DA774480663EAE60002CE69, + 3DA7744E0663EBB20002CE69, + 3DA774500663EBBF0002CE69, + ); + isa = PBXGroup; + refType = 4; + }; + 5851D5160479552300EE98CD = { + buildRules = ( + ); + buildSettings = { + COPY_PHASE_STRIP = NO; + }; + isa = PBXBuildStyle; + name = Development; + }; + 5851D5170479552300EE98CD = { + buildRules = ( + ); + buildSettings = { + COPY_PHASE_STRIP = YES; + }; + isa = PBXBuildStyle; + name = Deployment; + }; + 5851D5180479552300EE98CD = { + buildStyles = ( + 5851D5160479552300EE98CD, + 5851D5170479552300EE98CD, + ); + hasScannedForEncodings = 1; + isa = PBXProject; + mainGroup = 5851D5140479552300EE98CD; + productRefGroup = 5851D5390479562300EE98CD; + projectDirPath = ""; + targets = ( + 5851D5370479562300EE98CD, + 3DA7740C0663E8EB0002CE69, + 3DA712B30664C7C50002CE69, + 3DA712C00664C9B40002CE69, + 3DA712CD0664CB1B0002CE69, + 3D9CFCAF067657D50002CE69, + ); + }; + 5851D5190479552E00EE98CD = { + children = ( + 5851D5310479560B00EE98CD, + 5851D5320479560B00EE98CD, + 5851D5730479613900EE98CD, + 5851D5740479613900EE98CD, + ); + isa = PBXGroup; + name = pm_mac; + refType = 4; + }; + 5851D51A0479553300EE98CD = { + children = ( + 5851D52C047955FD00EE98CD, + 5851D52D047955FD00EE98CD, + 5851D52E047955FD00EE98CD, + 5851D52F047955FD00EE98CD, + 5851D530047955FD00EE98CD, + ); + isa = PBXGroup; + name = pm_win; + refType = 4; + }; + 5851D51B0479553500EE98CD = { + children = ( + 5851D528047955D700EE98CD, + 5851D529047955D700EE98CD, + 5851D52A047955D700EE98CD, + 5851D52B047955D700EE98CD, + ); + isa = PBXGroup; + name = pm_linux; + refType = 4; + }; + 5851D51C0479553600EE98CD = { + children = ( + 5851D523047955C800EE98CD, + 5851D524047955C800EE98CD, + 5851D525047955C800EE98CD, + 5851D526047955C800EE98CD, + 5851D527047955C800EE98CD, + ); + isa = PBXGroup; + name = pm_common; + path = ""; + refType = 2; + }; + 5851D51D047955A100EE98CD = { + children = ( + 5851D51E047955B800EE98CD, + 5851D51F047955B800EE98CD, + 5851D520047955B800EE98CD, + 5851D521047955B800EE98CD, + 58ED5B81047D41DB00B92E62, + 5851D522047955B800EE98CD, + ); + isa = PBXGroup; + name = porttime; + refType = 4; + }; + 5851D51E047955B800EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = porttime.c; + path = ../porttime/porttime.c; + refType = 2; + }; + 5851D51F047955B800EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = porttime.h; + path = ../porttime/porttime.h; + refType = 2; + }; + 5851D520047955B800EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = ptlinux.c; + path = ../porttime/ptlinux.c; + refType = 2; + }; + 5851D521047955B800EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = ptmacosx_cf.c; + path = ../porttime/ptmacosx_cf.c; + refType = 2; + }; + 5851D522047955B800EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = ptwinmm.c; + path = ../porttime/ptwinmm.c; + refType = 2; + }; + 5851D523047955C800EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pminternal.h; + path = ../pm_common/pminternal.h; + refType = 2; + }; + 5851D524047955C800EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pmutil.c; + path = ../pm_common/pmutil.c; + refType = 2; + }; + 5851D525047955C800EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pmutil.h; + path = ../pm_common/pmutil.h; + refType = 2; + }; + 5851D526047955C800EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = portmidi.c; + path = ../pm_common/portmidi.c; + refType = 2; + }; + 5851D527047955C800EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = portmidi.h; + path = ../pm_common/portmidi.h; + refType = 2; + }; + 5851D528047955D700EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pmlinux.c; + path = ../pm_linux/pmlinux.c; + refType = 2; + }; + 5851D529047955D700EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pmlinux.h; + path = ../pm_linux/pmlinux.h; + refType = 2; + }; + 5851D52A047955D700EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pmlinuxalsa.c; + path = ../pm_linux/pmlinuxalsa.c; + refType = 2; + }; + 5851D52B047955D700EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pmlinuxalsa.h; + path = ../pm_linux/pmlinuxalsa.h; + refType = 2; + }; + 5851D52C047955FD00EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pmdll.c; + path = ../pm_win/pmdll.c; + refType = 2; + }; + 5851D52D047955FD00EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pmdll.h; + path = ../pm_win/pmdll.h; + refType = 2; + }; + 5851D52E047955FD00EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pmwin.c; + path = ../pm_win/pmwin.c; + refType = 2; + }; + 5851D52F047955FD00EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pmwinmm.c; + path = ../pm_win/pmwinmm.c; + refType = 2; + }; + 5851D530047955FD00EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pmwinmm.h; + path = ../pm_win/pmwinmm.h; + refType = 2; + }; + 5851D5310479560B00EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + path = pmmacosxcm.c; + refType = 2; + }; + 5851D5320479560B00EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + path = pmmacosxcm.h; + refType = 2; + }; + 5851D5330479562300EE98CD = { + buildActionMask = 2147483647; + files = ( + 5851D53B0479564000EE98CD, + 5851D53D0479564100EE98CD, + 5851D53F0479564100EE98CD, + 5851D5420479564600EE98CD, + 5851D5430479564F00EE98CD, + 5851D5750479613900EE98CD, + ); + isa = PBXHeadersBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 5851D5340479562300EE98CD = { + buildActionMask = 2147483647; + files = ( + 5851D53C0479564000EE98CD, + 5851D53E0479564100EE98CD, + 5851D5400479564400EE98CD, + 5851D5760479613900EE98CD, + 58ED5C7A047D694900B92E62, + ); + isa = PBXSourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 5851D5350479562300EE98CD = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXFrameworksBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 5851D5360479562300EE98CD = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXRezBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 5851D5370479562300EE98CD = { + buildPhases = ( + 5851D5330479562300EE98CD, + 5851D5340479562300EE98CD, + 5851D5350479562300EE98CD, + 5851D5360479562300EE98CD, + ); + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = "-DPM_CHECK_ERRORS -DDEBUG"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOL_FLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = libportmidi.a; + REZ_EXECUTABLE = YES; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; + }; + dependencies = ( + ); + isa = PBXLibraryTarget; + name = libportmidi.a; + productInstallPath = /usr/local/lib; + productName = libportmidi.a; + productReference = 5851D5380479562300EE98CD; + }; + 5851D5380479562300EE98CD = { + isa = PBXLibraryReference; + path = libportmidi.a; + refType = 3; + }; + 5851D5390479562300EE98CD = { + children = ( + 5851D5380479562300EE98CD, + 3DA7740D0663E8EB0002CE69, + 3DA712B40664C7C50002CE69, + 3DA712C10664C9B40002CE69, + 3DA712CE0664CB1B0002CE69, + 3D9CFCB0067657D50002CE69, + ); + isa = PBXGroup; + name = Products; + refType = 4; + }; + 5851D53B0479564000EE98CD = { + fileRef = 5851D523047955C800EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D53C0479564000EE98CD = { + fileRef = 5851D524047955C800EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D53D0479564100EE98CD = { + fileRef = 5851D525047955C800EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D53E0479564100EE98CD = { + fileRef = 5851D526047955C800EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D53F0479564100EE98CD = { + fileRef = 5851D527047955C800EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D5400479564400EE98CD = { + fileRef = 5851D5310479560B00EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D5420479564600EE98CD = { + fileRef = 5851D5320479560B00EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D5430479564F00EE98CD = { + fileRef = 5851D51F047955B800EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D5730479613900EE98CD = { + fileEncoding = 4; + isa = PBXFileReference; + path = pmmac.h; + refType = 2; + }; + 5851D5740479613900EE98CD = { + fileEncoding = 4; + isa = PBXFileReference; + path = pmmac.c; + refType = 2; + }; + 5851D5750479613900EE98CD = { + fileRef = 5851D5730479613900EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D5760479613900EE98CD = { + fileRef = 5851D5740479613900EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 58ED5B81047D41DB00B92E62 = { + fileEncoding = 30; + isa = PBXFileReference; + name = ptmacosx_mach.c; + path = ../porttime/ptmacosx_mach.c; + refType = 2; + }; + 58ED5C7A047D694900B92E62 = { + fileRef = 58ED5B81047D41DB00B92E62; + isa = PBXBuildFile; + settings = { + }; + }; + }; + rootObject = 5851D5180479552300EE98CD; +} diff --git a/pd/portmidi/pm_mac/pm_mac.pbproj/rbd.pbxuser b/pd/portmidi/pm_mac/pm_mac.pbproj/rbd.pbxuser new file mode 100644 index 00000000..6f36b563 --- /dev/null +++ b/pd/portmidi/pm_mac/pm_mac.pbproj/rbd.pbxuser @@ -0,0 +1,1508 @@ +// !$*UTF8*$! +{ + 3D7903E9066690E00002CE69 = { + fRef = 3DA774260663E9DA0002CE69; + isa = PBXTextBookmark; + name = "test.c: TIME_START"; + rLen = 17; + rLoc = 309; + rType = 0; + vrLen = 955; + vrLoc = 0; + }; + 3D7903EC066690E00002CE69 = { + fRef = 5851D526047955C800EE98CD; + isa = PBXTextBookmark; + name = "portmidi.c: pm_read_short"; + rLen = 0; + rLoc = 24290; + rType = 0; + vrLen = 1795; + vrLoc = 23823; + }; + 3D7903ED066690E00002CE69 = { + fRef = 5851D5310479560B00EE98CD; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: midi_in_open"; + rLen = 6; + rLoc = 10561; + rType = 0; + vrLen = 1218; + vrLoc = 9520; + }; + 3D7903EE066690E00002CE69 = { + fRef = 3DA774210663E9DA0002CE69; + isa = PBXTextBookmark; + name = "sysex.c: loopback_test"; + rLen = 0; + rLoc = 3992; + rType = 0; + vrLen = 1768; + vrLoc = 2466; + }; + 3D7903EF066690E00002CE69 = { + fRef = 5851D5310479560B00EE98CD; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: err"; + rLen = 0; + rLoc = 17896; + rType = 0; + vrLen = 1449; + vrLoc = 16660; + }; + 3D7903F0066690E00002CE69 = { + fRef = 3DA774210663E9DA0002CE69; + isa = PBXTextBookmark; + name = "sysex.c: loopback_test"; + rLen = 0; + rLoc = 3992; + rType = 0; + vrLen = 903; + vrLoc = 0; + }; + 3D7903F1066690E00002CE69 = { + fRef = 3DA774260663E9DA0002CE69; + isa = PBXTextBookmark; + name = "test.c: TIME_START"; + rLen = 17; + rLoc = 309; + rType = 0; + vrLen = 955; + vrLoc = 0; + }; + 3D7903F2066690E00002CE69 = { + fRef = 3DA774210663E9DA0002CE69; + isa = PBXTextBookmark; + name = "sysex.c: loopback_test"; + rLen = 0; + rLoc = 4871; + rType = 0; + vrLen = 804; + vrLoc = 254; + }; + 3D7903F3066690E00002CE69 = { + fRef = 5851D5310479560B00EE98CD; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: SYSEX_BUFFER_SIZE"; + rLen = 0; + rLoc = 1197; + rType = 0; + vrLen = 1450; + vrLoc = 884; + }; + 3D7903F4066690E00002CE69 = { + fRef = 3DA774210663E9DA0002CE69; + isa = PBXTextBookmark; + name = "sysex.c: loopback_test"; + rLen = 0; + rLoc = 3483; + rType = 0; + vrLen = 1752; + vrLoc = 3284; + }; + 3D9CFCA7067651E80002CE69 = { + fileReference = 5851D526047955C800EE98CD; + isa = PBXFileBreakpoint; + lineNumber = 396; + state = 1; + }; + 3D9CFCA90676535F0002CE69 = { + fileReference = 5851D526047955C800EE98CD; + isa = PBXFileBreakpoint; + lineNumber = 390; + state = 1; + }; + 3D9CFCAF067657D50002CE69 = { + activeExec = 0; + executables = ( + 3D9CFCB1067657D50002CE69, + ); + }; + 3D9CFCB1067657D50002CE69 = { + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + configStateDict = { + }; + debuggerPlugin = GDBDebugging; + enableDebugStr = 1; + environmentEntries = ( + ); + isa = PBXExecutable; + name = latency; + shlibInfoDictList = ( + ); + sourceDirectories = ( + ); + }; + 3D9CFCBE06765A7F0002CE69 = { + fRef = 3D9CFCDB06765A7F0002CE69; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1521; + vrLoc = 0; + }; + 3D9CFCBF06765A7F0002CE69 = { + fRef = 5851D526047955C800EE98CD; + isa = PBXTextBookmark; + name = "portmidi.c: 759"; + rLen = 0; + rLoc = 24290; + rType = 0; + vrLen = 1709; + vrLoc = 25249; + }; + 3D9CFCC006765A7F0002CE69 = { + fRef = 5851D5310479560B00EE98CD; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: midi_begin_sysex"; + rLen = 0; + rLoc = 14525; + rType = 0; + vrLen = 1466; + vrLoc = 13829; + }; + 3D9CFCC106765A7F0002CE69 = { + fRef = 3DA774210663E9DA0002CE69; + isa = PBXTextBookmark; + name = "sysex.c: loopback_test"; + rLen = 0; + rLoc = 3483; + rType = 0; + vrLen = 903; + vrLoc = 0; + }; + 3D9CFCC206765A7F0002CE69 = { + exec = 3DA712CF0664CB1B0002CE69; + isa = PBXExecutableBookmark; + uiCtxt = { + buildSettingsExpandedSubviews = ( + 0, + 1, + 2, + 3, + 4, + 5, + ); + buildSettingsVisRect = "{{0, 0}, {746, 603}}"; + }; + }; + 3D9CFCC306765A7F0002CE69 = { + isa = PBXTargetBookmark; + trg = 3DA712C00664C9B40002CE69; + uiCtxt = { + TOCViewDetailVisibleRect = "{{0, 0}, {517, 119}}"; + TOCViewExpandedItems = ( + "com.apple.target-editor-pane.settings", + "com.apple.target-editor-pane.settings.simple", + "com.apple.target-editor-pane.info-plist", + "com.apple.target-editor-pane.info-plist.simple", + "com.apple.target-editor-pane.buildphases", + ); + TOCViewMasterVisibleRect = "{{0, 0}, {205, 603}}"; + TOCViewSelectedItems = ( + 3DA712BE0664C9B40002CE69, + ); + }; + }; + 3D9CFCC406765A7F0002CE69 = { + isa = PBXTargetBookmark; + trg = 3DA712CD0664CB1B0002CE69; + uiCtxt = { + TOCViewDetailVisibleRect = "{{0, 0}, {518, 119}}"; + TOCViewExpandedItems = ( + "com.apple.target-editor-pane.settings", + "com.apple.target-editor-pane.settings.simple", + "com.apple.target-editor-pane.info-plist", + "com.apple.target-editor-pane.info-plist.simple", + "com.apple.target-editor-pane.buildphases", + ); + TOCViewMasterVisibleRect = "{{0, 0}, {204, 603}}"; + TOCViewSelectedItems = ( + 3DA712CB0664CB1B0002CE69, + ); + }; + }; + 3D9CFCC506765A7F0002CE69 = { + isa = PBXTargetBookmark; + trg = 3D9CFCAF067657D50002CE69; + uiCtxt = { + TOCViewDetailVisibleRect = "{{0, 0}, {518, 102}}"; + TOCViewExpandedItems = ( + "com.apple.target-editor-pane.settings", + "com.apple.target-editor-pane.settings.simple", + "com.apple.target-editor-pane.info-plist", + "com.apple.target-editor-pane.info-plist.simple", + "com.apple.target-editor-pane.buildphases", + ); + TOCViewMasterVisibleRect = "{{0, 0}, {204, 603}}"; + TOCViewSelectedItems = ( + 3D9CFCAD067657D50002CE69, + ); + }; + }; + 3D9CFCC606765A7F0002CE69 = { + fRef = 5851D5310479560B00EE98CD; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: midi_write_short"; + rLen = 0; + rLoc = 13963; + rType = 0; + vrLen = 1621; + vrLoc = 13417; + }; + 3D9CFCC706765A7F0002CE69 = { + fRef = 3D9CFCD906765A7F0002CE69; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1521; + vrLoc = 0; + }; + 3D9CFCC806765A7F0002CE69 = { + fRef = 5851D5310479560B00EE98CD; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: readProc"; + rLen = 0; + rLoc = 5664; + rType = 0; + vrLen = 1840; + vrLoc = 4759; + }; + 3D9CFCC906765A7F0002CE69 = { + fRef = 3D9CFCDA06765A7F0002CE69; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1521; + vrLoc = 0; + }; + 3D9CFCCA06765A7F0002CE69 = { + fRef = 3DA774210663E9DA0002CE69; + isa = PBXTextBookmark; + name = "sysex.c: loopback_test"; + rLen = 0; + rLoc = 3483; + rType = 0; + vrLen = 1712; + vrLoc = 3270; + }; + 3D9CFCCB06765A7F0002CE69 = { + fRef = 5851D526047955C800EE98CD; + isa = PBXTextBookmark; + name = "portmidi.c: 759"; + rLen = 0; + rLoc = 24290; + rType = 0; + vrLen = 1709; + vrLoc = 25249; + }; + 3D9CFCCC06765A7F0002CE69 = { + fRef = 5851D5310479560B00EE98CD; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: midi_begin_sysex"; + rLen = 0; + rLoc = 14525; + rType = 0; + vrLen = 1466; + vrLoc = 13829; + }; + 3D9CFCCD06765A7F0002CE69 = { + isa = PBXTargetBookmark; + trg = 3D9CFCAF067657D50002CE69; + uiCtxt = { + TOCViewDetailVisibleRect = "{{0, 0}, {491, 287}}"; + TOCViewExpandedItems = ( + "com.apple.target-editor-pane.settings", + "com.apple.target-editor-pane.settings.simple", + "com.apple.target-editor-pane.info-plist", + "com.apple.target-editor-pane.info-plist.simple", + "com.apple.target-editor-pane.buildphases", + ); + TOCViewMasterVisibleRect = "{{0, 0}, {210, 603}}"; + TOCViewSelectedItems = ( + PBXTargetLdLinkerSettingsModule, + ); + }; + }; + 3D9CFCCE06765A7F0002CE69 = { + fRef = 3DA774210663E9DA0002CE69; + isa = PBXTextBookmark; + name = "sysex.c: loopback_test"; + rLen = 0; + rLoc = 3483; + rType = 0; + vrLen = 903; + vrLoc = 0; + }; + 3D9CFCCF06765A7F0002CE69 = { + exec = 3DA712CF0664CB1B0002CE69; + isa = PBXExecutableBookmark; + uiCtxt = { + buildSettingsExpandedSubviews = ( + 0, + 1, + 2, + 3, + 4, + 5, + ); + buildSettingsVisRect = "{{0, 0}, {746, 603}}"; + }; + }; + 3D9CFCD006765A7F0002CE69 = { + isa = PBXTargetBookmark; + trg = 3DA712C00664C9B40002CE69; + uiCtxt = { + TOCViewDetailVisibleRect = "{{0, 0}, {517, 119}}"; + TOCViewExpandedItems = ( + "com.apple.target-editor-pane.settings", + "com.apple.target-editor-pane.settings.simple", + "com.apple.target-editor-pane.info-plist", + "com.apple.target-editor-pane.info-plist.simple", + "com.apple.target-editor-pane.buildphases", + ); + TOCViewMasterVisibleRect = "{{0, 0}, {205, 603}}"; + TOCViewSelectedItems = ( + 3DA712BE0664C9B40002CE69, + ); + }; + }; + 3D9CFCD106765A7F0002CE69 = { + isa = PBXTargetBookmark; + trg = 3DA712CD0664CB1B0002CE69; + uiCtxt = { + TOCViewDetailVisibleRect = "{{0, 0}, {517, 233}}"; + TOCViewExpandedItems = ( + "com.apple.target-editor-pane.settings", + "com.apple.target-editor-pane.settings.simple", + "com.apple.target-editor-pane.info-plist", + "com.apple.target-editor-pane.info-plist.simple", + "com.apple.target-editor-pane.buildphases", + ); + TOCViewMasterVisibleRect = "{{0, 0}, {205, 603}}"; + TOCViewSelectedItems = ( + PBXTargetSummarySettingsModule, + ); + }; + }; + 3D9CFCD206765A7F0002CE69 = { + isa = PBXTargetBookmark; + trg = 3D9CFCAF067657D50002CE69; + uiCtxt = { + TOCViewDetailVisibleRect = "{{0, 0}, {517, 102}}"; + TOCViewExpandedItems = ( + "com.apple.target-editor-pane.settings", + "com.apple.target-editor-pane.settings.simple", + "com.apple.target-editor-pane.info-plist", + "com.apple.target-editor-pane.info-plist.simple", + "com.apple.target-editor-pane.buildphases", + ); + TOCViewMasterVisibleRect = "{{0, 0}, {205, 603}}"; + TOCViewSelectedItems = ( + 3D9CFCAD067657D50002CE69, + ); + }; + }; + 3D9CFCD306765A7F0002CE69 = { + isa = PBXTargetBookmark; + trg = 3DA712CD0664CB1B0002CE69; + uiCtxt = { + TOCViewDetailVisibleRect = "{{0, 0}, {517, 119}}"; + TOCViewExpandedItems = ( + "com.apple.target-editor-pane.settings", + "com.apple.target-editor-pane.settings.simple", + "com.apple.target-editor-pane.info-plist", + "com.apple.target-editor-pane.info-plist.simple", + "com.apple.target-editor-pane.buildphases", + ); + TOCViewMasterVisibleRect = "{{0, 0}, {205, 603}}"; + TOCViewSelectedItems = ( + 3DA712CB0664CB1B0002CE69, + ); + }; + }; + 3D9CFCD406765A7F0002CE69 = { + isa = PBXTargetBookmark; + trg = 3D9CFCAF067657D50002CE69; + uiCtxt = { + TOCViewDetailVisibleRect = "{{0, 0}, {518, 102}}"; + TOCViewExpandedItems = ( + "com.apple.target-editor-pane.settings", + "com.apple.target-editor-pane.settings.simple", + "com.apple.target-editor-pane.info-plist", + "com.apple.target-editor-pane.info-plist.simple", + "com.apple.target-editor-pane.buildphases", + ); + TOCViewMasterVisibleRect = "{{0, 0}, {204, 603}}"; + TOCViewSelectedItems = ( + 3D9CFCAD067657D50002CE69, + ); + }; + }; + 3D9CFCD506765A7F0002CE69 = { + isa = PBXTargetBookmark; + trg = 3DA712CD0664CB1B0002CE69; + uiCtxt = { + TOCViewDetailVisibleRect = "{{0, 0}, {518, 119}}"; + TOCViewExpandedItems = ( + "com.apple.target-editor-pane.settings", + "com.apple.target-editor-pane.settings.simple", + "com.apple.target-editor-pane.info-plist", + "com.apple.target-editor-pane.info-plist.simple", + "com.apple.target-editor-pane.buildphases", + ); + TOCViewMasterVisibleRect = "{{0, 0}, {204, 603}}"; + TOCViewSelectedItems = ( + 3DA712CB0664CB1B0002CE69, + ); + }; + }; + 3D9CFCD606765A7F0002CE69 = { + isa = PBXTargetBookmark; + trg = 3D9CFCAF067657D50002CE69; + uiCtxt = { + TOCViewDetailVisibleRect = "{{0, 0}, {517, 119}}"; + TOCViewExpandedItems = ( + "com.apple.target-editor-pane.settings", + "com.apple.target-editor-pane.settings.simple", + "com.apple.target-editor-pane.info-plist", + "com.apple.target-editor-pane.info-plist.simple", + "com.apple.target-editor-pane.buildphases", + ); + TOCViewMasterVisibleRect = "{{0, 0}, {205, 603}}"; + TOCViewSelectedItems = ( + 3D9CFCAD067657D50002CE69, + ); + }; + }; + 3D9CFCD706765A7F0002CE69 = { + fRef = 5851D526047955C800EE98CD; + isa = PBXTextBookmark; + rLen = 0; + rLoc = 396; + rType = 1; + }; + 3D9CFCD806765A7F0002CE69 = { + fRef = 5851D526047955C800EE98CD; + isa = PBXTextBookmark; + name = "portmidi.c: Pm_Write"; + rLen = 0; + rLoc = 11148; + rType = 0; + vrLen = 876; + vrLoc = 11059; + }; + 3D9CFCD906765A7F0002CE69 = { + isa = PBXFileReference; + name = pmmacosxcm.c; + path = "/Users/rbd/portmidi-27may04/pm_mac/pmmacosxcm.c"; + refType = 0; + }; + 3D9CFCDA06765A7F0002CE69 = { + isa = PBXFileReference; + name = pmmacosxcm.c; + path = "/Users/rbd/portmidi-27may04/pm_mac/pmmacosxcm.c"; + refType = 0; + }; + 3D9CFCDB06765A7F0002CE69 = { + isa = PBXFileReference; + name = pmmacosxcm.c; + path = "/Users/rbd/portmidi-27may04/pm_mac/pmmacosxcm.c"; + refType = 0; + }; + 3DA712B30664C7C50002CE69 = { + activeExec = 0; + executables = ( + 3DA712B50664C7C50002CE69, + ); + }; + 3DA712B50664C7C50002CE69 = { + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + configStateDict = { + }; + debuggerPlugin = GDBDebugging; + enableDebugStr = 1; + environmentEntries = ( + ); + isa = PBXExecutable; + name = midithread; + shlibInfoDictList = ( + ); + sourceDirectories = ( + ); + }; + 3DA712C00664C9B40002CE69 = { + activeExec = 0; + executables = ( + 3DA712C20664C9B40002CE69, + ); + }; + 3DA712C20664C9B40002CE69 = { + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + configStateDict = { + }; + debuggerPlugin = GDBDebugging; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + isa = PBXExecutable; + name = midithru; + shlibInfoDictList = ( + ); + sourceDirectories = ( + ); + }; + 3DA712CD0664CB1B0002CE69 = { + activeExec = 0; + executables = ( + 3DA712CF0664CB1B0002CE69, + ); + }; + 3DA712CF0664CB1B0002CE69 = { + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + configStateDict = { + }; + debuggerPlugin = GDBDebugging; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + isa = PBXExecutable; + name = sysex; + shlibInfoDictList = ( + ); + sourceDirectories = ( + ); + }; + 3DA715FB066511460002CE69 = { + isa = PBXSymbolicBreakpoint; + state = 2; + symbolName = ""; + }; + 3DA7160D066548C80002CE69 = { + fileReference = 3DA774210663E9DA0002CE69; + isa = PBXFileBreakpoint; + lineNumber = 128; + state = 2; + }; + 3DA7161606664C500002CE69 = { + fRef = 5851D527047955C800EE98CD; + isa = PBXTextBookmark; + name = "portmidi.h: 174"; + rLen = 7; + rLoc = 8744; + rType = 0; + vrLen = 466; + vrLoc = 8611; + }; + 3DA7161A06664C500002CE69 = { + fRef = 5851D5310479560B00EE98CD; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: midi_write"; + rLen = 0; + rLoc = 18396; + rType = 0; + vrLen = 605; + vrLoc = 11721; + }; + 3DA7161B06664C500002CE69 = { + fRef = 5851D523047955C800EE98CD; + isa = PBXTextBookmark; + name = "pminternal.h: 124"; + rLen = 0; + rLoc = 6172; + rType = 0; + vrLen = 1926; + vrLoc = 4173; + }; + 3DA7161C06664C500002CE69 = { + fRef = 5851D5310479560B00EE98CD; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: midi_write"; + rLen = 0; + rLoc = 18396; + rType = 0; + vrLen = 1782; + vrLoc = 11284; + }; + 3DA7161D06664C500002CE69 = { + fRef = 5851D523047955C800EE98CD; + isa = PBXTextBookmark; + name = "pminternal.h: 124"; + rLen = 0; + rLoc = 6093; + rType = 0; + vrLen = 1762; + vrLoc = 4480; + }; + 3DA7161E06664C500002CE69 = { + fRef = 5851D5310479560B00EE98CD; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: midi_write"; + rLen = 0; + rLoc = 18396; + rType = 0; + vrLen = 583; + vrLoc = 12640; + }; + 3DA7161F06664C500002CE69 = { + fRef = 5851D523047955C800EE98CD; + isa = PBXTextBookmark; + name = "pminternal.h: 124"; + rLen = 0; + rLoc = 6093; + rType = 0; + vrLen = 606; + vrLoc = 6296; + }; + 3DA7162006664C500002CE69 = { + fRef = 5851D527047955C800EE98CD; + isa = PBXTextBookmark; + name = "portmidi.h: 174"; + rLen = 7; + rLoc = 8744; + rType = 0; + vrLen = 466; + vrLoc = 8611; + }; + 3DA7162106664C500002CE69 = { + fRef = 5851D5310479560B00EE98CD; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: midi_write"; + rLen = 0; + rLoc = 14327; + rType = 0; + vrLen = 1769; + vrLoc = 10723; + }; + 3DA7162206664C500002CE69 = { + fRef = 5851D523047955C800EE98CD; + isa = PBXTextBookmark; + name = "pminternal.h: 133"; + rLen = 17; + rLoc = 6353; + rType = 0; + vrLen = 2777; + vrLoc = 1303; + }; + 3DA7162306664C500002CE69 = { + fRef = 5851D5310479560B00EE98CD; + isa = PBXTextBookmark; + name = "pmmacosxcm.c: midi_end_sysex"; + rLen = 0; + rLoc = 17151; + rType = 0; + vrLen = 1470; + vrLoc = 14541; + }; + 3DA7162406664C500002CE69 = { + fRef = 5851D523047955C800EE98CD; + isa = PBXTextBookmark; + name = "pminternal.h: 133"; + rLen = 17; + rLoc = 6353; + rType = 0; + vrLen = 2610; + vrLoc = 1569; + }; + 3DA716320666705B0002CE69 = { + fileReference = 5851D526047955C800EE98CD; + isa = PBXFileBreakpoint; + lineNumber = 839; + state = 1; + }; + 3DA7740C0663E8EB0002CE69 = { + activeExec = 0; + executables = ( + 3DA7740E0663E8EB0002CE69, + ); + }; + 3DA7740E0663E8EB0002CE69 = { + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + configStateDict = { + }; + debuggerPlugin = GDBDebugging; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + isa = PBXExecutable; + name = test; + shlibInfoDictList = ( + ); + sourceDirectories = ( + ); + }; + 3DDE89D906667BAD0002CE69 = { + fRef = 5851D523047955C800EE98CD; + isa = PBXTextBookmark; + name = "pminternal.h: none_synchronize"; + rLen = 0; + rLoc = 6900; + rType = 0; + vrLen = 2193; + vrLoc = 0; + }; + 5851D5180479552300EE98CD = { + activeBuildStyle = 5851D5160479552300EE98CD; + activeExecutable = 3D9CFCB1067657D50002CE69; + activeTarget = 3D9CFCAF067657D50002CE69; + addToTargets = ( + 3DA7740C0663E8EB0002CE69, + ); + breakpoints = ( + 3DA715FB066511460002CE69, + 3DA7160D066548C80002CE69, + 3DA716320666705B0002CE69, + 3D9CFCA7067651E80002CE69, + 3D9CFCA90676535F0002CE69, + ); + executables = ( + 3DA7740E0663E8EB0002CE69, + 3DA712B50664C7C50002CE69, + 3DA712C20664C9B40002CE69, + 3DA712CF0664CB1B0002CE69, + 3D9CFCB1067657D50002CE69, + ); + perUserDictionary = { + PBXPerProjectTemplateStateSaveDate = 108416809; + "PBXTemplateGeometry-F5314676015831810DCA290F" = { + ContentSize = "{685, 434}"; + LeftSlideOut = { + Collapsed = NO; + Frame = "{{0, 23}, {685, 411}}"; + Split0 = { + ActiveTab = 2; + ActiveTabName = PBXBuildResultsModule; + Collapsed = NO; + Frame = "{{0, 0}, {685, 411}}"; + Split0 = { + Frame = "{{0, 212}, {685, 199}}"; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {952, 321}}"; + }; + Tab1 = { + Debugger = { + Collapsed = NO; + Frame = "{{0, 0}, {781, 452}}"; + Split0 = { + Frame = "{{0, 24}, {781, 428}}"; + Split0 = { + Frame = "{{0, 0}, {383, 428}}"; + }; + Split1 = { + DebugVariablesTableConfiguration = ( + Name, + 123, + Value, + 85, + Summary, + 155.123, + ); + Frame = "{{392, 0}, {389, 428}}"; + }; + SplitCount = 2; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + Tab1 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + TabCount = 2; + TabsVisible = YES; + }; + Frame = "{{0, 0}, {781, 452}}"; + LauncherConfigVersion = 7; + }; + Tab2 = { + Frame = "{{0, 0}, {685, 215}}"; + LauncherConfigVersion = 3; + Runner = { + Frame = "{{0, 0}, {685, 215}}"; + }; + }; + Tab3 = { + BuildMessageFrame = "{{0, 0}, {687, 117}}"; + BuildTranscriptFrame = "{{0, 126}, {687, 58}}"; + BuildTranscriptFrameExpanded = YES; + Frame = "{{0, 0}, {685, 206}}"; + }; + Tab4 = { + Frame = "{{0, 0}, {612, 295}}"; + }; + TabCount = 5; + TabsVisible = NO; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {300, 533}}"; + GroupTreeTableConfiguration = ( + TargetStatusColumn, + 18, + MainColumn, + 267, + ); + }; + Tab1 = { + ClassesFrame = "{{0, 0}, {280, 398}}"; + ClassesTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXClassColumnIdentifier, + 237, + ); + Frame = "{{0, 0}, {278, 659}}"; + MembersFrame = "{{0, 407}, {280, 252}}"; + MembersTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXMethodColumnIdentifier, + 236, + ); + }; + Tab2 = { + Frame = "{{0, 0}, {200, 100}}"; + }; + Tab3 = { + Frame = "{{0, 0}, {200, 100}}"; + TargetTableConfiguration = ( + ActiveObject, + 16, + ObjectNames, + 202.296, + ); + }; + Tab4 = { + BreakpointsTreeTableConfiguration = ( + breakpointColumn, + 197, + enabledColumn, + 31, + ); + Frame = "{{0, 0}, {250, 100}}"; + }; + TabCount = 5; + TabsVisible = NO; + }; + NavBarShownByDefault = YES; + StatusViewVisible = YES; + Template = F5314676015831810DCA290F; + ToolbarVisible = YES; + WindowLocation = "{325, 250}"; + }; + "PBXTemplateGeometry-F5CA7EC9015C08ED0DCA290F" = { + ContentSize = "{665, 594}"; + LeftSlideOut = { + Collapsed = NO; + Frame = "{{0, 0}, {665, 594}}"; + Split0 = { + ActiveTab = 3; + ActiveTabName = PBXProjectFindModule; + Collapsed = NO; + Frame = "{{0, 0}, {665, 594}}"; + Split0 = { + Frame = "{{0, 301}, {665, 293}}"; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {484, 208}}"; + }; + Tab1 = { + Debugger = { + Collapsed = NO; + Frame = "{{0, 0}, {664, 208}}"; + Split0 = { + Frame = "{{0, 24}, {664, 184}}"; + Split0 = { + Frame = "{{0, 0}, {325, 184}}"; + }; + Split1 = { + DebugVariablesTableConfiguration = ( + Name, + 123, + Value, + 85, + Summary, + 96.123, + ); + Frame = "{{334, 0}, {330, 184}}"; + }; + SplitCount = 2; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + Tab1 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + TabCount = 2; + TabsVisible = YES; + }; + Frame = "{{0, 0}, {664, 208}}"; + LauncherConfigVersion = 7; + }; + Tab2 = { + Frame = "{{0, 0}, {664, 50}}"; + LauncherConfigVersion = 3; + Runner = { + Frame = "{{0, 0}, {664, 50}}"; + }; + }; + Tab3 = { + BuildMessageFrame = "{{0, 0}, {667, 206}}"; + BuildTranscriptFrame = "{{0, 215}, {667, 85}}"; + BuildTranscriptFrameExpanded = YES; + Frame = "{{0, 0}, {665, 298}}"; + }; + Tab4 = { + Frame = "{{0, 0}, {665, 295}}"; + }; + TabCount = 5; + TabsVisible = NO; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {313, 531}}"; + GroupTreeTableConfiguration = ( + TargetStatusColumn, + 18, + MainColumn, + 280, + ); + }; + Tab1 = { + ClassesFrame = "{{0, 0}, {280, 398}}"; + ClassesTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXClassColumnIdentifier, + 237, + ); + Frame = "{{0, 0}, {278, 659}}"; + MembersFrame = "{{0, 407}, {280, 252}}"; + MembersTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXMethodColumnIdentifier, + 236, + ); + }; + Tab2 = { + Frame = "{{0, 0}, {200, 100}}"; + }; + Tab3 = { + Frame = "{{0, 0}, {200, 557}}"; + TargetTableConfiguration = ( + ActiveObject, + 16, + ObjectNames, + 202.296, + ); + }; + Tab4 = { + BreakpointsTreeTableConfiguration = ( + breakpointColumn, + 197, + enabledColumn, + 31, + ); + Frame = "{{0, 0}, {250, 100}}"; + }; + TabCount = 5; + TabsVisible = NO; + }; + NavBarShownByDefault = YES; + StatusViewVisible = NO; + Template = F5CA7EC9015C08ED0DCA290F; + ToolbarVisible = NO; + WindowLocation = "{335, 130}"; + }; + PBXWorkspaceContents = ( + { + LeftSlideOut = { + Split0 = { + Split0 = { + NavContent0 = { + bookmark = 3D9CFCD606765A7F0002CE69; + history = ( + 3DA7161606664C500002CE69, + 3DDE89D906667BAD0002CE69, + 3D7903E9066690E00002CE69, + 3D9CFCBE06765A7F0002CE69, + 3D9CFCBF06765A7F0002CE69, + 3D9CFCC006765A7F0002CE69, + 3D9CFCC106765A7F0002CE69, + 3D9CFCC206765A7F0002CE69, + 3D9CFCC306765A7F0002CE69, + 3D9CFCC406765A7F0002CE69, + 3D9CFCC506765A7F0002CE69, + ); + prevStack = ( + 3DA7161A06664C500002CE69, + 3DA7161B06664C500002CE69, + 3DA7161C06664C500002CE69, + 3DA7161D06664C500002CE69, + 3DA7161E06664C500002CE69, + 3DA7161F06664C500002CE69, + 3DA7162006664C500002CE69, + 3DA7162106664C500002CE69, + 3DA7162206664C500002CE69, + 3DA7162306664C500002CE69, + 3DA7162406664C500002CE69, + 3D7903EC066690E00002CE69, + 3D7903ED066690E00002CE69, + 3D7903EE066690E00002CE69, + 3D7903EF066690E00002CE69, + 3D7903F0066690E00002CE69, + 3D7903F1066690E00002CE69, + 3D7903F2066690E00002CE69, + 3D7903F3066690E00002CE69, + 3D7903F4066690E00002CE69, + 3D9CFCC606765A7F0002CE69, + 3D9CFCC706765A7F0002CE69, + 3D9CFCC806765A7F0002CE69, + 3D9CFCC906765A7F0002CE69, + 3D9CFCCA06765A7F0002CE69, + 3D9CFCCB06765A7F0002CE69, + 3D9CFCCC06765A7F0002CE69, + 3D9CFCCD06765A7F0002CE69, + 3D9CFCCE06765A7F0002CE69, + 3D9CFCCF06765A7F0002CE69, + 3D9CFCD006765A7F0002CE69, + 3D9CFCD106765A7F0002CE69, + 3D9CFCD206765A7F0002CE69, + 3D9CFCD306765A7F0002CE69, + 3D9CFCD406765A7F0002CE69, + 3D9CFCD506765A7F0002CE69, + ); + }; + NavCount = 1; + NavGeometry0 = { + Frame = "{{0, 0}, {761, 657}}"; + NavBarVisible = YES; + }; + NavSplitVertical = NO; + }; + SplitCount = 1; + Tab1 = { + Debugger = { + Split0 = { + SplitCount = 2; + }; + SplitCount = 1; + TabCount = 2; + }; + LauncherConfigVersion = 7; + }; + Tab2 = { + LauncherConfigVersion = 3; + Runner = { + }; + }; + TabCount = 5; + }; + SplitCount = 1; + Tab1 = { + OptionsSetName = "Hierarchy, all classes"; + }; + TabCount = 5; + }; + }, + { + LeftSlideOut = { + Split0 = { + Split0 = { + NavContent0 = { + bookmark = 3D9CFCD806765A7F0002CE69; + history = ( + 3D9CFCD706765A7F0002CE69, + ); + }; + NavCount = 1; + NavGeometry0 = { + Frame = "{{0, 0}, {620, 353}}"; + NavBarVisible = YES; + }; + NavSplitVertical = NO; + }; + SplitCount = 1; + Tab1 = { + Debugger = { + Split0 = { + SplitCount = 2; + }; + SplitCount = 1; + TabCount = 2; + }; + LauncherConfigVersion = 7; + }; + Tab2 = { + LauncherConfigVersion = 3; + Runner = { + }; + }; + TabCount = 5; + }; + SplitCount = 1; + Tab1 = { + OptionsSetName = "Hierarchy, all classes"; + }; + TabCount = 5; + }; + }, + ); + PBXWorkspaceGeometries = ( + { + ContentSize = "{1024, 680}"; + LeftSlideOut = { + ActiveTab = 3; + ActiveTabName = PBXTargetTreeModule; + Collapsed = NO; + Frame = "{{0, 23}, {1024, 657}}"; + Split0 = { + Collapsed = NO; + Frame = "{{263, 0}, {761, 657}}"; + Split0 = { + Frame = "{{0, 0}, {761, 657}}"; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {681, 289}}"; + }; + Tab1 = { + Debugger = { + Collapsed = NO; + Frame = "{{0, 0}, {681, 150}}"; + Split0 = { + Frame = "{{0, 24}, {681, 126}}"; + Split0 = { + Frame = "{{0, 0}, {333, 126}}"; + }; + Split1 = { + DebugVariablesTableConfiguration = ( + Name, + 123, + Value, + 85, + Summary, + 105.123, + ); + Frame = "{{342, 0}, {339, 126}}"; + }; + SplitCount = 2; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + Tab1 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + TabCount = 2; + TabsVisible = YES; + }; + Frame = "{{0, 0}, {681, 120}}"; + LauncherConfigVersion = 7; + }; + Tab2 = { + Frame = "{{0, 0}, {681, 234}}"; + LauncherConfigVersion = 3; + Runner = { + Frame = "{{0, 0}, {681, 234}}"; + }; + }; + Tab3 = { + BuildMessageFrame = "{{0, 0}, {683, 163}}"; + BuildTranscriptFrame = "{{0, 172}, {683, 68}}"; + BuildTranscriptFrameExpanded = YES; + Frame = "{{0, 0}, {681, 238}}"; + }; + Tab4 = { + Frame = "{{0, 0}, {612, 295}}"; + }; + TabCount = 5; + TabsVisible = NO; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {260, 657}}"; + GroupTreeTableConfiguration = ( + TargetStatusColumn, + 18, + MainColumn, + 227, + ); + }; + Tab1 = { + ClassesFrame = "{{0, 0}, {250, 395}}"; + ClassesTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXClassColumnIdentifier, + 207, + ); + Frame = "{{0, 0}, {248, 657}}"; + MembersFrame = "{{0, 404}, {250, 253}}"; + MembersTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXMethodColumnIdentifier, + 206, + ); + }; + Tab2 = { + Frame = "{{0, 0}, {217, 657}}"; + }; + Tab3 = { + Frame = "{{0, 0}, {239, 657}}"; + TargetTableConfiguration = ( + ActiveObject, + 16, + ObjectNames, + 206.296, + ); + }; + Tab4 = { + BreakpointsTreeTableConfiguration = ( + breakpointColumn, + 197, + enabledColumn, + 31, + ); + Frame = "{{0, 0}, {250, 657}}"; + }; + TabCount = 5; + TabsVisible = YES; + }; + NavBarShownByDefault = YES; + StatusViewVisible = YES; + Template = 64ABBB4501FA494900185B06; + ToolbarVisible = YES; + WindowLocation = "{0, 4}"; + }, + { + ContentSize = "{644, 662}"; + LeftSlideOut = { + Collapsed = NO; + Frame = "{{0, 23}, {644, 639}}"; + Split0 = { + ActiveTab = 0; + ActiveTabName = PBXDebugSessionModule; + Collapsed = NO; + Frame = "{{24, 0}, {620, 639}}"; + Split0 = { + Frame = "{{0, 286}, {620, 353}}"; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {749, 267}}"; + }; + Tab1 = { + Debugger = { + ActiveTab = 0; + ActiveTabName = PBXDebugCLIModule; + Collapsed = NO; + Frame = "{{0, 0}, {620, 280}}"; + Split0 = { + Frame = "{{0, 115}, {620, 165}}"; + Split0 = { + Frame = "{{0, 0}, {297, 165}}"; + }; + Split1 = { + DebugVariablesTableConfiguration = ( + Name, + 123, + Value, + 85, + Summary, + 80.123, + ); + Frame = "{{306, 0}, {314, 165}}"; + }; + SplitCount = 2; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {620, 91}}"; + }; + Tab1 = { + Frame = "{{0, 0}, {100, 50}}"; + }; + TabCount = 2; + TabsVisible = YES; + }; + Frame = "{{0, 0}, {620, 280}}"; + LauncherConfigVersion = 7; + }; + Tab2 = { + Frame = "{{0, 0}, {664, 50}}"; + LauncherConfigVersion = 3; + Runner = { + Frame = "{{0, 0}, {664, 50}}"; + }; + }; + Tab3 = { + BuildMessageFrame = "{{0, 0}, {614, 203}}"; + BuildTranscriptFrame = "{{0, 212}, {614, 85}}"; + BuildTranscriptFrameExpanded = YES; + Frame = "{{0, 0}, {612, 295}}"; + }; + Tab4 = { + Frame = "{{0, 0}, {612, 295}}"; + }; + TabCount = 5; + TabsVisible = NO; + }; + SplitCount = 1; + Tab0 = { + Frame = "{{0, 0}, {313, 531}}"; + GroupTreeTableConfiguration = ( + TargetStatusColumn, + 18, + MainColumn, + 280, + ); + }; + Tab1 = { + ClassesFrame = "{{0, 0}, {280, 398}}"; + ClassesTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXClassColumnIdentifier, + 237, + ); + Frame = "{{0, 0}, {278, 659}}"; + MembersFrame = "{{0, 407}, {280, 252}}"; + MembersTreeTableConfiguration = ( + PBXBookColumnIdentifier, + 20, + PBXMethodColumnIdentifier, + 236, + ); + }; + Tab2 = { + Frame = "{{0, 0}, {200, 100}}"; + }; + Tab3 = { + Frame = "{{0, 0}, {200, 557}}"; + TargetTableConfiguration = ( + ActiveObject, + 16, + ObjectNames, + 202.296, + ); + }; + Tab4 = { + BreakpointsTreeTableConfiguration = ( + breakpointColumn, + 197, + enabledColumn, + 31, + ); + Frame = "{{0, 0}, {250, 100}}"; + }; + TabCount = 5; + TabsVisible = YES; + }; + NavBarShownByDefault = YES; + StatusViewVisible = YES; + Template = F5CA7ECC015C09990DCA290F; + ToolbarVisible = YES; + WindowLocation = "{48, 17}"; + }, + ); + PBXWorkspaceStateSaveDate = 108416809; + }; + perUserProjectItems = { + 3D7903E9066690E00002CE69 = 3D7903E9066690E00002CE69; + 3D7903EC066690E00002CE69 = 3D7903EC066690E00002CE69; + 3D7903ED066690E00002CE69 = 3D7903ED066690E00002CE69; + 3D7903EE066690E00002CE69 = 3D7903EE066690E00002CE69; + 3D7903EF066690E00002CE69 = 3D7903EF066690E00002CE69; + 3D7903F0066690E00002CE69 = 3D7903F0066690E00002CE69; + 3D7903F1066690E00002CE69 = 3D7903F1066690E00002CE69; + 3D7903F2066690E00002CE69 = 3D7903F2066690E00002CE69; + 3D7903F3066690E00002CE69 = 3D7903F3066690E00002CE69; + 3D7903F4066690E00002CE69 = 3D7903F4066690E00002CE69; + 3D9CFCBE06765A7F0002CE69 = 3D9CFCBE06765A7F0002CE69; + 3D9CFCBF06765A7F0002CE69 = 3D9CFCBF06765A7F0002CE69; + 3D9CFCC006765A7F0002CE69 = 3D9CFCC006765A7F0002CE69; + 3D9CFCC106765A7F0002CE69 = 3D9CFCC106765A7F0002CE69; + 3D9CFCC206765A7F0002CE69 = 3D9CFCC206765A7F0002CE69; + 3D9CFCC306765A7F0002CE69 = 3D9CFCC306765A7F0002CE69; + 3D9CFCC406765A7F0002CE69 = 3D9CFCC406765A7F0002CE69; + 3D9CFCC506765A7F0002CE69 = 3D9CFCC506765A7F0002CE69; + 3D9CFCC606765A7F0002CE69 = 3D9CFCC606765A7F0002CE69; + 3D9CFCC706765A7F0002CE69 = 3D9CFCC706765A7F0002CE69; + 3D9CFCC806765A7F0002CE69 = 3D9CFCC806765A7F0002CE69; + 3D9CFCC906765A7F0002CE69 = 3D9CFCC906765A7F0002CE69; + 3D9CFCCA06765A7F0002CE69 = 3D9CFCCA06765A7F0002CE69; + 3D9CFCCB06765A7F0002CE69 = 3D9CFCCB06765A7F0002CE69; + 3D9CFCCC06765A7F0002CE69 = 3D9CFCCC06765A7F0002CE69; + 3D9CFCCD06765A7F0002CE69 = 3D9CFCCD06765A7F0002CE69; + 3D9CFCCE06765A7F0002CE69 = 3D9CFCCE06765A7F0002CE69; + 3D9CFCCF06765A7F0002CE69 = 3D9CFCCF06765A7F0002CE69; + 3D9CFCD006765A7F0002CE69 = 3D9CFCD006765A7F0002CE69; + 3D9CFCD106765A7F0002CE69 = 3D9CFCD106765A7F0002CE69; + 3D9CFCD206765A7F0002CE69 = 3D9CFCD206765A7F0002CE69; + 3D9CFCD306765A7F0002CE69 = 3D9CFCD306765A7F0002CE69; + 3D9CFCD406765A7F0002CE69 = 3D9CFCD406765A7F0002CE69; + 3D9CFCD506765A7F0002CE69 = 3D9CFCD506765A7F0002CE69; + 3D9CFCD606765A7F0002CE69 = 3D9CFCD606765A7F0002CE69; + 3D9CFCD706765A7F0002CE69 = 3D9CFCD706765A7F0002CE69; + 3D9CFCD806765A7F0002CE69 = 3D9CFCD806765A7F0002CE69; + 3DA7161606664C500002CE69 = 3DA7161606664C500002CE69; + 3DA7161A06664C500002CE69 = 3DA7161A06664C500002CE69; + 3DA7161B06664C500002CE69 = 3DA7161B06664C500002CE69; + 3DA7161C06664C500002CE69 = 3DA7161C06664C500002CE69; + 3DA7161D06664C500002CE69 = 3DA7161D06664C500002CE69; + 3DA7161E06664C500002CE69 = 3DA7161E06664C500002CE69; + 3DA7161F06664C500002CE69 = 3DA7161F06664C500002CE69; + 3DA7162006664C500002CE69 = 3DA7162006664C500002CE69; + 3DA7162106664C500002CE69 = 3DA7162106664C500002CE69; + 3DA7162206664C500002CE69 = 3DA7162206664C500002CE69; + 3DA7162306664C500002CE69 = 3DA7162306664C500002CE69; + 3DA7162406664C500002CE69 = 3DA7162406664C500002CE69; + 3DDE89D906667BAD0002CE69 = 3DDE89D906667BAD0002CE69; + }; + projectwideBuildSettings = { + }; + wantsIndex = 1; + wantsSCM = -1; + }; + 5851D5370479562300EE98CD = { + activeExec = 0; + }; +} diff --git a/pd/portmidi/pm_mac/pm_test.pbproj/project.pbxproj b/pd/portmidi/pm_mac/pm_test.pbproj/project.pbxproj new file mode 100644 index 00000000..8e25d1f3 --- /dev/null +++ b/pd/portmidi/pm_mac/pm_test.pbproj/project.pbxproj @@ -0,0 +1,337 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 38; + objects = { + 014CEA490018CE3211CA2923 = { + buildRules = ( + ); + buildSettings = { + COPY_PHASE_STRIP = NO; + OPTIMIZATION_CFLAGS = "-O0"; + }; + isa = PBXBuildStyle; + name = Development; + }; + 014CEA4A0018CE3211CA2923 = { + buildRules = ( + ); + buildSettings = { + COPY_PHASE_STRIP = YES; + }; + isa = PBXBuildStyle; + name = Deployment; + }; +//010 +//011 +//012 +//013 +//014 +//030 +//031 +//032 +//033 +//034 + 034768E2FF38A6DC11DB9C8B = { + isa = PBXExecutableFileReference; + path = pm_test; + refType = 3; + }; +//030 +//031 +//032 +//033 +//034 +//080 +//081 +//082 +//083 +//084 + 08FB7793FE84155DC02AAC07 = { + buildStyles = ( + 014CEA490018CE3211CA2923, + 014CEA4A0018CE3211CA2923, + ); + hasScannedForEncodings = 1; + isa = PBXProject; + mainGroup = 08FB7794FE84155DC02AAC07; + projectDirPath = ""; + targets = ( + 08FB779FFE84155DC02AAC07, + ); + }; + 08FB7794FE84155DC02AAC07 = { + children = ( + 08FB7795FE84155DC02AAC07, + 08FB779DFE84155DC02AAC07, + 19C28FBDFE9D53C911CA2CBB, + ); + isa = PBXGroup; + name = pm_test; + refType = 4; + }; + 08FB7795FE84155DC02AAC07 = { + children = ( + 5851D5650479591100EE98CD, + 58ED5B7E047D3A1200B92E62, + 5851D56F04795A1A00EE98CD, + 5851D5690479593D00EE98CD, + 5851D57104795A3C00EE98CD, + 5851D56B0479594B00EE98CD, + ); + isa = PBXGroup; + name = Source; + refType = 4; + }; + 08FB779DFE84155DC02AAC07 = { + children = ( + 09AB6884FE841BABC02AAC07, + 58058934047C96F0009FBA67, + 5851D5670479592300EE98CD, + 5851D56D0479596A00EE98CD, + ); + isa = PBXGroup; + name = "External Frameworks and Libraries"; + refType = 4; + }; + 08FB779FFE84155DC02AAC07 = { + buildPhases = ( + 08FB77A0FE84155DC02AAC07, + 08FB77A1FE84155DC02AAC07, + 08FB77A3FE84155DC02AAC07, + 08FB77A5FE84155DC02AAC07, + C6859E980290922304C91782, + ); + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ""; + HEADER_SEARCH_PATHS = ""; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = /Users/zk/Downloads/portmidi.1/pm_mac/build; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = pm_test; + REZ_EXECUTABLE = YES; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; + }; + dependencies = ( + ); + isa = PBXToolTarget; + name = pm_test; + productInstallPath = "$(HOME)/bin"; + productName = pm_test; + productReference = 034768E2FF38A6DC11DB9C8B; + }; + 08FB77A0FE84155DC02AAC07 = { + buildActionMask = 2147483647; + files = ( + 5851D56A0479593D00EE98CD, + 5851D56C0479594B00EE98CD, + 5851D57204795A3C00EE98CD, + ); + isa = PBXHeadersBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 08FB77A1FE84155DC02AAC07 = { + buildActionMask = 2147483647; + files = ( + 58ED5C7B047D697A00B92E62, + ); + isa = PBXSourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 08FB77A3FE84155DC02AAC07 = { + buildActionMask = 2147483647; + files = ( + 09AB6885FE841BABC02AAC07, + 5851D5680479592300EE98CD, + 5851D56E0479596A00EE98CD, + 58058935047C96F0009FBA67, + ); + isa = PBXFrameworksBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 08FB77A5FE84155DC02AAC07 = { + buildActionMask = 2147483647; + files = ( + ); + isa = PBXRezBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; +//080 +//081 +//082 +//083 +//084 +//090 +//091 +//092 +//093 +//094 + 09AB6884FE841BABC02AAC07 = { + isa = PBXFrameworkReference; + name = CoreFoundation.framework; + path = /System/Library/Frameworks/CoreFoundation.framework; + refType = 0; + }; + 09AB6885FE841BABC02AAC07 = { + fileRef = 09AB6884FE841BABC02AAC07; + isa = PBXBuildFile; + settings = { + }; + }; +//090 +//091 +//092 +//093 +//094 +//190 +//191 +//192 +//193 +//194 + 19C28FBDFE9D53C911CA2CBB = { + children = ( + 034768E2FF38A6DC11DB9C8B, + ); + isa = PBXGroup; + name = Products; + refType = 4; + }; +//190 +//191 +//192 +//193 +//194 +//580 +//581 +//582 +//583 +//584 + 58058934047C96F0009FBA67 = { + isa = PBXFrameworkReference; + name = CoreAudio.framework; + path = /System/Library/Frameworks/CoreAudio.framework; + refType = 0; + }; + 58058935047C96F0009FBA67 = { + fileRef = 58058934047C96F0009FBA67; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D5650479591100EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = test.c; + path = ../pm_test/test.c; + refType = 2; + }; + 5851D5670479592300EE98CD = { + isa = PBXFrameworkReference; + name = CoreMIDI.framework; + path = /System/Library/Frameworks/CoreMIDI.framework; + refType = 0; + }; + 5851D5680479592300EE98CD = { + fileRef = 5851D5670479592300EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D5690479593D00EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = portmidi.h; + path = ../pm_common/portmidi.h; + refType = 2; + }; + 5851D56A0479593D00EE98CD = { + fileRef = 5851D5690479593D00EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D56B0479594B00EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = porttime.h; + path = ../porttime/porttime.h; + refType = 2; + }; + 5851D56C0479594B00EE98CD = { + fileRef = 5851D56B0479594B00EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D56D0479596A00EE98CD = { + isa = PBXFileReference; + name = libportmidi.a; + path = build/libportmidi.a; + refType = 4; + }; + 5851D56E0479596A00EE98CD = { + fileRef = 5851D56D0479596A00EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 5851D56F04795A1A00EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = midithread.c; + path = ../pm_test/midithread.c; + refType = 2; + }; + 5851D57104795A3C00EE98CD = { + fileEncoding = 30; + isa = PBXFileReference; + name = pmutil.h; + path = ../pm_common/pmutil.h; + refType = 2; + }; + 5851D57204795A3C00EE98CD = { + fileRef = 5851D57104795A3C00EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; + 58ED5B7E047D3A1200B92E62 = { + fileEncoding = 30; + isa = PBXFileReference; + name = latency.c; + path = ../pm_test/latency.c; + refType = 2; + }; + 58ED5C7B047D697A00B92E62 = { + fileRef = 5851D5650479591100EE98CD; + isa = PBXBuildFile; + settings = { + }; + }; +//580 +//581 +//582 +//583 +//584 +//C60 +//C61 +//C62 +//C63 +//C64 + C6859E980290922304C91782 = { + buildActionMask = 8; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + isa = PBXCopyFilesBuildPhase; + runOnlyForDeploymentPostprocessing = 1; + }; + }; + rootObject = 08FB7793FE84155DC02AAC07; +} diff --git a/pd/portmidi/pm_mac/pmmac.c b/pd/portmidi/pm_mac/pmmac.c new file mode 100644 index 00000000..fbf31c83 --- /dev/null +++ b/pd/portmidi/pm_mac/pmmac.c @@ -0,0 +1,42 @@ +/* pmmac.c -- PortMidi os-dependent code */ + +/* This file only needs to implement: +pm_init(), which calls various routines to register the +available midi devices, +Pm_GetDefaultInputDeviceID(), and +Pm_GetDefaultOutputDeviceID(). +It is seperate from pmmacosxcm because we might want to register +non-CoreMIDI devices. +*/ + +#include "stdlib.h" +#include "portmidi.h" +#include "pmmacosxcm.h" + +PmError pm_init() +{ + return pm_macosxcm_init(); +} + +void pm_term(void) +{ + pm_macosxcm_term(); +} + +PmDeviceID pm_default_input_device_id = -1; +PmDeviceID pm_default_output_device_id = -1; + +PmDeviceID Pm_GetDefaultInputDeviceID() +{ + return pm_default_input_device_id; +} + +PmDeviceID Pm_GetDefaultOutputDeviceID() { + return pm_default_output_device_id; +} + +void *pm_alloc(size_t s) { return malloc(s); } + +void pm_free(void *ptr) { free(ptr); } + + diff --git a/pd/portmidi/pm_mac/pmmac.h b/pd/portmidi/pm_mac/pmmac.h new file mode 100644 index 00000000..2d714254 --- /dev/null +++ b/pd/portmidi/pm_mac/pmmac.h @@ -0,0 +1,4 @@ +/* pmmac.h */ + +extern PmDeviceID pm_default_input_device_id; +extern PmDeviceID pm_default_output_device_id; \ No newline at end of file diff --git a/pd/portmidi/pm_mac/pmmacosxcm.c b/pd/portmidi/pm_mac/pmmacosxcm.c new file mode 100644 index 00000000..55b9b084 --- /dev/null +++ b/pd/portmidi/pm_mac/pmmacosxcm.c @@ -0,0 +1,701 @@ +/* + * Platform interface to the MacOS X CoreMIDI framework + * + * Jon Parise + * and subsequent work by Andrew Zeldis and Zico Kolter + * and Roger B. Dannenberg + * + * $Id: pmmacosxcm.c,v 1.1 2005-12-15 00:56:57 eighthave Exp $ + */ + +/* Notes: + since the input and output streams are represented by MIDIEndpointRef + values and almost no other state, we store the MIDIEndpointRef on + descriptors[midi->device_id].descriptor. The only other state we need + is for errors: we need to know if there is an error and if so, what is + the error text. As in pmwinmm.c, we use a structure with two kinds of + host error: "error" and "callback_error". That way, asynchronous callbacks + do not interfere with other error information. + + OS X does not seem to have an error-code-to-text function, so we will + just use text messages instead of error codes. + */ + +#include + +#include "portmidi.h" +#include "pminternal.h" +#include "porttime.h" +#include "pmmac.h" +#include "pmmacosxcm.h" + +#include +#include + +#include +#include +#include + +#define PACKET_BUFFER_SIZE 1024 + +/* this is very strange: if I put in a reasonable + number here, e.g. 128, which would allow sysex data + to be sent 128 bytes at a time, then I lose sysex + data in my loopback test. With a buffer size of 4, + we put at most 4 bytes in a packet (but maybe many + packets in a packetList), and everything works fine. + */ +#define SYSEX_BUFFER_SIZE 4 + +#define VERBOSE_ON 1 +#define VERBOSE if (VERBOSE_ON) + +#define MIDI_SYSEX 0xf0 +#define MIDI_EOX 0xf7 +#define MIDI_STATUS_MASK 0x80 + +static MIDIClientRef client = NULL; /* Client handle to the MIDI server */ +static MIDIPortRef portIn = NULL; /* Input port handle */ +static MIDIPortRef portOut = NULL; /* Output port handle */ + +extern pm_fns_node pm_macosx_in_dictionary; +extern pm_fns_node pm_macosx_out_dictionary; + +typedef struct midi_macosxcm_struct { + unsigned long sync_time; /* when did we last determine delta? */ + UInt64 delta; /* difference between stream time and real time in ns */ + UInt64 last_time; /* last output time */ + int first_message; /* tells midi_write to sychronize timestamps */ + int sysex_mode; /* middle of sending sysex */ + unsigned long sysex_word; /* accumulate data when receiving sysex */ + unsigned int sysex_byte_count; /* count how many received */ + char error[PM_HOST_ERROR_MSG_LEN]; + char callback_error[PM_HOST_ERROR_MSG_LEN]; + Byte packetBuffer[PACKET_BUFFER_SIZE]; + MIDIPacketList *packetList; /* a pointer to packetBuffer */ + MIDIPacket *packet; + Byte sysex_buffer[SYSEX_BUFFER_SIZE]; /* temp storage for sysex data */ + MIDITimeStamp sysex_timestamp; /* timestamp to use with sysex data */ +} midi_macosxcm_node, *midi_macosxcm_type; + +/* private function declarations */ +MIDITimeStamp timestamp_pm_to_cm(PmTimestamp timestamp); +PmTimestamp timestamp_cm_to_pm(MIDITimeStamp timestamp); + +char* cm_get_full_endpoint_name(MIDIEndpointRef endpoint); + + +static int +midi_length(long msg) +{ + int status, high, low; + static int high_lengths[] = { + 1, 1, 1, 1, 1, 1, 1, 1, /* 0x00 through 0x70 */ + 3, 3, 3, 3, 2, 2, 3, 1 /* 0x80 through 0xf0 */ + }; + static int low_lengths[] = { + 1, 1, 3, 2, 1, 1, 1, 1, /* 0xf0 through 0xf8 */ + 1, 1, 1, 1, 1, 1, 1, 1 /* 0xf9 through 0xff */ + }; + + status = msg & 0xFF; + high = status >> 4; + low = status & 15; + + return (high != 0xF0) ? high_lengths[high] : low_lengths[low]; +} + +static PmTimestamp midi_synchronize(PmInternal *midi) +{ + midi_macosxcm_type m = (midi_macosxcm_type) midi->descriptor; + UInt64 pm_stream_time_2 = + AudioConvertHostTimeToNanos(AudioGetCurrentHostTime()); + PmTimestamp real_time; + UInt64 pm_stream_time; + /* if latency is zero and this is an output, there is no + time reference and midi_synchronize should never be called */ + assert(midi->time_proc); + assert(!(midi->write_flag && midi->latency == 0)); + do { + /* read real_time between two reads of stream time */ + pm_stream_time = pm_stream_time_2; + real_time = (*midi->time_proc)(midi->time_info); + pm_stream_time_2 = AudioConvertHostTimeToNanos(AudioGetCurrentHostTime()); + /* repeat if more than 0.5 ms has elapsed */ + } while (pm_stream_time_2 > pm_stream_time + 500000); + m->delta = pm_stream_time - ((UInt64) real_time * (UInt64) 1000000); + m->sync_time = real_time; + return real_time; +} + + +/* called when MIDI packets are received */ +static void +readProc(const MIDIPacketList *newPackets, void *refCon, void *connRefCon) +{ + PmInternal *midi; + midi_macosxcm_type m; + PmEvent event; + MIDIPacket *packet; + unsigned int packetIndex; + unsigned long now; + unsigned int status; + + /* Retrieve the context for this connection */ + midi = (PmInternal *) connRefCon; + m = (midi_macosxcm_type) midi->descriptor; + assert(m); + + /* synchronize time references every 100ms */ + now = (*midi->time_proc)(midi->time_info); + if (m->first_message || m->sync_time + 100 /*ms*/ < now) { + /* time to resync */ + now = midi_synchronize(midi); + m->first_message = FALSE; + } + + packet = (MIDIPacket *) &newPackets->packet[0]; + /* printf("readproc packet status %x length %d\n", packet->data[0], packet->length); */ + for (packetIndex = 0; packetIndex < newPackets->numPackets; packetIndex++) { + /* Set the timestamp and dispatch this message */ + event.timestamp = + (AudioConvertHostTimeToNanos(packet->timeStamp) - m->delta) / + (UInt64) 1000000; + status = packet->data[0]; + /* process packet as sysex data if it begins with MIDI_SYSEX, or + MIDI_EOX or non-status byte */ + if (status == MIDI_SYSEX || status == MIDI_EOX || + !(status & MIDI_STATUS_MASK)) { + int i = 0; + while (i < packet->length) { + pm_read_byte(midi, packet->data[i], event.timestamp); + i++; + } + } else { + /* Build the PmMessage for the PmEvent structure */ + switch (packet->length) { + case 1: + event.message = Pm_Message(packet->data[0], 0, 0); + break; + case 2: + event.message = Pm_Message(packet->data[0], + packet->data[1], 0); + break; + case 3: + event.message = Pm_Message(packet->data[0], + packet->data[1], + packet->data[2]); + break; + default: + /* Skip packets that are too large to fit in a PmMessage */ +#ifdef DEBUG + printf("PortMidi debug msg: large packet skipped\n"); +#endif + continue; + } + pm_read_short(midi, &event); + } + packet = MIDIPacketNext(packet); + } +} + +static PmError +midi_in_open(PmInternal *midi, void *driverInfo) +{ + MIDIEndpointRef endpoint; + midi_macosxcm_type m; + OSStatus macHostError; + + /* insure that we have a time_proc for timing */ + if (midi->time_proc == NULL) { + if (!Pt_Started()) + Pt_Start(1, 0, 0); + /* time_get does not take a parameter, so coerce */ + midi->time_proc = (PmTimeProcPtr) Pt_Time; + } + + endpoint = (MIDIEndpointRef) descriptors[midi->device_id].descriptor; + if (endpoint == NULL) { + return pmInvalidDeviceId; + } + + m = (midi_macosxcm_type) pm_alloc(sizeof(midi_macosxcm_node)); /* create */ + midi->descriptor = m; + if (!m) { + return pmInsufficientMemory; + } + m->error[0] = 0; + m->callback_error[0] = 0; + m->sync_time = 0; + m->delta = 0; + m->last_time = 0; + m->first_message = TRUE; + m->sysex_mode = FALSE; + m->sysex_word = 0; + m->sysex_byte_count = 0; + m->packetList = NULL; + m->packet = NULL; + + macHostError = MIDIPortConnectSource(portIn, endpoint, midi); + if (macHostError != noErr) { + pm_hosterror = macHostError; + sprintf(pm_hosterror_text, + "Host error %ld: MIDIPortConnectSource() in midi_in_open()", + macHostError); + midi->descriptor = NULL; + pm_free(m); + return pmHostError; + } + + return pmNoError; +} + +static PmError +midi_in_close(PmInternal *midi) +{ + MIDIEndpointRef endpoint; + OSStatus macHostError; + PmError err = pmNoError; + + midi_macosxcm_type m = (midi_macosxcm_type) midi->descriptor; + + if (!m) return pmBadPtr; + + endpoint = (MIDIEndpointRef) descriptors[midi->device_id].descriptor; + if (endpoint == NULL) { + pm_hosterror = pmBadPtr; + } + + /* shut off the incoming messages before freeing data structures */ + macHostError = MIDIPortDisconnectSource(portIn, endpoint); + if (macHostError != noErr) { + pm_hosterror = macHostError; + sprintf(pm_hosterror_text, + "Host error %ld: MIDIPortDisconnectSource() in midi_in_close()", + macHostError); + err = pmHostError; + } + + midi->descriptor = NULL; + pm_free(midi->descriptor); + + return err; +} + + +static PmError +midi_out_open(PmInternal *midi, void *driverInfo) +{ + midi_macosxcm_type m; + + m = (midi_macosxcm_type) pm_alloc(sizeof(midi_macosxcm_node)); /* create */ + midi->descriptor = m; + if (!m) { + return pmInsufficientMemory; + } + m->error[0] = 0; + m->callback_error[0] = 0; + m->sync_time = 0; + m->delta = 0; + m->last_time = 0; + m->first_message = TRUE; + m->sysex_mode = FALSE; + m->sysex_word = 0; + m->sysex_byte_count = 0; + m->packetList = (MIDIPacketList *) m->packetBuffer; + m->packet = NULL; + + return pmNoError; +} + +static PmError +midi_out_close(PmInternal *midi) +{ + midi_macosxcm_type m = (midi_macosxcm_type) midi->descriptor; + if (!m) return pmBadPtr; + + midi->descriptor = NULL; + pm_free(midi->descriptor); + + return pmNoError; +} + +static PmError +midi_abort(PmInternal *midi) +{ + return pmNoError; +} + + +static PmError +midi_write_flush(PmInternal *midi) +{ + OSStatus macHostError; + midi_macosxcm_type m = (midi_macosxcm_type) midi->descriptor; + MIDIEndpointRef endpoint = + (MIDIEndpointRef) descriptors[midi->device_id].descriptor; + assert(m); + assert(endpoint); + if (m->packet != NULL) { + /* out of space, send the buffer and start refilling it */ + macHostError = MIDISend(portOut, endpoint, m->packetList); + m->packet = NULL; /* indicate no data in packetList now */ + if (macHostError != noErr) goto send_packet_error; + } + return pmNoError; + +send_packet_error: + pm_hosterror = macHostError; + sprintf(pm_hosterror_text, + "Host error %ld: MIDISend() in midi_write()", + macHostError); + return pmHostError; + +} + + +static PmError +send_packet(PmInternal *midi, Byte *message, unsigned int messageLength, + MIDITimeStamp timestamp) +{ + PmError err; + midi_macosxcm_type m = (midi_macosxcm_type) midi->descriptor; + assert(m); + + /* printf("add %d to packet %lx len %d\n", message[0], m->packet, messageLength); */ + m->packet = MIDIPacketListAdd(m->packetList, sizeof(m->packetBuffer), + m->packet, timestamp, messageLength, + message); + if (m->packet == NULL) { + /* out of space, send the buffer and start refilling it */ + /* make midi->packet non-null to fool midi_write_flush into sending */ + m->packet = (MIDIPacket *) 4; + if ((err = midi_write_flush(midi)) != pmNoError) return err; + m->packet = MIDIPacketListInit(m->packetList); + assert(m->packet); /* if this fails, it's a programming error */ + m->packet = MIDIPacketListAdd(m->packetList, sizeof(m->packetBuffer), + m->packet, timestamp, messageLength, + message); + assert(m->packet); /* can't run out of space on first message */ + } + return pmNoError; +} + + +static PmError +midi_write_short(PmInternal *midi, PmEvent *event) +{ + long when = event->timestamp; + long what = event->message; + MIDITimeStamp timestamp; + UInt64 when_ns; + midi_macosxcm_type m = (midi_macosxcm_type) midi->descriptor; + Byte message[4]; + unsigned int messageLength; + + if (m->packet == NULL) { + m->packet = MIDIPacketListInit(m->packetList); + /* this can never fail, right? failure would indicate something + unrecoverable */ + assert(m->packet); + } + + /* compute timestamp */ + if (when == 0) when = midi->now; + /* if latency == 0, midi->now is not valid. We will just set it to zero */ + if (midi->latency == 0) when = 0; + when_ns = ((UInt64) (when + midi->latency) * (UInt64) 1000000) + m->delta; + /* make sure we don't go backward in time */ + if (when_ns < m->last_time) when_ns = m->last_time; + m->last_time = when_ns; + timestamp = (MIDITimeStamp) AudioConvertNanosToHostTime(when_ns); + + message[0] = Pm_MessageStatus(what); + message[1] = Pm_MessageData1(what); + message[2] = Pm_MessageData2(what); + messageLength = midi_length(what); + + /* Add this message to the packet list */ + return send_packet(midi, message, messageLength, timestamp); +} + + +static PmError +midi_begin_sysex(PmInternal *midi, PmTimestamp when) +{ + UInt64 when_ns; + midi_macosxcm_type m = (midi_macosxcm_type) midi->descriptor; + assert(m); + m->sysex_byte_count = 0; + + /* compute timestamp */ + if (when == 0) when = midi->now; + /* if latency == 0, midi->now is not valid. We will just set it to zero */ + if (midi->latency == 0) when = 0; + when_ns = ((UInt64) (when + midi->latency) * (UInt64) 1000000) + m->delta; + m->sysex_timestamp = (MIDITimeStamp) AudioConvertNanosToHostTime(when_ns); + + if (m->packet == NULL) { + m->packet = MIDIPacketListInit(m->packetList); + /* this can never fail, right? failure would indicate something + unrecoverable */ + assert(m->packet); + } + return pmNoError; +} + + +static PmError +midi_end_sysex(PmInternal *midi, PmTimestamp when) +{ + PmError err; + midi_macosxcm_type m = (midi_macosxcm_type) midi->descriptor; + assert(m); + + /* make sure we don't go backward in time */ + if (m->sysex_timestamp < m->last_time) m->sysex_timestamp = m->last_time; + + /* now send what's in the buffer */ + err = send_packet(midi, m->sysex_buffer, m->sysex_byte_count, + m->sysex_timestamp); + m->sysex_byte_count = 0; + if (err != pmNoError) { + m->packet = NULL; /* flush everything in the packet list */ + return err; + } + return pmNoError; +} + + +static PmError +midi_write_byte(PmInternal *midi, unsigned char byte, PmTimestamp timestamp) +{ + midi_macosxcm_type m = (midi_macosxcm_type) midi->descriptor; + assert(m); + if (m->sysex_byte_count >= SYSEX_BUFFER_SIZE) { + PmError err = midi_end_sysex(midi, timestamp); + if (err != pmNoError) return err; + } + m->sysex_buffer[m->sysex_byte_count++] = byte; + return pmNoError; +} + + +static PmError +midi_write_realtime(PmInternal *midi, PmEvent *event) +{ + /* to send a realtime message during a sysex message, first + flush all pending sysex bytes into packet list */ + PmError err = midi_end_sysex(midi, 0); + if (err != pmNoError) return err; + /* then we can just do a normal midi_write_short */ + return midi_write_short(midi, event); +} + +static unsigned int midi_has_host_error(PmInternal *midi) +{ + midi_macosxcm_type m = (midi_macosxcm_type) midi->descriptor; + return (m->callback_error[0] != 0) || (m->error[0] != 0); +} + + +static void midi_get_host_error(PmInternal *midi, char *msg, unsigned int len) +{ + midi_macosxcm_type m = (midi_macosxcm_type) midi->descriptor; + msg[0] = 0; /* initialize to empty string */ + if (m) { /* make sure there is an open device to examine */ + if (m->error[0]) { + strncpy(msg, m->error, len); + m->error[0] = 0; /* clear the error */ + } else if (m->callback_error[0]) { + strncpy(msg, m->callback_error, len); + m->callback_error[0] = 0; /* clear the error */ + } + msg[len - 1] = 0; /* make sure string is terminated */ + } +} + + +MIDITimeStamp timestamp_pm_to_cm(PmTimestamp timestamp) +{ + UInt64 nanos; + if (timestamp <= 0) { + return (MIDITimeStamp)0; + } else { + nanos = (UInt64)timestamp * (UInt64)1000000; + return (MIDITimeStamp)AudioConvertNanosToHostTime(nanos); + } +} + +PmTimestamp timestamp_cm_to_pm(MIDITimeStamp timestamp) +{ + UInt64 nanos; + nanos = AudioConvertHostTimeToNanos(timestamp); + return (PmTimestamp)(nanos / (UInt64)1000000); +} + + +char* cm_get_full_endpoint_name(MIDIEndpointRef endpoint) +{ + MIDIEntityRef entity; + MIDIDeviceRef device; + CFStringRef endpointName = NULL, deviceName = NULL, fullName = NULL; + CFStringEncoding defaultEncoding; + char* newName; + + /* get the default string encoding */ + defaultEncoding = CFStringGetSystemEncoding(); + + /* get the entity and device info */ + MIDIEndpointGetEntity(endpoint, &entity); + MIDIEntityGetDevice(entity, &device); + + /* create the nicely formated name */ + MIDIObjectGetStringProperty(endpoint, kMIDIPropertyName, &endpointName); + MIDIObjectGetStringProperty(device, kMIDIPropertyName, &deviceName); + if (deviceName != NULL) { + fullName = CFStringCreateWithFormat(NULL, NULL, CFSTR("%@: %@"), + deviceName, endpointName); + } else { + fullName = endpointName; + } + + /* copy the string into our buffer */ + newName = (char*)malloc(CFStringGetLength(fullName) + 1); + CFStringGetCString(fullName, newName, CFStringGetLength(fullName) + 1, + defaultEncoding); + + /* clean up */ + if (endpointName) CFRelease(endpointName); + if (deviceName) CFRelease(deviceName); + if (fullName) CFRelease(fullName); + + return newName; +} + + + +pm_fns_node pm_macosx_in_dictionary = { + none_write_short, + none_sysex, + none_sysex, + none_write_byte, + none_write_short, + none_write_flush, + none_synchronize, + midi_in_open, + midi_abort, + midi_in_close, + success_poll, + midi_has_host_error, + midi_get_host_error, +}; + +pm_fns_node pm_macosx_out_dictionary = { + midi_write_short, + midi_begin_sysex, + midi_end_sysex, + midi_write_byte, + midi_write_realtime, + midi_write_flush, + midi_synchronize, + midi_out_open, + midi_abort, + midi_out_close, + success_poll, + midi_has_host_error, + midi_get_host_error, +}; + + +PmError pm_macosxcm_init(void) +{ + ItemCount numInputs, numOutputs, numDevices; + MIDIEndpointRef endpoint; + int i; + OSStatus macHostError; + char *error_text; + + /* Determine the number of MIDI devices on the system */ + numDevices = MIDIGetNumberOfDevices(); + numInputs = MIDIGetNumberOfSources(); + numOutputs = MIDIGetNumberOfDestinations(); + + /* Return prematurely if no devices exist on the system + Note that this is not an error. There may be no devices. + Pm_CountDevices() will return zero, which is correct and + useful information + */ + if (numDevices <= 0) { + return pmNoError; + } + + + /* Initialize the client handle */ + macHostError = MIDIClientCreate(CFSTR("PortMidi"), NULL, NULL, &client); + if (macHostError != noErr) { + error_text = "MIDIClientCreate() in pm_macosxcm_init()"; + goto error_return; + } + + /* Create the input port */ + macHostError = MIDIInputPortCreate(client, CFSTR("Input port"), readProc, + NULL, &portIn); + if (macHostError != noErr) { + error_text = "MIDIInputPortCreate() in pm_macosxcm_init()"; + goto error_return; + } + + /* Create the output port */ + macHostError = MIDIOutputPortCreate(client, CFSTR("Output port"), &portOut); + if (macHostError != noErr) { + error_text = "MIDIOutputPortCreate() in pm_macosxcm_init()"; + goto error_return; + } + + /* Iterate over the MIDI input devices */ + for (i = 0; i < numInputs; i++) { + endpoint = MIDIGetSource(i); + if (endpoint == NULL) { + continue; + } + + /* set the first input we see to the default */ + if (pm_default_input_device_id == -1) + pm_default_input_device_id = pm_descriptor_index; + + /* Register this device with PortMidi */ + pm_add_device("CoreMIDI", cm_get_full_endpoint_name(endpoint), + TRUE, (void*)endpoint, &pm_macosx_in_dictionary); + } + + /* Iterate over the MIDI output devices */ + for (i = 0; i < numOutputs; i++) { + endpoint = MIDIGetDestination(i); + if (endpoint == NULL) { + continue; + } + + /* set the first output we see to the default */ + if (pm_default_output_device_id == -1) + pm_default_output_device_id = pm_descriptor_index; + + /* Register this device with PortMidi */ + pm_add_device("CoreMIDI", cm_get_full_endpoint_name(endpoint), + FALSE, (void*)endpoint, &pm_macosx_out_dictionary); + } + return pmNoError; + +error_return: + pm_hosterror = macHostError; + sprintf(pm_hosterror_text, "Host error %ld: %s\n", macHostError, error_text); + pm_macosxcm_term(); /* clear out any opened ports */ + return pmHostError; +} + +void pm_macosxcm_term(void) +{ + if (client != NULL) MIDIClientDispose(client); + if (portIn != NULL) MIDIPortDispose(portIn); + if (portOut != NULL) MIDIPortDispose(portOut); +} diff --git a/pd/portmidi/pm_mac/pmmacosxcm.h b/pd/portmidi/pm_mac/pmmacosxcm.h new file mode 100644 index 00000000..17259359 --- /dev/null +++ b/pd/portmidi/pm_mac/pmmacosxcm.h @@ -0,0 +1,4 @@ +/* system-specific definitions */ + +PmError pm_macosxcm_init(void); +void pm_macosxcm_term(void); \ No newline at end of file -- cgit v1.2.1