Hi Fran,
I've only just been going through the Windows stuff. Whenever the
list archive for April is available you'll be able to see the
correspondence.-
First thing. I don't have MS Visual Studio 6, I've got the .Net
edition (7.1). Windows XP.
OK, my experience is w/VS 2005 Express, Net 2, yadayada. I think I
had to install the Windows SDK on top of the std Express install to
access the W Multimedia stuff.
From there my experience was like yours with following differences:
2) unzip portmidi.zip into directory: <...>\portmidi
Ok.
Make sure you have mm.vcproj (or mm.dsp & mm.dsw or mm.something...).
If they aren't in the .zip archive you'll have to ask Roger to send
them to you (or I suppose I can send the copies he sent me). I
believe the plan was to update the .zip to include the mm.* files
that were inadverdently omitted.
4) start or click on the portmidi.dsw workspace
ERRORS!
With VS 2005 I was able to open the .dsw file, and VS generated
new .sln & .vcproj versions of these documents. It was only after the
conversion that I got compaints about the .dsp being corrupted, so my
suspicion is the Visual Studio did the corrupting. Anyway, once I got
my portmidi.sln and *.vcproj files, I trashed the *.dsp's since
they're not needed anymore.
But I did have .dsp's in the download. I think.
After this it loads the project. Well, I don't need the examples so
let's try to go with portmidi, portaudio and pm_dll which are the
things I'm interested in.
I would build the test programs just to make sure that the project is
working.
You need to build the pm_dll first, because the other projects rely
on it (they need pm_dll.lib to link and pm_dll.dll to run).
5) the following projects exist within this workspace:
- portmidi (the PortMidi library)
- pm_dll (the dll library used to close midi ports on program
exit)
- porttime (a small portable library implementing timer
facilities)
- test (simple midi I/O testing)
- multithread (an example illustrating low-latency MIDI processing
using a dedicated low-latency thread)
- sysex (simple sysex message I/O testing)
- latency (uses porttime to measure system latency)
Well, the first three exists and the rest are unavailable...
Dunno, I got all eight.
6) verify that all project settings are for Win32 Debug release:
- type Alt-F7
- highlight all three projects in left part of Project Settings
~~~~~
The docs need to be updated: there are eight projects.
window;
- "Settings For" should say "Win32 Debug"
Ok.
On VS 2005 these are actually two separate popups, one for the Debug/
Release config, one for the Win32 architecture. Not a biggy.
7) use Build->Batch Build ... to build everything in the project
Again, the menu structure has changed. I just hit F7 to build the
entire "solution", which is easy enough.
Some warnings and a couple of these errors:
c:\msys\1.0\etc\portmidi17Jan07\portmidi\pm_common\portmidi.c
(1002): error C2039: 'queue' : is not a member of 'pm_internal_struct'
c:\msys\1.0\etc\portmidi17Jan07\portmidi\pm_common
\pminternal.h(98) : see declaration of 'pm_internal_struct'
You must #define NEWBUFFER.
I did: select portmidi in Solution Explorer; Properties; Expand
Configuration Properties, Expand C/C++; edit Preprocessor Definitions
to add NEWBUFFER (and _CRT_SECURE_NO_DEPRECATE and
USE_DLL_FOR_CLEANUP while you're at it). They don't need explicit
values, they just need to be defined.
The alternative would be to surround all the flagged error lines in
#ifdef NEWBUFFER
...
#endif
blocks, but who knows what would happen?
Probably I'm missing some documentation somewhere or some forum
The above is the first documentation in the forum that I'm aware of.
I had promised a few days ago to post my experiences when I got PM
running on Windows, so here they are.
I would also add that I have now have PM working inside my own .NET
2.0 Forms application. (Yes, Aaron, somehow it does work!).
The main things:
0) It's tempting to assume that because there is this this pm_dll
thing you'll have all of PortMIDI available through the DLL. Ain't
so. The pm_dll is *only* to provide a backup mechanism releasing
system resources in the (un?)likely event that your app crashes.
Nothing more! So you still have to add all the pm_*.* and pt*.*
files to your project.
1) Make sure "Configuration: All Configurations" is selected in all
of the following Properties modifications!
2) In my case the project defaulted to compiling all .c files with
the C++ compiler, which was disastrous. I had to go to set Properties
for each file, to wit: Expand Configuration Properties, Expand C/C++,
Select Advanced, set the Compile As popup to Compile as C Code (/TC).
(For better or worse, the project I inherited has a bunch of .c files
that rely on C++ features, so I couldn't reliably set this the
project properties level.)
3) While you're there, make sure that the C/C++ -> General ->
"Compile with Common Language Runtime support" is set to "No Common
Language Runtime support" (the C compiler *can't* support CLR, but VS
won't do anything useful like automatically set the two options to
match)-.
4) I never got VS precompiled header thing to work sensibly, so I
took the path of least resistance and turned PCH's off for all my
files. Properties -> Configuration Properties -> C/C++ -> Precompiled
Headers -> Create/Use Precompiled Header popup set to "Not Using
Precompiled Headers". The compiler is reasonably fast even if it has
to parse all the header files, so unless someone wants to explain
VS's PCHs to me, the hell with it, I say.
I think that was it.
Please let us know how it works with QuickTime.
Buena suerte!
--Peter
-------------- http://www.bek.no/~pcastine/Litter/ -------------
Peter Castine +--> Litter Power & Litter Bundle for Jitter
Universal Binaries on the way
iCE: Sequencing, Recording &
Interface Building for |home | chez nous|
Max/MSP Extremely cool |bei uns | i nostri|
http://www.dspaudio.com/ http://www.castine.de
_______________________________________________
media_api mailing list
[email protected]
http://www.create.ucsb.edu/mailman/listinfo/media_api