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
+
+