diff --git a/PA_Calculator.icns b/PA_Calculator.icns new file mode 100644 index 0000000..dd555a3 Binary files /dev/null and b/PA_Calculator.icns differ diff --git a/PA_Calculator.pro b/PA_Calculator.pro index d28fff8..b78227d 100644 --- a/PA_Calculator.pro +++ b/PA_Calculator.pro @@ -3,7 +3,7 @@ QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++11 - +CONFIG+=sdk_no_version_check # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 @@ -29,9 +29,16 @@ FORMS += \ library.ui \ mainwindow.ui -CONFIG += lrelease -CONFIG += embed_translations +TARGET = "PA Calculator" + +macx { + ICON = PA_Calculator.icns +} + +win32 { + RC_ICONS = PA_Calculator.ico +} # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin diff --git a/library.ui b/library.ui index 6c09857..22677ff 100644 --- a/library.ui +++ b/library.ui @@ -11,7 +11,7 @@ - Dialog + Library Editor @@ -27,7 +27,7 @@ - 2 + 0 diff --git a/main.cpp b/main.cpp index 950db3a..fd3e533 100644 --- a/main.cpp +++ b/main.cpp @@ -1,14 +1,10 @@ #include "mainwindow.h" #include -#include -#include int main(int argc, char *argv[]) { QApplication a(argc, argv); - - MainWindow w; w.show(); return a.exec(); diff --git a/mainwindow.cpp b/mainwindow.cpp index f582d88..f98a754 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -54,8 +54,20 @@ void MainWindow::on_ComboBox_selectSensUnit_currentIndexChanged(int index) 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 speakerCount=ui->spinBox_speakerCount->value(); + qreal speakerImp=ui->spinBox_speakerImp->value()/speakerCount; + qreal speakerRMS=ui->spinBox_speakerRMSPower->value()*speakerCount; + qreal speakerPeak=ui->spinBox_speakerPeakPower->value()*speakerCount; + qreal ampImp=ui->spinBox_AmpImp->value(); + + if (speakerImp!=ampImp){ + QMessageBox msgBox(QMessageBox::Critical,"Impedance Mismatch",QString("The speaker impedance (")+QString::number(speakerImp)+QString(" Ohm) doesn't match with the amplifier impedance (")+QString::number(ampImp)+QString(" Ohm). Maybe you can change the amplifier mode?")); + msgBox.exec(); + return; + } + + qreal vMaxSpeakerInRMS=20*std::log10(qSqrt(speakerImp*speakerRMS)/0.7746); + qreal vMaxSpeakerInPeak=20*std::log10(qSqrt(speakerImp*speakerPeak)/0.7746); qreal vAmpSens_volt=0; qreal vAmpsens_dBu=0; @@ -77,20 +89,23 @@ void MainWindow::on_pushButton_requestLimiter_clicked() 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_UMaxSpeakerInRMS->setText(QString::number(vMaxSpeakerInRMS,'f',2)+QString(" dBU (")+QString::number(qSqrt(speakerImp*speakerRMS),'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_UMaxSpeakerInPeak->setText(QString::number(vMaxSpeakerInPeak,'f',2)+QString(" dBU (")+QString::number(qSqrt(speakerImp*speakerPeak),'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_UMaxSpeakerInRMS->setText(QString::number(vMaxSpeakerInRMS,'f',2)+QString(" dBU (")+QString::number(qSqrt(speakerImp*speakerRMS),'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_UMaxSpeakerInPeak->setText(QString::number(vMaxSpeakerInPeak,'f',2)+QString(" dBU (")+QString::number(qSqrt(speakerImp*speakerPeak),'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_UMaxSpeakerInRMS->setText(QString::number(vMaxSpeakerInRMS,'f',2)+QString(" dBU (")+QString::number(qSqrt(speakerImp*speakerRMS),'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_UMaxSpeakerInPeak->setText(QString::number(vMaxSpeakerInPeak,'f',2)+QString(" dBU (")+QString::number(qSqrt(speakerImp*speakerPeak),'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)")); } diff --git a/mainwindow.ui b/mainwindow.ui index 8ba9788..4cc5dff 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -6,13 +6,16 @@ 0 0 - 1230 + 1141 611 PA Calculator + + + @@ -289,17 +292,17 @@ - + Load Speaker from library - + - + Qt::Vertical @@ -312,7 +315,7 @@ - + @@ -325,6 +328,36 @@ + + + + 1 + + + 2 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Number of speaker in parallel + + + @@ -672,7 +705,7 @@ 0 0 - 1230 + 1141 24 @@ -686,7 +719,6 @@ - Edit Library diff --git a/resources.qrc b/resources.qrc new file mode 100644 index 0000000..beb1991 --- /dev/null +++ b/resources.qrc @@ -0,0 +1,5 @@ + + + PA_Calculator.icns + +