void ScriptConsole::loadScript() { QString fileName = QFileDialog::getOpenFileName(&StelMainView::getInstance(), tr("Load Script"), StelFileMgr::getInstallationDir() + "/scripts", tr("Script Files") + " " + getFileMask()); QFile file(fileName); if (file.open(QIODevice::ReadOnly)) { ui->scriptEdit->setPlainText(file.readAll()); ui->includeEdit->setText(StelFileMgr::dirName(fileName)); file.close(); } ui->tabs->setCurrentIndex(0); }
void ScriptConsole::saveScript() { QString saveDir = StelFileMgr::findFile("scripts", StelFileMgr::Flags(StelFileMgr::Writable|StelFileMgr::Directory)); if (saveDir.isEmpty()) saveDir = StelFileMgr::getUserDir(); QString fileName = QFileDialog::getSaveFileName(&StelMainView::getInstance(), tr("Save Script"), saveDir, tr("Script Files") + " " + getFileMask()); QFile file(fileName); if (file.open(QIODevice::WriteOnly)) { QTextStream out(&file); out << ui->scriptEdit->toPlainText(); file.close(); } else qWarning() << "ERROR - cannot write script file"; }
SimpleGraphData * SimpleProcWave2Data(QString fname, bool keepWaveData) { qDebug() << "::SimpleProcWave2Data" << LOG_DATA; SPTK_SETTINGS * sptk_settings = SettingsDialog::getSPTKsettings(); SimpleGraphData * data = new SimpleGraphData(); data->b_pitch = 0; data->b_pitch_log = 0; data->b_pitch_derivative = 0; data->b_intensive = 0; data->b_intensive_cutted = 0; data->b_intensive_norm = 0; data->b_intensive_smooth = 0; data->b_derivative_intensive_norm = 0; data->b_spec = 0; data->b_cepstrum = 0; data->b_pitch_norm = 0; QFile file(fname); qDebug() << "::SimpleProcWave2Data QFile" << fname << LOG_DATA; file.open(QIODevice::ReadOnly); qDebug() << "::SimpleProcWave2Data file.open " << file.isOpen() << LOG_DATA; WaveFile * waveFile = waveOpenHFile(file.handle()); qDebug() << "::SimpleProcWave2Data waveOpenFile" << LOG_DATA; data->file_data = waveFile; int size = littleEndianBytesToUInt32(waveFile->dataChunk->chunkDataSize); qDebug() << "::SimpleProcWave2Data chunkDataSize " << size << LOG_DATA; short int bits = littleEndianBytesToUInt16(waveFile->formatChunk->significantBitsPerSample); qDebug() << "::SimpleProcWave2Data significantBitsPerSample " << bits << LOG_DATA; double seconds = 1.0 * size / RECORD_FREQ / bits * CHAR_BIT; qDebug() << "::SimpleProcWave2Data seconds=" << seconds << LOG_DATA; data->seconds = seconds; vector wave = sptk_v2v(waveFile->dataChunk->waveformData, size, bits); qDebug() << "::SimpleProcWave2Data wave" << LOG_DATA; vector norm_wave = normalizev(wave, 0.0, 1.0); qDebug() << "::SimpleProcWave2Data norm_wave" << LOG_DATA; data->d_full_wave = norm_wave; vector frame = sptk_frame(wave, sptk_settings->frame); qDebug() << "::SimpleProcWave2Data frame" << LOG_DATA; vector intensive = vector_intensive(wave, sptk_settings->frame->leng, sptk_settings->frame->shift); qDebug() << "::SimpleProcWave2Data intensive" << LOG_DATA; data->d_intensive_original = intensive; vector window = sptk_window(frame, sptk_settings->window); qDebug() << "::SimpleProcWave2Data window" << LOG_DATA; vector lpc = sptk_lpc(frame, sptk_settings->lpc); qDebug() << "::SimpleProcWave2Data lpc " << lpc.x << LOG_DATA; vector lpc2c = sptk_lpc2c(lpc, sptk_settings->lpc); qDebug() << "::SimpleProcWave2Data lpc2c " << lpc2c.x; data->d_cepstrum = lpc2c; data->b_cepstrum = 1; vector spec = sptk_spec(lpc, sptk_settings->spec); qDebug() << "::SimpleProcWave2Data spec " << maxv(spec) << LOG_DATA; data->d_spec = spec; data->b_spec = 1; vector spec_proc; if (sptk_settings->spec->proc == 0){ spec_proc = vector_pow_log(spec, sptk_settings->spec->factor, sptk_settings->spec->min); qDebug() << "::SimpleProcWave2Data spec_log" << LOG_DATA; } else if (sptk_settings->spec->proc == 1){ spec_proc = vector_pow_exp(spec, sptk_settings->spec->factor, sptk_settings->spec->min); qDebug() << "::SimpleProcWave2Data spec_exp" << LOG_DATA; } qDebug() << "::SimpleProcWave2Data spec_proc " << maxv(spec_proc) << LOG_DATA; data->d_spec_proc = spec_proc; vector smooth_wave = vector_smooth_lin(wave, sptk_settings->dp->smooth_frame); vector pitch = processZeros(sptk_pitch_spec(smooth_wave, sptk_settings->pitch, intensive.x)); qDebug() << "::SimpleProcWave2Data pitch" << LOG_DATA; data->d_pitch_original = pitch; int otype = sptk_settings->pitch->OTYPE; sptk_settings->pitch->OTYPE = 2; vector pitch_log = sptk_pitch_spec(smooth_wave, sptk_settings->pitch, intensive.x); sptk_settings->pitch->OTYPE = otype; vector pitch_log_norm = normalizev(pitch_log, MASK_MIN, MASK_MAX); qDebug() << "::SimpleProcWave2Data pitch_log" << LOG_DATA; data->d_pitch_log = pitch_log_norm; data->b_pitch_log = 1; data->d_intensive = data_get_intensive(data); data->d_intensive_norm = data_get_intensive_norm(data); vector file_mask; WaveFile * procFile = waveFile; if (sptk_settings->dp->auto_marking) { procFile = selectMarkoutAlgorithm(data); } file_mask = getFileMask(procFile, wave, pitch.x); data->md_p = getLabelsFromFile(procFile, MARK_PRE_NUCLEUS); data->md_n = getLabelsFromFile(procFile, MARK_NUCLEUS); data->md_t = getLabelsFromFile(procFile, MARK_POST_NUCLEUS); if (sptk_settings->dp->auto_marking) { waveCloseFile(procFile); } qDebug() << "::SimpleProcWave2Data file_mask" << LOG_DATA; vector mask_and = vector_mask_and(pitch_log_norm, file_mask); vector mask = vector_smooth_mid(mask_and, 10); qDebug() << "::SimpleProcWave2Data mask" << LOG_DATA; data->d_mask = mask; vector inverted_mask = vector_invert_mask(mask); qDebug() << "::SimpleProcWave2Data inverted_mask" << LOG_DATA; vector pitch_interpolate = vector_interpolate_by_mask( pitch, inverted_mask, 0, sptk_settings->plotF0->interpolation_type ); qDebug() << "::SimpleProcWave2Data pitch_interpolate" << LOG_DATA; vector pitch_mid = vector_smooth_mid(pitch_interpolate, sptk_settings->plotF0->frame); qDebug() << "::SimpleProcWave2Data pitch_mid" << LOG_DATA; data->d_pitch = pitch_mid; data->b_pitch = 1; data->d_derivative_intensive_norm = data_get_intensive_derivative(data); freev(frame); freev(window); freev(lpc); freev(wave); freev(pitch_interpolate); freev(inverted_mask); freev(smooth_wave); freev(pitch_log); freev(file_mask); freev(mask_and); qDebug() << "::SimpleProcWave2Data freev" << LOG_DATA; file.close(); qDebug() << "::SimpleProcWave2Data file.close" << LOG_DATA; if (keepWaveData) { waveFile->file = NULL; } else { data->file_data = NULL; waveCloseFile(waveFile); qDebug() << "::SimpleProcWave2Data waveCloseFile" << LOG_DATA; } return data; }
GraphData * ProcWave2Data(QString fname) { SPTK_SETTINGS * sptk_settings = SettingsDialog::getSPTKsettings(); QFile file(fname); file.open(QIODevice::ReadOnly); WaveFile * waveFile = waveOpenHFile(file.handle()); qDebug() << "waveOpenFile" << LOG_DATA; int size = littleEndianBytesToUInt32(waveFile->dataChunk->chunkDataSize); qDebug() << "chunkDataSize" << LOG_DATA; short int bits = littleEndianBytesToUInt16(waveFile->formatChunk->significantBitsPerSample); qDebug() << "significantBitsPerSample" << LOG_DATA; vector wave = sptk_v2v(waveFile->dataChunk->waveformData, size, bits); qDebug() << "wave" << LOG_DATA; vector frame = sptk_frame(wave, sptk_settings->frame); qDebug() << "frame" << LOG_DATA; vector intensive = vector_intensive(frame, sptk_settings->frame->leng, sptk_settings->frame->shift); qDebug() << "intensive" << LOG_DATA; vector window = sptk_window(frame, sptk_settings->window); qDebug() << "window" << LOG_DATA; vector lpc = sptk_lpc(frame, sptk_settings->lpc); qDebug() << "lpc" << LOG_DATA; vector spec = sptk_spec(lpc, sptk_settings->spec); qDebug() << "spec " << maxv(spec) << LOG_DATA; vector spec_proc; if (sptk_settings->spec->proc == 0){ spec_proc = vector_pow_log(spec, sptk_settings->spec->factor, sptk_settings->spec->min); qDebug() << "spec_log" << LOG_DATA; } else if (sptk_settings->spec->proc == 1){ spec_proc = vector_pow_exp(spec, sptk_settings->spec->factor, sptk_settings->spec->min); qDebug() << "spec_exp" << LOG_DATA; } qDebug() << "spec_proc " << maxv(spec_proc) << LOG_DATA; vector pitch = processZeros(sptk_pitch_spec(wave, sptk_settings->pitch, intensive.x)); qDebug() << "pitch" << LOG_DATA; vector mask = getFileMask(waveFile, wave, pitch.x); qDebug() << "mask" << LOG_DATA; vector pitch_cutted = processZeros(vector_cut_by_mask(pitch, mask)); qDebug() << "pitch_cutted" << LOG_DATA; double pitch_min = getv(pitch_cutted, minv(pitch_cutted)); double pitch_max = getv(pitch_cutted, maxv(pitch_cutted)); vector intensive_cutted = vector_cut_by_mask(intensive, mask); qDebug() << "intensive_cutted" << LOG_DATA; vector inverted_mask = vector_invert_mask(mask); qDebug() << "inverted_mask" << LOG_DATA; vector pitch_interpolate = vector_interpolate_by_mask( pitch_cutted, inverted_mask, 0, sptk_settings->plotF0->interpolation_type ); qDebug() << "pitch_interpolate" << LOG_DATA; vector intensive_interpolate = vector_interpolate_by_mask( intensive_cutted, inverted_mask, 0, sptk_settings->plotEnergy->interpolation_type ); qDebug() << "intensive_interpolate" << LOG_DATA; vector pitch_mid = vector_smooth_mid(pitch_interpolate, sptk_settings->plotF0->frame); qDebug() << "pitch_mid" << LOG_DATA; vector intensive_mid = vector_smooth_lin(intensive_interpolate, sptk_settings->plotEnergy->frame); qDebug() << "intensive_mid" << LOG_DATA; vector norm_wave = normalizev(wave, 0.0, 1.0); MaskData md_p = getLabelsFromFile(waveFile, MARK_PRE_NUCLEUS); MaskData md_n = getLabelsFromFile(waveFile, MARK_NUCLEUS); MaskData md_t = getLabelsFromFile(waveFile, MARK_POST_NUCLEUS); vector p_mask = readMaskFromFile(waveFile, wave.x, MARK_PRE_NUCLEUS); qDebug() << "p_mask" << LOG_DATA; vector n_mask = readMaskFromFile(waveFile, wave.x, MARK_NUCLEUS); qDebug() << "n_mask" << LOG_DATA; vector t_mask = readMaskFromFile(waveFile, wave.x, MARK_POST_NUCLEUS); qDebug() << "t_mask" << LOG_DATA; vector p_wave = zero_to_nan(vector_cut_by_mask(norm_wave, p_mask)); qDebug() << "p_mask" << LOG_DATA; vector n_wave = zero_to_nan(vector_cut_by_mask(norm_wave, n_mask)); qDebug() << "n_mask" << LOG_DATA; vector t_wave = zero_to_nan(vector_cut_by_mask(norm_wave, t_mask)); qDebug() << "t_mask" << LOG_DATA; vector pnt_mask = onesv(norm_wave.x); for (int i=0; i<p_mask.x && i<n_mask.x && i<t_mask.x && i<norm_wave.x; i++) { if (getv(p_mask, i) == 1 || getv(n_mask, i) == 1 || getv(t_mask, i) == 1) { setv(pnt_mask, i, 0); } else { setv(pnt_mask, i, 1); } } vector display_wave = zero_to_nan(vector_cut_by_mask(norm_wave, pnt_mask)); freev(frame); freev(window); freev(lpc); freev(pitch_cutted); freev(intensive_cutted); freev(inverted_mask); freev(pitch_interpolate); freev(intensive_interpolate); freev(wave); qDebug() << "freev" << LOG_DATA; file.close(); waveCloseFile(waveFile); qDebug() << "waveCloseFile" << LOG_DATA; GraphData * data = new GraphData(); data->d_full_wave = norm_wave; data->d_wave = display_wave; data->d_p_wave = p_wave; data->d_n_wave = n_wave; data->d_t_wave = t_wave; data->d_pitch_original = pitch; data->d_pitch = pitch_mid; data->pitch_max = pitch_max; data->pitch_min = pitch_min; data->d_intensive_original = intensive; data->d_intensive = intensive_mid; data->d_spec_proc = spec_proc; data->d_spec = spec; data->d_mask = mask; data->p_mask = p_mask; data->n_mask = n_mask; data->t_mask = t_mask; data->pnt_mask = pnt_mask; data->md_p = md_p; data->md_t = md_t; data->md_n = md_n; return data; }