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; }
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; }
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(); }
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; }
bool ex_plp(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); OSPlpChain *plp = ssi_create(OSPlpChain, "OSPlpChain", true); ITransformable *plp_t = frame->AddTransformer(audio_p, plp, "0.06s", "0.01s"); 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("lpc"); plot->getOptions()->size = 10.0; frame->AddConsumer(plp_t, plot, "1"); FileWriter *writer = ssi_create(FileWriter, 0, true); writer->getOptions()->setPath("plp_chain"); writer->getOptions()->type = File::ASCII; frame->AddConsumer(plp_t, writer, "1"); #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; }
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(); }
bool ex_clone(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); PythonTransformer *clone = 0; clone = ssi_create(PythonTransformer, 0, true); clone->getOptions()->setScript("ssi_clone"); ITransformable *button_clone_t = frame->AddTransformer(button_t, clone, "0.1s"); clone = ssi_create(PythonTransformer, 0, true); clone->getOptions()->setScript("ssi_clone"); ITransformable *cursor_clone_t = frame->AddTransformer(cursor_t, clone, "0.1s"); SignalPainter *plot = 0; plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("BUTTON (RAW)"); plot->getOptions()->size = 5; frame->AddConsumer(button_t, plot, "0.1s"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("CURSOR (RAW)"); plot->getOptions()->size = 5; frame->AddConsumer(cursor_t, plot, "0.1s"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("BUTTON (CLONE)"); plot->getOptions()->size = 5; frame->AddConsumer(button_clone_t, plot, "0.1s"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("CURSOR (CLONE)"); plot->getOptions()->size = 5; frame->AddConsumer(cursor_clone_t, plot, "0.1s"); 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; }
bool ex_gsr_arousal(void *args) { ITheEventBoard *board = Factory::GetEventBoard(); ITheFramework *frame = Factory::GetFramework(); Decorator *decorator = ssi_create(Decorator, 0, true); frame->AddDecorator(decorator); FileReader *reader = ssi_create(FileReader, 0, true); reader->getOptions()->setPath("data\\gsr"); reader->getOptions()->block = 0.2; ITransformable *gsr_p = frame->AddProvider(reader, SSI_FILEREADER_PROVIDER_NAME); frame->AddSensor(reader); GSRArousalEstimation *arousal = ssi_create(GSRArousalEstimation, 0, true); ITransformable *arousal_p = frame->AddTransformer(gsr_p, arousal, "1"); ThresClassEventSender *classifier = ssi_create(ThresClassEventSender, 0, true); classifier->getOptions()->setClasses("low,med,high"); classifier->getOptions()->setThresholds("0.01,0.3,0.7"); frame->AddConsumer(arousal_p, classifier, "1"); board->RegisterSender(*classifier); EventMonitor *monitor = ssi_create_id(EventMonitor, 0, "monitor"); board->RegisterListener(*monitor, "@"); SignalPainter *plot = 0; plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("gsr"); plot->getOptions()->size = 150.0; frame->AddConsumer(gsr_p, plot, "0.2s"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("arousal"); plot->getOptions()->size = 150.0; frame->AddConsumer(arousal_p, plot, "0.2s"); 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; }
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; }
bool ex_imgplot(void *args) { ITheFramework *frame = Factory::GetFramework(); Decorator *decorator = ssi_create(Decorator, 0, true); frame->AddDecorator(decorator); FakeSignal *video = 0; video = ssi_create(FakeSignal, 0, true); video->getOptions()->type = FakeSignal::SIGNAL::IMAGE_RANDOM_RGB; ITransformable *rgb_t = frame->AddProvider(video, "video"); frame->AddSensor(video); video = ssi_create(FakeSignal, 0, true); video->getOptions()->type = FakeSignal::SIGNAL::IMAGE_RANDOM_GRAY; ITransformable *gray_t = frame->AddProvider(video, "video"); frame->AddSensor(video); PythonImageConsumer *imgplot = 0; imgplot = ssi_create(PythonImageConsumer, 0, true); imgplot->getOptions()->setScript("ssi_imgplot"); imgplot->getOptions()->add("name", "RGB"); imgplot->getOptions()->add("x", 650); imgplot->getOptions()->add("y", 0); imgplot->getOptions()->add("width", 200); imgplot->getOptions()->add("height", 200); frame->AddConsumer(rgb_t, imgplot, "1"); imgplot = ssi_create(PythonImageConsumer, 0, true); imgplot->getOptions()->setScript("ssi_imgplot"); imgplot->getOptions()->add("name", "GRAY"); imgplot->getOptions()->add("x", 650); imgplot->getOptions()->add("y", 220); imgplot->getOptions()->add("width", 200); imgplot->getOptions()->add("height", 200); frame->AddConsumer(gray_t, imgplot, "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; }
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; }
bool ex_sensor(void *args) { ITheFramework *frame = Factory::GetFramework(); Decorator *decorator = ssi_create(Decorator, 0, true); frame->AddDecorator(decorator); PythonSensor *py_sensor = ssi_create(PythonSensor, 0, true); py_sensor->getOptions()->setScript("ssi_sensor"); py_sensor->getOptions()->block = 0.5; py_sensor->getOptions()->add("sr", "1000"); py_sensor->getOptions()->add("dim", "2"); ITransformable *sine_t = frame->AddProvider(py_sensor, "sine"); ITransformable *saw_t = frame->AddProvider(py_sensor, "saw"); frame->AddSensor(py_sensor); SignalPainter *plot = 0; plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("SINE"); plot->getOptions()->size = 5; frame->AddConsumer(sine_t, plot, "0.5s"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("SAW"); plot->getOptions()->size = 5; frame->AddConsumer(saw_t, plot, "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(); return true; }
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; }
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; }
bool ex_pearson(void *args) { ITheFramework *frame = Factory::GetFramework(); Decorator *decorator = ssi_create (Decorator, 0, true); frame->AddDecorator(decorator); Mouse *mouse = ssi_create(Mouse, 0, true); ITransformable *cursor_t = frame->AddProvider(mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME); frame->AddSensor(mouse); PythonFeature *ppmcc = ssi_create(PythonFeature, 0, true); ppmcc->getOptions()->setScript("ssi_ppmcc"); ITransformable *ppmcc_t = frame->AddTransformer(cursor_t, ppmcc, "0.1s"); SignalPainter *plot = 0; plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("CURSOR"); plot->getOptions()->size = 5; frame->AddConsumer(cursor_t, plot, "0.1s"); plot = ssi_create_id (SignalPainter, 0, "plot"); plot->getOptions()->setTitle("PPMCC"); plot->getOptions()->size = 5; frame->AddConsumer(ppmcc_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; }
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; }
bool ex_imggray(void *args) { ITheFramework *frame = Factory::GetFramework(); Decorator *decorator = ssi_create(Decorator, 0, true); frame->AddDecorator(decorator); FakeSignal *video = ssi_create(FakeSignal, 0, true); video->getOptions()->type = FakeSignal::SIGNAL::IMAGE_RANDOM_RGB; ITransformable *rgb_t = frame->AddProvider(video, "video"); frame->AddSensor(video); PythonImageFilter *imggray = ssi_create(PythonImageFilter, 0, true); imggray->getOptions()->setScript("ssi_imggray"); ITransformable *gray_t = frame->AddTransformer(rgb_t, imggray, "1"); VideoPainter *vidplot = 0; vidplot = ssi_create_id(VideoPainter, 0, "plot"); vidplot->getOptions()->setTitle("RGB"); frame->AddConsumer(rgb_t, vidplot, "1"); vidplot = ssi_create_id(VideoPainter, 0, "plot"); vidplot->getOptions()->setTitle("GRAY"); frame->AddConsumer(gray_t, vidplot, "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; }
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; }
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(); }
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; }
bool ex_gsr_response_amplitude_events(void *args) { ITheEventBoard *board = Factory::GetEventBoard(); ITheFramework *frame = Factory::GetFramework(); Decorator *decorator = ssi_create(Decorator, 0, true); frame->AddDecorator(decorator); FileReader *reader = ssi_create(FileReader, 0, true); reader->getOptions()->setPath("data\\gsr"); reader->getOptions()->block = 0.2; reader->getOptions()->loop = false; ITransformable *gsr_p = frame->AddProvider(reader, SSI_FILEREADER_PROVIDER_NAME); frame->AddSensor(reader); SignalPainter *plot = 0; plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("gsr(lowpassed)"); plot->getOptions()->size = 150.0; frame->AddConsumer(gsr_p, plot, "1"); GSRResponseEventSender *gsr_event = ssi_create(GSRResponseEventSender, 0, true); gsr_event->getOptions()->tuple = true; gsr_event->getOptions()->minRisingTime = 0; gsr_event->getOptions()->minAllowedRegression = 0.1f; gsr_event->getOptions()->minAmplitude = 0.5f; gsr_event->getOptions()->print = false; gsr_event->setLogLevel(SSI_LOG_LEVEL_DEBUG); frame->AddConsumer(gsr_p, gsr_event, "0.2s"); board->RegisterSender(*gsr_event); GSREventListener *event_listener = ssi_create(GSREventListener, 0, true); event_listener->getOptions()->statisticalFn = GSR_SUM; event_listener->getOptions()->window = SSI_GSR_EVENTLISTENER_NO_WINDOW; ITransformable *nr_of_responses = frame->AddProvider(event_listener, SSI_GSR_EVENTLISTENER_NUMBER_OF_RESPONSES_PROVIDER_NAME); ITransformable *amp = frame->AddProvider(event_listener, SSI_GSR_EVENTLISTENER_AMPLITUDE_PROVIDER_NAME); ITransformable *power = frame->AddProvider(event_listener, SSI_GSR_EVENTLISTENER_POWER_PROVIDER_NAME); frame->AddSensor(event_listener); board->RegisterListener(*event_listener, gsr_event->getEventAddress()); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("nr_of_responses"); plot->getOptions()->size = 150.0; frame->AddConsumer(nr_of_responses, plot, "1"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("amp"); plot->getOptions()->size = 150.0; frame->AddConsumer(amp, plot, "1"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("power"); plot->getOptions()->size = 150.0; frame->AddConsumer(power, plot, "1"); EventMonitor *monitor = ssi_create_id(EventMonitor, 0, "monitor"); board->RegisterListener(*monitor, gsr_event->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; }
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; }
bool ex_gsr_baseline_mean(void *args) { ITheFramework *frame = Factory::GetFramework(); Decorator *decorator = ssi_create(Decorator, 0, true); frame->AddDecorator(decorator); ITheEventBoard *board = Factory::GetEventBoard(); //raw FileReader *reader = ssi_create(FileReader, 0, true); reader->getOptions()->setPath("data/gsr"); reader->getOptions()->block = 0.2; ITransformable *gsr_p = frame->AddProvider(reader, SSI_FILEREADER_PROVIDER_NAME); frame->AddSensor(reader); //lowpass Butfilt *lowpass = ssi_create(Butfilt, 0, true); lowpass->getOptions()->low = 0.01; lowpass->getOptions()->order = 3; lowpass->getOptions()->type = Butfilt::LOW; lowpass->getOptions()->zero = true; ITransformable *gsr_low_t = frame->AddTransformer(gsr_p, lowpass, "0.25s"); //detrend GSRRemoveBaseline *detrend = ssi_create(GSRRemoveBaseline, 0, true); ITransformable *gsr_detrend_t = frame->AddTransformer(gsr_low_t, detrend, "0.25s"); //norm MvgNorm *norm = ssi_create(MvgNorm, 0, true); norm->getOptions()->norm = MvgNorm::SUBMIN; norm->getOptions()->method = MvgNorm::SLIDING; norm->getOptions()->win = 15.0; ITransformable *gsr_detrend_norm_t = frame->AddTransformer(gsr_detrend_t, norm, "0.25s"); GSRBaselineMean *mean = ssi_create(GSRBaselineMean, 0, true); mean->getOptions()->winsize = 15.0; frame->AddConsumer(gsr_detrend_norm_t, mean, "0.25s"); board->RegisterSender(*mean); //visual SignalPainter *plot = 0; ssi_real_t p_size = 100.0f; plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("gsr(lowpassed)"); plot->getOptions()->size = p_size; frame->AddConsumer(gsr_low_t, plot, "0.3s"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("gsr(detrended)"); plot->getOptions()->size = p_size; frame->AddConsumer(gsr_detrend_t, plot, "0.3s"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("gsr(detrended & normed)"); plot->getOptions()->size = p_size; frame->AddConsumer(gsr_detrend_norm_t, plot, "0.3s"); //events EventMonitor *monitor = ssi_create_id(EventMonitor, 0, "monitor"); board->RegisterListener(*monitor, mean->getEventAddress()); //framework 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; }
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; }
bool ex_bvp_beat_events_raw(void *args) { ITheEventBoard *board = Factory::GetEventBoard(); ITheFramework *frame = Factory::GetFramework(); Decorator *decorator = ssi_create(Decorator, 0, true); frame->AddDecorator(decorator); FileReader *reader = ssi_create(FileReader, 0, true); reader->getOptions()->setPath("data\\bvp"); reader->getOptions()->block = 0.2; reader->getOptions()->loop = false; ITransformable *bvp_p = frame->AddProvider(reader, SSI_FILEREADER_PROVIDER_NAME); frame->AddSensor(reader); SignalPainter *plot = 0; plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("bvp"); plot->getOptions()->size = 10.0; frame->AddConsumer(bvp_p, plot, "1"); BVPBeatEventSender *bvp_event = ssi_create(BVPBeatEventSender, 0, true); bvp_event->getOptions()->beep = true; bvp_event->getOptions()->mean_window = 1; bvp_event->getOptions()->tuple = true; bvp_event->setLogLevel(SSI_LOG_LEVEL_DEBUG); frame->AddConsumer(bvp_p, bvp_event, "0.2s"); board->RegisterSender(*bvp_event); BVPBeatEventRawListener *event_listener = ssi_create(BVPBeatEventRawListener, 0, true); event_listener->getOptions()->sr = 9; ITransformable *heartRate = frame->AddProvider(event_listener, SSI_BVP_EVENTLISTENER_CHANNEL_HEART_RATE_PROVIDER_NAME); ITransformable *amp = frame->AddProvider(event_listener, SSI_BVP_EVENTLISTENER_CHANNEL_AMPLITUDE_PROVIDER_NAME); ITransformable *interBeat = frame->AddProvider(event_listener, SSI_BVP_EVENTLISTENER_CHANNEL_INTERBEAT_INTERVAL_PROVIDER_NAME); frame->AddSensor(event_listener); board->RegisterListener(*event_listener, bvp_event->getEventAddress()); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("heartRate"); plot->getOptions()->size = 150.0; frame->AddConsumer(heartRate, plot, "1"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("amp"); plot->getOptions()->size = 150.0; frame->AddConsumer(amp, plot, "1"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("interBeat"); plot->getOptions()->size = 150.0; frame->AddConsumer(interBeat, plot, "1"); EventMonitor *monitor = ssi_create_id(EventMonitor, 0, "monitor"); board->RegisterListener(*monitor, bvp_event->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; }
bool ex_gsr_peaks_online(void *args) { ITheEventBoard *board = Factory::GetEventBoard(); ITheFramework *frame = Factory::GetFramework(); Decorator *decorator = ssi_create(Decorator, 0, true); frame->AddDecorator(decorator); FileReader *reader = ssi_create(FileReader, 0, true); reader->getOptions()->setPath("data\\gsr"); reader->getOptions()->block = 0.2; ITransformable *gsr_p = frame->AddProvider(reader, SSI_FILEREADER_PROVIDER_NAME); frame->AddSensor(reader); Butfilt *lowpass = ssi_create(Butfilt, 0, true); lowpass->getOptions()->low = 0.01; lowpass->getOptions()->order = 3; lowpass->getOptions()->type = Butfilt::LOW; lowpass->getOptions()->zero = true; ITransformable *gsr_low = frame->AddTransformer(gsr_p, lowpass, "0.2s"); GSREventSender *gsr_event = ssi_create(GSREventSender, 0, true); gsr_event->getOptions()->tuple = true; gsr_event->setLogLevel(SSI_LOG_LEVEL_DEBUG); frame->AddConsumer(gsr_low, gsr_event, "4.0s"); board->RegisterSender(*gsr_event); EventMonitor *monitor = ssi_create_id(EventMonitor, 0, "monitor"); board->RegisterListener(*monitor, gsr_event->getEventAddress()); SignalPainter *plot = 0; plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("gsr"); plot->getOptions()->size = 150.0; frame->AddConsumer(gsr_p, plot, "0.2s"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("gsr(lowpassed)"); plot->getOptions()->size = 150.0; frame->AddConsumer(gsr_low, plot, "0.2s"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("peak"); plot->getOptions()->reset = true; frame->AddEventConsumer(gsr_low, plot, board, "peak@"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("slope"); plot->getOptions()->reset = true; frame->AddEventConsumer(gsr_low, plot, board, "slope@"); plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("drop"); plot->getOptions()->reset = true; frame->AddEventConsumer(gsr_low, plot, board, "drop@"); 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; }
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(); }
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; }
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(); }
bool ex_qrs_hrv_event(void *args) { ITheFramework *frame = Factory::GetFramework(); Decorator *decorator = ssi_create(Decorator, 0, true); frame->AddDecorator(decorator); ITheEventBoard *board = Factory::GetEventBoard(); //raw FileReader *reader = ssi_create(FileReader, 0, true); reader->getOptions()->setPath("data/ecg"); reader->getOptions()->block = 0.2; ITransformable *ecg_p = frame->AddProvider(reader, SSI_FILEREADER_PROVIDER_NAME); frame->AddSensor(reader); //bandpass Butfilt *ecg_band = ssi_create(Butfilt, 0, true); ecg_band->getOptions()->type = Butfilt::BAND; ecg_band->getOptions()->norm = false; ecg_band->getOptions()->high = 15; ecg_band->getOptions()->low = 5; ecg_band->getOptions()->order = 13; ITransformable *ecg_band_t = frame->AddTransformer(ecg_p, ecg_band, "0.75s"); //diff Derivative *ecg_diff = ssi_create(Derivative, 0, true); ssi_strcpy(ecg_diff->getOptions()->names, "1st"); ITransformable *ecg_diff_t = frame->AddTransformer(ecg_band_t, ecg_diff, "0.75s"); //qrs-pre-process QRSPreProcess *ecg_QRSpre = ssi_create(QRSPreProcess, 0, true); ITransformable *ecg_QRSpre_t = frame->AddTransformer(ecg_diff_t, ecg_QRSpre, "0.75s"); Butfilt *lowpass = ssi_create(Butfilt, 0, true); lowpass->getOptions()->zero = true; lowpass->getOptions()->norm = false; lowpass->getOptions()->low = 6.4; lowpass->getOptions()->order = 3; lowpass->getOptions()->type = Butfilt::LOW; ITransformable *ecg_QRSpre_low_t = frame->AddTransformer(ecg_QRSpre_t, lowpass, "0.75s"); //qrs-detect QRSDetect *ecg_qrs = ssi_create(QRSDetect, 0, true); ecg_qrs->getOptions()->sendEvent = true; ITransformable *ecg_qrs_t = frame->AddTransformer(ecg_QRSpre_low_t, ecg_qrs, "0.75s"); board->RegisterSender(*ecg_qrs); //visual SignalPainter *plot = 0; ssi_real_t p_size = 10.0f; //raw plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("raw"); plot->getOptions()->size = p_size; frame->AddConsumer(ecg_p, plot, "0.2s"); //bandpass plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("bandpass"); plot->getOptions()->size = p_size; frame->AddConsumer(ecg_band_t, plot, "0.2s"); //diff plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("diff"); plot->getOptions()->size = p_size; frame->AddConsumer(ecg_diff_t, plot, "0.2s"); //qrs-pre plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("qrs-pre"); plot->getOptions()->size = p_size; frame->AddConsumer(ecg_QRSpre_low_t, plot, "0.2s"); //qrs plot = ssi_create_id(SignalPainter, 0, "plot"); plot->getOptions()->setTitle("qrs"); plot->getOptions()->size = p_size; frame->AddConsumer(ecg_qrs_t, plot, "0.2s"); //events QRSHrvEventListener *hrv = ssi_create(QRSHrvEventListener, 0, true); hrv->getOptions()->span = 120000; hrv->getOptions()->update_ms = 5000; board->RegisterListener(*hrv, ecg_qrs->getEventAddress(), 10000); board->RegisterSender(*hrv); EventMonitor *monitor = ssi_create_id(EventMonitor, 0, "monitor"); board->RegisterListener(*monitor, hrv->getEventAddress(), 10000); //framework 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; }