hey paul- i found your project at http://code.haskell.org/PortMidi/. i've downloaded it and am trying to get it working on osx 10.5.7 intel with ghc 6.10.3. when trying to build i get a bunch of errors (attached below).
i can build/install portmidi release 82, but not 131, from http://sourceforge.net/projects/portmedia/files/, due to incompatibilities with osx 10.5 that stephen pope posted to this list. i also tried the svn head (rev 156) at https://portmedia.svn.sourceforge.net/svnroot/portmedia. with that, i can build the static .a libraries without errors, but not the .dylib (errors attached below). roger, i was wondering whether you'd have time to look into the 10.5 issues? i think the errors building the haskell bindings might be due to the portmidi 10.5 incompatibility, and indeed i can get them to work after installing the dylib from release 82 (i don't know how to try the static .a's). i have to make the following changes to the .cabal file for it to build and link: -comment out the c-sources tag and files -add a line "extra-libraries: portmidi" that is enough to get things working: erik-flisters-macbook-pro:~ eflister$ ghci GHCi, version 6.10.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer ... linking ... done. Loading package base ... linking ... done. Prelude> :m Sound.PortMidi Prelude Sound.PortMidi> PMMsg { status = 0x90, data1 = 60, data2 = 100 } Loading package PortMidi-0.1 ... linking ... done. PMMsg {status = 144, data1 = 60, data2 = 100} Prelude Sound.PortMidi> time 557159217 it seems cabal wants you to make the following changes to get rid of warnings, but i'm not sure of the implications: -in Setup.hs, replace defaultUserHooks with simpleUserHooks -in .cabal file, add "build-type: Simple" i am now trying to make a version of portmidi's pm_test/test.c (especially simple realtime midi output) -- see attached. i am pretty new to haskell (only a couple weeks), so i am wondering if paul has any demo code he could share, or could share a few quick tips? i am trying to figure out how to deal with all the monad wrappers. :) so the issue is getting the device from getDefaultOutputDeviceID connected to getDeviceInfo and openOutput, the stream from openOutput connected to writeEvents and close, etc. the Maybe and Either monads are getting in my way -- i know there's a nice way to lift into them, i just can't figure out how. also, i have a hunch that there is a better way to force the evaluation of initialize and terminate than the printing i'm doing. finally, i am getting a bus error sometimes when calling initialize or terminate, even though i am pretty sure i am forcing their evaluation (they are printing "NoError"). i can load the program, run main several times, reload it, run main several times again, etc. but if i load it, run main a few times, then let it sit for a couple seconds, initialize crashes with the bus error. roger, could this be because of using the old release 82? or is it indicative that terminate is not actually evaluating? or something else? thanks for your help! -erik *****errors from building haskell bindings******** erik-flisters-macbook-pro:PortMidi eflister$ runhaskell Setup.hs configure Setup.hs:3:0: Warning: In the use of `defaultUserHooks' (imported from Distribution.Simple): Deprecated: "Use simpleUserHooks or autoconfUserHooks, unless you need Cabal-1.2 compatibility in which case you must stick with defaultUserHooks" Warning: defaultUserHooks in Setup script is deprecated. Configuring PortMidi-0.1... Warning: No 'build-type' specified. If you do not need a custom Setup.hs or ./configure script then use 'build-type: Simple'. erik-flisters-macbook-pro:PortMidi eflister$ runhaskell Setup.hs build Setup.hs:3:0: Warning: In the use of `defaultUserHooks' (imported from Distribution.Simple): Deprecated: "Use simpleUserHooks or autoconfUserHooks, unless you need Cabal-1.2 compatibility in which case you must stick with defaultUserHooks" Preprocessing library PortMidi-0.1... Building PortMidi-0.1... [1 of 1] Compiling Sound.PortMidi ( Sound/PortMidi.hs, dist/build/Sound/PortMidi.o ) In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:29, from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h:32, from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:125, from /System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20, from /System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:21, from portmidi/pm_mac/pmmacosxcm.c:38:0: /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/xmmintrin.h:35:3: error: #error "SSE instruction set not enabled" In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h:32, from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:125, from /System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20, from /System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:21, from portmidi/pm_mac/pmmacosxcm.c:38:0: /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:216:0: error: syntax error before ‘__m128’ /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:218:0: error: syntax error before ‘sd’ /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:220:0: error: syntax error before ‘}’ token /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:264:0: error: array type has incomplete element type ******errors from building portmidi from svn revision 156******* erik-flisters-macbook-pro:trunk eflister$ make -f pm_mac/Makefile.osx install cc -single_module -g -Iporttime -Ipm_common -arch ppc -arch i386 \ -dynamiclib pm_mac/pmmac.c pm_common/pmutil.c pm_common/portmidi.c pm_mac/pmmacosxcm.c pm_mac/readbinaryplist.c pm_mac/finddefault.c porttime/porttime.c porttime/ptmacosx_mach.c -o pm_mac/libportmidi.dylib \ -flat_namespace -undefined suppress \ -framework CoreMIDI -framework CoreFoundation \ -framework CoreAudio -framework CoreServices pm_mac/readbinaryplist.c:77:21: error: Folders.h: No such file or directory pm_mac/readbinaryplist.c:125: error: syntax error before ‘abort_parsing’ pm_mac/readbinaryplist.c:125: warning: data definition has no type or storage class pm_mac/readbinaryplist.c:203: error: syntax error before ‘OSType’ pm_mac/readbinaryplist.c:371: error: syntax error before ‘OSType’ pm_mac/readbinaryplist.c: In function ‘bplist_read_pref’: pm_mac/readbinaryplist.c:373: error: ‘FSRef’ undeclared (first use in this function) pm_mac/readbinaryplist.c:373: error: (Each undeclared identifier is reported only once pm_mac/readbinaryplist.c:373: error: for each function it appears in.) pm_mac/readbinaryplist.c:373: error: syntax error before ‘prefdir’ pm_mac/readbinaryplist.c:376: error: ‘OSErr’ undeclared (first use in this function) pm_mac/readbinaryplist.c:376: error: syntax error before ‘err’ pm_mac/readbinaryplist.c:378: error: ‘err’ undeclared (first use in this function) pm_mac/readbinaryplist.c:382: error: ‘prefdir’ undeclared (first use in this function) pm_mac/readbinaryplist.c:382: error: ‘UInt8’ undeclared (first use in this function) pm_mac/readbinaryplist.c:382: error: syntax error before ‘)’ token pm_mac/readbinaryplist.c:388: error: ‘filename’ undeclared (first use in this function) pm_mac/readbinaryplist.c: In function ‘bplist_read_system_pref’: pm_mac/readbinaryplist.c:394: error: ‘kSystemPreferencesFolderType’ undeclared (first use in this function) pm_mac/readbinaryplist.c: In function ‘bplist_read_user_pref’: pm_mac/readbinaryplist.c:399: error: ‘kPreferencesFolderType’ undeclared (first use in this function) pm_mac/readbinaryplist.c:77:21: error: Folders.h: No such file or directory pm_mac/readbinaryplist.c:125: error: syntax error before ‘abort_parsing’ pm_mac/readbinaryplist.c:125: warning: data definition has no type or storage class pm_mac/readbinaryplist.c:203: error: syntax error before ‘OSType’ pm_mac/readbinaryplist.c:371: error: syntax error before ‘OSType’ pm_mac/readbinaryplist.c: In function ‘bplist_read_pref’: pm_mac/readbinaryplist.c:373: error: ‘FSRef’ undeclared (first use in this function) pm_mac/readbinaryplist.c:373: error: (Each undeclared identifier is reported only once pm_mac/readbinaryplist.c:373: error: for each function it appears in.) pm_mac/readbinaryplist.c:373: error: syntax error before ‘prefdir’ pm_mac/readbinaryplist.c:376: error: ‘OSErr’ undeclared (first use in this function) pm_mac/readbinaryplist.c:376: error: syntax error before ‘err’ pm_mac/readbinaryplist.c:378: error: ‘err’ undeclared (first use in this function) pm_mac/readbinaryplist.c:382: error: ‘prefdir’ undeclared (first use in this function) pm_mac/readbinaryplist.c:382: error: ‘UInt8’ undeclared (first use in this function) pm_mac/readbinaryplist.c:382: error: syntax error before ‘)’ token pm_mac/readbinaryplist.c:388: error: ‘filename’ undeclared (first use in this function) pm_mac/readbinaryplist.c: In function ‘bplist_read_system_pref’: pm_mac/readbinaryplist.c:394: error: ‘kSystemPreferencesFolderType’ undeclared (first use in this function) pm_mac/readbinaryplist.c: In function ‘bplist_read_user_pref’: pm_mac/readbinaryplist.c:399: error: ‘kPreferencesFolderType’ undeclared (first use in this function) lipo: can't figure out the architecture type of: /var/folders/4+/4+GHEJIzHHeQA8JIOysFPE+++TI/-Tmp-//cc1hLL7r.out make: *** [pm_mac/libportmidi.dylib] Error 1
PMTest.hs
Description: Binary data
_______________________________________________ media_api mailing list media_api@create.ucsb.edu http://lists.create.ucsb.edu/mailman/listinfo/media_api