diff --git a/common/Jackdmp.cpp b/common/Jackdmp.cpp index b3110b9d..8662a278 100644 --- a/common/Jackdmp.cpp +++ b/common/Jackdmp.cpp @@ -33,7 +33,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include "JackDriverLoader.h" /* -This is a simple port of the old jackdmp.cpp file to use the new Jack 2.0 control API. Available options for the server +This is a simple port of the old jackdmp.cpp file to use the new Jack 2.0 control API. Available options for the server are "hard-coded" in the source. A much better approach would be to use the control API to: - dynamically retrieve available server parameters and then prepare to parse them - get available drivers and their possible parameters, then prepare to parse them. @@ -58,7 +58,7 @@ static void notify_server_start(const char* server_name) static void notify_server_stop(const char* server_name) { // Send notification to be used in the JackRouter plugin - CFStringRef ref1 = CFStringCreateWithCString(NULL, server_name, kCFStringEncodingMacRoman); + CFStringRef ref1 = CFStringCreateWithCString(NULL, server_name, kCFStringEncodingMacRoman); CFNotificationCenterPostNotificationWithOptions(CFNotificationCenterGetDistributedCenter(), CFSTR("com.grame.jackserver.stop"), ref1, @@ -95,7 +95,7 @@ static void usage(FILE* file) "usage: jackdmp [ --realtime OR -R [ --realtime-priority OR -P priority ] ]\n" " [ --name OR -n server-name ]\n" " [ --timeout OR -t client-timeout-in-msecs ]\n" - " [ --loopback OR -X midi-driver ]\n" + " [ --midi OR -X midi-driver ]\n" " [ --verbose OR -v ]\n" " [ --replace-registry OR -r ]\n" " [ --silent OR -s ]\n" @@ -196,13 +196,13 @@ int main(int argc, char* argv[]) union jackctl_parameter_value value; copyright(stdout); - + server_ctl = jackctl_server_create(); if (server_ctl == NULL) { fprintf(stderr, "Failed to create server object\n"); return -1; } - + server_parameters = jackctl_server_get_parameters(server_ctl); opterr = 0; @@ -215,20 +215,20 @@ int main(int argc, char* argv[]) seen_audio_driver = true; audio_driver_name = optarg; break; - + case 'X': seen_midi_driver = true; midi_driver_name = optarg; break; - + case 'p': port_max = (unsigned int)atol(optarg); break; - + case 'm': do_mlock = 0; break; - + case 'u': do_unlock = 1; break; @@ -317,7 +317,7 @@ int main(int argc, char* argv[]) default: fprintf(stderr, "unknown option character %c\n", optopt); /*fallthru*/ - + case 'h': usage(stdout); goto fail_free; @@ -325,18 +325,18 @@ int main(int argc, char* argv[]) } if (show_version) { - printf( "jackdmp version " VERSION - " tmpdir " jack_server_dir + printf( "jackdmp version " VERSION + " tmpdir " jack_server_dir " protocol %d" "\n", JACK_PROTOCOL_VERSION); return -1; } - + if (!seen_audio_driver) { usage(stderr); goto fail_free; } - + // Audio driver audio_driver_ctl = jackctl_server_get_driver(server_ctl, audio_driver_name); if (audio_driver_ctl == NULL) { @@ -366,22 +366,22 @@ int main(int argc, char* argv[]) if (jackctl_parse_driver_params(audio_driver_ctl, audio_driver_nargs, audio_driver_args)) { goto fail_free; } - + // Start server if (!jackctl_server_start(server_ctl, audio_driver_ctl)) { fprintf(stderr, "Failed to start server\n"); goto fail_free; } - + // MIDI driver if (seen_midi_driver) { - + midi_driver_ctl = jackctl_server_get_driver(server_ctl, midi_driver_name); if (midi_driver_ctl == NULL) { fprintf(stderr, "Unkown driver \"%s\"\n", midi_driver_name); goto fail_free; } - + jackctl_server_load_slave(server_ctl, midi_driver_ctl); } @@ -390,12 +390,12 @@ int main(int argc, char* argv[]) // Waits for signal signals = jackctl_setup_signals(0); jackctl_wait_signals(signals); - + if (!jackctl_server_stop(server_ctl)) fprintf(stderr, "Cannot stop server...\n"); - + fail_free: - + jackctl_server_destroy(server_ctl); notify_server_stop(server_name); return 1; diff --git a/windows/jack_winmme.cbp b/windows/jack_winmme.cbp new file mode 100644 index 00000000..2c6d8bbe --- /dev/null +++ b/windows/jack_winmme.cbp @@ -0,0 +1,121 @@ + + + + + + diff --git a/windows/jackd.workspace b/windows/jackd.workspace index e92ff780..615bae3f 100644 --- a/windows/jackd.workspace +++ b/windows/jackd.workspace @@ -1,7 +1,7 @@ - + @@ -46,5 +46,6 @@ + diff --git a/windows/jackwinmme.rc b/windows/jackwinmme.rc new file mode 100644 index 00000000..57187d6c --- /dev/null +++ b/windows/jackwinmme.rc @@ -0,0 +1,41 @@ +// Generated by ResEdit 1.4.3 +// Copyright (C) 2006-2008 +// http://www.resedit.net + +#include "resource.h" +#include "afxres.h" + + +// +// Version Information resources +// +LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT +1 VERSIONINFO + FILEVERSION 1,9,3,0 + PRODUCTVERSION 1,9,3,0 + FILEOS VOS_UNKNOWN + FILETYPE VFT_DLL +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040c04b0" + BEGIN + VALUE "Comments", "\0" + VALUE "CompanyName", "Grame\0" + VALUE "FileDescription", "Jackmp WinMMEo Driver for Windows\0" + VALUE "FileVersion", "1, 9, 3, 0\0" + VALUE "InternalName", "jack_portaudio\0" + VALUE "LegalCopyright", "Copyright Grame © 2006-2009\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "jack_winmme.dll\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "jack_winmme\0" + VALUE "ProductVersion", "1, 9, 3, 0\0" + VALUE "SpecialBuild", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 1036, 1200 + END +END diff --git a/windows/libjackserver.cbp b/windows/libjackserver.cbp index ef0bc173..8a82c34b 100644 --- a/windows/libjackserver.cbp +++ b/windows/libjackserver.cbp @@ -1,199 +1,200 @@ - - - - - - + + + + + + diff --git a/windows/winmme/JackWinMMEDriver.cpp b/windows/winmme/JackWinMMEDriver.cpp index 42577633..d803f707 100644 --- a/windows/winmme/JackWinMMEDriver.cpp +++ b/windows/winmme/JackWinMMEDriver.cpp @@ -92,9 +92,7 @@ JackWinMMEDriver::JackWinMMEDriver(const char* name, const char* alias, JackLock JackWinMMEDriver::~JackWinMMEDriver() {} -int JackWinMMEDriver::Open(jack_nframes_t buffer_size, - jack_nframes_t samplerate, - bool capturing, +int JackWinMMEDriver::Open(bool capturing, bool playing, int inchannels, int outchannels, @@ -111,7 +109,7 @@ int JackWinMMEDriver::Open(jack_nframes_t buffer_size, fRealPlaybackChannels = midiOutGetNumDevs (); // Generic JackMidiDriver Open - if (JackMidiDriver::Open(buffer_size, samplerate, capturing, playing, inchannels + fRealCaptureChannels, outchannels + fRealPlaybackChannels, monitor, capture_driver_name, playback_driver_name, capture_latency, playback_latency) != 0) + if (JackMidiDriver::Open(capturing, playing, inchannels + fRealCaptureChannels, outchannels + fRealPlaybackChannels, monitor, capture_driver_name, playback_driver_name, capture_latency, playback_latency) != 0) return -1; fMidiDestination = new MidiSlot[fRealCaptureChannels]; @@ -414,22 +412,22 @@ extern "C" { #endif - SERVER_EXPORT jack_driver_desc_t * driver_get_descriptor() + SERVER_EXPORT jack_driver_desc_t * driver_get_descriptor() { jack_driver_desc_t * desc; unsigned int i; desc = (jack_driver_desc_t*)calloc (1, sizeof (jack_driver_desc_t)); - strcpy(desc->name, "dummy"); // size MUST be less then JACK_DRIVER_NAME_MAX + 1 - strcpy(desc->desc, "Timer based backend"); // size MUST be less then JACK_DRIVER_PARAM_DESC + 1 + strcpy(desc->name, "winmme"); // size MUST be less then JACK_DRIVER_NAME_MAX + 1 + strcpy(desc->desc, "WinMME API based MIDI backend"); // size MUST be less then JACK_DRIVER_PARAM_DESC + 1 - desc->nparams = 6; + desc->nparams = 0; desc->params = (jack_driver_param_desc_t*)calloc (desc->nparams, sizeof (jack_driver_param_desc_t)); return desc; } - SERVER_EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLockedEngine* engine, Jack::JackSynchro* table, const JSList* params) + SERVER_EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLockedEngine* engine, Jack::JackSynchro* table, const JSList* params) { /* unsigned int capture_ports = 2;