@ -54,8 +54,20 @@ void MainWindow::on_ComboBox_selectSensUnit_currentIndexChanged(int index)
void MainWindow : : on_pushButton_requestLimiter_clicked ( )
void MainWindow : : on_pushButton_requestLimiter_clicked ( )
{
{
qreal vMaxSpeakerInRMS = 20 * std : : log10 ( qSqrt ( ui - > spinBox_speakerImp - > value ( ) * ui - > spinBox_speakerRMSPower - > value ( ) ) / 0.7746 ) ;
qreal speakerCount = ui - > spinBox_speakerCount - > value ( ) ;
qreal vMaxSpeakerInPeak = 20 * std : : log10 ( qSqrt ( ui - > spinBox_speakerImp - > value ( ) * ui - > spinBox_speakerPeakPower - > value ( ) ) / 0.7746 ) ;
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_volt = 0 ;
qreal vAmpsens_dBu = 0 ;
qreal vAmpsens_dBu = 0 ;
@ -77,20 +89,23 @@ void MainWindow::on_pushButton_requestLimiter_clicked()
qreal releaseTimeRMS = attackTimeRMS * 8 ;
qreal releaseTimeRMS = attackTimeRMS * 8 ;
qreal releaseTimePeak = attackTimeRMS ;
qreal releaseTimePeak = attackTimeRMS ;
if ( vAmpsens_dBu < vMaxAmpInRMS ) {
if ( vAmpsens_dBu < vMaxAmpInRMS ) {
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. " ) ;
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 ( ) ;
msgBox . exec ( ) ;
ui - > label_thresholdRMS - > setText ( QString ( " not required " ) ) ;
ui - > label_thresholdRMS - > setText ( QString ( " not required " ) ) ;
ui - > label_attackTimeRMS - > setText ( QString : : number ( attackTimeRMS , ' f ' , 2 ) + QString ( " ms " ) ) ;
ui - > label_attackTimeRMS - > setText ( QString : : number ( attackTimeRMS , ' f ' , 2 ) + QString ( " ms " ) ) ;
ui - > label_releaseTimeRMS - > setText ( QString : : number ( releaseTimeRMS , ' 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 " ) ) ;
ui - > label_UMaxAmpInRMS - > setText ( QString ( " not applicable " ) ) ;
thresholdPeak = - 18 - ( ui - > spinBox_digitalNominalLevel - > value ( ) - vAmpsens_dBu ) ;
thresholdPeak = - 18 - ( ui - > spinBox_digitalNominalLevel - > value ( ) - vAmpsens_dBu ) ;
ui - > label_thresholdPeak - > setText ( QString : : number ( thresholdPeak , ' f ' , 1 ) + QString ( " dBFS " ) ) ;
ui - > label_thresholdPeak - > setText ( QString : : number ( thresholdPeak , ' f ' , 1 ) + QString ( " dBFS " ) ) ;
ui - > label_releaseTimePeak - > setText ( QString : : number ( releaseTimePeak , ' f ' , 2 ) + QString ( " ms " ) ) ;
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) " ) ) ;
ui - > label_UMaxAmpInPeak - > setText ( QString : : number ( vAmpSens_volt , ' f ' , 2 ) + QString ( " V (= input sensitivity) " ) ) ;
} else if ( vAmpsens_dBu < vMaxAmpInPeak ) {
} 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. " ) ;
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. " ) ;
@ -99,24 +114,24 @@ void MainWindow::on_pushButton_requestLimiter_clicked()
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_attackTimeRMS - > setText ( QString : : number ( attackTimeRMS , ' f ' , 2 ) + QString ( " ms " ) ) ;
ui - > label_releaseTimeRMS - > setText ( QString : : number ( releaseTimeRMS , ' 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_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 ) ;
thresholdPeak = - 18 - ( ui - > spinBox_digitalNominalLevel - > value ( ) - vAmpsens_dBu ) ;
ui - > label_thresholdPeak - > setText ( QString : : number ( thresholdPeak , ' f ' , 1 ) + QString ( " dBFS " ) ) ;
ui - > label_thresholdPeak - > setText ( QString : : number ( thresholdPeak , ' f ' , 1 ) + QString ( " dBFS " ) ) ;
ui - > label_releaseTimePeak - > setText ( QString : : number ( releaseTimePeak , ' f ' , 2 ) + QString ( " ms " ) ) ;
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) " ) ) ;
ui - > label_UMaxAmpInPeak - > setText ( QString : : number ( vAmpSens_volt , ' f ' , 2 ) + QString ( " V (= input sensitivity) " ) ) ;
} else {
} 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_attackTimeRMS - > setText ( QString : : number ( attackTimeRMS , ' f ' , 2 ) + QString ( " ms " ) ) ;
ui - > label_releaseTimeRMS - > setText ( QString : : number ( releaseTimeRMS , ' 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_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_thresholdPeak - > setText ( QString : : number ( thresholdPeak , ' f ' , 1 ) + QString ( " dBFS " ) ) ;
ui - > label_releaseTimePeak - > setText ( QString : : number ( releaseTimePeak , ' f ' , 2 ) + QString ( " ms " ) ) ;
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) " ) ) ;
ui - > label_UMaxAmpInPeak - > setText ( QString : : number ( vMaxAmpInPeak , ' f ' , 2 ) + QString ( " dBU ( " ) + QString : : number ( qPow ( 10 , vMaxAmpInPeak / 20 ) * 0.7746 , ' f ' , 2 ) + QString ( " V) " ) ) ;
}
}