Beispiel #1
0
bool ex_xml(void *arg) {

	XMLPipeline *xmlpipe = ssi_create(XMLPipeline, 0, false);
	xmlpipe->SetRegisterDllFptr(Factory::RegisterDLL);
	xmlpipe->setLogLevel(SSI_LOG_LEVEL_DEBUG);
	ssi_size_t n_confs = 3;
	ssi_char_t *confs[] = { "global", "global2", "global3" };
	xmlpipe->parse("my", 3, confs, true);

	//IThePainter *painter = Factory::GetPainter();
	ITheFramework *frame = Factory::GetFramework();
    //ITheEventBoard *eboard = Factory::GetEventBoard();

	frame->Start();
    /*
	if (xmlpipe->startEventBoard()) {
		eboard->Start();
	}
   */
	ssi_print("\n\n\tpress enter to continue\n\n");
	getchar();
	/*
	if (xmlpipe->startEventBoard()) {
		eboard->Stop();
	}*/
	frame->Stop();
	frame->Clear();
	//painter->Clear();
	//eboard->Clear();

	delete xmlpipe;

	return true;
}
Beispiel #2
0
BOOL WINAPI ConsoleHandler(DWORD CEvent)
{
    switch(CEvent)
    {
    case CTRL_CLOSE_EVENT:        	
		
		ITheFramework *frame = Factory::GetFramework ();
		IThePainter *painter = 0;
		painter = Factory::GetPainter ();
		ITheEventBoard *eboard = 0;
		eboard = Factory::GetEventBoard ();

		if (eboard) {
			eboard->Stop ();
		}
		frame->Stop ();			
		frame->Clear ();
		if (eboard) {
			eboard->Clear ();
		}
		if (painter) {
			painter->Clear ();
		}		

		Factory::Clear ();
		::SetCurrentDirectory (_workdir);

		break;
    }
    return TRUE;
}
Beispiel #3
0
bool ex_diff(void *args)
{
	ITheFramework *frame = Factory::GetFramework();

	Decorator *decorator = ssi_create(Decorator, 0, true);
	frame->AddDecorator(decorator);

	Mouse *mouse = ssi_create(Mouse, 0, true);
	mouse->getOptions()->mask = Mouse::LEFT;
	ITransformable *cursor_t = frame->AddProvider(mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	frame->AddSensor(mouse);
	
	PythonFilter *py_diff = ssi_create(PythonFilter, 0, true);
	py_diff->getOptions()->setScript("ssi_diff");
	ITransformable *py_diff_t = frame->AddTransformer(cursor_t, py_diff, "0.1s");

	SignalPainter *plot = 0;

	plot = ssi_create_id(SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("DIFF (PYTHON)");
	plot->getOptions()->size = 10;
	frame->AddConsumer(py_diff_t, plot, "1");

	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	frame->Start();
	frame->Wait();
	frame->Stop();
	frame->Clear();

	return true;
}
Beispiel #4
0
bool ex_print(void *args)
{
	ITheFramework *frame = Factory::GetFramework();

	Decorator *decorator = ssi_create(Decorator, 0, true);
	frame->AddDecorator(decorator);

	Mouse *mouse = ssi_create(Mouse, 0, true);
	mouse->getOptions()->mask = Mouse::LEFT;
	ITransformable *button_t = frame->AddProvider(mouse, SSI_MOUSE_BUTTON_PROVIDER_NAME);
	ITransformable *cursor_t = frame->AddProvider(mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	frame->AddSensor(mouse);

	PythonConsumer *py_print = ssi_create(PythonConsumer, 0, true);
	py_print->getOptions()->setScript("ssi_print");
	ITransformable *input[] = { button_t, cursor_t };
	//py_print->getOptions()->add("path", "result.txt");
	frame->AddConsumer(2, input, py_print, "100ms");

	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	frame->Start();
	frame->Wait();
	frame->Stop();
	frame->Clear();

	return true;
}
Beispiel #5
0
bool ex_event(void *args)
{
	ITheFramework *frame = Factory::GetFramework();
	ITheEventBoard *board = Factory::GetEventBoard();

	Decorator *decorator = ssi_create(Decorator, 0, true);
	frame->AddDecorator(decorator);

	Mouse *mouse = ssi_create(Mouse, 0, true);
	mouse->getOptions()->mask = Mouse::LEFT;
	ITransformable *button_t = frame->AddProvider(mouse, SSI_MOUSE_BUTTON_PROVIDER_NAME);
	ITransformable *cursor_t = frame->AddProvider(mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	frame->AddSensor(mouse);

	PythonConsumer *py_send = ssi_create_id(PythonConsumer, 0, "pysend");
	py_send->getOptions()->setScript("ssi_send");
	ITransformable *input[] = { button_t, cursor_t };
	frame->AddConsumer(2, input, py_send, "100ms");
	board->RegisterSender(*py_send);

	PythonObject *py_listen = ssi_create_id(PythonObject, 0, "pylisten");
	py_listen->getOptions()->setScript("ssi_listen");
	board->RegisterListener(*py_listen, py_send->getEventAddress());

	EventMonitor *monitor = ssi_create_id(EventMonitor, 0, "monitor");
	board->RegisterListener(*monitor, 0, 10000u);

	SignalPainter *plot = 0;

	plot = ssi_create_id(SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("CURSOR");
	frame->AddEventConsumer(cursor_t, plot, board, py_send->getEventAddress());

	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	board->Start();
	frame->Start();
	frame->Wait();
	frame->Stop();
	board->Stop();
	frame->Clear();
	board->Clear();

	return true;
}
Beispiel #6
0
bool ex_export(void *arg) {

	ITheFramework *frame = Factory::GetFramework();
	XMLPipeline *xmlpipe = ssi_create(XMLPipeline, 0, false);
	ssi_size_t n_confs = 3;
	ssi_char_t *confs[] = { "global", "global2", "global3" };
	xmlpipe->parse("my", 3, confs, false);

	const ssi_char_t *dir = "dlls";
	ssi_mkdir(dir);
	Factory::ExportDlls(dir);

	delete xmlpipe;
	frame->Clear();

	return true;
}
Beispiel #7
0
bool ex_stream_info(void *arg) {

	Factory::RegisterDLL("ssimouse");

	ITheFramework *frame = Factory::GetFramework();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	ITheEventBoard *board = Factory::GetEventBoard();

	//ClockEventSender *eclock = ssi_create(ClockEventSender, 0, true);

	Mouse *mouse = ssi_create(Mouse, "mouse", true);
	mouse->getOptions()->mask = Mouse::LEFT;
	mouse->getOptions()->scale = true;
	mouse->getOptions()->single = false;
	mouse->getOptions()->sendEvent = true;
	ITransformable *cursor_p = frame->AddProvider(mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	ITransformable *button_p = frame->AddProvider(mouse, SSI_MOUSE_BUTTON_PROVIDER_NAME);
	frame->AddSensor(mouse);
	board->RegisterSender(*mouse);

	Websocket *websocket = ssi_create(Websocket, 0, true);
	websocket->getOptions()->setHttpRoot("stream_to_browser_info");
	websocket->getOptions()->send_info = true;
	//frame->AddConsumer(cursor_p, websocket, "0.25s");

	ssi::ITransformable *src[2] = { cursor_p, button_p };
	frame->AddConsumer(2, src, websocket, "1");

	board->RegisterSender(*websocket);
	board->RegisterListener(*websocket);

	EventMonitor *monitor = ssi_create_id (EventMonitor, 0, "monitor");
	board->RegisterListener(*monitor);

	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	board->Start();
	frame->Start();

	frame->Wait();

	frame->Stop();
	frame->Clear();

	return true;
}
Beispiel #8
0
bool ex_async (void *arg) {

	ITheFramework *frame = Factory::GetFramework ();
	ssi_pcast(TheFramework, frame)->getOptions()->setConsolePos(800, 200, 400, 200);
	//IThePainter *painter = Factory::GetPainter ();

	Mouse *mouse = ssi_create (Mouse, 0, false);
	ITransformable *cursor_p = frame->AddProvider (mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	frame->AddSensor (mouse);

	// trans

	Delay delay;
	ITransformable *filter_t = frame->AddTransformer (cursor_p, &delay, "0.2s");

	Asynchronous *delay_async = ssi_create (Asynchronous, 0, true);
	//Asynchronous *delay_async = ssi_pcast (Asynchronous, Asynchronous::Create (0));
	delay_async->setTransformer (&delay);
	ITransformable *filter_async_t = frame->AddTransformer (cursor_p, delay_async, "0.2s");

	// output
/*
	SignalPainter *signal_painter = 0;

	signal_painter = ssi_create (SignalPainter, 0, true);
	signal_painter->getOptions ()->size = 60.0;
	signal_painter->getOptions ()->setName ("cursor");
	frame->AddConsumer (cursor_p, signal_painter, "0.2s");

	signal_painter = ssi_create (SignalPainter, 0, true);
	signal_painter->getOptions ()->size = 60.0;
	signal_painter->getOptions ()->setName ("delay");
	frame->AddConsumer (filter_t, signal_painter, "0.2s");

	signal_painter = ssi_create (SignalPainter, 0, true);
	signal_painter->getOptions ()->size = 60.0;
	signal_painter->getOptions ()->setName ("delay async");
	frame->AddConsumer (filter_async_t, signal_painter, "0.2s");
*/
	// run

	frame->Start ();
	//painter->Arrange (1,3,0,0,800,400);
	frame->Wait ();
	frame->Stop ();
	frame->Clear ();
	//painter->Clear ();

	return true;
}
Beispiel #9
0
void ex_xml () {

	ITheFramework *frame = Factory::GetFramework ();
	IThePainter *painter = Factory::GetPainter ();
	ITheEventBoard *board = Factory::GetEventBoard ();

	XMLPipeline *xmlpipe = ssi_factory_create (XMLPipeline, 0, true);
	xmlpipe->parse ("my.pipeline");
	
	frame->Start ();
	board->Start ();
	frame->Wait ();
	board->Stop ();
	frame->Stop ();
	board->Clear ();
	frame->Clear ();
	painter->Clear ();
}
Beispiel #10
0
bool ex_sensor (void *arg) {

	ITheFramework *frame = Factory::GetFramework ();
	//IThePainter *painter = Factory::GetPainter ();
	//ITheEventBoard *board = Factory::GetEventBoard ();

	Mouse *mouse = ssi_pcast (Mouse, Factory::Create (Mouse::GetCreateName (), "mouse"));
	mouse->getOptions ()->mask = Mouse::LEFT;
	ITransformable *cursor_p = frame->AddProvider (mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
    ITransformable *button_p = frame->AddProvider (mouse, SSI_MOUSE_BUTTON_PROVIDER_NAME);
	frame->AddSensor (mouse);

	ZeroEventSender *ezero = ssi_create (ZeroEventSender, "ezero", true);
	ezero->getOptions ()->mindur = 0.2;
    frame->AddConsumer (cursor_p, ezero, "0.25s");
/*
	board->RegisterSender (*ezero);

	SignalPainter *sigpaint = ssi_create (SignalPainter, 0, true);
	sigpaint->getOptions ()->setName ("mouse");
	sigpaint->getOptions ()->size = 2.0;
	frame->AddConsumer (cursor_p, sigpaint, "0.2s");

	sigpaint= ssi_create (SignalPainter, 0, true);
	sigpaint->getOptions ()->setName ("mouse (tr)");
	frame->AddEventConsumer (cursor_p, sigpaint, board, ezero->getEventAddress ());
*/
	frame->Start ();
	//board->Start ();
	//painter->Arrange (2, 1, 0, 0, 800, 400);
	frame->Wait ();
	//board->Stop ();
	frame->Stop ();
	frame->Clear ();
	//board->Clear ();
	//painter->Clear ();

	return true;
}
Beispiel #11
0
bool ex_trigger (void *arg) {

	ITheFramework *frame = Factory::GetFramework ();
    //ssi_pcast(TheFramework, frame)->getOptions()->setConsolePos(800, 200, 400, 200);

	Mouse *mouse = ssi_create (Mouse, 0, false);
	mouse->getOptions ()->mask = Mouse::LEFT;
	ITransformable *cursor_p = frame->AddProvider (mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	ITransformable *button_p = frame->AddProvider (mouse, SSI_MOUSE_BUTTON_PROVIDER_NAME);
	frame->AddSensor (mouse);

	FileWriter *writer = ssi_create (FileWriter, 0, true);
	writer->getOptions ()->type = File::ASCII;
	frame->AddConsumer (cursor_p, writer, "0.2s", 0, 0, button_p);

	frame->Start ();
	frame->Wait ();
	frame->Stop ();
	frame->Clear ();

	return true;
}
Beispiel #12
0
bool ex_simulator(void *arg) {

	if (!ssi_exists("cursor_txt.stream")) {
		ex_writer(0);
	}

	ITheFramework *frame = Factory::GetFramework ();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	File::SetLogLevel (SSI_LOG_LEVEL_DEBUG);

	FileReader *reader = ssi_create (FileReader, 0, true);
	reader->getOptions()->setPath("cursor_txt");
	reader->getOptions()->block = 0.05;
	reader->getOptions()->loop = true;
	reader->getOptions()->offset = 0.1;
	ITransformable *cursor_p = frame->AddProvider(reader, SSI_FILEREADER_PROVIDER_NAME);
	frame->AddSensor(reader);

	FileWriter *writer = ssi_create (FileWriter, 0, true);
	writer->getOptions()->type = File::ASCII;
	frame->AddConsumer(cursor_p, writer, "0.05s");

	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	frame->Start();
	reader->wait();
	frame->Stop();
	frame->Clear();

	return true;
}
Beispiel #13
0
bool ex_events_string(void *arg) {

	ITheFramework *frame = Factory::GetFramework();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	ITheEventBoard *board = Factory::GetEventBoard();

	ClockEventSender *eclock = ssi_create(ClockEventSender, 0, true);
	eclock->getOptions()->clock = 1000;
	eclock->getOptions()->empty = false;
	eclock->getOptions()->setString("test");
	board->RegisterSender(*eclock);
	frame->AddRunnable(eclock);

	Websocket *websocket = ssi_create(Websocket, 0, true);

	board->RegisterSender(*websocket);
	board->RegisterListener(*websocket);

	EventMonitor *monitor = ssi_create_id (EventMonitor, 0, "monitor");
	board->RegisterListener(*monitor);

	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	board->Start();
	frame->Start();

	frame->Wait();

	frame->Stop();
	frame->Clear();

	return true;
}
Beispiel #14
0
bool ex_mobile_events(void *arg)
{

	Factory::RegisterDLL("ssiioput");

	ITheFramework *frame = Factory::GetFramework();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	ITheEventBoard *board = Factory::GetEventBoard();

	Websocket *websocket = ssi_create(Websocket, 0, true);
	websocket->getOptions()->setHttpRoot("mobile_browser_to_SSI");

	board->RegisterSender(*websocket);
	board->RegisterListener(*websocket);

	EventMonitor *monitor = ssi_create_id (EventMonitor, 0, "monitor");
	board->RegisterListener(*monitor);

	FileEventWriter *writer = ssi_create(FileEventWriter, 0, true);
	writer->getOptions()->setPath("sensor_data");
	board->RegisterListener(*writer);

	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	board->Start();
	frame->Start();

	frame->Wait();

	frame->Stop();
	frame->Clear();

	return true;
}
Beispiel #15
0
void ex_pitch () {

	ITheFramework *frame = Factory::GetFramework ();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	// audio sensor	
#ifndef SIMULATE
	Audio *audio = ssi_create (Audio, "audio", true);
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_AUDIO_PROVIDER_NAME);
#else
	WavReader *audio = ssi_create (WavReader, 0, true);
	audio->getOptions()->setPath("audio.wav");
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_WAVREADER_PROVIDER_NAME);
#endif	
	frame->AddSensor(audio);

	// fft
	OSTransformFFT *fft = ssi_create (OSTransformFFT, "OSTransformFFT", true);
	fft->getWindow()->getOptions()->type = OSWindow::GAUSS;
	fft->getWindow()->getOptions()->gain = 1.0;
	fft->getWindow()->getOptions()->sigma = 0.4;	
	double frameSize = audio_p->getSampleRate() * 0.01;
	double deltaSize = audio_p->getSampleRate() * 0.04;
	fft->getOptions()->nfft = smileMath_ceilToNextPowOf2(frameSize + deltaSize); //we set the FFT frame size so it's a power of 2 but can also fit all the samples
	ITransformable *fft_t = frame->AddTransformer(audio_p, fft, "0.01s", "0.04s");

	// fftmag
	OSFFTmagphase *fftmag = ssi_create (OSFFTmagphase, "OSFFTmagphase", true);
	ITransformable *fftmag_t = frame->AddTransformer(fft_t, fftmag, "0.1s");

	// specscale
	OSSpecScale *specscale = ssi_create (OSSpecScale, "OSSpecScale", true);
	specscale->getOptions()->srcScale = OSSpecScale::LINEAR;
	specscale->getOptions()->dstScale = OSSpecScale::LOG;
	specscale->getOptions()->dstLogScaleBase = 2.0;	
	specscale->getOptions()->minF = 20;
	specscale->getOptions()->smooth = true;
	specscale->getOptions()->enhance = true;
	specscale->getOptions()->weight = true;
	specscale->getOptions()->fsSec = 0.064; // BUG?	
	ITransformable *specscale_t = frame->AddTransformer(fftmag_t, specscale, "0.1s");

	// pitchshs
	OSPitchShs *pitchshs = ssi_create (OSPitchShs, "OSPitchShs", false);	
	pitchshs->getOptions()->maxPitch = 620;
	pitchshs->getOptions()->minPitch = 42;
	pitchshs->getOptions()->nCandidates = 6;
	pitchshs->getOptions()->scores = true;
	pitchshs->getOptions()->voicing = true;
	pitchshs->getOptions()->F0C1 = false;
	pitchshs->getOptions()->voicingC1 = false;
	pitchshs->getOptions()->F0raw = false;
	pitchshs->getOptions()->voicingClip = false;
	pitchshs->getOptions()->voicingCutoff = 0.7;
	pitchshs->getOptions()->octaveCorrection = false;
	pitchshs->getOptions()->fsSec = 0.064; // BUG?
	pitchshs->getOptions()->baseSr = audio_p->getSampleRate();
	ITransformable *pitchshs_t = frame->AddTransformer(specscale_t, pitchshs, "0.1s");

	// pitchsmooth
	OSPitchSmoother *pitchsmooth = ssi_create (OSPitchSmoother, "OSPitchSmoother", true);
	pitchsmooth->getOptions()->medianFilter0 = 0;
	pitchsmooth->getOptions()->postSmoothing = 0;
	pitchsmooth->getOptions()->postSmoothingMethod = OSPitchSmoother::SIMPLE;
	pitchsmooth->getOptions()->octaveCorrection = false;
	pitchsmooth->getOptions()->F0final = true;
	pitchsmooth->getOptions()->F0finalEnv = false;
	pitchsmooth->getOptions()->voicingFinalClipped = false;
	pitchsmooth->getOptions()->voicingFinalUnclipped = true;
	pitchsmooth->getOptions()->F0raw = false;
	pitchsmooth->getOptions()->voicingC1 = false;
	pitchsmooth->getOptions()->voicingClip = false;
	ITransformable *pitchsmooth_t = frame->AddTransformer(pitchshs_t, pitchsmooth, "0.1s");

	// plot
	SignalPainter *plot = 0;	

	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("audio");
	plot->getOptions()->type = PaintSignalType::AUDIO;
	plot->getOptions()->size = 10.0;		
	frame->AddConsumer(audio_p, plot, "0.1s");
	
	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("fft");
	plot->getOptions()->size = 10.0;	
	plot->getOptions()->type = PaintSignalType::IMAGE;
	frame->AddConsumer(fft_t, plot, "0.1s");
	
	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("fftmag");
	plot->getOptions()->size = 10.0;	
	plot->getOptions()->type = PaintSignalType::IMAGE;
	frame->AddConsumer(fftmag_t, plot, "0.1s"); 

	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("specscale");
	plot->getOptions()->size = 10.0;	
	plot->getOptions()->type = PaintSignalType::IMAGE;
	frame->AddConsumer(specscale_t, plot, "0.1s"); 

	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("pitchshs");
	plot->getOptions()->size = 10.0;
	frame->AddConsumer(pitchshs_t, plot, "0.1s");

	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("pitchsmooth");
	plot->getOptions()->size = 10.0;
	frame->AddConsumer(pitchsmooth_t, plot, "0.1s"); 

	FileWriter *writer = ssi_create (FileWriter, 0, true);
	writer->getOptions()->setPath("pitch");
	writer->getOptions()->type = File::ASCII;
	frame->AddConsumer(pitchsmooth_t, writer, "0.1s");

	// run framework
	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	frame->Start();
	frame->Wait();
	frame->Stop();
	frame->Clear();	

}
Beispiel #16
0
void ex_intensity() {

	ITheFramework *frame = Factory::GetFramework ();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	// audio sensor	
#ifndef SIMULATE
	Audio *audio = ssi_create (Audio, "audio", true);
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_AUDIO_PROVIDER_NAME);
#else
	WavReader *audio = ssi_create (WavReader, 0, true);
	audio->getOptions()->setPath("audio.wav");
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_WAVREADER_PROVIDER_NAME);
#endif	
	frame->AddSensor(audio);

	OSIntensity *intensity = ssi_create (OSIntensity, "OSIntensity", true);
	ITransformable *intensity_t = frame->AddTransformer(audio_p, intensity, "0.1s", "0.1s");

	SignalPainter *plot = 0;	

	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("audio");
	plot->getOptions()->type = PaintSignalType::AUDIO;
	plot->getOptions()->size = 10.0;		
	frame->AddConsumer(audio_p, plot, "0.1s");

	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("intensity");
	plot->getOptions()->size = 10.0;
	frame->AddConsumer(intensity_t, plot, "1"); 

	FileWriter *writer = ssi_create (FileWriter, 0, true);
	writer->getOptions()->setPath("intensity");
	writer->getOptions()->type = File::ASCII;
	frame->AddConsumer(intensity_t, writer, "1");

	// run framework
	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	frame->Start();
	frame->Wait();
	frame->Stop();
	frame->Clear();	
}
Beispiel #17
0
void Run (const ssi_char_t *exepath, const ssi_char_t *filepath, const ssi_char_t *configpaths, bool savepipe, bool init_only, bool export_dlls, bool show_close_but) {	

	Factory::RegisterDLL ("ssiframe", ssiout, ssimsg);
	Factory::RegisterDLL ("ssievent", ssiout, ssimsg);
#if _WIN32||_WIN64
	// disable close button
	if (!show_close_but) {
		RemoveCloseButton ();
	}

	// working directory
	::GetCurrentDirectory (SSI_MAX_CHAR, _workdir);
#else
	getcwd(_workdir,SSI_MAX_CHAR);
#endif
	// executable directory
	FilePath exepath_fp (exepath);	
	ssi_char_t exedir[SSI_MAX_CHAR];
	if (exepath_fp.isRelative ()) {
		#if _WIN32||_WIN64
		ssi_sprint (exedir, "%s\\%s", _workdir, exepath_fp.getDir ());
		#else
		ssi_sprint (exedir, "%s/%s", _workdir, exepath_fp.getDir ());
		#endif
	} else {
		strcpy (exedir, exepath_fp.getDir ());
	}

	// full pipepath
	FilePath filepath_fp (filepath);	
	ssi_char_t pipepath[SSI_MAX_CHAR];
	if (filepath_fp.isRelative ()) {
		#if _WIN32||_WIN64
		ssi_sprint (pipepath, "%s\\%s", _workdir, filepath);
		#else
		ssi_sprint (pipepath, "%s/%s", _workdir, filepath);

		#endif
	} else {
		strcpy (pipepath, filepath);
	}

	// set working directory to pipeline directory
		#if _WIN32||_WIN64
	::SetCurrentDirectory (filepath_fp.getDir ());
	#else
	chdir(filepath_fp.getDir ());
	#endif


	XMLPipeline *xmlpipe = ssi_create (XMLPipeline, 0, true);

	xmlpipe->SetRegisterDllFptr (Factory::RegisterDLL);
	bool result = false;
	if (configpaths) {
		ssi_size_t n = 0;
		n = ssi_split_string_count (configpaths, ';');
		ssi_char_t **ns = new ssi_char_t *[n];
		ssi_split_string (n, ns, configpaths, ';');
		result = xmlpipe->parse (pipepath, n, ns, savepipe);
	} else {
		result = xmlpipe->parse (pipepath, 0, 0, savepipe);
	}

	if (!result) {
		ssi_print ("ERROR: could not parse pipeline from '%s'\n", pipepath);
		ssi_print ("\n\n\t\tpress enter to quit\n");
		getchar ();
	} else {

		if (export_dlls) {
			Factory::ExportDlls (exedir);
		}

		if (!init_only) {			

			ITheFramework *frame = Factory::GetFramework ();
			IThePainter *painter = 0;
			if (xmlpipe->startPainter ()) {
				painter = Factory::GetPainter ();
			}
			ITheEventBoard *eboard = 0;
			if (xmlpipe->startEventBoard ()) {
				eboard = Factory::GetEventBoard ();
			}						
			frame->Start ();
			if (eboard) {
				eboard->Start ();
			}
			frame->Wait ();
			if (eboard) {
				eboard->Stop ();
			}
			frame->Stop ();			
			frame->Clear ();
			if (eboard) {
				eboard->Clear ();
			}
			if (painter) {
				painter->Clear ();
			}
			
		} else {
			ssi_print ("SUCCESS: initialization ok");
			ssi_print ("\n\n\t\tpress enter to quit\n");
			getchar ();
		}
	}

	Factory::Clear ();
	#if _WIN32||_WIN64
	::SetCurrentDirectory (_workdir);
	#else
	chdir(_workdir);
	#endif
}
Beispiel #18
0
bool ex_mfcc(void *args) {

	ITheFramework *frame = Factory::GetFramework ();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	// audio sensor	
#ifndef SIMULATE
	Audio *audio = ssi_create (Audio, "audio", true);
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_AUDIO_PROVIDER_NAME);
#else
	WavReader *audio = ssi_create (WavReader, 0, true);
	audio->getOptions()->setPath("audio.wav");
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_WAVREADER_PROVIDER_NAME);
#endif	
	frame->AddSensor(audio);

	// preemph
	OSPreemphasis *preemph = ssi_create (OSPreemphasis, "preemph", true);
	ITransformable *preemph_t = frame->AddTransformer(audio_p, preemph, "0.02s");

	// energy
	OSEnergy *energy = ssi_create (OSEnergy, "energy", true);
	ITransformable *energy_t = frame->AddTransformer(preemph_t, energy, "0.015s", "0.01s");

	// fft
	OSTransformFFT *fft = ssi_create (OSTransformFFT, "fft", true);
	fft->getOptions()->nfft = 2048;
	ITransformable *fft_t = frame->AddTransformer(preemph_t, fft, "0.01s", "0.01s");

	// fftmag
	OSFFTmagphase *fftmag = ssi_create (OSFFTmagphase, "fftmag", true);
	ITransformable *fftmag_t = frame->AddTransformer(fft_t, fftmag, "0.1s");

	// melspec
	OSMelspec *melspec = ssi_create (OSMelspec, "melspec", true);
	ITransformable *melspec_t = frame->AddTransformer(fftmag_t, melspec, "0.1s");

	// mfcc
	OSMfcc *mfcc = ssi_create (OSMfcc, "mfcc", true);
	ITransformable *mfcc_t = frame->AddTransformer(melspec_t, mfcc, "0.1s");

	// plot
	SignalPainter *plot = 0;	

	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("audio");
	plot->getOptions()->type = PaintSignalType::AUDIO;
	plot->getOptions()->size = 10.0;		
	frame->AddConsumer(preemph_t, plot, "0.1s");

	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("energy");
	plot->getOptions()->size = 10.0;	
	frame->AddConsumer(energy_t, plot, "0.1s"); 
	
	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("fft");
	plot->getOptions()->size = 10.0;	
	plot->getOptions()->type = PaintSignalType::IMAGE;
	frame->AddConsumer(fft_t, plot, "0.1s"); 
	
	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("fftmag");
	plot->getOptions()->size = 10.0;	
	plot->getOptions()->type = PaintSignalType::IMAGE;
	frame->AddConsumer(fftmag_t, plot, "0.1s"); 

	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("melspec");
	plot->getOptions()->size = 10.0;	
	plot->getOptions()->type = PaintSignalType::IMAGE;
	frame->AddConsumer(melspec_t, plot, "0.1s"); 

	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("mfcc");
	plot->getOptions()->size = 10.0;	
	plot->getOptions()->type = PaintSignalType::IMAGE;	
	frame->AddConsumer(mfcc_t, plot, "0.1s"); 

	FileWriter *writer = ssi_create (FileWriter, 0, true);
	writer->getOptions()->setPath("mfcc2");
	writer->getOptions()->type = File::ASCII;
	frame->AddConsumer(mfcc_t, writer, "0.1s");

#ifdef SIMULATE
	AudioPlayer *player = ssi_create(AudioPlayer, "player", true);
	frame->AddConsumer(audio_p, player, "0.01s");
#endif

	// run framework
	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	frame->Start();
	frame->Wait();
	frame->Stop();
	frame->Clear();	

	return true;
}
Beispiel #19
0
void ex_vad () {

	//general
	ITheFramework *frame = Factory::GetFramework ();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	ITheEventBoard *board = Factory::GetEventBoard ();
	ssi_pcast (TheEventBoard, board)->getOptions()->update = 250;

	// audio sensor	
#ifndef SIMULATE
	Audio *audio = ssi_create (Audio, "audio", true);
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_AUDIO_PROVIDER_NAME);
#else
	WavReader *audio = ssi_create (WavReader, 0, true);
	audio->getOptions()->setPath("audio.wav");
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_WAVREADER_PROVIDER_NAME);
#endif	
	frame->AddSensor(audio);

	SignalPainter *audio_plot = ssi_create_id (SignalPainter, 0, "plot");
	audio_plot->getOptions()->setTitle("audio");
	audio_plot->getOptions()->size = 10.0;		
	audio_plot->getOptions()->type = PaintSignalType::AUDIO;
	frame->AddConsumer(audio_p, audio_plot, "0.2s");

	OSLpc * lpc = ssi_create (OSLpc, 0, true);
	lpc->getOptions()->lsp = true;
	ssi::ITransformable *lpc_p = frame->AddTransformer(audio_p, lpc, "160");
	
	OSPitchChain * pitch = ssi_create (OSPitchChain, 0, true);
	pitch->getOSPitchShs()->getOptions()->voicingC1 = true;
	pitch->getOSPitchSmoother()->getOptions()->voicingC1 = true;
	ssi::ITransformable *pitch_p = frame->AddTransformer(audio_p, pitch, "160", "160");
	
	OSEnergy * energy = ssi_create (OSEnergy, 0, true);
	energy->getOptions()->type = OSEnergy::TYPE::LOG;
	ssi::ITransformable *energy_p = frame->AddTransformer(audio_p, energy, "160");

	OSVad * vad = ssi_create (OSVad, 0, true);
	ssi::ITransformable * src[3] = {lpc_p, pitch_p, energy_p};
	frame->AddConsumer(3, src, vad, "0.01s");
	board->RegisterSender(*vad);

	EventMonitor *monitor = ssi_create_id (EventMonitor, 0, "monitor");
	board->RegisterListener(*monitor, vad->getEventAddress());

#ifdef SIMULATE
	AudioPlayer *player = ssi_create (AudioPlayer, "player", true);
	frame->AddConsumer(audio_p, player, "0.01s");
#endif

	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	board->Start();
	frame->Start();
	frame->Wait();
	frame->Stop();
	board->Stop();
	frame->Clear();
	board->Clear();
}
Beispiel #20
0
bool ex_sender_video(void *arg) {

#if _WIN32|_WIN64

	ITheFramework *frame = Factory::GetFramework();

	Decorator *decorator = ssi_create(Decorator, 0, true);
	decorator->getOptions()->setOrigin(CONSOLE_WIDTH, 0);
	frame->AddDecorator(decorator);

	FakeSignal *camera = ssi_create(FakeSignal, 0, true);
	camera->getOptions()->type = FakeSignal::SIGNAL::IMAGE_SSI;
	camera->getOptions()->sr = 1;
	ITransformable *camera_p = frame->AddProvider(camera, "fake");
	camera->setLogLevel(SSI_LOG_LEVEL_DEBUG);
	frame->AddSensor(camera);

	SocketWriter *socket_writer_img = ssi_create (SocketWriter, 0, true);
	socket_writer_img->getOptions()->port = 4444;
	socket_writer_img->getOptions()->setHost("localhost");
	socket_writer_img->getOptions()->type = Socket::TYPE::UDP;
	socket_writer_img->getOptions()->format = SocketWriter::Options::FORMAT::IMAGE;
	frame->AddConsumer(camera_p, socket_writer_img, "1");

	SocketReader *socket_reader_img = ssi_create (SocketReader, 0, true);
	socket_reader_img->getOptions()->port = 4444;
	socket_reader_img->getOptions()->type = Socket::TYPE::UDP;
	socket_reader_img->getOptions()->format = SocketReader::Options::FORMAT::IMAGE;
	socket_reader_img->getOptions()->setSampleInfo(camera->getFormat());
	ITransformable *socket_reader_img_p = frame->AddProvider(socket_reader_img, SSI_SOCKETREADER_PROVIDER_NAME);
	frame->AddSensor(socket_reader_img);

	VideoPainter *plot;

	plot = ssi_create_id(VideoPainter, 0, "plot");
	frame->AddConsumer(camera_p, plot, "1");

	plot = ssi_create_id(VideoPainter, 0, "plot");
	frame->AddConsumer(socket_reader_img_p, plot, "1");

	decorator->add("plot*", 1, 2, 0, 0, 320, 480);

    frame->Start();
	frame->Wait();
	frame->Stop();
    frame->Clear();

#endif

	return true;
}
Beispiel #21
0
bool ex_event (void *arg) {

	ITheFramework *frame = Factory::GetFramework ();
	ssi_pcast(TheFramework, frame)->getOptions()->setConsolePos(800, 200, 400, 200);
	//IThePainter *painter = Factory::GetPainter ();
	//ITheEventBoard *board = Factory::GetEventBoard ();

	Mouse *mouse = ssi_create (Mouse, 0, false);
	mouse->getOptions ()->mask = Mouse::LEFT;
	ITransformable *cursor_p = frame->AddProvider (mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	ITransformable *button_p = frame->AddProvider (mouse, SSI_MOUSE_BUTTON_PROVIDER_NAME);
	frame->AddSensor (mouse);

	// output
/*
	SignalPainter *signal_painter = 0;

	signal_painter = ssi_create (SignalPainter, 0, true);
	signal_painter->getOptions ()->size = 2.0;
	signal_painter->getOptions ()->setName ("cursor");
	frame->AddConsumer (cursor_p, signal_painter, "0.2s");
*/
	// zero event

	ZeroEventSender *ezero = ssi_create (ZeroEventSender, 0, true);
	ezero->getOptions ()->setSender ("mouse");
	ezero->getOptions ()->setEvent ("click");
	ezero->getOptions ()->eager = true;
	ezero->getOptions ()->eall = true;
	ezero->getOptions ()->hard = true;
	ezero->getOptions ()->mindur = 0.5;
	ezero->getOptions ()->maxdur = 4.0;
	ezero->getOptions ()->hangin = 5;
	ezero->getOptions ()->hangout = 5;
	ezero->getOptions ()->empty = false;
	ezero->getOptions ()->setString("ezero");
	frame->AddConsumer (button_p, ezero, "0.2s");
	//board->RegisterSender (*ezero);

	FloatsEventSender *fsender = ssi_factory_create (FloatsEventSender, 0, true);
	fsender->getOptions ()->mean = true;
	fsender->getOptions ()->setEventName ("position");
	fsender->getOptions ()->setSenderName ("mouse");
	//frame->AddEventConsumer (cursor_p, fsender, board, ezero->getEventAddress ());
	//board->RegisterSender (*fsender);
/*
	signal_painter = ssi_create (SignalPainter, 0, true);
	signal_painter->getOptions ()->size = 0;
	signal_painter->getOptions ()->setName ("click event");
	frame->AddEventConsumer (cursor_p, signal_painter, board, ezero->getEventAddress ());
*/
	// thres event

	ThresEventSender *ethres = ssi_create (ThresEventSender, "ethres", true);
	ethres->getOptions ()->setSender ("tes");
	ethres->getOptions ()->setEvent ("te");
	ethres->getOptions ()->hard = false;
	ethres->getOptions ()->mindur = 0.5;
	ethres->getOptions ()->maxdur = 4.0;
	ethres->getOptions ()->hangin = 5;
	ethres->getOptions ()->hangout = 5;
	ethres->getOptions ()->thres = 0.5;
	ethres->getOptions ()->empty = false;
	ethres->getOptions ()->setString("ethres");
	frame->AddConsumer (cursor_p, ethres, "0.2s");
	//board->RegisterSender (*ethres);

	EventConsumer *ethres_c = ssi_create (EventConsumer, 0, true);
	ethres_c->getOptions ()->async = true;
	//board->RegisterListener (*ethres_c, ethres->getEventAddress ());
/*
	signal_painter = ssi_create (SignalPainter, 0, true);
	signal_painter->getOptions ()->size = 0;
	signal_painter->getOptions ()->setName ("thres event");
	ethres_c->AddConsumer (cursor_p, signal_painter);



	// event monitor

	EventMonitor *emonitor = ssi_create (EventMonitor, 0, true);
	emonitor->getOptions ()->setMonitorPos (0, 200, 800, 200);
	board->RegisterListener (*emonitor, 0, 50000);
*/
	// run

	frame->Start ();
	//board->Start ();
	//painter->Arrange (3,1,0,0,800,200);
	frame->Wait ();
	//board->Stop ();
	frame->Stop ();
	frame->Clear ();
	//board->Clear ();
	//painter->Clear ();

	return true;
}
Beispiel #22
0
bool ex_send_notifications(void *arg)
{
	ITheFramework *frame = Factory::GetFramework();
	
	Decorator *decorator = ssi_create(Decorator, 0, true);
	decorator->getOptions()->setOrigin(CONSOLE_WIDTH, 0);
	frame->AddDecorator(decorator);

	// start mouse

	Mouse *mouse = ssi_create(Mouse, 0, true);
	ITransformable *cursor_p = frame->AddProvider(mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	frame->AddSensor(mouse);

	// sender + receiver

	NotifySender *sender = ssi_create_id(NotifySender, 0, "sender");
	sender->setLogLevel(SSI_LOG_LEVEL_DEBUG);
	sender->getOptions()->setUrl("udp://localhost:1111");
	frame->AddRunnable(sender);	

	NotifyReceiver *receiver = ssi_create_id(NotifyReceiver, 0, "receiver");
	receiver->setLogLevel(SSI_LOG_LEVEL_DEBUG);
	receiver->getOptions()->setUrl("udp://localhost:1111");
	receiver->getOptions()->setId("plot");
	frame->AddRunnable((SSI_IRunnableObject*)receiver);

	// control (place after sender!)

	ControlCheckBox *checkbox = 0;

	checkbox = ssi_create_id(ControlCheckBox, 0, "checkbox");
	checkbox->getOptions()->setId("sender");
	checkbox->getOptions()->setTitle("VISUALIZATION");
	checkbox->getOptions()->setLabel("SHOW");
	checkbox->getOptions()->value = false;
	frame->AddRunnable(checkbox);

	// plot

	SignalPainter *plot;

	plot = ssi_create_id(SignalPainter, 0, "plot");
	plot->getOptions()->size = 10;
	plot->getOptions()->setTitle("cursor");
	frame->AddConsumer(cursor_p, plot, "0.2s");

	decorator->add("plot*", 0, 0, 400, CONSOLE_HEIGHT - 200);
	decorator->add("checkbox*", 0, CONSOLE_HEIGHT - 200, 400, 200);

	frame->Start();
	frame->Wait();
	frame->Stop();
	frame->Clear();

	return true;

}
Beispiel #23
0
bool ex_sender(void *arg) {

	Socket::TYPE::List *type = ssi_pcast(Socket::TYPE::List, arg);

	ITheFramework *frame = Factory::GetFramework();

	Decorator *decorator = ssi_create(Decorator, 0, true);
	decorator->getOptions()->setOrigin(CONSOLE_WIDTH, 0);
	frame->AddDecorator(decorator);

	// start mouse

	Mouse *mouse = ssi_create (Mouse, "mouse", true);
	ITransformable *cursor_p = frame->AddProvider(mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	frame->AddSensor(mouse);

	// start sender and receiver
	
	SocketWriter *socket_writer_bin = ssi_create (SocketWriter, 0, true);	
	socket_writer_bin->getOptions()->setUrl(*type, "localhost", 1111);
	socket_writer_bin->getOptions()->format = SocketWriter::Options::FORMAT::BINARY;
	frame->AddConsumer(cursor_p, socket_writer_bin, "0.25s");

	SocketReader *socket_reader_bin = ssi_create (SocketReader, 0, true);
	socket_reader_bin->getOptions()->setUrl(*type, "localhost", 1111);
	socket_reader_bin->getOptions()->format = SocketReader::Options::FORMAT::BINARY;
	socket_reader_bin->getOptions()->setSampleInfo(cursor_p->getSampleRate(), cursor_p->getSampleDimension(), cursor_p->getSampleBytes(), cursor_p->getSampleType());
	ITransformable *socket_reader_bin_p = frame->AddProvider(socket_reader_bin, SSI_SOCKETREADER_PROVIDER_NAME);
	frame->AddSensor(socket_reader_bin);

	SocketWriter *socket_writer_asc = ssi_create (SocketWriter, 0, true);	
	socket_writer_asc->getOptions()->setUrl(*type, "localhost", 2222);
	socket_writer_asc->getOptions()->format = SocketWriter::Options::FORMAT::ASCII;
	frame->AddConsumer(cursor_p, socket_writer_asc, "0.25s");

	SocketReader *socket_reader_asc = ssi_create (SocketReader, 0, true);
	socket_reader_asc->getOptions()->setUrl(*type, "localhost", 2222);
	socket_reader_asc->getOptions()->format = SocketReader::Options::FORMAT::ASCII;
	socket_reader_asc->getOptions()->setSampleInfo(cursor_p->getSampleRate(), cursor_p->getSampleDimension(), cursor_p->getSampleBytes(), cursor_p->getSampleType());
	ITransformable *socket_reader_asc_p = frame->AddProvider(socket_reader_asc, SSI_SOCKETREADER_PROVIDER_NAME);
	frame->AddSensor(socket_reader_asc);

	SocketWriter *socket_writer_osc = ssi_create (SocketWriter, 0, true);
	socket_writer_osc->getOptions()->setUrl(*type, "localhost", 3333);
	socket_writer_osc->getOptions()->format = SocketWriter::Options::FORMAT::OSC;
	socket_writer_osc->getOptions()->setId("mouse");
	frame->AddConsumer(cursor_p, socket_writer_osc, "0.25s");

	SocketReader *socket_reader_osc = ssi_create (SocketReader, 0, true);
	socket_reader_osc->getOptions()->setUrl(*type, "localhost", 3333);
	socket_reader_osc->getOptions()->format = SocketReader::Options::FORMAT::OSC;
	socket_reader_osc->getOptions()->setSampleInfo(cursor_p->getSampleRate(), cursor_p->getSampleDimension(), cursor_p->getSampleBytes(), cursor_p->getSampleType());
	ITransformable *socket_reader_osc_p = frame->AddProvider(socket_reader_osc, SSI_SOCKETREADER_PROVIDER_NAME);
	frame->AddSensor(socket_reader_osc);

	SignalPainter *plot;

	plot =ssi_create_id(SignalPainter, 0, "plot");
	plot->getOptions()->size = 10;
	plot->getOptions()->setTitle("Local Sensor");
	frame->AddConsumer(cursor_p, plot, "5");

	plot =ssi_create_id(SignalPainter, 0, "plot");
	plot->getOptions()->size = 10;
	plot->getOptions()->setTitle("Socker Reader(Binary)");
	frame->AddConsumer(socket_reader_bin_p, plot, "5");

	plot =ssi_create_id(SignalPainter, 0, "plot");
	plot->getOptions()->size = 10;
	plot->getOptions()->setTitle("Socker Reader(ASCII)");
	frame->AddConsumer(socket_reader_asc_p, plot, "5");

	plot =ssi_create_id(SignalPainter, 0, "plot");
	plot->getOptions()->size = 10;
	plot->getOptions()->setTitle("Socker Reader(OSC)");
	frame->AddConsumer(socket_reader_osc_p, plot, "5");

	decorator->add("plot*", 0, 0, 400, CONSOLE_HEIGHT);

	frame->Start();
	frame->Wait();
	frame->Stop();
	frame->Clear();

	return true;
}
Beispiel #24
0
bool ex_samples(void *arg) {

	ITheFramework *frame = Factory::GetFramework();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	ITheEventBoard *board = Factory::GetEventBoard();

	ssi_event_t e_class;
	ssi_event_init(e_class, SSI_ETYPE_STRING, Factory::AddString("sender"), Factory::AddString("class"), 0, 0, SSI_MAX_CHAR);

	Mouse *mouse = ssi_create(Mouse, 0, false);
	mouse->getOptions()->mask = Mouse::LEFT;
	ITransformable *cursor_p = frame->AddProvider(mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	ITransformable *button_p = frame->AddProvider(mouse, SSI_MOUSE_BUTTON_PROVIDER_NAME);
	frame->AddSensor(mouse);

	FileSampleWriter *writer = 0;
	
	writer = ssi_create(FileSampleWriter, 0, true);
	writer->getOptions()->type = File::ASCII;
	writer->getOptions()->setClasses("A;B");
	writer->getOptions()->setUser("user");
	frame->AddConsumer(cursor_p, writer, "1.0s");
	board->RegisterListener(*writer, "class@");

	writer = ssi_create(FileSampleWriter, 0, true);
	writer->getOptions()->setPath("test");
	writer->getOptions()->type = File::BINARY;
	writer->getOptions()->setClasses("A;B");
	writer->getOptions()->setUser("user");
	frame->AddConsumer(cursor_p, writer, "1.0s");
	board->RegisterListener(*writer, "class@");

	writer = ssi_create(FileSampleWriter, 0, true);
	writer->getOptions()->type = File::ASCII;
	writer->getOptions()->setClasses("A;B");
	writer->getOptions()->setUser("user");
	writer->getOptions()->streamClassIndex = 1;
	ITransformable *input[2] = { cursor_p, cursor_p };
	frame->AddConsumer(2, input, writer, "1.0s");

	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	board->Start();
	frame->Start();

	Sleep(2000);
	ssi_strcpy(e_class.ptr, "B");
	board->update(e_class);

	Sleep(2000);
	ssi_strcpy(e_class.ptr, "A");
	board->update(e_class);

	Sleep(2000);
	ssi_strcpy(e_class.ptr, "");
	board->update(e_class);

	frame->Wait();
	frame->Stop();
	board->Stop();
	frame->Clear();
	board->Clear();

	return true;
}
Beispiel #25
0
bool ex_annotation(void *arg) {

	ITheFramework *frame = Factory::GetFramework();
	ITheEventBoard *board = Factory::GetEventBoard();

	Mouse *mouse = ssi_create(Mouse, 0, true);
	mouse->getOptions()->sr = 50.0;
	mouse->getOptions()->mask = Mouse::LEFT;
	ITransformable *cursor_p = frame->AddProvider(mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	ITransformable *button_p = frame->AddProvider(mouse, SSI_MOUSE_BUTTON_PROVIDER_NAME);
	frame->AddSensor(mouse);

	TriggerEventSender *ezero = 0;
	
	ezero = ssi_create(TriggerEventSender, 0, true);
	ezero->getOptions()->triggerType = TriggerEventSender::TRIGGER::NOT_EQUAL;
	ezero->getOptions()->setAddress("click@mouse");
	ezero->getOptions()->minDuration = 0.2;
	frame->AddConsumer(button_p, ezero, "0.25s");
	board->RegisterSender(*ezero);

	ezero = ssi_create(TriggerEventSender, 0, true);
	ezero->getOptions()->triggerType = TriggerEventSender::TRIGGER::NOT_EQUAL;
	ezero->getOptions()->setAddress("click@mouse");
	ezero->getOptions()->minDuration = 0.2;
	ezero->getOptions()->eventType = SSI_ETYPE_STRING;
	ezero->getOptions()->setEventString("string");
	frame->AddConsumer(button_p, ezero, "0.25s");
	board->RegisterSender(*ezero);

	StringEventSender *ssender = ssender = ssi_create(StringEventSender, 0, true);
	ssender->getOptions()->setAddress("cursor@string");
	ssender->getOptions()->mean = true;
	frame->AddEventConsumer(cursor_p, ssender, board, ezero->getEventAddress());
	board->RegisterSender(*ssender);

	MapEventSender *msender = 0;
	
	msender = ssi_create(MapEventSender, 0, true);
	msender->getOptions()->setAddress("cursor@map");
	msender->getOptions()->setKeys("x,y");
	frame->AddEventConsumer(cursor_p, msender, board, ezero->getEventAddress());
	board->RegisterSender(*msender);

	msender = ssi_create(MapEventSender, 0, true);
	msender->getOptions()->setAddress("cursor@map");
	msender->getOptions()->setKeys("y,x");
	frame->AddEventConsumer(cursor_p, msender, board, ezero->getEventAddress());
	board->RegisterSender(*msender);
	
	FileAnnotationWriter *annotation = 0;
			
	annotation = ssi_create(FileAnnotationWriter, 0, true);	
	annotation->getOptions()->setAnnoPath("discrete_empty_and_string");
	annotation->getOptions()->setSchemePath("scheme_discrete.annotation");
	annotation->getOptions()->setDefaultLabel("empty");
	annotation->getOptions()->defaultConfidence = 0.5f;
	annotation->getOptions()->setMeta("annotator=hans;role=wurscht");
	board->RegisterListener(*annotation, ezero->getEventAddress());	

	annotation = ssi_create(FileAnnotationWriter, 0, true);
	annotation->getOptions()->setAnnoPath("discrete_map");
	annotation->getOptions()->setSchemePath("scheme_discrete.annotation");
	annotation->getOptions()->mapKeyIndex = 1;
	annotation->getOptions()->setMeta("annotator=hans;role=wurscht");
	board->RegisterListener(*annotation, msender->getEventAddress());

	annotation = ssi_create(FileAnnotationWriter, 0, true);
	annotation->getOptions()->setAnnoPath("free_empty_and_string");
	annotation->getOptions()->setSchemePath("scheme_free");
	annotation->getOptions()->setDefaultLabel("empty");
	annotation->getOptions()->defaultConfidence = 0.5f;
	annotation->getOptions()->setMeta("annotator=hans;role=wurscht");
	board->RegisterListener(*annotation, ezero->getEventAddress());

	annotation = ssi_create(FileAnnotationWriter, 0, true);
	annotation->getOptions()->setAnnoPath("free_map");
	annotation->getOptions()->setSchemePath("scheme_free");
	annotation->getOptions()->mapKeyIndex = 1;
	annotation->getOptions()->setMeta("annotator=hans;role=wurscht");
	board->RegisterListener(*annotation, msender->getEventAddress());

	annotation = ssi_create(FileAnnotationWriter, 0, true);
	annotation->getOptions()->setAnnoPath("continuous");
	annotation->getOptions()->setSchemePath("scheme_continuous");
	annotation->getOptions()->setMeta("annotator=hans;role=wurscht");
	frame->AddConsumer(cursor_p, annotation, "1.0s");

	EventMonitor *monitor = ssi_create_id(EventMonitor, 0, "monitor");
	monitor->getOptions()->setPos(CONSOLE_WIDTH, 0, 600, 300);
	board->RegisterListener(*monitor, 0, 60000);

	board->Start();
	frame->Start();
	frame->Wait();
	frame->Stop();
	board->Stop();
	frame->Clear();
	board->Clear();

	return true;
}
Beispiel #26
0
void ex_pitch_chain () {

	ITheFramework *frame = Factory::GetFramework ();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	// audio sensor	
#ifndef SIMULATE
	Audio *audio = ssi_create (Audio, "audio", true);
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_AUDIO_PROVIDER_NAME);
#else
	WavReader *audio = ssi_create (WavReader, 0, true);
	audio->getOptions()->setPath("audio.wav");
	audio->getOptions()->scale = true;		
	audio->getOptions()->block = 0.01;
	ITransformable *audio_p = frame->AddProvider(audio, SSI_WAVREADER_PROVIDER_NAME);
#endif	
	frame->AddSensor(audio);

	// pitch
	OSPitchChain *pitch = ssi_create (OSPitchChain, "pitch", true);	
	pitch->getOSTransformFFT()->getOptions()->nfft = 1024;
	pitch->getOSPitchShs()->getOptions()->baseSr = audio_p->getSampleRate();
	ITransformable *pitch_t = frame->AddTransformer(audio_p, pitch, "0.01s", "0.01s");

	// plot
	SignalPainter *plot = 0;	

	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("audio");
	plot->getOptions()->type = PaintSignalType::AUDIO;
	plot->getOptions()->size = 10.0;		
	frame->AddConsumer(audio_p, plot, "0.01s");
	
	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("pitch");
	plot->getOptions()->size = 10.0;
	frame->AddConsumer(pitch_t, plot, "0.01s"); 

	FileWriter *writer = ssi_create (FileWriter, 0, true);
	writer->getOptions()->setPath("pitch_chain");
	writer->getOptions()->type = File::ASCII;
	frame->AddConsumer(pitch_t, writer, "0.01s");

	// run framework
	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	frame->Start();
	frame->Wait();
	frame->Stop();
	frame->Clear();	
}
Beispiel #27
0
void ex_mfcc_chain () {

	ITheFramework *frame = Factory::GetFramework ();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	// audio sensor	
#ifndef SIMULATE
	Audio *audio = ssi_create (Audio, "audio", true);
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_AUDIO_PROVIDER_NAME);
#else
	WavReader *audio = ssi_create (WavReader, 0, true);
	audio->getOptions()->setPath("audio.wav");
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_WAVREADER_PROVIDER_NAME);
#endif	
	frame->AddSensor(audio);

	// preemph
	OSPreemphasis *preemph = ssi_create (OSPreemphasis, "preemph", true);
	ITransformable *preemph_t = frame->AddTransformer(audio_p, preemph, "0.02s");

	// fft
	OSMfccChain *mfcc = ssi_create (OSMfccChain, "mfcc", true);	
	mfcc->getOSTransformFFT()->getOptions()->nfft = 2048;
	ITransformable *mfcc_t = frame->AddTransformer(preemph_t, mfcc, "0.01s", "0.01s");

	// plot
	SignalPainter *plot = 0;	

	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("audio");
	plot->getOptions()->type = PaintSignalType::AUDIO;
	plot->getOptions()->size = 10.0;		
	frame->AddConsumer(audio_p, plot, "0.1s");
	
	plot = ssi_create_id (SignalPainter, 0, "plot");
	plot->getOptions()->setTitle("mfcc");
	plot->getOptions()->type =  PaintSignalType::IMAGE;
	plot->getOptions()->size = 10.0;
	frame->AddConsumer(mfcc_t, plot, "0.1s"); 

	FileWriter *writer = ssi_create (FileWriter, 0, true);
	writer->getOptions()->setPath("mfcc_chain");
	writer->getOptions()->type = File::ASCII;
	frame->AddConsumer(mfcc_t, writer, "0.1s");

	// run framework
	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	frame->Start();
	frame->Wait();
	frame->Stop();
	frame->Clear();	
}
Beispiel #28
0
bool ex_sender_events (void *arg) {

	Socket::TYPE::List *type = ssi_pcast(Socket::TYPE::List, arg);

	ITheFramework *frame = Factory::GetFramework();
	ITheEventBoard *board = Factory::GetEventBoard();

	// start mouse

	Mouse *mouse = ssi_create(Mouse, 0, true);
	mouse->getOptions()->mask = Mouse::LEFT;
	mouse->getOptions()->sendEvent = true;
	mouse->getOptions()->setAddress("click@mouse");
	ITransformable *cursor_p = frame->AddProvider(mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);	
	frame->AddSensor(mouse);
	board->RegisterSender(*mouse);
	
	MapEventSender *msender = ssi_create(MapEventSender, 0, true);
	msender->getOptions()->setAddress("cursor@mouse");
	msender->getOptions()->setKeys("x,y");
	frame->AddEventConsumer(cursor_p, msender, board, mouse->getEventAddress());
	board->RegisterSender(*msender);

	// start sender and receiver

	SocketEventWriter *socket_event_writer = 0;
	
	socket_event_writer = ssi_create(SocketEventWriter, 0, true);
	socket_event_writer->getOptions()->setUrl(*type, "localhost", 1111);	
	board->RegisterListener(*socket_event_writer, msender->getEventAddress());

	socket_event_writer = ssi_create(SocketEventWriter, 0, true);
	socket_event_writer->getOptions()->setUrl(*type, "localhost", 2222);
	socket_event_writer->getOptions()->osc = true;
	socket_event_writer->getOptions()->xml = false;
	board->RegisterListener(*socket_event_writer, msender->getEventAddress());

	SocketEventReader *socket_event_reader = 0;
	
	socket_event_reader = ssi_create(SocketEventReader, 0, true);
	socket_event_reader->getOptions()->setUrl(*type, "localhost", 1111);	
	socket_event_reader->getOptions()->setAddress("click@remote");
	board->RegisterSender(*socket_event_reader);

	socket_event_reader = ssi_create(SocketEventReader, 0, true);
	socket_event_reader->getOptions()->setUrl(*type, "localhost", 2222);
	socket_event_reader->getOptions()->osc = true;
	socket_event_reader->getOptions()->setAddress("click@remote");
	board->RegisterSender(*socket_event_reader);

	EventMonitor *monitor = ssi_create_id (EventMonitor, 0, "monitor");
	monitor->getOptions()->setPos(CONSOLE_WIDTH, 0, 600, CONSOLE_HEIGHT);
	board->RegisterListener(*monitor, socket_event_reader->getEventAddress(), 60000);

	board->Start();
	frame->Start();
	frame->Wait();
	frame->Stop();
	board->Stop();
	frame->Clear();
	board->Clear();

	return true;
}
Beispiel #29
0
void ex_pitchdirection () {

	//general
	ITheFramework *frame = Factory::GetFramework ();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	ITheEventBoard *board = Factory::GetEventBoard ();
	ssi_pcast (TheEventBoard, board)->getOptions()->update = 250;

	// audio sensor	
#ifndef SIMULATE
	Audio *audio = ssi_create (Audio, "audio", true);
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_AUDIO_PROVIDER_NAME);
#else
	WavReader *audio = ssi_create (WavReader, 0, true);
	audio->getOptions()->setPath("audio.wav");
	audio->getOptions()->scale = true;		
	ITransformable *audio_p = frame->AddProvider(audio, SSI_WAVREADER_PROVIDER_NAME);
#endif	
	frame->AddSensor(audio);
	
	OSPitchChain * pitch = ssi_create (OSPitchChain, "pitch", true);
	pitch->getOSPitchSmoother()->getOptions()->F0final = true;
	pitch->getOSPitchSmoother()->getOptions()->F0finalEnv = true;
	double frameSize = audio_p->getSampleRate() * 0.01;
	double deltaSize = audio_p->getSampleRate() * 0.04;
	pitch->getOSTransformFFT()->getOptions()->nfft = smileMath_ceilToNextPowOf2(frameSize + deltaSize); //we set the FFT frame size so it's a power of 2 but can also fit all the samples	
	pitch->getOSPitchShs()->getOptions()->baseSr = audio_p->getSampleRate();
	ssi::ITransformable *pitch_p = frame->AddTransformer(audio_p, pitch, "0.01s", "0.04s");
	
	OSEnergy * energy = ssi_create (OSEnergy, 0, true);
	energy->getOptions()->type = OSEnergy::TYPE::RMS;
	ssi::ITransformable *energy_p = frame->AddTransformer(audio_p, energy, "0.01s");

	OSPitchDirection * dir = ssi_create (OSPitchDirection, 0, true);
	ssi::ITransformable * xtra_src[1] = {energy_p};
	ssi::ITransformable *dir_p = frame->AddTransformer(pitch_p, 1, xtra_src, dir, "0.01s");
	board->RegisterSender(*dir);

	SignalPainter *audio_plot = ssi_create_id (SignalPainter, 0, "plot");
	audio_plot->getOptions()->setTitle("audio");
	audio_plot->getOptions()->size = 10.0;		
	audio_plot->getOptions()->type = PaintSignalType::AUDIO;
	frame->AddConsumer(audio_p, audio_plot, "0.2s");

	SignalPainter *pitch_plot = ssi_create_id (SignalPainter, 0, "plot");
	pitch_plot->getOptions()->setTitle("pitch");
	pitch_plot->getOptions()->size = 10.0;		
	pitch_plot->getOptions()->type = PaintSignalType::SIGNAL;
	frame->AddConsumer(pitch_p, pitch_plot, "0.2s");

	SignalPainter *energy_plot = ssi_create_id (SignalPainter, 0, "plot");
	energy_plot->getOptions()->setTitle("energy");
	energy_plot->getOptions()->size = 10.0;		
	energy_plot->getOptions()->type = PaintSignalType::SIGNAL;
	frame->AddConsumer(energy_p, energy_plot, "0.2s");
	
	SignalPainter *dir_plot = ssi_create_id (SignalPainter, 0, "plot");
	dir_plot->getOptions()->setTitle("direction");
	dir_plot->getOptions()->size = 10.0;		
	dir_plot->getOptions()->type = PaintSignalType::SIGNAL;
	frame->AddConsumer(dir_p, dir_plot, "0.2s");

	EventMonitor *monitor = ssi_create_id (EventMonitor, 0, "monitor");
	board->RegisterListener(*monitor, dir->getEventAddress());

#ifdef SIMULATE
	AudioPlayer *player = ssi_create (AudioPlayer, "player", true);
	player->getOptions()->bufferSize = 0.2;
	player->getOptions()->remember = true;
	frame->AddConsumer(audio_p, player, "0.01s");
#endif

	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	board->Start();
	frame->Start();
	frame->Wait();
	frame->Stop();
	board->Stop();
	frame->Clear();
	board->Clear();
}
Beispiel #30
0
bool ex_writer(void *arg) {

	ITheFramework *frame = Factory::GetFramework();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	Mouse *mouse = ssi_create (Mouse, 0, true);
	ITransformable *cursor_p = frame->AddProvider(mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	frame->AddSensor(mouse);

	File::SetLogLevel(SSI_LOG_LEVEL_DEBUG);

	bool continuous = true;

	MemoryWriter *memory;

	memory = ssi_create(MemoryWriter, 0, true);
	memory->getOptions()->setSize("10.0s");
	frame->AddConsumer(cursor_p, memory, "0.5s");

	FileWriter *writer;

	writer = ssi_create(FileWriter, 0, true);
	writer->getOptions()->setPath("");
	writer->getOptions()->setDelim(" ; ");
	writer->getOptions()->type = File::ASCII;
	writer->getOptions()->stream = continuous;
	frame->AddConsumer(cursor_p, writer, "0.5s");

	writer = ssi_create (FileWriter, 0, true);
	writer->getOptions()->setPath("cursor_txt");
	writer->getOptions()->type = File::ASCII;
	writer->getOptions()->setDelim(";");
	writer->getOptions()->stream = continuous;
	writer->getOptions()->setMeta("some=meta;hello=world");
	frame->AddConsumer(cursor_p, writer, "0.5s");

	writer = ssi_create (FileWriter, 0, true);
	writer->getOptions()->setPath("cursor_bin");
	writer->getOptions()->type = File::BINARY;
	writer->getOptions()->stream = continuous;
	frame->AddConsumer(cursor_p, writer, "0.5s");

	writer = ssi_create (FileWriter, 0, true);
	writer->getOptions()->setPath("cursor_lz4");
	writer->getOptions()->type = File::BIN_LZ4;
	writer->getOptions()->stream = continuous;
	frame->AddConsumer(cursor_p, writer, "0.5s");

	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	frame->Start();
	frame->Wait();
	frame->Stop();
	frame->Clear();

	ssi_stream_print(memory->getStream(), stdout);

	return true;
}