#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_ComboBox_selectSensUnit_currentIndexChanged(int index) { double oldValue=ui->doubleSpinBox_ampInputSens->value(); if (index==0){ ui->doubleSpinBox_ampInputSens->setSuffix(QString(" V")); ui->doubleSpinBox_ampInputSens->setDecimals(2); ui->doubleSpinBox_ampInputSens->setValue(0.7746*qPow(10,oldValue/20)); }else{ ui->doubleSpinBox_ampInputSens->setSuffix(QString(" dBu")); ui->doubleSpinBox_ampInputSens->setDecimals(1); ui->doubleSpinBox_ampInputSens->setValue(20*std::log10(oldValue/0.7746)); } } void MainWindow::on_pushButton_requestLimiter_clicked() { qreal vMaxSpeakerInRMS=20*std::log10(qSqrt(ui->spinBox_speakerImp->value()*ui->spinBox_speakerRMSPower->value())/0.7746); qreal vMaxSpeakerInPeak=20*std::log10(qSqrt(ui->spinBox_speakerImp->value()*ui->spinBox_speakerPeakPower->value())/0.7746); qreal vAmpSens_volt=0; qreal vAmpsens_dBu=0; if(ui->ComboBox_selectSensUnit->currentIndex()==0){ vAmpSens_volt=ui->doubleSpinBox_ampInputSens->value(); vAmpsens_dBu=20*std::log10(vAmpSens_volt/0.7746); }else{ vAmpSens_volt=qPow(10,ui->doubleSpinBox_ampInputSens->value()/20)*0.7746; vAmpsens_dBu=ui->doubleSpinBox_ampInputSens->value(); } qreal voltageGain=20*std::log10(qSqrt(ui->spinBox_AmpImp->value()*ui->spinBox_AmpPower->value())/vAmpSens_volt); qreal vMaxAmpInRMS=vMaxSpeakerInRMS-voltageGain; qreal vMaxAmpInPeak=vMaxSpeakerInPeak-voltageGain; qreal thresholdRMS=-18-(ui->spinBox_digitalNominalLevel->value()-vMaxAmpInRMS); qreal thresholdPeak=-18-(ui->spinBox_digitalNominalLevel->value()-vMaxAmpInPeak); qreal attackTimeRMS=(double)1000/ui->spinBox_speakerHPF->value(); qreal releaseTimeRMS=attackTimeRMS*8; qreal releaseTimePeak=attackTimeRMS; if (vAmpsens_dBulabel_thresholdRMS->setText(QString("not required")); ui->label_attackTimeRMS->setText(QString::number(attackTimeRMS,'f',2)+QString(" ms")); ui->label_releaseTimeRMS->setText(QString::number(releaseTimeRMS,'f',2)+QString(" ms")); ui->label_UMaxSpeakerInRMS->setText(QString::number(vMaxSpeakerInRMS,'f',2)+QString(" dBU (")+QString::number(qSqrt(ui->spinBox_speakerImp->value()*ui->spinBox_speakerRMSPower->value()),'f',2)+QString(" V)")); ui->label_UMaxAmpInRMS->setText(QString("not applicable")); thresholdPeak=-18-(ui->spinBox_digitalNominalLevel->value()-vAmpsens_dBu); ui->label_thresholdPeak->setText(QString::number(thresholdPeak,'f',1)+QString(" dBFS")); ui->label_releaseTimePeak->setText(QString::number(releaseTimePeak,'f',2)+QString(" ms")); ui->label_UMaxSpeakerInPeak->setText(QString::number(vMaxSpeakerInPeak,'f',2)+QString(" dBU (")+QString::number(qSqrt(ui->spinBox_speakerImp->value()*ui->spinBox_speakerPeakPower->value()),'f',2)+QString(" V)")); ui->label_UMaxAmpInPeak->setText(QString::number(vAmpSens_volt,'f',2)+QString(" V (= input sensitivity)")); }else if (vAmpsens_dBulabel_thresholdRMS->setText(QString::number(thresholdRMS,'f',1)+QString(" dBFS")); ui->label_attackTimeRMS->setText(QString::number(attackTimeRMS,'f',2)+QString(" ms")); ui->label_releaseTimeRMS->setText(QString::number(releaseTimeRMS,'f',2)+QString(" ms")); ui->label_UMaxSpeakerInRMS->setText(QString::number(vMaxSpeakerInRMS,'f',2)+QString(" dBU (")+QString::number(qSqrt(ui->spinBox_speakerImp->value()*ui->spinBox_speakerRMSPower->value()),'f',2)+QString(" V)")); ui->label_UMaxAmpInRMS->setText(QString::number(vMaxAmpInRMS,'f',2)+QString(" dBU (")+QString::number(qPow(10,vMaxAmpInRMS/20)*0.7746,'f',2)+QString(" V)")); thresholdPeak=-18-(ui->spinBox_digitalNominalLevel->value()-vAmpsens_dBu); ui->label_thresholdPeak->setText(QString::number(thresholdPeak,'f',1)+QString(" dBFS")); ui->label_releaseTimePeak->setText(QString::number(releaseTimePeak,'f',2)+QString(" ms")); ui->label_UMaxSpeakerInPeak->setText(QString::number(vMaxSpeakerInPeak,'f',2)+QString(" dBU (")+QString::number(qSqrt(ui->spinBox_speakerImp->value()*ui->spinBox_speakerPeakPower->value()),'f',2)+QString(" V)")); ui->label_UMaxAmpInPeak->setText(QString::number(vAmpSens_volt,'f',2)+QString(" V (= input sensitivity)")); }else{ ui->label_thresholdRMS->setText(QString::number(thresholdRMS,'f',1)+QString(" dBFS")); ui->label_attackTimeRMS->setText(QString::number(attackTimeRMS,'f',2)+QString(" ms")); ui->label_releaseTimeRMS->setText(QString::number(releaseTimeRMS,'f',2)+QString(" ms")); ui->label_UMaxSpeakerInRMS->setText(QString::number(vMaxSpeakerInRMS,'f',2)+QString(" dBU (")+QString::number(qSqrt(ui->spinBox_speakerImp->value()*ui->spinBox_speakerRMSPower->value()),'f',2)+QString(" V)")); ui->label_UMaxAmpInRMS->setText(QString::number(vMaxAmpInRMS,'f',2)+QString(" dBU (")+QString::number(qPow(10,vMaxAmpInRMS/20)*0.7746,'f',2)+QString(" V)")); ui->label_thresholdPeak->setText(QString::number(thresholdPeak,'f',1)+QString(" dBFS")); ui->label_releaseTimePeak->setText(QString::number(releaseTimePeak,'f',2)+QString(" ms")); ui->label_UMaxSpeakerInPeak->setText(QString::number(vMaxSpeakerInPeak,'f',2)+QString(" dBU (")+QString::number(qSqrt(ui->spinBox_speakerImp->value()*ui->spinBox_speakerPeakPower->value()),'f',2)+QString(" V)")); ui->label_UMaxAmpInPeak->setText(QString::number(vMaxAmpInPeak,'f',2)+QString(" dBU (")+QString::number(qPow(10,vMaxAmpInPeak/20)*0.7746,'f',2)+QString(" V)")); } }