git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3089 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.9.1
@@ -274,7 +274,6 @@ | |||
4B35C5490D4731D1000DE7AE /* connect.c in Sources */ = {isa = PBXBuildFile; fileRef = 4B60CE480AAABA31004956AA /* connect.c */; }; | |||
4B35C5570D4731D2000DE7AE /* freewheel.c in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D1710834EE0F00C94B91 /* freewheel.c */; }; | |||
4B35C5630D4731D2000DE7AE /* jdelay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BFA99A90AAAF40C009E916C /* jdelay.cpp */; }; | |||
4B35C56F0D4731D2000DE7AE /* external_metro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D1750834EE3600C94B91 /* external_metro.cpp */; }; | |||
4B35C57D0D4731D2000DE7AE /* testAtomic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D23E0834F1C300C94B91 /* testAtomic.cpp */; }; | |||
4B35C58D0D4731D2000DE7AE /* testSem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D2470834F20600C94B91 /* testSem.cpp */; }; | |||
4B35C59F0D4731D2000DE7AE /* zombie.c in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D1670834EDD900C94B91 /* zombie.c */; }; | |||
@@ -449,7 +448,6 @@ | |||
4B699CB4097D421600A18468 /* metro.c in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D16B0834EDF000C94B91 /* metro.c */; }; | |||
4B699CC4097D421600A18468 /* lsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D1690834EDE600C94B91 /* lsp.c */; }; | |||
4B699CF6097D421600A18468 /* freewheel.c in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D1710834EE0F00C94B91 /* freewheel.c */; }; | |||
4B699D06097D421600A18468 /* external_metro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D1750834EE3600C94B91 /* external_metro.cpp */; }; | |||
4B699D18097D421600A18468 /* testAtomic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D23E0834F1C300C94B91 /* testAtomic.cpp */; }; | |||
4B699D2C097D421600A18468 /* testSem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D2470834F20600C94B91 /* testSem.cpp */; }; | |||
4B699D42097D421600A18468 /* zombie.c in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D1670834EDD900C94B91 /* zombie.c */; }; | |||
@@ -1351,7 +1349,6 @@ | |||
4BF8D1690834EDE600C94B91 /* lsp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lsp.c; path = "..//example-clients/lsp.c"; sourceTree = SOURCE_ROOT; }; | |||
4BF8D16B0834EDF000C94B91 /* metro.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = metro.c; path = "../example-clients/metro.c"; sourceTree = SOURCE_ROOT; }; | |||
4BF8D1710834EE0F00C94B91 /* freewheel.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = freewheel.c; path = "../example-clients/freewheel.c"; sourceTree = SOURCE_ROOT; }; | |||
4BF8D1750834EE3600C94B91 /* external_metro.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = external_metro.cpp; path = "../example-clients/external_metro.cpp"; sourceTree = SOURCE_ROOT; }; | |||
4BF8D1770834EE4800C94B91 /* JackError.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackError.h; path = ../common/JackError.h; sourceTree = SOURCE_ROOT; }; | |||
4BF8D1830834EE5800C94B91 /* JackTime.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackTime.h; path = ../common/JackTime.h; sourceTree = SOURCE_ROOT; }; | |||
4BF8D1870834EE7900C94B91 /* JackShmMem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackShmMem.h; path = ../common/JackShmMem.h; sourceTree = SOURCE_ROOT; }; | |||
@@ -2111,7 +2108,6 @@ | |||
4BF8D1690834EDE600C94B91 /* lsp.c */, | |||
4BF8D16B0834EDF000C94B91 /* metro.c */, | |||
4BF8D1710834EE0F00C94B91 /* freewheel.c */, | |||
4BF8D1750834EE3600C94B91 /* external_metro.cpp */, | |||
4B363F3D0DEB0C31001F72D9 /* showtime.c */, | |||
); | |||
name = "Simple clients"; | |||
@@ -5454,7 +5450,6 @@ | |||
isa = PBXSourcesBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
4B35C56F0D4731D2000DE7AE /* external_metro.cpp in Sources */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
@@ -5809,7 +5804,6 @@ | |||
isa = PBXSourcesBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
4B699D06097D421600A18468 /* external_metro.cpp in Sources */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
@@ -17,12 +17,13 @@ | |||
*/ | |||
#include "external_metro.h" | |||
#include <stdio.h> | |||
typedef jack_default_audio_sample_t sample_t; | |||
const double PI = 3.14; | |||
static int process_audio (jack_nframes_t nframes, void* arg) | |||
int ExternalMetro::process_audio (jack_nframes_t nframes, void* arg) | |||
{ | |||
ExternalMetro* metro = (ExternalMetro*)arg; | |||
sample_t *buffer = (sample_t *) jack_port_get_buffer (metro->output_port, nframes); | |||
@@ -41,6 +42,11 @@ static int process_audio (jack_nframes_t nframes, void* arg) | |||
return 0; | |||
} | |||
void ExternalMetro::shutdown (void* arg) | |||
{ | |||
printf("shutdown called..\n"); | |||
} | |||
ExternalMetro::ExternalMetro(int freq, double max_amp, int dur_arg, int bpm, char* client_name) | |||
{ | |||
sample_t scale; | |||
@@ -48,6 +54,8 @@ ExternalMetro::ExternalMetro(int freq, double max_amp, int dur_arg, int bpm, cha | |||
double *amp; | |||
int attack_percent = 1, decay_percent = 10; | |||
char *bpm_string = "bpm"; | |||
jack_options_t options = JackNullOption; | |||
jack_status_t status; | |||
offset = 0; | |||
@@ -56,12 +64,13 @@ ExternalMetro::ExternalMetro(int freq, double max_amp, int dur_arg, int bpm, cha | |||
client_name = (char *) malloc (9 * sizeof (char)); | |||
strcpy (client_name, "metro"); | |||
} | |||
if ((client = jack_client_new (client_name)) == 0) { | |||
if ((client = jack_client_open (client_name, options, &status)) == 0) { | |||
fprintf (stderr, "jack server not running?\n"); | |||
return ; | |||
return; | |||
} | |||
jack_set_process_callback (client, process_audio, this); | |||
jack_on_shutdown (client, shutdown, this); | |||
output_port = jack_port_register (client, bpm_string, JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); | |||
input_port = jack_port_register (client, "metro_in", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0); | |||
@@ -127,14 +136,16 @@ int main (int argc, char *argv[]) | |||
ExternalMetro* client3 = NULL; | |||
ExternalMetro* client4 = NULL; | |||
ExternalMetro* client5 = NULL; | |||
printf("Testing multiple Jack clients in one process: open 5 metro clients...\n"); | |||
client1 = new ExternalMetro(1200, 0.4, 20, 80, "t1"); | |||
client2 = new ExternalMetro(600, 0.4, 20, 150, "t2"); | |||
client3 = new ExternalMetro(1000, 0.4, 20, 110, "t3"); | |||
client4 = new ExternalMetro(400, 0.4, 20, 200, "t4"); | |||
client5 = new ExternalMetro(1500, 0.4, 20, 150, "t5"); | |||
while ((getchar() != 'q')) { | |||
printf("Type 'c' to close alls client and go to next test...\n"); | |||
while ((getchar() != 'c')) { | |||
sleep(1); | |||
}; | |||
@@ -143,4 +154,32 @@ int main (int argc, char *argv[]) | |||
delete client3; | |||
delete client4; | |||
delete client5; | |||
printf("Testing quiting the server while a client is running...\n"); | |||
client1 = new ExternalMetro(1200, 0.4, 20, 80, "t1"); | |||
printf("Now quit the server, shutdown callback should be called...\n"); | |||
printf("Type 'c' move on...\n"); | |||
while ((getchar() != 'c')) { | |||
sleep(1); | |||
}; | |||
printf("Closing client...\n"); | |||
delete client1; | |||
printf("Now start the server again...\n"); | |||
printf("Type 'c' move on...\n"); | |||
while ((getchar() != 'c')) { | |||
sleep(1); | |||
}; | |||
printf("Opening a new client....\n"); | |||
client1 = new ExternalMetro(1200, 0.4, 20, 80, "t1"); | |||
printf("Type 'q' to quit...\n"); | |||
while ((getchar() != 'q')) { | |||
sleep(1); | |||
}; | |||
delete client1; | |||
return 0; | |||
} |
@@ -58,6 +58,8 @@ extern "C" | |||
ExternalMetro(int freq, double max_amp, int dur_arg, int bpm, char* client_name); | |||
virtual ~ExternalMetro(); | |||
static int process_audio (jack_nframes_t nframes, void* arg); | |||
static void shutdown (void* arg); | |||
}; | |||
#ifdef __cplusplus |
@@ -9,6 +9,7 @@ test_programs = { | |||
'jack_test': ['jack_test.cpp'], | |||
'jack_cpu': ['jack_cpu.c'], | |||
'jdelay': ['jdelay.cpp'], | |||
'multiple_metro' : ['external_metro.cpp'], | |||
} | |||
def build(bld): | |||