Compare commits

..

No commits in common. 'master' and 'v1.1' have entirely different histories.
master ... v1.1

1
.gitignore vendored

@ -4,4 +4,3 @@ build*
/installer/packages/com.dkmtech.pacalculator/data/*
*.exe
*.app
*.dmg

@ -1,19 +1,2 @@
# PA Calculator
Der PA Calculator dient der Berechnung von Limiterwerten für PA-Anlagen, sowie einem Tool, welches eine Stapelverarbeitung von Lautheitsanalysen sowie einer Korrekturempfehlung durchführen kann.
# pa-calculator
## Einrichten der Build-Umgebung
1. Installation von QT Version > 6.4.2 mit QT Installation Framework
2. (Auf Windows) Installation msvc2019 oder neuer
3. Installation 7zip
4. Umgebungsvariablen hinzufügen (Qt Binaries, 7-Zip, QtInstallerFramework)
## Release einer neuen Version
Zum Kompilieren einer neuen Version sind folgende Schritte zu beachten:
Die neue Version vor Kompilierung in folgenden Dateien anpassen:
* source/PA_Calculator.pro
* installer/config/config_xxx.xml
* installer/packages/com.dkmtech.pacalculator/meta/package.xml
Im Release-Modus Projekt kompilieren.
Im Anschluss Datei installer/createInstaller_xxx ausführen -> setup.exe

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>PA Calculator</Name>
<Version>1.4.0</Version>
<Version>1.1.0</Version>
<Title>PA Calculator Installer</Title>
<Publisher>DKM-Tech</Publisher>
<StartMenuDir>DKM-Tech</StartMenuDir>

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>PA Calculator</Name>
<Version>1.4.0</Version>
<Title>PA Calculator Installer</Title>
<Publisher>DKM-Tech</Publisher>
<StartMenuDir>DKM-Tech</StartMenuDir>
<TargetDir>@ApplicationsDir@/PA Calculator</TargetDir>
</Installer>

@ -1,26 +0,0 @@
#!/bin/sh
releaseFolder=$(find ../ -path "*-Release" -type d)
fileName="${releaseFolder}/PA Calculator.app"
if [[ -e $fileName ]]; then
rm -rf "PA Calculator.app"
rm -rf "Install PA Calculator.app"
rm -rf setup64bit.dmg
cp -R "${fileName}" "PA Calculator.app"
macdeployqt 'PA Calculator.app'
VERSION=$(grep VERSION= "../source/PA_Calculator.pro" | awk -F= '{print $2;exit}')
echo "verwendet Version $VERSION"
DATE=$(date +%F)
sed -i '' 's/<Version>.*<\/Version>/<Version>'"$VERSION"'<\/Version>/g' packages/com.dkmtech.pacalculator/meta/package.xml
sed -i '' 's/<ReleaseDate>.*<\/ReleaseDate>/<ReleaseDate>'"$DATE"'<\/ReleaseDate>/g' packages/com.dkmtech.pacalculator/meta/package.xml
rm -rf packages/com.dkmtech.pacalculator/data
mkdir packages/com.dkmtech.pacalculator/data
cp -R 'PA Calculator.app' 'packages/com.dkmtech.pacalculator/data/PA Calculator.app'
binarycreator -c config/config_mac.xml -p packages 'Install PA Calculator'
rm -rf 'PA Calculator.app'
hdiutil create -srcfolder "Install PA Calculator.app" setup64bit.dmg
rm -rf "Install PA Calculator.app"
echo "Done"
else
echo "Could not find PA Calculator.app. Please build it first!"
fi

@ -1,20 +0,0 @@
@echo off
del /s /q setup64bit.exe
echo "Ändern Sie alle notwendigen Einstellungen!"
packages\com.dkmtech.pacalculator\meta\package.xml
cd ..
FOR /F "tokens=* USEBACKQ" %%F IN (`dir /b *-Release`) DO (
set releaseFolder=%%F
)
cd %releaseFolder%\Release
del /s /q ..\..\installer\packages\com.dkmtech.pacalculator\data\*
mkdir ..\..\installer\packages\com.dkmtech.pacalculator\data\setup
copy "PA Calculator.exe" "..\..\installer\packages\com.dkmtech.pacalculator\data\setup\PA Calculator.exe"
cd ..\..\installer\packages\com.dkmtech.pacalculator\data\setup
windeployqt --translations de,en "PA Calculator.exe"
7z a -r ../setup *
cd ..
rmdir /s /q setup
cd ..\..\..\
binarycreator -c config\config_win.xml -p packages setup64bit.exe
del /s packages\com.dkmtech.pacalculator\data\setup.7z

@ -2,9 +2,9 @@
<Package>
<DisplayName>Installer</DisplayName>
<Description>DKM-Tech Software Installer</Description>
<Version>1.1</Version>
<ReleaseDate>2022-02-06</ReleaseDate>
<Version>1.0</Version>
<ReleaseDate>2021-11-07</ReleaseDate>
<Name>com.dkmtech.installer</Name>
<Virtual>true</Virtual>
<UpdateText>DKM-Tech Installer</UpdateText>
<UpdateText>First Installer</UpdateText>
</Package>

@ -3,8 +3,8 @@
<DisplayName>Technik-AG Library</DisplayName>
<Description>Install pre-filled Library File with Devices of Technik-AG</Description>
<Description xml:lang="de_de">Library-Datei mit Geräten der Technik-AG des GSG Daun</Description>
<Version>2</Version>
<ReleaseDate>2022-03-14</ReleaseDate>
<Version>1</Version>
<ReleaseDate>2021-11-07</ReleaseDate>
<Name>com.dkmtech.libraryfile</Name>
<Default>false</Default>
<Script>installscript.qs</Script>

@ -11,8 +11,8 @@ Component.prototype.createOperations = function()
try {
var userProfile = installer.environmentVariable("USERPROFILE");
installer.setValue("UserProfile", userProfile);
component.addOperation("CreateShortcut", "@TargetDir@\\PA Calculator.exe", "@UserProfile@\\Desktop\\PA Calculator.lnk");
component.addOperation("CreateShortcut", "@TargetDir@\\PA Calculator.exe", "@StartMenuDir@/PA Calculator.lnk","workingDirectory=@TargetDir@","description=Start PA-Calculator");
component.addOperation("CreateShortcut", "@TargetDir@\\PA_Calculator.exe", "@UserProfile@\\Desktop\\PA Calculator.lnk");
component.addOperation("CreateShortcut", "@TargetDir@/PA_Calculator.exe", "@StartMenuDir@/PA_Calculator.lnk","workingDirectory=@TargetDir@","description=Start PA-Calculator");
} catch (e) {
// Do nothing if key doesn't exist
}
@ -20,4 +20,4 @@ Component.prototype.createOperations = function()
} catch (e) {
print(e);
}
}
}

@ -2,8 +2,8 @@
<Package>
<DisplayName>PA-Calculator</DisplayName>
<Description>Install PA-Calculator</Description>
<Version>1.4.0</Version>
<ReleaseDate>2023-11-26</ReleaseDate>
<Version>1.1</Version>
<ReleaseDate>2022-02-06</ReleaseDate>
<Licenses>
<License name="GNU GENERAL PUBLIC LICENSE" file="license.txt" />
</Licenses>

@ -1,10 +1,12 @@
QT += core gui multimedia network concurrent
QT += core gui multimedia testlib
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
CONFIG+=sdk_no_version_check
CONFIG += warn_off
# 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
SOURCES += \
about.cpp \
@ -55,12 +57,16 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin
RESOURCES += \
resources.qrc
VERSION=1.4.0
VERSION=1.1.0
QMAKE_TARGET_PRODUCT = "PA-Calculator"
QMAKE_TARGET_COMPANY = "DKM-Tech"
QMAKE_TARGET_COPYRIGHT = "Copyright (c) 2023 by Alexander Diamadis"
QMAKE_TARGET_COMPANY = "Alexander Diamadis"
QMAKE_TARGET_COPYRIGHT = "Copyright (c) 2022 by Alexander Diamadis"
commit = $$system(git rev-parse --short=8 HEAD)
win32 {
commit = $$system("FOR /F \"tokens=*\" %H IN ('git rev-parse --short HEAD') DO @SET /A DECIMAL=0x%H")
} else {
commit = $$system("printf '%d' 0x`git rev-parse --short HEAD`")
}
DEFINES += APP_VERSION=\"\\\"$${VERSION}\\\"\" \

@ -84,6 +84,7 @@
<property name="font">
<font>
<pointsize>21</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
@ -121,9 +122,9 @@
<property name="geometry">
<rect>
<x>290</x>
<y>170</y>
<y>140</y>
<width>341</width>
<height>91</height>
<height>121</height>
</rect>
</property>
<property name="font">
@ -133,9 +134,9 @@
</property>
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Segoe UI'; font-size:7pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'.AppleSystemUIFont'; font-size:7pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;&quot;&gt;&lt;a name=&quot;license-text&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Consolas','Monaco','Courier','monospace'; font-size:8pt; color:#5c5855; background-color:#ffffff;&quot;&gt;T&lt;/span&gt;&lt;span style=&quot; font-family:'Consolas','Monaco','Courier','monospace'; font-size:8pt; color:#5c5855; background-color:#ffffff;&quot;&gt;his program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Consolas','Monaco','Courier','monospace'; font-size:8pt; color:#5c5855; background-color:#ffffff;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;&quot;&gt;&lt;span style=&quot; font-family:'Consolas','Monaco','Courier','monospace'; font-size:8pt; color:#5c5855; background-color:#ffffff;&quot;&gt;This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.&lt;/span&gt;&lt;/p&gt;
@ -159,28 +160,6 @@ p, li { white-space: pre-wrap; }
<string>Build: </string>
</property>
</widget>
<widget class="QLabel" name="label_git">
<property name="geometry">
<rect>
<x>290</x>
<y>140</y>
<width>321</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Git-Repository: &lt;a href=&quot;https://git.aldiserver.de/DKM-Tech/pa-calculator&quot;&gt;git.aldiserver.de/DKM-Tech/pa-calculator&lt;/a&gt;</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::TextBrowserInteraction</set>
</property>
</widget>
</widget>
<resources>
<include location="resources.qrc"/>

@ -45,11 +45,11 @@ void analyzer::on_pushButton_calculate_clicked()
delete [] songList;
}
countSongs=0;
QDirIterator it_counter(ui->lineEdit_path->text(), {"*.mp3", "*.wav", "*.flac", "*.ogg" ,"*.opus", "*.wv", "*.mpc"}, QDir::NoFilter, QDirIterator::Subdirectories);
QDirIterator it_counter(ui->lineEdit_path->text(), {"*.mp3", "*.wav", "*.flac", "*.ogg"}, QDir::NoFilter, QDirIterator::Subdirectories);
while (it_counter.next()!="") {
countSongs+=1;
}
QDirIterator it(ui->lineEdit_path->text(), {"*.mp3", "*.wav", "*.flac", "*.ogg" ,"*.opus", "*.wv", "*.mpc"}, QDir::NoFilter, QDirIterator::Subdirectories);
QDirIterator it(ui->lineEdit_path->text(), {"*.mp3", "*.wav"}, QDir::NoFilter, QDirIterator::Subdirectories);
unsigned int k=0;
songList=new csong[countSongs];
float preferedLoudness=ui->doubleSpinBox_preferredLoudness->value();

@ -85,6 +85,7 @@ void csong::analyze(float preferedLoudness)
m_loudness=loudness[0];
m_widgetItem[1].setData(Qt::EditRole,QVariant(m_loudness));
m_peakLevel=0;
for (unsigned int i=0;i<fileData->samples.size();i++){
if (abs(fileData->samples[i])>m_peakLevel){
@ -109,27 +110,19 @@ void csong::analyze(float preferedLoudness)
}
} catch (const UnsupportedExtensionEx & e)
{
//std::cerr << "Caught: " << e.what() << std::endl;
m_widgetItem[1].setText("Nicht unterstützte Dateiendung!");
m_widgetItem[2].setText("-");
m_widgetItem[3].setText("-");
m_widgetItem[4].setText("-");
std::cerr << "Caught: " << e.what() << std::endl;
}
catch (const LoadPathNotImplEx & e)
{
//std::cerr << "Caught: " << e.what() << std::endl;
std::cerr << "Caught: " << e.what() << std::endl;
}
catch (const LoadBufferNotImplEx & e)
{
//std::cerr << "Caught: " << e.what() << std::endl;
std::cerr << "Caught: " << e.what() << std::endl;
}
catch (const std::exception & e)
{
//std::cerr << "Caught: " << e.what() << std::endl;
m_widgetItem[1].setText("Nicht unterstützter Codec!");
m_widgetItem[2].setText("-");
m_widgetItem[3].setText("-");
m_widgetItem[4].setText("-");
std::cerr << "Caught: " << e.what() << std::endl;
}
}

@ -254,24 +254,28 @@ void library::printAllAmps()
void library::on_listWidget_ampView_currentRowChanged(int currentRow)
{
if (currentRow>=0){
ui->lineEdit_ampName->setText(QString::fromStdString(m_pCamp[currentRow].getName()));
ui->comboBox_sensUnit->setCurrentIndex(m_pCamp[currentRow].getSensivityUnit());
ui->doubleSpinBox_inputSensitivity->setValue(m_pCamp[currentRow].getSensitivity());
refreshModeOverview();
ui->listWidget_modeSelector->setCurrentRow(0);
ui->lineEdit_ampName->setEnabled(true);
ui->doubleSpinBox_inputSensitivity->setEnabled(true);
ui->comboBox_sensUnit->setEnabled(true);
ui->lineEdit_modeName->setEnabled(true);
ui->listWidget_modeSelector->setEnabled(true);
ui->spinBox_ratedImp->setEnabled(true);
ui->spinBox_ratedPower->setEnabled(true);
if (initAmps){
if (currentRow>=0){
ui->lineEdit_ampName->setText(QString::fromStdString(m_pCamp[currentRow].getName()));
ui->comboBox_sensUnit->setCurrentIndex(m_pCamp[currentRow].getSensivityUnit());
ui->doubleSpinBox_inputSensitivity->setValue(m_pCamp[currentRow].getSensitivity());
refreshModeOverview();
ui->listWidget_modeSelector->setCurrentRow(0);
ui->lineEdit_ampName->setEnabled(true);
ui->doubleSpinBox_inputSensitivity->setEnabled(true);
ui->comboBox_sensUnit->setEnabled(true);
ui->lineEdit_modeName->setEnabled(true);
ui->listWidget_modeSelector->setEnabled(true);
ui->spinBox_ratedImp->setEnabled(true);
ui->spinBox_ratedPower->setEnabled(true);
}else
{
ui->lineEdit_ampName->setEnabled(false);
ui->doubleSpinBox_inputSensitivity->setEnabled(false);
}else
{
ui->lineEdit_ampName->setEnabled(false);
ui->doubleSpinBox_inputSensitivity->setEnabled(false);
}
}else {
initAmps =true;
}
}
@ -432,25 +436,29 @@ void library::on_pushButton_addSpeaker_clicked()
void library::on_listWidget_speakerView_currentRowChanged(int currentRow)
{
if (currentRow>=0){
ui->lineEdit_speakerName->setText(QString::fromStdString(m_pSpeaker[currentRow].getName()));
ui->spinBox_speakerImp->setValue(m_pSpeaker[currentRow].getImpedance());
ui->spinBox_speakerRMSPower->setValue(m_pSpeaker[currentRow].getRMSPower());
ui->spinBox_speakerPeakPower->setValue(m_pSpeaker[currentRow].getPeakPower());
ui->spinBox_speakerHPF->setValue(m_pSpeaker[currentRow].getHPF());
if (initSpeaker){
if (currentRow>=0){
ui->lineEdit_speakerName->setText(QString::fromStdString(m_pSpeaker[currentRow].getName()));
ui->spinBox_speakerImp->setValue(m_pSpeaker[currentRow].getImpedance());
ui->spinBox_speakerRMSPower->setValue(m_pSpeaker[currentRow].getRMSPower());
ui->spinBox_speakerPeakPower->setValue(m_pSpeaker[currentRow].getPeakPower());
ui->spinBox_speakerHPF->setValue(m_pSpeaker[currentRow].getHPF());
ui->lineEdit_speakerName->setEnabled(true);
ui->spinBox_speakerImp->setEnabled(true);
ui->spinBox_speakerRMSPower->setEnabled(true);
ui->spinBox_speakerPeakPower->setEnabled(true);
ui->spinBox_speakerHPF->setEnabled(true);
ui->lineEdit_speakerName->setEnabled(true);
ui->spinBox_speakerImp->setEnabled(true);
ui->spinBox_speakerRMSPower->setEnabled(true);
ui->spinBox_speakerPeakPower->setEnabled(true);
ui->spinBox_speakerHPF->setEnabled(true);
}else {
ui->lineEdit_speakerName->setEnabled(false);
//ui->spinBox_speakerImp->setEnabled(false);
//ui->spinBox_speakerRMSPower->setEnabled(false);
//ui->spinBox_speakerPeakPower->setEnabled(false);
//ui->spinBox_speakerHPF->setEnabled(false);
}else {
ui->lineEdit_speakerName->setEnabled(false);
//ui->spinBox_speakerImp->setEnabled(false);
//ui->spinBox_speakerRMSPower->setEnabled(false);
//ui->spinBox_speakerPeakPower->setEnabled(false);
//ui->spinBox_speakerHPF->setEnabled(false);
}
}else{
initSpeaker=true;
}
}
@ -571,13 +579,17 @@ void library::on_pushButton_Apply_clicked()
void library::on_listWidget_dacView_currentRowChanged(int currentRow)
{
if (currentRow>=0){
ui->lineEdit_dacName->setText(QString::fromStdString(m_pDac[currentRow].name()));
ui->spinBox_dacOutputLevel->setValue(m_pDac[currentRow].outputLevel());
ui->lineEdit_dacName->setEnabled(true);
ui->spinBox_dacOutputLevel->setEnabled(true);
if (initDacs){
if (currentRow>=0){
ui->lineEdit_dacName->setText(QString::fromStdString(m_pDac[currentRow].name()));
ui->spinBox_dacOutputLevel->setValue(m_pDac[currentRow].outputLevel());
ui->lineEdit_dacName->setEnabled(true);
ui->spinBox_dacOutputLevel->setEnabled(true);
}else{
ui->lineEdit_dacName->setEnabled(false);
}
}else{
ui->lineEdit_dacName->setEnabled(false);
initDacs=true;
}
}

@ -222,7 +222,7 @@
<item>
<widget class="QPushButton" name="pushButton_applyMode">
<property name="text">
<string>Apply mode</string>
<string>Apply</string>
</property>
</widget>
</item>

@ -10,25 +10,12 @@
#include <QFileDialog>
#include "about.h"
#include "analyzer.h"
#include <QJsonDocument>
#include <Qfile>
#include <QJsonParseError>
#include <QJsonObject>
#include <QJsonArray>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
manager = new QNetworkAccessManager();
checkUpdates();
m_ampCount=0;
m_pCAmp=Q_NULLPTR;
@ -81,7 +68,6 @@ void MainWindow::on_pushButton_requestLimiter_clicked()
return;
}
qreal vMaxSpeakerInRMS=20*std::log10(qSqrt(speakerImp*speakerRMS)/0.7746);
qreal vMaxSpeakerInPeak=20*std::log10(qSqrt(speakerImp*speakerPeak)/0.7746);
@ -105,7 +91,6 @@ void MainWindow::on_pushButton_requestLimiter_clicked()
qreal releaseTimeRMS=attackTimeRMS*8;
qreal releaseTimePeak=attackTimeRMS;
bool rmsRequired=true;
@ -113,7 +98,6 @@ void MainWindow::on_pushButton_requestLimiter_clicked()
QMessageBox msgBox(QMessageBox::Warning,"Amplifier can't deliver maximum RMS power","The maximum power level of the amplifier is below the maximum RMS power level of the speaker. To protect the speaker from a distorted signal the amplifier might deliver, a peak limiter is required with the amplifiers input sensitivty set as its threshold.");
msgBox.exec();
ui->label_thresholdRMS->setText(QString("not required"));
rmsRequired=false;
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(speakerImp*speakerRMS),'f',2)+QString(" V)"));
@ -128,12 +112,8 @@ void MainWindow::on_pushButton_requestLimiter_clicked()
}else if (vAmpsens_dBu<vMaxAmpInPeak){
QMessageBox msgBox(QMessageBox::Warning,"Amplifier can't deliver maximum peak power","The maximum power level of the amplifier is below the maximum peak power level of the speaker. To protect the speaker from a distorted signal the amplifier might deliver, a peak limiter is required with the amplifiers input sensitivty set as its threshold.");
msgBox.exec();
if (QString::number(thresholdRMS,'f',1)==QString::number(-18-(ui->spinBox_digitalNominalLevel->value()-vAmpsens_dBu),'f',1)){
ui->label_thresholdRMS->setText(QString("not required"));
rmsRequired=false;
}else{
ui->label_thresholdRMS->setText(QString::number(thresholdRMS,'f',1)+QString(" dBFS"));
}
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(speakerImp*speakerRMS),'f',2)+QString(" V)"));
@ -157,20 +137,7 @@ void MainWindow::on_pushButton_requestLimiter_clicked()
ui->label_UMaxAmpInPeak->setText(QString::number(vMaxAmpInPeak,'f',2)+QString(" dBU (")+QString::number(qPow(10,vMaxAmpInPeak/20)*0.7746,'f',2)+QString(" V)"));
}
if (ui->checkBox_optimizeGain->checkState()){
qreal diff=0;
qreal digitalHeadroom=ui->spinBox_digitalHeadroom->value();
while (thresholdPeak+diff+1<=-digitalHeadroom){
diff++;
}
ui->label_thresholdPeak->setText(QString::number(thresholdPeak+diff,'f',1)+QString(" dBFS"));
if (rmsRequired){
ui->label_thresholdRMS->setText(QString::number(thresholdRMS+diff,'f',1)+QString(" dBFS"));
}
ui->label_inputVolumeControl->setText(QString::number(-diff)+QString(" dB"));
}else {
ui->label_inputVolumeControl->setText(QString("0 dB"));
}
}
@ -384,47 +351,3 @@ void MainWindow::on_actionOpen_Loudness_Analyzer_triggered()
analyzerWindow.exec();
}
void MainWindow::on_checkBox_optimizeGain_stateChanged(int arg1)
{
if (ui->checkBox_optimizeGain->checkState()){
ui->spinBox_digitalHeadroom->setEnabled(true);
}else{
ui->spinBox_digitalHeadroom->setEnabled(false);
}
}
void MainWindow::checkUpdates()
{
QObject::connect(manager, &QNetworkAccessManager::finished,
this,&MainWindow::checkUpdatesFinished);
request.setUrl(QUrl("https://git.aldiserver.de/api/v1/repos/DKM-Tech/pa-calculator/releases?draft=false&pre-release=false&per_page=1&limit=1"));
manager->get(request);
}
void MainWindow::checkUpdatesFinished(QNetworkReply *reply)
{
if (reply->error()) {
//qDebug() << reply->errorString();
return;
}
QString ReplyText = reply->readAll();
QJsonDocument doc = QJsonDocument::fromJson(ReplyText.toUtf8());
QJsonArray array = doc.array();
QJsonObject obj=array.at(0).toObject();
QString current_version=obj.value("tag_name").toString().remove(0,1);
QString current_version_url=obj.value("html_url").toString();
QString installed_version = APP_VERSION;
installed_version=installed_version.mid(0,installed_version.lastIndexOf('.'));
//qDebug() << "Neueste Version: " <<current_version;
//qDebug() << "Installierte Version: " <<installed_version;
if (current_version!=installed_version){
QMessageBox msgBox;
msgBox.setTextFormat(Qt::RichText);
msgBox.setText("Es ist ein Update verfügbar!<br>Installierte Version: "+installed_version+"<br>Verfügbare Version: "+current_version+"<br> Du kannst das Update <a href='"+current_version_url+"'>hier</a> herunterladen.");
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
}
}

@ -6,14 +6,6 @@
#include "cspeaker.h"
#include <cdac.h>
#include <QThreadPool>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QFuture>
#include <QtConcurrent>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
@ -26,7 +18,6 @@ public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_ComboBox_selectSensUnit_currentIndexChanged(int index);
@ -51,11 +42,6 @@ private slots:
void on_actionOpen_Loudness_Analyzer_triggered();
void on_checkBox_optimizeGain_stateChanged(int arg1);
void checkUpdatesFinished(QNetworkReply *reply);
private:
Ui::MainWindow *ui;
cAmp* m_pCAmp;
@ -74,12 +60,8 @@ private:
void refreshLibraryDacs();
void checkUpdates();
void loadLibrary();
void saveLibrary();
QNetworkAccessManager *manager;
QNetworkRequest request;
QFuture<void> requestFuture;
};
#endif // MAINWINDOW_H

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1606</width>
<height>639</height>
<width>1242</width>
<height>590</height>
</rect>
</property>
<property name="sizePolicy">
@ -51,9 +51,6 @@
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QFormLayout" name="formLayout">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
@ -137,19 +134,6 @@
</item>
</widget>
</item>
<item row="4" column="0">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_19">
<property name="text">
@ -184,6 +168,19 @@
</property>
</widget>
</item>
<item row="4" column="0">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="8" column="0" colspan="2">
<widget class="QPushButton" name="pushButton">
<property name="font">
@ -229,9 +226,6 @@
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
@ -324,13 +318,29 @@
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_24">
<item row="7" column="0">
<widget class="QLabel" name="label_21">
<property name="text">
<string>Number of speaker in parallel</string>
<string>Load Speaker from library</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QComboBox" name="comboBox_librarySpeaker"/>
</item>
<item row="6" column="1">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="1">
<widget class="QSpinBox" name="spinBox_speakerCount">
<property name="minimum">
@ -341,16 +351,26 @@
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_21">
<item row="4" column="1">
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_24">
<property name="text">
<string>Load Speaker from library</string>
<string>Number of speaker in parallel</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QComboBox" name="comboBox_librarySpeaker"/>
</item>
<item row="8" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_loadSpeaker">
<property name="minimumSize">
@ -369,32 +389,6 @@
</property>
</widget>
</item>
<item row="4" column="1">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="1">
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
@ -413,9 +407,6 @@
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<layout class="QFormLayout" name="formLayout_3">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
@ -436,46 +427,6 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_23">
<property name="text">
<string>(at -18 dBFS)</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_25">
<property name="text">
<string>Output Gain Structure</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QCheckBox" name="checkBox_optimizeGain">
<property name="text">
<string>Optimize</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_22">
<property name="text">
@ -486,6 +437,29 @@
<item row="5" column="1">
<widget class="QComboBox" name="comboBox_dacPreset"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_23">
<property name="text">
<string>(at -18 dBFS)</string>
</property>
</widget>
</item>
<item row="4" column="1">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Maximum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_loadDac">
<property name="font">
@ -498,34 +472,31 @@
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="spinBox_digitalHeadroom">
<property name="enabled">
<bool>true</bool>
<item row="2" column="1">
<spacer name="verticalSpacer_7">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="suffix">
<string> dB</string>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>30</number>
</property>
<property name="value">
<number>5</number>
</property>
</widget>
</spacer>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_26">
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
<item row="3" column="1">
<spacer name="verticalSpacer_8">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="text">
<string>Digital Headroom</string>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</widget>
</spacer>
</item>
</layout>
</item>
@ -567,12 +538,6 @@
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<layout class="QFormLayout" name="formLayout_4">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<item row="4" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
@ -603,15 +568,9 @@
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_11">
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>Threshold:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
@ -625,9 +584,6 @@
<property name="text">
<string>0 dBFS</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="2" column="0">
@ -647,9 +603,6 @@
<property name="text">
<string>0 ms</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="3" column="0">
@ -669,12 +622,9 @@
<property name="text">
<string>0 ms</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="6" column="0">
<item row="1" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -705,9 +655,6 @@
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<layout class="QFormLayout" name="formLayout_5">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<item row="4" column="0">
<widget class="QLabel" name="label_13">
<property name="text">
@ -754,9 +701,6 @@
<property name="text">
<string>0 dBFS</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="2" column="0">
@ -776,9 +720,6 @@
<property name="text">
<string>0 ms</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="3" column="0">
@ -798,12 +739,9 @@
<property name="text">
<string>0 ms</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="6" column="1">
<item row="1" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -821,44 +759,6 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="font">
<font>
<pointsize>16</pointsize>
</font>
</property>
<property name="title">
<string>Amplifier</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<layout class="QFormLayout" name="formLayout_6">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_27">
<property name="text">
<string>Input Volume Control:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_inputVolumeControl">
<property name="text">
<string>0 dB</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</item>
</layout>
@ -868,8 +768,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1606</width>
<height>22</height>
<width>1242</width>
<height>17</height>
</rect>
</property>
<widget class="QMenu" name="menuLibrary">
@ -921,11 +821,6 @@
<string>Loudness Analyzer</string>
</property>
</action>
<action name="actionHelp">
<property name="text">
<string>Help</string>
</property>
</action>
</widget>
<resources/>
<connections/>

Loading…
Cancel
Save