void TranscriberExtract::getAllFromAudio(const std::string audioFilename, realvec& pitchList, realvec& ampList, realvec& boundaries) { MarSystem* pitchSink = mng.create("RealvecSink", "pitchSink"); MarSystem* ampSink = mng.create("RealvecSink", "ampSink"); MarSystem* pnet = mng.create("Series", "pnet"); mrs_real srate = addFileSource(pnet, audioFilename); // TODO: double the number of observations? // pnet->updControl("SoundFileSource/src/mrs_natural/inSamples",256); // pnet->addMarSystem(mng.create("ShiftInput", "shift")); // pnet->updControl("ShiftInput/shift/mrs_natural/winSize",512); MarSystem* fanout = mng.create("Fanout", "fanout"); fanout->addMarSystem(makePitchNet(srate, 100.0, pitchSink)); fanout->addMarSystem(makeAmplitudeNet(ampSink)); pnet->addMarSystem(fanout); while ( pnet->getctrl("mrs_bool/hasData")->to<mrs_bool>() ) pnet->tick(); pitchList = getPitchesFromRealvecSink(pitchSink, srate); ampList = getAmpsFromRealvecSink(ampSink); boundaries.create(2); boundaries(0) = 0; boundaries(1) = pitchList.getSize(); delete pnet; }
mrs_real TranscriberExtract::getNormalizingGain(const std::string audioFilename) { mrs_real maxVal = 0.0; MarSystem* pnet = mng.create("Series", "pnet"); addFileSource(pnet, audioFilename); // forces Marsyas to write to processedData pnet->addMarSystem(mng.create("Gain", "null")); while ( pnet->getctrl("mrs_bool/hasData")->to<mrs_bool>() ) { pnet->tick(); const realvec& processedData = pnet->getctrl("SoundFileSource/src/mrs_realvec/processedData")->to<mrs_realvec>(); for (mrs_natural i=0; i< processedData.getSize(); ++i) { mrs_real val = fabs(processedData(i)); if (val > maxVal) maxVal = val; } } delete pnet; return 1.0/maxVal; }
realvec TranscriberExtract::getAmpsFromAudio(const std::string audioFilename) { mrs_real normalize = getNormalizingGain(audioFilename); MarSystem* pnet = mng.create("Series", "pnet"); mrs_real srate; srate = addFileSource(pnet, audioFilename); pnet->addMarSystem(mng.create("Gain", "normalizing")); pnet->updControl("Gain/normalizing/mrs_real/gain",normalize); MarSystem* rvSink = mng.create("RealvecSink", "rvSink"); pnet->addMarSystem(makeAmplitudeNet(rvSink)); while ( pnet->getctrl("mrs_bool/hasData")->to<mrs_bool>() ) pnet->tick(); realvec rmsList = getAmpsFromRealvecSink(rvSink); delete pnet; // normalize RMS rmsList -= rmsList.minval(); mrs_real maxRms = rmsList.maxval(); if (maxRms != 0) rmsList /= maxRms; return rmsList; }
realvec TranscriberExtract::getPitchesFromAudio(const std::string audioFilename) { mrs_real normalize = getNormalizingGain(audioFilename); MarSystem* pnet = mng.create("Series", "pnet"); mrs_real srate = addFileSource(pnet, audioFilename); pnet->addMarSystem(mng.create("Gain", "normalizing")); pnet->updControl("Gain/normalizing/mrs_real/gain",normalize); MarSystem* rvSink = mng.create("RealvecSink", "rvSink"); pnet->addMarSystem(makePitchNet(srate, 100.0, rvSink)); while ( pnet->getctrl("mrs_bool/hasData")->to<mrs_bool>() ) pnet->tick(); realvec pitchList = getPitchesFromRealvecSink(rvSink, srate); delete pnet; return pitchList; }
OGRGDALImportExtension::OGRGDALImportExtension() : openfluid::builderext::PluggableModalExtension(), ui(new Ui::OGRGDALDialog), m_CurrentSrcIndex(-1), mp_PrecheckImportDlg(NULL) { ui->setupUi(this); setWindowTitle(tr("Spatial data import (OGR/GDAL)")); ui->AddFileButton->setIcon(QIcon(":/ui/common/icons/add.png")); ui->AddFileButton->setIconSize(QSize(16,16)); ui->AddWFSButton->setIcon(QIcon(":/ui/common/icons/add.png")); ui->AddWFSButton->setIconSize(QSize(16,16)); ui->RemoveButton->setIcon(QIcon(":/ui/common/icons/remove.png")); ui->RemoveButton->setIconSize(QSize(16,16)); ui->PrecheckButton->setEnabled(false); ui->ConfigTabWidget->setEnabled(false); ui->ConfigTabWidget->setCurrentIndex(0); #if QT_VERSION < QT_VERSION_CHECK(5,0,0) ui->SourcesTableWidget->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); #else ui->SourcesTableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); #endif connect(ui->AddFileButton,SIGNAL(clicked()),this,SLOT(addFileSource())); connect(ui->AddWFSButton,SIGNAL(clicked()),this,SLOT(addWFSSource())); connect(ui->RemoveButton,SIGNAL(clicked()),this,SLOT(removeSource())); connect(ui->PrecheckButton,SIGNAL(clicked()),this,SLOT(runPrecheck())); connect(ui->SourcesTableWidget,SIGNAL(itemSelectionChanged()),this,SLOT(updateUI())); connect(ui->UnitsClassLineEdit,SIGNAL(textEdited(const QString&)),this,SLOT(updateUnitsClassInfos())); connect(ui->PcsOrdComboBox,SIGNAL(activated(int)),this,SLOT(updateUnitsPcsOrdInfos())); connect(ui->ToConnectComboBox,SIGNAL(activated(int)),this,SLOT(updateUnitsToConnInfos())); connect(ui->ChildofConnectComboBox,SIGNAL(activated(int)),this,SLOT(updateUnitsChildofConnInfos())); connect(ui->AttributesListWidget,SIGNAL(itemChanged(QListWidgetItem*)), this,SLOT(updateImportedFieldsInfos(QListWidgetItem*))); connect(ui->ComputeAreaCheckBox,SIGNAL(toggled(bool)),this,SLOT(updateIsAreaComputeInfos())); connect(ui->ComputeAreaLineEdit,SIGNAL(textEdited(const QString&)),this,SLOT(updateAreaComputeAttrInfos())); connect(ui->ComputeLengthCheckBox,SIGNAL(toggled(bool)),this,SLOT(updateIsLengthComputeInfos())); connect(ui->ComputeLengthLineEdit,SIGNAL(textEdited(const QString&)),this,SLOT(updateLengthComputeAttrInfos())); connect(ui->ComputeXCentroidCheckBox,SIGNAL(toggled(bool)),this,SLOT(updateIsXCentroidComputeInfos())); connect(ui->ComputeXCentroidLineEdit,SIGNAL(textEdited(const QString&)),this,SLOT(updateXCentroidComputeAttrInfos())); connect(ui->ComputeYCentroidCheckBox,SIGNAL(toggled(bool)),this,SLOT(updateIsYCentroidComputeInfos())); connect(ui->ComputeYCentroidLineEdit,SIGNAL(textEdited(const QString&)),this,SLOT(updateYCentroidComputeAttrInfos())); connect(ui->ComputeZCentroidCheckBox,SIGNAL(toggled(bool)),this,SLOT(updateIsZCentroidComputeInfos())); connect(ui->ComputeZCentroidLineEdit,SIGNAL(textEdited(const QString&)),this,SLOT(updateZCentroidComputeAttrInfos())); connect(ui->DatasetImportCheckBox,SIGNAL(toggled(bool)),this,SLOT(updateIsDatasetImportInfos())); connect(ui->DatasetImportLineEdit,SIGNAL(textEdited(const QString&)),this,SLOT(updateIsDatasetImportInfos())); connect(ui->DatastoreIDCheckBox,SIGNAL(toggled(bool)),this,SLOT(updateIsDatasetImportInfos())); connect(ui->DatastoreIDLineEdit,SIGNAL(textEdited(const QString&)),this,SLOT(updateIsDatasetImportInfos())); ui->ButtonBox->button(QDialogButtonBox::Apply)->setEnabled(false); connect(ui->ButtonBox,SIGNAL(clicked(QAbstractButton*)),this,SLOT(processButtonBoxClicked(QAbstractButton*))); ui->SourcesTableWidget->setFocus(); }