diff --git a/tool/recoWord/appl/Windows.cpp b/tool/recoWord/appl/Windows.cpp deleted file mode 100644 index 5daa7cf..0000000 --- a/tool/recoWord/appl/Windows.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/** @file - * @author Edouard DUPIN - * @copyright 2019, Edouard DUPIN, all right reserved - * @license MPL v2.0 (see license file) - */ - -#include -#include -#include -#include -#include -#include -#include - -appl::Windows::Windows() : - m_composer(null) { - addObjectType("appl::Windows"); - propertyTitle.setDirectCheck("River IO viewer"); -} - -void appl::Windows::init() { - ewol::widget::Windows::init(); - APPL_ERROR("Load Application"); - etk::String composition = etk::String(""); - composition += "\n"; - composition += " \n"; - composition += " \n"; - composition += " \n"; - composition += " \n"; - composition += " \n"; - composition += "\n"; - - m_composer = ewol::widget::Composer::create(); - if (m_composer == null) { - APPL_CRITICAL(" An error occured ... in the windows creatrion ..."); - return; - } - APPL_ERROR("Composer LOAD [BEGIN]"); - m_composer->loadFromString(composition); - setSubWidget(m_composer); - APPL_ERROR("Composer LOAD [ END ]"); - subBind(ewol::widget::Button, "bt-record", signalPressed, sharedFromThis(), &appl::Windows::onCallbackRecord); - subBind(ewol::widget::Button, "bt-reset", signalPressed, sharedFromThis(), &appl::Windows::onCallbackGenerate); -} - -void appl::Windows::onCallbackRecord() { - APPL_INFO("Start/stop Record of data"); - ememory::SharedPtr tmpDisp = ememory::dynamicPointerCast(getSubObjectNamed("displayer")); - if (tmpDisp != null) { - tmpDisp->recordToggle(); - } -} - -void appl::Windows::onCallbackGenerate() { - ememory::SharedPtr tmpDisp = ememory::dynamicPointerCast(getSubObjectNamed("displayer")); - if (tmpDisp != null) { - tmpDisp->recordToggle(); - tmpDisp->reset(); - tmpDisp->recordToggle(); - } -} - diff --git a/tool/recoWord/appl/Windows.hpp b/tool/recoWord/appl/Windows.hpp deleted file mode 100644 index e62d1c0..0000000 --- a/tool/recoWord/appl/Windows.hpp +++ /dev/null @@ -1,25 +0,0 @@ -/** @file - * @author Edouard DUPIN - * @copyright 2019, Edouard DUPIN, all right reserved - * @license MPL v2.0 (see license file) - */ -#pragma once - -#include -#include - -namespace appl { - class Windows : public ewol::widget::Windows { - private: - ememory::SharedPtr m_composer; - protected: - Windows(); - void init() override; - public: - DECLARE_FACTORY(Windows); - public: // callback functions - void onCallbackRecord(); - void onCallbackGenerate(); - }; -} - diff --git a/tool/recoWord/appl/debug.cpp b/tool/recoWord/appl/debug.cpp deleted file mode 100644 index 93b4d60..0000000 --- a/tool/recoWord/appl/debug.cpp +++ /dev/null @@ -1,13 +0,0 @@ -/** @file - * @author Edouard DUPIN - * @copyright 2019, Edouard DUPIN, all right reserved - * @license MPL v2.0 (see license file) - */ - -#include - - -int32_t appl::getLogId() { - static int32_t g_val = elog::registerInstance("RecoWord"); - return g_val; -} diff --git a/tool/recoWord/appl/debug.hpp b/tool/recoWord/appl/debug.hpp deleted file mode 100644 index 8b24de3..0000000 --- a/tool/recoWord/appl/debug.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/** @file - * @author Edouard DUPIN - * @copyright 2019, Edouard DUPIN, all right reserved - * @license MPL v2.0 (see license file) - */ -#pragma once - -#include - -namespace appl { - int32_t getLogId(); -} - -#define APPL_BASE(info,data) ELOG_BASE(appl::getLogId(),info,data) - -#define APPL_PRINT(data) APPL_BASE(-1, data) -#define APPL_CRITICAL(data) APPL_BASE(1, data) -#define APPL_ERROR(data) APPL_BASE(2, data) -#define APPL_WARNING(data) APPL_BASE(3, data) -#ifdef DEBUG - #define APPL_INFO(data) APPL_BASE(4, data) - #define APPL_DEBUG(data) APPL_BASE(5, data) - #define APPL_VERBOSE(data) APPL_BASE(6, data) - #define APPL_TODO(data) APPL_BASE(4, "TODO : " << data) -#else - #define APPL_INFO(data) do { } while(false) - #define APPL_DEBUG(data) do { } while(false) - #define APPL_VERBOSE(data) do { } while(false) - #define APPL_TODO(data) do { } while(false) -#endif - -#define APPL_ASSERT(cond,data) \ - do { \ - if (!(cond)) { \ - APPL_CRITICAL(data); \ - assert(!#cond); \ - } \ - } while (0) - diff --git a/tool/recoWord/appl/main.cpp b/tool/recoWord/appl/main.cpp deleted file mode 100644 index 54522bb..0000000 --- a/tool/recoWord/appl/main.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/** @file - * @author Edouard DUPIN - * @copyright 2019, Edouard DUPIN, all right reserved - * @license MPL v2.0 (see license file) - */ - - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -static const etk::String configurationRiver = - "{\n" - " microphone:{\n" - " io:'input',\n" - " map-on:{\n" - " interface:'auto',\n" - " name:'default',\n" - " },\n" - " frequency:0,\n" - " channel-map:['front-left', 'front-right'],\n" - " type:'auto',\n" - " nb-chunk:1024\n" - " }\n" - "}\n"; - - -class MainApplication : public ewol::context::Application { - public: - virtual void onCreate(ewol::Context& _context) override { - APPL_INFO(" == > CREATE ... (START) [" << gale::getBoardType() << "] (" << gale::getCompilationMode() << ") (BEGIN)"); - for( int32_t iii=0 ; iii<_context.getCmd().size(); iii++) { - etk::String tmpppp = _context.getCmd().get(iii); - if ( tmpppp == "-h" - || tmpppp == "--help") { - //APPL_PRINT(" --ctags=xxx c-flags-file-name" ); - exit(0); - } - } - etk::theme::setName("COLOR", "color/white/"); - - _context.setSize(vec2(800, 600)); - - _context.setTitle("edn"); - - // select internal data for font ... - _context.getFontDefault().setUseExternal(true); - #ifdef __TARGET_OS__Android - _context.getFontDefault().set("FreeSerif", 19); - #else - _context.getFontDefault().set("FreeSerif;DejaVuSansMono",14); - #endif - - // set the application icon ... - //_context.setIcon("DATA:///icon.png"); - APPL_INFO("==> CREATE ... (END)"); - } - - void onStart(ewol::Context& _context) override { - APPL_INFO("==> START ... (BEGIN)"); - // init internal global value - audio::river::initString(configurationRiver); - - _context.setSize(vec2(800, 600)); - - // select internal data for font ... - _context.getFontDefault().setUseExternal(true); - _context.getFontDefault().setSize(19); - - appl::widget::DataViewer::createManagerWidget(_context.getWidgetManager()); - - ememory::SharedPtr basicWindows = appl::Windows::create(); - if (basicWindows == null) { - APPL_ERROR("Can not allocate the basic windows"); - _context.exit(-1); - return; - } - // create the specific windows - _context.setWindows(basicWindows); - - // add files - APPL_INFO("show list of files : "); - /* - for( int32_t iii=0 ; iii<_context.getCmd().size(); iii++) { - etk::String tmpppp = _context.getCmd().get(iii); - if (tmpppp.startWith("--ctags=") == true) { - etk::String name = tmpppp.extract(8); - APPL_INFO("Load ctag file : \"" << name << "\"" ); - appl::setCtagsFileName(name); - } else if ( tmpppp == "-h" - || tmpppp == "--help") { - // nothing to do ... - } else { - etk::Path file(tmpppp); - if (etk::path::isFile(file) == true) { - APPL_INFO("need load file : \"" << file << "\"" ); - m_bufferManager->open(file); - } else if (etk::path::isDirectory(file) == true) { - etk::Vector listOfFiles = etk::path::list(file, etk::path::LIST_FILE); - for (auto &it: listOfFiles) { - if (etk::path::isFile(it) == true) { - APPL_INFO("need load file : \"" << it << "\"" ); - m_bufferManager->open(it); - } - } - } - } - } - */ - APPL_INFO("==> START ... (END)"); - return; - } - void onStop(ewol::Context& _context) override { - APPL_INFO("==> STOP ... (START)"); - APPL_INFO("==> STOP ... (END)"); - } - void onKillDemand(ewol::Context& _context) override { - APPL_INFO("==> User demand kill ... (START)"); - _context.exit(0); - APPL_INFO("==> User demand kill ... (END)"); - } -}; - -/** - * @brief Main of the program (This can be set in every case, but it is not used in Andoid...). - * @param std IO - * @return std IO - */ -int main(int _argc, const char *_argv[]) { - // second possibility - return ewol::run(ETK_NEW(MainApplication), _argc, _argv); -} \ No newline at end of file diff --git a/tool/recoWord/appl/widget/DataViewer.cpp b/tool/recoWord/appl/widget/DataViewer.cpp deleted file mode 100644 index a619253..0000000 --- a/tool/recoWord/appl/widget/DataViewer.cpp +++ /dev/null @@ -1,265 +0,0 @@ -/** @file - * @author Edouard DUPIN - * @copyright 2011, Edouard DUPIN, all right reserved - * @license MPL v2.0 (see license file) - */ - -#include -#include -#include -#include - -static const int32_t nbSecondOffset = 3; -static const int32_t nbSecondSilence = 1; -static const int32_t nbSecond = 10; -static const int32_t nbSecondPreviousPost = 1; -static const float startThresholdLevel = 0.2; -static const float stopThresholdLevel = 0.1; - - - -appl::widget::DataViewer::DataViewer() : - m_minVal(-1.0f), - m_maxVal(1.0f), - m_sampleRate(48000) { - addObjectType("appl::widget::DataViewer"); -} - -void appl::widget::DataViewer::init() { - ewol::Widget::init(); - m_manager = audio::river::Manager::create("appl::widget::DataViewer"); - m_data.resize(m_sampleRate*nbSecond*3, 0.0); - m_data.clear(); -} - - -appl::widget::DataViewer::~DataViewer() { - -} - - - -void appl::widget::DataViewer::onDataReceived(const void* _data, - const audio::Time& _time, - size_t _nbChunk, - enum audio::format _format, - uint32_t _frequency, - const etk::Vector& _map) { - ethread::UniqueLock lock(m_mutex); - if (_format != audio::format_float) { - APPL_ERROR("call wrong type ... (need int16_t)"); - } - // get the curent power of the signal. - const float* data = static_cast(_data); - for (size_t iii=0; iii<_nbChunk*_map.size(); ++iii) { - m_data.pushBack(data[iii]); - if (m_startAnalyse == false) { - if (data[iii] > startThresholdLevel) { - m_startAnalyse = true; - m_silenceCount = 0; - m_detectStartPosition = m_data.size(); - m_detectStopPosition = m_data.size() + 1; - } - } else { - if (data[iii] > stopThresholdLevel) { - m_silenceCount = 0; - m_detectStopPosition = m_data.size(); - m_detectMax = etk::max(m_detectMax, etk::abs(data[iii])); - } else { - m_silenceCount++; - } - } - } - /* - if (m_data.size()>m_sampleRate*nbSecond*10) { - m_data.erase(m_data.begin(), m_data.begin()+(m_data.size()-m_sampleRate*nbSecond)); - } - */ - //markToRedraw(); -} - -void appl::widget::DataViewer::recordToggle() { - ethread::UniqueLock lock(m_mutex); - if (m_interface == null) { - //Get the generic input: - etk::Vector channel; - channel.pushBack(audio::channel_frontLeft); - m_interface = m_manager->createInput(m_sampleRate, - channel, - audio::format_float, - "microphone"); - if(m_interface == null) { - APPL_ERROR("null interface"); - return; - } - // set callback mode ... - m_interface->setInputCallback([&](const void* _data, - const audio::Time& _time, - size_t _nbChunk, - enum audio::format _format, - uint32_t _frequency, - const etk::Vector& _map) { - onDataReceived(_data, _time, _nbChunk, _format, _frequency, _map); - }); - // start the stream - m_interface->start(); - m_PCH = getObjectManager().periodicCall.connect(this, &appl::widget::DataViewer::periodicCall); - } else { - m_interface->stop(); - m_interface.reset(); - m_PCH.disconnect(); - } -} - -void appl::widget::DataViewer::onDraw() { - m_draw.draw(); -} - - -void appl::widget::DataViewer::onRegenerateDisplay() { - //!< Check if we really need to redraw the display, if not needed, we redraw the previous data ... - if (needRedraw() == false) { - return; - } - // remove previous data - m_draw.clear(); - // set background - m_draw.setColor(etk::color::black); - m_draw.setPos(vec2(0,0)); - m_draw.rectangleWidth(m_size); - ethread::UniqueLock lock(m_mutex); - if (m_data.size() == 0) { - return; - } - // create n section for display: - int32_t nbSlot = m_size.x(); - int32_t sizeSlot = m_size.x()/nbSlot; - etk::Vector list; - //APPL_INFO("nbSlot : " << nbSlot << " sizeSlot=" << sizeSlot << " m_size=" << m_size); - list.resize(nbSlot,0.0f); - int32_t step = m_sampleRate*nbSecond/nbSlot; - for (size_t kkk=0; kkk m_size.x()) { - APPL_ERROR("wrong display position"); - } - } - // detect sound - if (m_detectStopPosition > m_detectStartPosition) { - m_draw.setColor(etk::color::orange); - m_draw.setThickness(1); - float posStart = double(m_detectStartPosition-m_startDisplayOffset)/double(step)*sizeSlot; - float posStop = double(m_detectStopPosition-m_startDisplayOffset)/double(step)*sizeSlot; - m_draw.setPos(vec2(posStart, origin - ratioY*m_detectMax)); - //m_draw.rectangle(vec2(posStop, origin + ratioY*m_detectMax)); - //APPL_ERROR("draw position: " << posStart << " " << posStop); - - m_draw.lineTo(vec2(posStart, origin + ratioY*m_detectMax)); - m_draw.lineTo(vec2(posStop, origin + ratioY*m_detectMax)); - m_draw.lineTo(vec2(posStop, origin - ratioY*m_detectMax)); - m_draw.lineTo(vec2(posStart, origin - ratioY*m_detectMax)); - } - // sound recorded - if (m_detectStopPosition > m_detectStartPosition) { - m_draw.setColor(etk::color::blue); - m_draw.setThickness(1); - float posStart = double(m_detectStartPosition-m_startDisplayOffset-nbSecondPreviousPost*m_sampleRate)/double(step)*sizeSlot; - float posStop = double(m_detectStopPosition-m_startDisplayOffset+nbSecondPreviousPost*m_sampleRate)/double(step)*sizeSlot; - m_draw.setPos(vec2(posStart, origin - ratioY*0.5)); - m_draw.lineTo(vec2(posStart, origin + ratioY*0.5)); - m_draw.lineTo(vec2(posStop, origin + ratioY*0.5)); - m_draw.lineTo(vec2(posStop, origin - ratioY*0.5)); - m_draw.lineTo(vec2(posStart, origin - ratioY*0.5)); - } - // End of silence detection - if (m_detectStopPosition > m_detectStartPosition) { - m_draw.setColor(etk::color::red); - m_draw.setThickness(1); - float pos = double(m_detectStopPosition-m_startDisplayOffset+nbSecondSilence*m_sampleRate)/double(step)*sizeSlot; - m_draw.setPos(vec2(pos, origin - ratioY*0.5)); - m_draw.lineTo(vec2(pos, origin + ratioY*0.5)); - } - if (m_detectStopPosition <= m_detectStartPosition) { - m_draw.setColor(etk::color::red); - m_draw.setThickness(1); - // start threshold - m_draw.setPos(vec2(0, origin - ratioY*startThresholdLevel)); - m_draw.lineTo(vec2(m_size.x(), origin - ratioY*startThresholdLevel)); - m_draw.setPos(vec2(0, origin + ratioY*startThresholdLevel)); - m_draw.lineTo(vec2(m_size.x(), origin + ratioY*startThresholdLevel)); - } else { - m_draw.setColor(etk::color::red); - m_draw.setThickness(1); - float posStop = double(m_detectStopPosition-m_startDisplayOffset)/double(step)*sizeSlot; - // start threshold - m_draw.setPos(vec2(0, origin - ratioY*startThresholdLevel)); - m_draw.lineTo(vec2(posStop, origin - ratioY*startThresholdLevel)); - m_draw.setPos(vec2(0, origin + ratioY*startThresholdLevel)); - m_draw.lineTo(vec2(posStop, origin + ratioY*startThresholdLevel)); - - // stop threshold - m_draw.setPos(vec2(posStop, origin - ratioY*stopThresholdLevel)); - m_draw.lineTo(vec2(m_size.x(), origin - ratioY*stopThresholdLevel)); - m_draw.setPos(vec2(posStop, origin + ratioY*stopThresholdLevel)); - m_draw.lineTo(vec2(m_size.x(), origin + ratioY*stopThresholdLevel)); - } -} - - - - -void appl::widget::DataViewer::periodicCall(const ewol::event::Time& _event) { - ethread::UniqueLock lock(m_mutex); - int32_t nbSampleDelta = _event.getDeltaCall() * float(m_sampleRate); - if (m_startAnalyse == false) { - if (m_data.size()>m_sampleRate*nbSecondOffset) { - m_startDisplayOffset = m_data.size() - m_sampleRate*nbSecondOffset; - /* - if (nbSampleDelta < m_data.size()) { - m_data.erase(m_data.begin(), m_data.begin()+nbSampleDelta); - } else { - m_data.erase(m_data.begin(), m_data.begin()+(m_data.size()-m_sampleRate*nbSecond)); - } - */ - } - } else { - if (m_silenceCount > m_sampleRate*nbSecondSilence) { - if (m_interface != null) { - m_interface->stop(); - m_interface.reset(); - m_PCH.disconnect(); - } - } - } - markToRedraw(); -} - - -void appl::widget::DataViewer::reset() { - ethread::UniqueLock lock(m_mutex); - m_data.clear(); - m_startDisplayOffset = 0; - m_startAnalyse = false; - m_silenceCount = 0; - m_detectStartPosition = 0; - m_detectStopPosition = 0; - m_detectMax = 0; -} - - diff --git a/tool/recoWord/appl/widget/DataViewer.hpp b/tool/recoWord/appl/widget/DataViewer.hpp deleted file mode 100644 index 6b7fddb..0000000 --- a/tool/recoWord/appl/widget/DataViewer.hpp +++ /dev/null @@ -1,67 +0,0 @@ -/** @file - * @author Edouard DUPIN - * @copyright 2011, Edouard DUPIN, all right reserved - * @license MPL v2.0 (see license file) - */ -#pragma once - -#include -#include -#include