From 57037559ca68463ed443416b763bb1c322bf9847 Mon Sep 17 00:00:00 2001 From: oddtime Date: Sun, 3 Jan 2021 09:04:10 +0100 Subject: [PATCH 01/26] Note & Instr. Pan interaction --- src/core/Sampler/Sampler.cpp | 56 +++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index ca30db5b1..42d563b9d 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -233,6 +233,28 @@ void Sampler::noteOff(Note* pNote ) } + +float getRatioPan( float fPan_L, float fPan_R ) { + // returns the single pan parameter in [-1,1] from the L,R gains + // It doesn't return ERROR if (L,R) = (0,0) nor if they are negative!!!!! + if ( fPan_L >= fPan_R ) { + return fPan_R / fPan_L - 1.; + } else { + return 1. - fPan_L / fPan_R; + } +} + +float ratioStraightPolPanLaw( float fPan ) { + // this return pan_L in the straight polygonal pan law, "ratio" pan parameter in [-1;1] + // It doesn't return ERROR if p is out of [-1;1] !!!!! + if ( fPan <= 0 ) { + return 1.; + } else { + return ( 1. - fPan ); + } +} + + /// Render a note /// Return false: the note is not ended /// Return true: the note is ended @@ -256,6 +278,28 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) ERRORLOG( "NULL instrument" ); return 1; } + // new instrument and note pan interaction-------------------------- + // note pan moves the pan in a smaller pan range centered at instrument pan + + // get the note and instrument pan parameters in [-1,1] + + float (*getPan)( float, float ); // TODO must be a song member, set in preferences to point the desired pan parameter + // use "ratio" pan parameter (due to the current pan law) + getPan = &getRatioPan; + float fNotePan = getPan( pNote->get_pan_l(), pNote->get_pan_r() ); + float fInstrPan = getPan( pInstr->get_pan_l(), pInstr->get_pan_r() ); + + // resultant pan: note pan moves the pan in a smaller pan range centered at instrument pan + float fPan = fInstrPan + fNotePan * ( 1 - fabs( fInstrPan ) ); + + // Pass fResPan to the Pan Law + // use Straight pol pan law. + float (*panLaw)( float ); // TODO must be a song member, set in preferences to point the desired pan law + panLaw = &ratioStraightPolPanLaw; + float a = 0.5; // max gain (it has been 0.5 until version 1.0) + float fPan_L = a * panLaw( fPan); + float fPan_R = a * panLaw( -fPan); + //--------------------------------------------------------- bool nReturnValues [pInstr->get_components()->size()]; @@ -604,9 +648,12 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) cost_L = cost_L * pNote->get_velocity(); // note velocity cost_R = cost_R * pNote->get_velocity(); // note velocity } - cost_L = cost_L * pNote->get_pan_l(); // note pan + + + cost_L *= fPan_L; //pan + //cost_L = cost_L * pNote->get_pan_l(); // note pan cost_L = cost_L * fLayerGain; // layer gain - cost_L = cost_L * pInstr->get_pan_l(); // instrument pan + //cost_L = cost_L * pInstr->get_pan_l(); // instrument pan cost_L = cost_L * pInstr->get_gain(); // instrument gain cost_L = cost_L * pCompo->get_gain(); // Component gain @@ -619,9 +666,10 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) cost_L = cost_L * pSong->get_volume(); // song volume cost_L = cost_L * 2; // max pan is 0.5 - cost_R = cost_R * pNote->get_pan_r(); // note pan + cost_R *= fPan_R; // pan + //cost_R = cost_R * pNote->get_pan_r(); // note pan cost_R = cost_R * fLayerGain; // layer gain - cost_R = cost_R * pInstr->get_pan_r(); // instrument pan + //cost_R = cost_R * pInstr->get_pan_r(); // instrument pan cost_R = cost_R * pInstr->get_gain(); // instrument gain cost_R = cost_R * pCompo->get_gain(); // Component gain From c908c32043c61ce410cd2617f9f09c2164c4f506 Mon Sep 17 00:00:00 2001 From: oddtime Date: Sun, 3 Jan 2021 10:15:49 +0100 Subject: [PATCH 02/26] pan laws as static member functions of Sampler --- src/core/Sampler/Sampler.cpp | 27 +++++++++++++++------------ src/core/Sampler/Sampler.h | 3 ++- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 42d563b9d..22bc6a86b 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -233,8 +233,8 @@ void Sampler::noteOff(Note* pNote ) } - -float getRatioPan( float fPan_L, float fPan_R ) { +/// functions for pan parameters and laws----------------- +float Sampler::getRatioPan( float fPan_L, float fPan_R ) { // returns the single pan parameter in [-1,1] from the L,R gains // It doesn't return ERROR if (L,R) = (0,0) nor if they are negative!!!!! if ( fPan_L >= fPan_R ) { @@ -244,7 +244,8 @@ float getRatioPan( float fPan_L, float fPan_R ) { } } -float ratioStraightPolPanLaw( float fPan ) { +//pan laws +float Sampler::ratioStraightPolPanLaw( float fPan ) { // this return pan_L in the straight polygonal pan law, "ratio" pan parameter in [-1;1] // It doesn't return ERROR if p is out of [-1;1] !!!!! if ( fPan <= 0 ) { @@ -253,7 +254,7 @@ float ratioStraightPolPanLaw( float fPan ) { return ( 1. - fPan ); } } - +//------------------------------------------------------------------ /// Render a note /// Return false: the note is not ended @@ -278,14 +279,15 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) ERRORLOG( "NULL instrument" ); return 1; } + // new instrument and note pan interaction-------------------------- // note pan moves the pan in a smaller pan range centered at instrument pan // get the note and instrument pan parameters in [-1,1] - - float (*getPan)( float, float ); // TODO must be a song member, set in preferences to point the desired pan parameter + // TODO a new song member, set in preferences, must point the desired pan parameter Sampler member function + float (*getPan)( float, float ); // use "ratio" pan parameter (due to the current pan law) - getPan = &getRatioPan; + getPan = &this->getRatioPan; float fNotePan = getPan( pNote->get_pan_l(), pNote->get_pan_r() ); float fInstrPan = getPan( pInstr->get_pan_l(), pInstr->get_pan_r() ); @@ -293,12 +295,13 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) float fPan = fInstrPan + fNotePan * ( 1 - fabs( fInstrPan ) ); // Pass fResPan to the Pan Law - // use Straight pol pan law. - float (*panLaw)( float ); // TODO must be a song member, set in preferences to point the desired pan law - panLaw = &ratioStraightPolPanLaw; + // use Straight pol pan law. + // TODO a new song member, set in preferences, must point the desired pan law Sampler member function + float (*panLaw)( float ); + panLaw = &this->ratioStraightPolPanLaw; float a = 0.5; // max gain (it has been 0.5 until version 1.0) - float fPan_L = a * panLaw( fPan); - float fPan_R = a * panLaw( -fPan); + float fPan_L = a * panLaw( fPan ); + float fPan_R = a * panLaw( -fPan ); //--------------------------------------------------------- bool nReturnValues [pInstr->get_components()->size()]; diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index 28ec0ae2c..4cefa0333 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -108,7 +108,8 @@ class Sampler : public H2Core::Object * layer will be loaded with a nullptr instead. */ void reinitializePlaybackTrack(); - + static float getRatioPan( float fPan_L, float fPan_R ); + static float ratioStraightPolPanLaw( float fPan ); private: std::vector m_playingNotesQueue; From 83db742f8be95eaf07e4a5cc31c0344881316ffe Mon Sep 17 00:00:00 2001 From: oddtime Date: Sun, 10 Jan 2021 16:23:53 +0100 Subject: [PATCH 03/26] add descriptive comments, make getRatioPan() obligatory, avoid the multiplication * 0.5 *2 --- src/core/Sampler/Sampler.cpp | 93 ++++++++++++++++++++++++++---------- src/core/Sampler/Sampler.h | 2 +- 2 files changed, 69 insertions(+), 26 deletions(-) diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 22bc6a86b..8e263f0b7 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -233,21 +233,55 @@ void Sampler::noteOff(Note* pNote ) } -/// functions for pan parameters and laws----------------- +// functions for pan parameters and laws----------------- + float Sampler::getRatioPan( float fPan_L, float fPan_R ) { - // returns the single pan parameter in [-1,1] from the L,R gains - // It doesn't return ERROR if (L,R) = (0,0) nor if they are negative!!!!! - if ( fPan_L >= fPan_R ) { - return fPan_R / fPan_L - 1.; + /* returns the single pan parameter in [-1,1] from the L,R gains + * as it was input from the GUI (up to scale and translation, which is arbitrary) + */ + if ( fPan_L < 0. || fPan_R < 0. || ( fPan_L == 0. && fPan_R == 0.) ) { // invalid input + //TODO Warning + return 0.; // default central value } else { - return 1. - fPan_L / fPan_R; + if ( fPan_L >= fPan_R ) { + return fPan_R / fPan_L - 1.; + } else { + return 1. - fPan_L / fPan_R; + } } } -//pan laws -float Sampler::ratioStraightPolPanLaw( float fPan ) { - // this return pan_L in the straight polygonal pan law, "ratio" pan parameter in [-1;1] - // It doesn't return ERROR if p is out of [-1;1] !!!!! + /** PAN LAWS + * The following pan law functions return pan_L (==L, which is the gain for Left channel). + * They assume a fPan argument domain in [-1;1], and this always happens + * thanks to the previously called getRatioPan(). + *---------------------------- + * For the right channel use: R(p) == pan_R(p) = pan_L(-p) == L(-p) + * thanks to the Left-Right symmetry. + *-------------------------------------- + * The prefix of the function names tells the interpretation of the fPan argument: + * + * "ratio" parameter: + * fPan = R/L - 1 if panned to the left, + * fPan = 1 - L/R if panned to the right. + * + * "linear" parameter (arithmetic weighted mean): + * fPan = ( R - L ) / ( R + L ). + * + * "polar" parameter (polar coordinate in LR plane): + * fPan = 4 / pi * arctan( R/L ) - 1 if L != 0, + * fPan = 1 if L == 0. + * + * Note: using a different fPan interpretation makes the pan law output more central or more lateral: + * from more central to more lateral: + * "ratio" ---> "polar" ---> "linear" + *--------------------------------------------- + * After the prefix, the name describes the Image of the pan law in the LR plane. + * (remember that each pan law is a parametrized curve in LR plane. + * E.g.: "StraightPolygonal", "ConstantSum", "ConstantPower"... + */ +float Sampler::ratioStraightPolygonalPanLaw( float fPan ) { + // the straight polygonal pan law interpreting fPan as the "ratio" parameter if ( fPan <= 0 ) { return 1.; } else { @@ -283,25 +317,34 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) // new instrument and note pan interaction-------------------------- // note pan moves the pan in a smaller pan range centered at instrument pan - // get the note and instrument pan parameters in [-1,1] - // TODO a new song member, set in preferences, must point the desired pan parameter Sampler member function - float (*getPan)( float, float ); - // use "ratio" pan parameter (due to the current pan law) - getPan = &this->getRatioPan; - float fNotePan = getPan( pNote->get_pan_l(), pNote->get_pan_r() ); - float fInstrPan = getPan( pInstr->get_pan_l(), pInstr->get_pan_r() ); + /** reconvert (pan_L,pan_R) to a single pan parameter (as it was input from the GUI) in [-1,1]. + * This redundance avoids to import old files as legacy. + * ALWAYS use getRatioPan(), since H2 always stores pan_L,pan_R with a ratioStraightPolygonalPanLaw, + * up to constant multiplication, even if user chooses another type of pan law. + *-----Historical Note----- + * Originally pan_L,pan_R were actually gains for each channel. + * "instrument" and "note" pans were multiplied as in a gain CHAIN in each separate channel, + * so the chain killed the signal if instrument and note pans were hard-sided to opposites sides! + */ + float fNotePan = getRatioPan( pNote->get_pan_l(), pNote->get_pan_r() ); + float fInstrPan = getRatioPan( pInstr->get_pan_l(), pInstr->get_pan_r() ); - // resultant pan: note pan moves the pan in a smaller pan range centered at instrument pan + /** Get the resultant pan, following a "matryoshka" multi panning: + * note pan moves the pan in a smaller pan range centered at instrument pan. + * The "note resultant pan range" depends on instrPan value: + * if instrPan is central, notePan moves the signal in the whole pan range (really from left to right); + * if instrPan is sided, notePan moves the signal in a progressively smaller pan range centered at instrument pan; + * if instrPan is HARD-sided, notePan doesn't have any effect. + */ float fPan = fInstrPan + fNotePan * ( 1 - fabs( fInstrPan ) ); - // Pass fResPan to the Pan Law + // Pass fPan to the Pan Law // use Straight pol pan law. // TODO a new song member, set in preferences, must point the desired pan law Sampler member function float (*panLaw)( float ); - panLaw = &this->ratioStraightPolPanLaw; - float a = 0.5; // max gain (it has been 0.5 until version 1.0) - float fPan_L = a * panLaw( fPan ); - float fPan_R = a * panLaw( -fPan ); + panLaw = &this->ratioStraightPolygonalPanLaw; + float fPan_L = panLaw( fPan ); + float fPan_R = panLaw( -fPan ); //--------------------------------------------------------- bool nReturnValues [pInstr->get_components()->size()]; @@ -667,7 +710,7 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) cost_track_L = cost_L * 2; } cost_L = cost_L * pSong->get_volume(); // song volume - cost_L = cost_L * 2; // max pan is 0.5 + // cost_L = cost_L * 2; // max pan is 0.5 cost_R *= fPan_R; // pan //cost_R = cost_R * pNote->get_pan_r(); // note pan @@ -683,7 +726,7 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) cost_track_R = cost_R * 2; } cost_R = cost_R * pSong->get_volume(); // song pan - cost_R = cost_R * 2; // max pan is 0.5 + // cost_R = cost_R * 2; // max pan is 0.5 } // direct track outputs only use velocity diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index 4cefa0333..25d54223e 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -109,7 +109,7 @@ class Sampler : public H2Core::Object */ void reinitializePlaybackTrack(); static float getRatioPan( float fPan_L, float fPan_R ); - static float ratioStraightPolPanLaw( float fPan ); + static float ratioStraightPolygonalPanLaw( float fPan ); private: std::vector m_playingNotesQueue; From 617ffd31cd799b3467a1aebee98ec41ba7eee5c2 Mon Sep 17 00:00:00 2001 From: oddtime Date: Sun, 10 Jan 2021 17:16:24 +0100 Subject: [PATCH 04/26] added other pan law functions --- src/core/Sampler/Sampler.cpp | 36 +++++++++++++++++++++++++++++++++--- src/core/Sampler/Sampler.h | 4 ++++ 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 8e263f0b7..66f2ee56c 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -272,14 +272,44 @@ float Sampler::getRatioPan( float fPan_L, float fPan_R ) { * fPan = 4 / pi * arctan( R/L ) - 1 if L != 0, * fPan = 1 if L == 0. * - * Note: using a different fPan interpretation makes the pan law output more central or more lateral: - * from more central to more lateral: + * Note: using a different fPan interpretation makes the output more central or more lateral. + * From more central to more lateral: * "ratio" ---> "polar" ---> "linear" *--------------------------------------------- * After the prefix, the name describes the Image of the pan law in the LR plane. * (remember that each pan law is a parametrized curve in LR plane. - * E.g.: "StraightPolygonal", "ConstantSum", "ConstantPower"... + * E.g.: + * "ConstantSum": + * it's properly used in an anechoic room, where there are no reflections. + * Ensures uniform volumes in MONO export, + * has -6.02 dB center compensation. + * "ConstantPower": + * probably makes uniform volumes in a common room, + * has -3.01 dB center compensation. + * "StraightPolygonal": + * one gain is constant while the other is progressively decreased. + * It's ideal as BALANCE law of DUAL-channel track, + * has 0 dB center compensation. */ + +float Sampler::ratioConstantSumPanLaw( float fPan ) { + // the constant Sum pan law interpreting fPan as the "ratio" parameter + if ( fPan <= 0 ) { + return 1. / (2. + fPan ); + } else { + return ( 1. - fPan) / ( 2. - fPan ); + } +} + +float Sampler::ratioConstantPowerPanLaw( float fPan ) { + // the constant power pan law interpreting fPan as the "ratio" parameter + if ( fPan <= 0 ) { + return 1. / sqrt( 1 + ( 1. + fPan ) * ( 1. + fPan ) ); + } else { + return ( 1. - fPan) / sqrt( 1 + ( 1. - fPan ) * ( 1. - fPan ) ); + } +} + float Sampler::ratioStraightPolygonalPanLaw( float fPan ) { // the straight polygonal pan law interpreting fPan as the "ratio" parameter if ( fPan <= 0 ) { diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index 25d54223e..455c1701d 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -108,7 +108,11 @@ class Sampler : public H2Core::Object * layer will be loaded with a nullptr instead. */ void reinitializePlaybackTrack(); + + // functions for pan law static float getRatioPan( float fPan_L, float fPan_R ); + static float ratioConstantSumPanLaw( float fPan ); + static float ratioConstantPowerPanLaw( float fPan ); static float ratioStraightPolygonalPanLaw( float fPan ); private: From f847974d041b7e67915129bae34efead8e38697c Mon Sep 17 00:00:00 2001 From: oddtime Date: Sun, 10 Jan 2021 19:47:41 +0100 Subject: [PATCH 05/26] select pan Law from preferences --- src/core/Basics/Song.cpp | 2 + src/core/Basics/Song.h | 15 ++++ src/core/Sampler/Sampler.cpp | 20 +++++- src/core/Sampler/Sampler.h | 12 +++- src/gui/src/PreferencesDialog.cpp | 7 ++ src/gui/src/PreferencesDialog_UI.ui | 106 +++++++++++++++++----------- 6 files changed, 117 insertions(+), 45 deletions(-) diff --git a/src/core/Basics/Song.cpp b/src/core/Basics/Song.cpp index 98e20c662..c1d3db548 100644 --- a/src/core/Basics/Song.cpp +++ b/src/core/Basics/Song.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #ifdef H2CORE_HAVE_OSC #include @@ -86,6 +87,7 @@ Song::Song( const QString& name, const QString& author, float bpm, float volume , __playback_track_enabled( false ) , __playback_track_volume( 0.0 ) , __velocity_automation_path( nullptr ) + , m_nPanLawIdx( RATIO_STRAIGHT_POLYGONAL ) { INFOLOG( QString( "INIT '%1'" ).arg( __name ) ); diff --git a/src/core/Basics/Song.h b/src/core/Basics/Song.h index a4b3676fe..93d0fd57d 100644 --- a/src/core/Basics/Song.h +++ b/src/core/Basics/Song.h @@ -211,6 +211,9 @@ class Song : public H2Core::Object */ bool has_missing_samples(); void clear_missing_samples(); + + void setPanLawIdx( int idx ); + int getPanLawIdx() const ; private: ///< volume of the song (0.0..1.0) @@ -265,8 +268,12 @@ class Song : public H2Core::Object AutomationPath* __velocity_automation_path; ///< license of the song QString __license; + /** this is set in preferences + */ + int m_nPanLawIdx; }; + inline bool Song::get_is_modified() const { return __is_modified; @@ -419,6 +426,14 @@ inline void Song::set_playback_track_volume( const float volume ) __playback_track_volume = volume; } +inline void Song::setPanLawIdx( int idx ) { + m_nPanLawIdx = idx; +} + +inline int Song::getPanLawIdx() const { + return m_nPanLawIdx; +} + /** \ingroup H2CORE \brief Read XML file of a song diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 66f2ee56c..dd0353008 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -292,7 +292,7 @@ float Sampler::getRatioPan( float fPan_L, float fPan_R ) { * has 0 dB center compensation. */ -float Sampler::ratioConstantSumPanLaw( float fPan ) { +float Sampler::ratioConstSumPanLaw( float fPan ) { // the constant Sum pan law interpreting fPan as the "ratio" parameter if ( fPan <= 0 ) { return 1. / (2. + fPan ); @@ -301,7 +301,7 @@ float Sampler::ratioConstantSumPanLaw( float fPan ) { } } -float Sampler::ratioConstantPowerPanLaw( float fPan ) { +float Sampler::ratioConstPowerPanLaw( float fPan ) { // the constant power pan law interpreting fPan as the "ratio" parameter if ( fPan <= 0 ) { return 1. / sqrt( 1 + ( 1. + fPan ) * ( 1. + fPan ) ); @@ -372,7 +372,8 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) // use Straight pol pan law. // TODO a new song member, set in preferences, must point the desired pan law Sampler member function float (*panLaw)( float ); - panLaw = &this->ratioStraightPolygonalPanLaw; + panLaw = getPanLawAddress( pSong->getPanLawIdx() ); + //panLaw = &this->ratioStraightPolygonalPanLaw; float fPan_L = panLaw( fPan ); float fPan_R = panLaw( -fPan ); //--------------------------------------------------------- @@ -1544,5 +1545,18 @@ void Sampler::reinitializePlaybackTrack() m_nPlayBackSamplePosition = 0; } +inline float ( *Sampler::getPanLawAddress( int idx ) ) ( float ) { + if ( idx == RATIO_STRAIGHT_POLYGONAL ) { + return &ratioStraightPolygonalPanLaw; + } else if ( idx == RATIO_CONST_POWER ) { + return &ratioConstPowerPanLaw; + } else if ( idx == RATIO_CONST_SUM ) { + return &ratioConstSumPanLaw; + } else { + //TODO warning + return &ratioStraightPolygonalPanLaw; // default value + } +} + }; diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index 455c1701d..dffe05090 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -32,6 +32,11 @@ #include #include +// NOTE: the following value must be respected by the indices in GUI preferences combo box!!! +#define RATIO_STRAIGHT_POLYGONAL 0 +#define RATIO_CONST_POWER 1 +#define RATIO_CONST_SUM 2 + namespace H2Core { @@ -111,9 +116,11 @@ class Sampler : public H2Core::Object // functions for pan law static float getRatioPan( float fPan_L, float fPan_R ); - static float ratioConstantSumPanLaw( float fPan ); - static float ratioConstantPowerPanLaw( float fPan ); static float ratioStraightPolygonalPanLaw( float fPan ); + static float ratioConstPowerPanLaw( float fPan ); + static float ratioConstSumPanLaw( float fPan ); + + float ( *getPanLawAddress( int idx ) ) ( float ); private: std::vector m_playingNotesQueue; @@ -175,6 +182,7 @@ class Sampler : public H2Core::Object ); }; + } // namespace #endif diff --git a/src/gui/src/PreferencesDialog.cpp b/src/gui/src/PreferencesDialog.cpp index 9af262dc6..b4fc3b148 100644 --- a/src/gui/src/PreferencesDialog.cpp +++ b/src/gui/src/PreferencesDialog.cpp @@ -205,6 +205,9 @@ PreferencesDialog::PreferencesDialog(QWidget* parent) resampleComboBox->setCurrentIndex( (int) AudioEngine::get_instance()->get_sampler()->getInterpolateMode() ); + Song* pSong = Hydrogen::get_instance()->getSong(); + panLawComboBox->setCurrentIndex( pSong->getPanLawIdx() ); + // Appearance tab QString applicationFamily = pPref->getApplicationFontFamily(); int applicationPointSize = pPref->getApplicationFontPointSize(); @@ -478,6 +481,10 @@ void PreferencesDialog::on_okBtn_clicked() else if ( sampleRateComboBox->currentText() == "96000" ) { pPref->m_nSampleRate = 96000; } + + Song* pSong = Hydrogen::get_instance()->getSong(); + pSong->setPanLawIdx( panLawComboBox->currentIndex() ); + // metronome diff --git a/src/gui/src/PreferencesDialog_UI.ui b/src/gui/src/PreferencesDialog_UI.ui index 06a2cba5b..7afc6f389 100644 --- a/src/gui/src/PreferencesDialog_UI.ui +++ b/src/gui/src/PreferencesDialog_UI.ui @@ -32,7 +32,7 @@ QTabWidget::Rounded - 0 + 1 @@ -384,45 +384,45 @@ - - - - - 0 - 22 - - - - BBT sync method - - - Specifies the variable, which has to remain constant in order to guarantee a working synchronization and relocation in the presence of another Jack timebase master. - - - - - - - - 0 - 22 - - - - Specifies the variable, which has to remain constant in order to guarantee a working synchronization and relocation in the presence of another Jack timebase master. - - - - constant measure - - - - - matching bars - - - - + + + + + 0 + 22 + + + + Specifies the variable, which has to remain constant in order to guarantee a working synchronization and relocation in the presence of another Jack timebase master. + + + BBT sync method + + + + + + + + 0 + 22 + + + + Specifies the variable, which has to remain constant in order to guarantee a working synchronization and relocation in the presence of another Jack timebase master. + + + + constant measure + + + + + matching bars + + + + @@ -564,6 +564,32 @@ + + + + Pan Law + + + + + + + + Balance Law (0 compensation) + + + + + Costant Power + + + + + Constant Sum + + + + From 60574be7f7ec52c118383aca24b5301dfbaa8c6e Mon Sep 17 00:00:00 2001 From: oddtime Date: Sun, 10 Jan 2021 20:42:56 +0100 Subject: [PATCH 06/26] added 3 linear weighted pan laws --- src/core/Sampler/Sampler.cpp | 47 +++++++++++++++++++++++------ src/core/Sampler/Sampler.h | 9 +++++- src/gui/src/PreferencesDialog_UI.ui | 17 ++++++++++- 3 files changed, 61 insertions(+), 12 deletions(-) diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index dd0353008..513e4403e 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -91,6 +91,14 @@ Sampler::Sampler() // dummy instrument used for playback track m_pPlaybackTrackInstrument = createInstrument( PLAYBACK_INSTR_ID, sEmptySampleFilename, 0.8 ); m_nPlayBackSamplePosition = 0; + + // write the addresses of pan law function to avoid many switch - case later + m_panLawAddresses[ RATIO_STRAIGHT_POLYGONAL ] = &this->ratioStraightPolygonalPanLaw; + m_panLawAddresses[ RATIO_CONST_POWER ] = &this->ratioConstPowerPanLaw; + m_panLawAddresses[ RATIO_CONST_SUM ] = &this->ratioConstSumPanLaw; + m_panLawAddresses[ LINEAR_STRAIGHT_POLYGONAL ] = &this->linearStraightPolygonalPanLaw; + m_panLawAddresses[ LINEAR_CONST_POWER ] = &this->linearConstPowerPanLaw; + m_panLawAddresses[ LINEAR_CONST_SUM ] = &this->linearConstSumPanLaw; } @@ -291,13 +299,12 @@ float Sampler::getRatioPan( float fPan_L, float fPan_R ) { * It's ideal as BALANCE law of DUAL-channel track, * has 0 dB center compensation. */ - -float Sampler::ratioConstSumPanLaw( float fPan ) { - // the constant Sum pan law interpreting fPan as the "ratio" parameter +float Sampler::ratioStraightPolygonalPanLaw( float fPan ) { + // the straight polygonal pan law interpreting fPan as the "ratio" parameter if ( fPan <= 0 ) { - return 1. / (2. + fPan ); + return 1.; } else { - return ( 1. - fPan) / ( 2. - fPan ); + return ( 1. - fPan ); } } @@ -306,18 +313,37 @@ float Sampler::ratioConstPowerPanLaw( float fPan ) { if ( fPan <= 0 ) { return 1. / sqrt( 1 + ( 1. + fPan ) * ( 1. + fPan ) ); } else { - return ( 1. - fPan) / sqrt( 1 + ( 1. - fPan ) * ( 1. - fPan ) ); + return ( 1. - fPan ) / sqrt( 1 + ( 1. - fPan ) * ( 1. - fPan ) ); } } -float Sampler::ratioStraightPolygonalPanLaw( float fPan ) { - // the straight polygonal pan law interpreting fPan as the "ratio" parameter +float Sampler::ratioConstSumPanLaw( float fPan ) { + // the constant Sum pan law interpreting fPan as the "ratio" parameter + if ( fPan <= 0 ) { + return 1. / ( 2. + fPan ); + } else { + return ( 1. - fPan ) / ( 2. - fPan ); + } +} + +float Sampler::linearStraightPolygonalPanLaw( float fPan ) { + // the constant power pan law interpreting fPan as the "linear" parameter if ( fPan <= 0 ) { return 1.; } else { - return ( 1. - fPan ); + return ( 1. - fPan ) / ( 1. + fPan ); } } + +float Sampler::linearConstPowerPanLaw( float fPan ) { + // the constant power pan law interpreting fPan as the "linear" parameter + return ( 1. - fPan ) / sqrt( 2. * ( 1 + fPan * fPan ) ); +} + +float Sampler::linearConstSumPanLaw( float fPan ) { + // the constant Sum pan law interpreting fPan as the "linear" parameter + return ( 1. - fPan ) * 0.5; +} //------------------------------------------------------------------ /// Render a note @@ -372,8 +398,9 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) // use Straight pol pan law. // TODO a new song member, set in preferences, must point the desired pan law Sampler member function float (*panLaw)( float ); - panLaw = getPanLawAddress( pSong->getPanLawIdx() ); + //panLaw = getPanLawAddress( pSong->getPanLawIdx() ); //panLaw = &this->ratioStraightPolygonalPanLaw; + panLaw = m_panLawAddresses[ pSong->getPanLawIdx() ]; float fPan_L = panLaw( fPan ); float fPan_R = panLaw( -fPan ); //--------------------------------------------------------- diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index dffe05090..6351bd97f 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -36,6 +36,9 @@ #define RATIO_STRAIGHT_POLYGONAL 0 #define RATIO_CONST_POWER 1 #define RATIO_CONST_SUM 2 +#define LINEAR_STRAIGHT_POLYGONAL 3 +#define LINEAR_CONST_POWER 4 +#define LINEAR_CONST_SUM 5 namespace H2Core { @@ -116,10 +119,14 @@ class Sampler : public H2Core::Object // functions for pan law static float getRatioPan( float fPan_L, float fPan_R ); + static float ratioStraightPolygonalPanLaw( float fPan ); static float ratioConstPowerPanLaw( float fPan ); static float ratioConstSumPanLaw( float fPan ); - + static float linearStraightPolygonalPanLaw( float fPan ); + static float linearConstPowerPanLaw( float fPan ); + static float linearConstSumPanLaw( float fPan ); + float ( *m_panLawAddresses[6] ) ( float ); float ( *getPanLawAddress( int idx ) ) ( float ); private: diff --git a/src/gui/src/PreferencesDialog_UI.ui b/src/gui/src/PreferencesDialog_UI.ui index 7afc6f389..b931a850e 100644 --- a/src/gui/src/PreferencesDialog_UI.ui +++ b/src/gui/src/PreferencesDialog_UI.ui @@ -580,7 +580,7 @@ - Costant Power + Constant Power @@ -588,6 +588,21 @@ Constant Sum + + + Balance Law - linear weighted parameter + + + + + Constant Power - linear weighted pan parameter + + + + + Constant Sum - linear weighted pan parameter + + From e977d81aceec8e70ed39523385bed1e28feac6a0 Mon Sep 17 00:00:00 2001 From: oddtime Date: Sun, 10 Jan 2021 21:21:02 +0100 Subject: [PATCH 07/26] save pan law as integer index in .h2song --- src/core/Basics/Song.cpp | 3 +++ src/core/LocalFileMgr.cpp | 1 + 2 files changed, 4 insertions(+) diff --git a/src/core/Basics/Song.cpp b/src/core/Basics/Song.cpp index c1d3db548..a96e08936 100644 --- a/src/core/Basics/Song.cpp +++ b/src/core/Basics/Song.cpp @@ -168,6 +168,7 @@ Song* Song::get_default_song() pSong->set_humanize_time_value( 0.0 ); pSong->set_humanize_velocity_value( 0.0 ); pSong->set_swing_factor( 0.0 ); + pSong->setPanLawIdx( RATIO_STRAIGHT_POLYGONAL ); InstrumentList* pInstrList = new InstrumentList(); Instrument* pNewInstr = new Instrument( EMPTY_INSTR_ID, "New instrument" ); @@ -673,6 +674,7 @@ Song* SongReader::readSong( const QString& filename ) float fHumanizeTimeValue = LocalFileMng::readXmlFloat( songNode, "humanize_time", 0.0 ); float fHumanizeVelocityValue = LocalFileMng::readXmlFloat( songNode, "humanize_velocity", 0.0 ); float fSwingFactor = LocalFileMng::readXmlFloat( songNode, "swing_factor", 0.0 ); + int nPanLawIdx = LocalFileMng::readXmlFloat( songNode, "pan_law", RATIO_STRAIGHT_POLYGONAL ); pSong = new Song( sName, sAuthor, fBpm, fVolume ); pSong->set_metronome_volume( fMetronomeVolume ); @@ -683,6 +685,7 @@ Song* SongReader::readSong( const QString& filename ) pSong->set_humanize_time_value( fHumanizeTimeValue ); pSong->set_humanize_velocity_value( fHumanizeVelocityValue ); pSong->set_swing_factor( fSwingFactor ); + pSong->setPanLawIdx( nPanLawIdx ); pSong->set_playback_track_filename( sPlaybackTrack ); pSong->set_playback_track_enabled( bPlaybackTrackEnabled ); pSong->set_playback_track_volume( fPlaybackTrackVolume ); diff --git a/src/core/LocalFileMgr.cpp b/src/core/LocalFileMgr.cpp index 479167690..8e9eef650 100644 --- a/src/core/LocalFileMgr.cpp +++ b/src/core/LocalFileMgr.cpp @@ -380,6 +380,7 @@ int SongWriter::writeSong( Song * pSong, const QString& filename ) LocalFileMng::writeXmlString( songNode, "humanize_time", QString("%1").arg( pSong->get_humanize_time_value() ) ); LocalFileMng::writeXmlString( songNode, "humanize_velocity", QString("%1").arg( pSong->get_humanize_velocity_value() ) ); LocalFileMng::writeXmlString( songNode, "swing_factor", QString("%1").arg( pSong->get_swing_factor() ) ); + LocalFileMng::writeXmlString( songNode, "pan_law", QString("%1").arg( pSong->getPanLawIdx() ) ); // component List QDomNode componentListNode = doc.createElement( "componentList" ); From 90bd8a521e61f68c38e5d686ef5320d6cc3ac0c7 Mon Sep 17 00:00:00 2001 From: oddtime Date: Sun, 10 Jan 2021 21:56:47 +0100 Subject: [PATCH 08/26] added 3 polar pan laws --- src/core/Sampler/Sampler.cpp | 25 +++++++++++++++++++++++++ src/core/Sampler/Sampler.h | 12 ++++++++++-- src/gui/src/PreferencesDialog_UI.ui | 23 +++++++++++++++++++---- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 513e4403e..bbf65d057 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -99,6 +99,9 @@ Sampler::Sampler() m_panLawAddresses[ LINEAR_STRAIGHT_POLYGONAL ] = &this->linearStraightPolygonalPanLaw; m_panLawAddresses[ LINEAR_CONST_POWER ] = &this->linearConstPowerPanLaw; m_panLawAddresses[ LINEAR_CONST_SUM ] = &this->linearConstSumPanLaw; + m_panLawAddresses[ POLAR_STRAIGHT_POLYGONAL ] = &this->polarStraightPolygonalPanLaw; + m_panLawAddresses[ POLAR_CONST_POWER ] = &this->polarConstPowerPanLaw; + m_panLawAddresses[ POLAR_CONST_SUM ] = &this->polarConstSumPanLaw; } @@ -344,6 +347,28 @@ float Sampler::linearConstSumPanLaw( float fPan ) { // the constant Sum pan law interpreting fPan as the "linear" parameter return ( 1. - fPan ) * 0.5; } + +float Sampler::polarStraightPolygonalPanLaw( float fPan ) { + // the constant power pan law interpreting fPan as the "linear" parameter + float fTheta = 0.25 * M_PI * ( fPan + 1 ); + if ( fPan <= 0 ) { + return 1.; + } else { + return cos( fTheta ) / sin( fTheta ); + } +} + +float Sampler::polarConstPowerPanLaw( float fPan ) { + float fTheta = 0.25 * M_PI * ( fPan + 1 ); + // the constant power pan law interpreting fPan as the "linear" parameter + return cos( fTheta ); +} + +float Sampler::polarConstSumPanLaw( float fPan ) { + float fTheta = 0.25 * M_PI * ( fPan + 1 ); + // the constant Sum pan law interpreting fPan as the "linear" parameter + return cos( fTheta ) / ( cos( fTheta ) + sin( fTheta ) ); +} //------------------------------------------------------------------ /// Render a note diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index 6351bd97f..7072f9ab2 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -32,13 +32,18 @@ #include #include -// NOTE: the following value must be respected by the indices in GUI preferences combo box!!! +/* indices for pan law types + NOTE: the following values must be respected by the indices in GUI preferences combo box!!! +*/ #define RATIO_STRAIGHT_POLYGONAL 0 #define RATIO_CONST_POWER 1 #define RATIO_CONST_SUM 2 #define LINEAR_STRAIGHT_POLYGONAL 3 #define LINEAR_CONST_POWER 4 #define LINEAR_CONST_SUM 5 +#define POLAR_STRAIGHT_POLYGONAL 6 +#define POLAR_CONST_POWER 7 +#define POLAR_CONST_SUM 8 namespace H2Core { @@ -126,7 +131,10 @@ class Sampler : public H2Core::Object static float linearStraightPolygonalPanLaw( float fPan ); static float linearConstPowerPanLaw( float fPan ); static float linearConstSumPanLaw( float fPan ); - float ( *m_panLawAddresses[6] ) ( float ); + static float polarStraightPolygonalPanLaw( float fPan ); + static float polarConstPowerPanLaw( float fPan ); + static float polarConstSumPanLaw( float fPan ); + float ( *m_panLawAddresses[9] ) ( float ); float ( *getPanLawAddress( int idx ) ) ( float ); private: diff --git a/src/gui/src/PreferencesDialog_UI.ui b/src/gui/src/PreferencesDialog_UI.ui index b931a850e..002ed2329 100644 --- a/src/gui/src/PreferencesDialog_UI.ui +++ b/src/gui/src/PreferencesDialog_UI.ui @@ -575,22 +575,22 @@ - Balance Law (0 compensation) + Balance Law (0 compensation) - ratio pan parameter - Constant Power + Constant Power - ratio pan parameter - Constant Sum + Constant Sum - ratio pan parameter - Balance Law - linear weighted parameter + Balance Law - linear weighted pan parameter @@ -603,6 +603,21 @@ Constant Sum - linear weighted pan parameter + + + Balance Law - polar pan parameter + + + + + Constant Power - polar pan parameter + + + + + Constant Sum - polar pan parameter + + From f164f7827e9fd72f9348e3c218a7ed1e61b45e19 Mon Sep 17 00:00:00 2001 From: oddtime Date: Sun, 10 Jan 2021 22:46:39 +0100 Subject: [PATCH 09/26] add constant k norm pan law --- src/core/Basics/Song.cpp | 3 + src/core/Basics/Song.h | 11 + src/core/LocalFileMgr.cpp | 1 + src/core/Sampler/Sampler.cpp | 12 + src/core/Sampler/Sampler.h | 12 +- src/gui/src/PreferencesDialog.cpp | 40 +- src/gui/src/PreferencesDialog.h | 1 + src/gui/src/PreferencesDialog_UI.ui | 818 +++++++++++++++------------- 8 files changed, 517 insertions(+), 381 deletions(-) diff --git a/src/core/Basics/Song.cpp b/src/core/Basics/Song.cpp index a96e08936..e448f5cdd 100644 --- a/src/core/Basics/Song.cpp +++ b/src/core/Basics/Song.cpp @@ -88,6 +88,7 @@ Song::Song( const QString& name, const QString& author, float bpm, float volume , __playback_track_volume( 0.0 ) , __velocity_automation_path( nullptr ) , m_nPanLawIdx( RATIO_STRAIGHT_POLYGONAL ) + , m_fPanLawKNorm( K_NORM_DEFAULT ) { INFOLOG( QString( "INIT '%1'" ).arg( __name ) ); @@ -675,6 +676,7 @@ Song* SongReader::readSong( const QString& filename ) float fHumanizeVelocityValue = LocalFileMng::readXmlFloat( songNode, "humanize_velocity", 0.0 ); float fSwingFactor = LocalFileMng::readXmlFloat( songNode, "swing_factor", 0.0 ); int nPanLawIdx = LocalFileMng::readXmlFloat( songNode, "pan_law", RATIO_STRAIGHT_POLYGONAL ); + float nPanLawKNorm = LocalFileMng::readXmlFloat( songNode, "pan_law_k_norm", K_NORM_DEFAULT ); pSong = new Song( sName, sAuthor, fBpm, fVolume ); pSong->set_metronome_volume( fMetronomeVolume ); @@ -686,6 +688,7 @@ Song* SongReader::readSong( const QString& filename ) pSong->set_humanize_velocity_value( fHumanizeVelocityValue ); pSong->set_swing_factor( fSwingFactor ); pSong->setPanLawIdx( nPanLawIdx ); + pSong->setPanLawKNorm( nPanLawKNorm ); pSong->set_playback_track_filename( sPlaybackTrack ); pSong->set_playback_track_enabled( bPlaybackTrackEnabled ); pSong->set_playback_track_volume( fPlaybackTrackVolume ); diff --git a/src/core/Basics/Song.h b/src/core/Basics/Song.h index 93d0fd57d..9d1193fe9 100644 --- a/src/core/Basics/Song.h +++ b/src/core/Basics/Song.h @@ -214,6 +214,8 @@ class Song : public H2Core::Object void setPanLawIdx( int idx ); int getPanLawIdx() const ; + void setPanLawKNorm( float fKNorm ); + float getPanLawKNorm() const; private: ///< volume of the song (0.0..1.0) @@ -271,6 +273,7 @@ class Song : public H2Core::Object /** this is set in preferences */ int m_nPanLawIdx; + float m_fPanLawKNorm; }; @@ -434,6 +437,14 @@ inline int Song::getPanLawIdx() const { return m_nPanLawIdx; } +inline void Song::setPanLawKNorm( float fKNorm ) { + m_fPanLawKNorm = fKNorm; +} + +inline float Song::getPanLawKNorm() const { + return m_fPanLawKNorm; +} + /** \ingroup H2CORE \brief Read XML file of a song diff --git a/src/core/LocalFileMgr.cpp b/src/core/LocalFileMgr.cpp index 8e9eef650..c1763f913 100644 --- a/src/core/LocalFileMgr.cpp +++ b/src/core/LocalFileMgr.cpp @@ -381,6 +381,7 @@ int SongWriter::writeSong( Song * pSong, const QString& filename ) LocalFileMng::writeXmlString( songNode, "humanize_velocity", QString("%1").arg( pSong->get_humanize_velocity_value() ) ); LocalFileMng::writeXmlString( songNode, "swing_factor", QString("%1").arg( pSong->get_swing_factor() ) ); LocalFileMng::writeXmlString( songNode, "pan_law", QString("%1").arg( pSong->getPanLawIdx() ) ); + LocalFileMng::writeXmlString( songNode, "pan_law_k_norm", QString("%1").arg( pSong->getPanLawKNorm() ) ); // component List QDomNode componentListNode = doc.createElement( "componentList" ); diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index bbf65d057..feae34086 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -102,6 +102,7 @@ Sampler::Sampler() m_panLawAddresses[ POLAR_STRAIGHT_POLYGONAL ] = &this->polarStraightPolygonalPanLaw; m_panLawAddresses[ POLAR_CONST_POWER ] = &this->polarConstPowerPanLaw; m_panLawAddresses[ POLAR_CONST_SUM ] = &this->polarConstSumPanLaw; + m_panLawAddresses[ LINEAR_CONST_K_NORM ] = &this->linearConstKNormPanLaw; } @@ -297,6 +298,9 @@ float Sampler::getRatioPan( float fPan_L, float fPan_R ) { * "ConstantPower": * probably makes uniform volumes in a common room, * has -3.01 dB center compensation. + * "ConstantKNorm": + * L^k + R^k = const + * generalises constant sum (k = 1) and constant power (k = 2) * "StraightPolygonal": * one gain is constant while the other is progressively decreased. * It's ideal as BALANCE law of DUAL-channel track, @@ -369,6 +373,14 @@ float Sampler::polarConstSumPanLaw( float fPan ) { // the constant Sum pan law interpreting fPan as the "linear" parameter return cos( fTheta ) / ( cos( fTheta ) + sin( fTheta ) ); } + +float Sampler::linearConstKNormPanLaw( float fPan ) { + // the constant k norm pan law interpreting fPan as the "linear" parameter + Song* pSong = Hydrogen::get_instance()->getSong(); + float k = pSong->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? + return ( 1. - fPan ) / pow( ( pow( (1. - fPan), k ) + pow( (1. + fPan), k ) ), 1./k ); +} + //------------------------------------------------------------------ /// Render a note diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index 7072f9ab2..19f68057a 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -33,7 +33,8 @@ #include /* indices for pan law types - NOTE: the following values must be respected by the indices in GUI preferences combo box!!! + NOTE: the following values must be respected by the indices in GUI preferences combo box!!! + TODO is there a way to define an hidden value for each index in combobox? so the order is safe */ #define RATIO_STRAIGHT_POLYGONAL 0 #define RATIO_CONST_POWER 1 @@ -44,6 +45,12 @@ #define POLAR_STRAIGHT_POLYGONAL 6 #define POLAR_CONST_POWER 7 #define POLAR_CONST_SUM 8 +#define LINEAR_CONST_K_NORM 9 + + +/* define default k for pan law with -4.5dB center compensation, given L^k + R^k = const + it is the mean compromise between constant sum and constant power */ +#define K_NORM_DEFAULT 1.3333333333333 namespace H2Core { @@ -134,7 +141,8 @@ class Sampler : public H2Core::Object static float polarStraightPolygonalPanLaw( float fPan ); static float polarConstPowerPanLaw( float fPan ); static float polarConstSumPanLaw( float fPan ); - float ( *m_panLawAddresses[9] ) ( float ); + static float linearConstKNormPanLaw( float fPan ); + float ( *m_panLawAddresses[10] ) ( float ); float ( *getPanLawAddress( int idx ) ) ( float ); private: diff --git a/src/gui/src/PreferencesDialog.cpp b/src/gui/src/PreferencesDialog.cpp index b4fc3b148..1bf326da5 100644 --- a/src/gui/src/PreferencesDialog.cpp +++ b/src/gui/src/PreferencesDialog.cpp @@ -207,7 +207,21 @@ PreferencesDialog::PreferencesDialog(QWidget* parent) Song* pSong = Hydrogen::get_instance()->getSong(); panLawComboBox->setCurrentIndex( pSong->getPanLawIdx() ); + connect(panLawComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT( panLawChanged() )); + + QValidator *validator = new QDoubleValidator( -10000., 0., 20, this ); + dBCompensationLineEdit->setValidator( validator ); + dBCompensationLineEdit->setText( QString( "%1" ).arg( -6.0206 / pSong->getPanLawKNorm() ) ); + + if ( panLawComboBox->currentIndex() == 9 ) { + dBCompensationLineEdit->show(); + dBCompensationLbl->show(); + } else { + dBCompensationLineEdit->hide(); + dBCompensationLbl->hide(); + } + // Appearance tab QString applicationFamily = pPref->getApplicationFontFamily(); int applicationPointSize = pPref->getApplicationFontPointSize(); @@ -484,8 +498,20 @@ void PreferencesDialog::on_okBtn_clicked() Song* pSong = Hydrogen::get_instance()->getSong(); pSong->setPanLawIdx( panLawComboBox->currentIndex() ); - - + bool bOk; + // allowing both point or comma decimal separator + float fdBCenterCompensation = ( dBCompensationLineEdit->text() ).replace( ",", "." ).toFloat( &bOk ); + if ( !bOk ) { // this should never happen + QMessageBox::information( this, "Hydrogen", tr( "dB Center Compensation rejected" ) ); + return; + } else if (fdBCenterCompensation > -0.01 ) { // due to computer approximation + QMessageBox::information( this, "Hydrogen", tr( "dB Center Compensation must be less than -0.01" ) ); + return; + } + /** converts the dB Compensation to corresponding exponent k: assuming L^k + R^k = const + * For example -6.0206 dB => k = 1 => L + R = const (i.e. constant sum) + */ + pSong->setPanLawKNorm( - 6.0206 / fdBCenterCompensation ); // metronome pPref->m_fMetronomeVolume = (metronomeVolumeSpinBox->value()) / 100.0; @@ -991,3 +1017,13 @@ void PreferencesDialog::toggleOscCheckBox(bool toggled) { oscWidget->setEnabled( toggled ); } + +void PreferencesDialog::panLawChanged(){ + if ( panLawComboBox->currentIndex() == 9 ) { + dBCompensationLineEdit->show(); + dBCompensationLbl->show(); + } else { + dBCompensationLineEdit->hide(); + dBCompensationLbl->hide(); + } +} diff --git a/src/gui/src/PreferencesDialog.h b/src/gui/src/PreferencesDialog.h index 1895305b1..fde9b012c 100644 --- a/src/gui/src/PreferencesDialog.h +++ b/src/gui/src/PreferencesDialog.h @@ -57,6 +57,7 @@ class PreferencesDialog : public QDialog, private Ui_PreferencesDialog_UI, publi void toggleTrackOutsCheckBox(bool toggled); void toggleOscCheckBox(bool toggled); void coloringMethodCombo_currentIndexChanged (int index); + void panLawChanged(); private: diff --git a/src/gui/src/PreferencesDialog_UI.ui b/src/gui/src/PreferencesDialog_UI.ui index 002ed2329..51f30c054 100644 --- a/src/gui/src/PreferencesDialog_UI.ui +++ b/src/gui/src/PreferencesDialog_UI.ui @@ -6,15 +6,15 @@ 0 0 - 664 - 555 + 685 + 541 Form1 - - + + @@ -243,421 +243,485 @@ Audio &System - - - - - - - - - - + + + + 470 + 10 + 191 + 451 + + + + Audio output details + + + + + 0 + 30 + 181 + 421 + + + + ### + + + Qt::AlignTop + + + true + + + + + + + 10 + 10 + 451 + 451 + + + + + + + + + + + + Restart output + + + + + + + + + + + + 0 + 22 + + + + 100 + + + 5000 + + + 100 + + + 1024 + + + + + + + + 0 + 22 + + + + Sample rate + + + + + + + Device + + + + + + + + 0 + 22 + + + + Buffer size + + + + + + + + 0 + 0 + + + + + + + + 0 + + - Restart output - - - - - - - - - - - - 0 - 22 - - - - 100 - - - 5000 - - - 100 - - - 1024 - - - - - - - - 0 - 22 - + 44100 + + - Sample rate + 48000 - - - - + + - Device - - - - - - - - 0 - 22 - + 88200 + + - Buffer size - - - - - - - - 0 - 0 - - - - - - - - 0 - - - - 44100 - - - - - 48000 - - - - - 88200 - - - - - 96000 - - - - - - - - 0 - - - - Post-Fader - - - - - Pre-Fader - - - - - - - - - 0 - 22 - + 96000 + + + + + + + 0 + + - Track output - - - - - - - - 0 - 22 - - - - Specifies the variable, which has to remain constant in order to guarantee a working synchronization and relocation in the presence of another Jack timebase master. + Post-Fader + + - BBT sync method + Pre-Fader - - - - - - - 0 - 22 - + + + + + + + + 0 + 22 + + + + Track output + + + + + + + + 0 + 22 + + + + Specifies the variable, which has to remain constant in order to guarantee a working synchronization and relocation in the presence of another Jack timebase master. + + + BBT sync method + + + + + + + + 0 + 22 + + + + Specifies the variable, which has to remain constant in order to guarantee a working synchronization and relocation in the presence of another Jack timebase master. + + + + constant measure - - Specifies the variable, which has to remain constant in order to guarantee a working synchronization and relocation in the presence of another Jack timebase master. + + + + matching bars - - - constant measure - - - - - matching bars - - - - - - - - - - 6 - - - + + + + + + + + + 6 + + + + + Connect to &Default Output Pair + + + Alt+D + + + + + + + Create per-instrument outputs + + + Alt+D + + + + + + + + + Qt::Vertical + + + + 431 + 13 + + + + + + + + + + + 0 + 22 + + + + 1 + + + 512 + + + + + + + false + + + + 0 + 22 + + + + 1 + + + 100 + + + + + + + + 0 + 22 + + + + Metronome volume + + + + + + + Polyphony + + + + + + + + + + + Interpolate resampling + + + + + + - Connect to &Default Output Pair + Linear - - Alt+D + + + + Cosine - - - - + + - Create per-instrument outputs + Third - - Alt+D + + + + Cubic - - - - - - - - Qt::Vertical - - - - 331 - 13 - - - - - - - - - - - 0 - 22 - + + + + Hermite - - 1 + + + + + + + + + + + + 0 + 26 + + + + + 385 + 16777215 + + + + + Balance Law (0dB) - ratio pan parameter - - 512 + + + + Constant Power (-3dB) - ratio pan parameter - - - - - - false + + + + Constant Sum (-6dB) - ratio pan parameter - - - 0 - 22 - + + + + Balance Law - linear weighted pan parameter - - 1 + + + + Constant Power - linear weighted pan parameter - - 100 + + + + Constant Sum - linear weighted pan parameter - - - - - - - 0 - 22 - + + + + Balance Law - polar pan parameter + + - Metronome volume + Constant Power - polar pan parameter - - - - + + - Polyphony + Constant Sum - polar pan parameter - - - - - - - - + + - Interpolate resampling + Constant k-Norm (Custom dB compensation!) - linear parameter - - - - - - - Linear - - - - - Cosine - - - - - Third - - - - - Cubic - - - - - Hermite - - - - - - - - - - Pan Law - - - - - - - - Balance Law (0 compensation) - ratio pan parameter - - - - - Constant Power - ratio pan parameter - - - - - Constant Sum - ratio pan parameter - - - - - Balance Law - linear weighted pan parameter - - - - - Constant Power - linear weighted pan parameter - - - - - Constant Sum - linear weighted pan parameter - - - - - Balance Law - polar pan parameter - - - + + + + + - Constant Power - polar pan parameter + Pan Law - - - - Constant Sum - polar pan parameter + + + + + + + + + + + 246 + 16777215 + - - - - - - - Qt::Vertical - - - - 331 - 13 - - - - - - - - - - Audio output details - - - - - ### - - - Qt::AlignTop + dB SPL Center Compensation - - true + + + + + + + 80 + 16777215 + - - - + + + + + Qt::Vertical + + + + 431 + 7 + + + + + + @@ -1239,7 +1303,7 @@ - + From 6e5cfbc1f81950958dafcc1a004d08fd848aef9e Mon Sep 17 00:00:00 2001 From: oddtime Date: Mon, 11 Jan 2021 16:31:46 +0100 Subject: [PATCH 10/26] better manage of GUI pan Law combobox items, add 3 quadratic pan laws --- src/core/Sampler/Sampler.cpp | 22 ++++++++++++ src/core/Sampler/Sampler.h | 13 +++++--- src/gui/src/PreferencesDialog.cpp | 38 +++++++++++++++------ src/gui/src/PreferencesDialog_UI.ui | 52 +---------------------------- 4 files changed, 59 insertions(+), 66 deletions(-) diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index feae34086..554f506d5 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -102,6 +102,9 @@ Sampler::Sampler() m_panLawAddresses[ POLAR_STRAIGHT_POLYGONAL ] = &this->polarStraightPolygonalPanLaw; m_panLawAddresses[ POLAR_CONST_POWER ] = &this->polarConstPowerPanLaw; m_panLawAddresses[ POLAR_CONST_SUM ] = &this->polarConstSumPanLaw; + m_panLawAddresses[ QUADRATIC_STRAIGHT_POLYGONAL ] = &this->quadraticStraightPolygonalPanLaw; + m_panLawAddresses[ QUADRATIC_CONST_POWER ] = &this->quadraticConstPowerPanLaw; + m_panLawAddresses[ QUADRATIC_CONST_SUM ] = &this->quadraticConstSumPanLaw; m_panLawAddresses[ LINEAR_CONST_K_NORM ] = &this->linearConstKNormPanLaw; } @@ -374,6 +377,25 @@ float Sampler::polarConstSumPanLaw( float fPan ) { return cos( fTheta ) / ( cos( fTheta ) + sin( fTheta ) ); } +float Sampler::quadraticStraightPolygonalPanLaw( float fPan ) { + // the straight polygonal pan law interpreting fPan as the "quadratic" parameter + if ( fPan <= 0 ) { + return 1.; + } else { + return sqrt( ( 1. - fPan ) / ( 1. + fPan ) ); + } +} + +float Sampler::quadraticConstPowerPanLaw( float fPan ) { + // the constant power pan law interpreting fPan as the "quadratic" parameter + return sqrt( ( 1. - fPan ) * 0.5 ); +} + +float Sampler::quadraticConstSumPanLaw( float fPan ) { + // the constant Sum pan law interpreting fPan as the "quadratic" parameter + return sqrt( 1. - fPan ) / ( sqrt( 1. - fPan ) + sqrt( 1. + fPan ) ); +} + float Sampler::linearConstKNormPanLaw( float fPan ) { // the constant k norm pan law interpreting fPan as the "linear" parameter Song* pSong = Hydrogen::get_instance()->getSong(); diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index 19f68057a..59edda552 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -33,8 +33,7 @@ #include /* indices for pan law types - NOTE: the following values must be respected by the indices in GUI preferences combo box!!! - TODO is there a way to define an hidden value for each index in combobox? so the order is safe + NOTE: the following values are saved in songs, so developers should not change them... TODO better way to save? */ #define RATIO_STRAIGHT_POLYGONAL 0 #define RATIO_CONST_POWER 1 @@ -45,7 +44,10 @@ #define POLAR_STRAIGHT_POLYGONAL 6 #define POLAR_CONST_POWER 7 #define POLAR_CONST_SUM 8 -#define LINEAR_CONST_K_NORM 9 +#define QUADRATIC_STRAIGHT_POLYGONAL 9 +#define QUADRATIC_CONST_POWER 10 +#define QUADRATIC_CONST_SUM 11 +#define LINEAR_CONST_K_NORM 12 /* define default k for pan law with -4.5dB center compensation, given L^k + R^k = const @@ -141,8 +143,11 @@ class Sampler : public H2Core::Object static float polarStraightPolygonalPanLaw( float fPan ); static float polarConstPowerPanLaw( float fPan ); static float polarConstSumPanLaw( float fPan ); + static float quadraticStraightPolygonalPanLaw( float fPan ); + static float quadraticConstPowerPanLaw( float fPan ); + static float quadraticConstSumPanLaw( float fPan ); static float linearConstKNormPanLaw( float fPan ); - float ( *m_panLawAddresses[10] ) ( float ); + float ( *m_panLawAddresses[13] ) ( float ); float ( *getPanLawAddress( int idx ) ) ( float ); private: diff --git a/src/gui/src/PreferencesDialog.cpp b/src/gui/src/PreferencesDialog.cpp index 1bf326da5..5dce110da 100644 --- a/src/gui/src/PreferencesDialog.cpp +++ b/src/gui/src/PreferencesDialog.cpp @@ -204,9 +204,31 @@ PreferencesDialog::PreferencesDialog(QWidget* parent) } resampleComboBox->setCurrentIndex( (int) AudioEngine::get_instance()->get_sampler()->getInterpolateMode() ); + + + // pan law + // insert the item here so they are consistent with sampler indices, no matter of their order in this menu + panLawComboBox->addItem( QString("Balance Law (0dB) - linear pan parameter"), QVariant( LINEAR_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( QString("Constant Power (-3dB) - linear pan parameter"), QVariant( LINEAR_CONST_POWER ) ); + panLawComboBox->addItem( QString("Constant Sum (-6dB) - linear pan parameter"), QVariant( LINEAR_CONST_SUM ) ); + panLawComboBox->addItem( QString("Constant k-Norm (Custom dB compensation) - linear parameter"), + QVariant( LINEAR_CONST_K_NORM ) ); + panLawComboBox->insertSeparator(100); + panLawComboBox->addItem( QString("Balance Law (0dB) - polar pan parameter"), QVariant( POLAR_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( QString("Constant Power (-3dB) - polar pan parameter"), QVariant( POLAR_CONST_POWER ) ); + panLawComboBox->addItem( QString("Constant Sum (-6dB) - polar pan parameter"), QVariant( POLAR_CONST_SUM ) ); + panLawComboBox->insertSeparator(100); + panLawComboBox->addItem( QString("Balance Law (0dB) - ratio pan parameter"), QVariant( RATIO_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( QString("Constant Power (-3dB) - ratio pan parameter"), QVariant( RATIO_CONST_POWER ) ); + panLawComboBox->addItem( QString("Constant Sum (-6dB) - ratio pan parameter"), QVariant( RATIO_CONST_SUM ) ); + panLawComboBox->insertSeparator(100); + panLawComboBox->addItem( QString("Balance Law (0dB) - quadratic pan parameter"), QVariant( QUADRATIC_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( QString("Constant Power (-3dB) - quadratic pan parameter"), QVariant( QUADRATIC_CONST_POWER ) ); + panLawComboBox->addItem( QString("Constant Sum (-6dB) - quadratic pan parameter"), QVariant( QUADRATIC_CONST_SUM ) ); Song* pSong = Hydrogen::get_instance()->getSong(); - panLawComboBox->setCurrentIndex( pSong->getPanLawIdx() ); + panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSong->getPanLawIdx() ) ); + panLawChanged(); // to hide dB SPL compensation connect(panLawComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT( panLawChanged() )); QValidator *validator = new QDoubleValidator( -10000., 0., 20, this ); @@ -214,14 +236,6 @@ PreferencesDialog::PreferencesDialog(QWidget* parent) dBCompensationLineEdit->setText( QString( "%1" ).arg( -6.0206 / pSong->getPanLawKNorm() ) ); - if ( panLawComboBox->currentIndex() == 9 ) { - dBCompensationLineEdit->show(); - dBCompensationLbl->show(); - } else { - dBCompensationLineEdit->hide(); - dBCompensationLbl->hide(); - } - // Appearance tab QString applicationFamily = pPref->getApplicationFontFamily(); int applicationPointSize = pPref->getApplicationFontPointSize(); @@ -496,9 +510,10 @@ void PreferencesDialog::on_okBtn_clicked() pPref->m_nSampleRate = 96000; } + Song* pSong = Hydrogen::get_instance()->getSong(); - pSong->setPanLawIdx( panLawComboBox->currentIndex() ); bool bOk; + pSong->setPanLawIdx( ( panLawComboBox->currentData() ).toInt( &bOk ) ); // allowing both point or comma decimal separator float fdBCenterCompensation = ( dBCompensationLineEdit->text() ).replace( ",", "." ).toFloat( &bOk ); if ( !bOk ) { // this should never happen @@ -1019,7 +1034,8 @@ void PreferencesDialog::toggleOscCheckBox(bool toggled) } void PreferencesDialog::panLawChanged(){ - if ( panLawComboBox->currentIndex() == 9 ) { + bool bOk; + if ( ( panLawComboBox->currentData() ).toInt( &bOk) == LINEAR_CONST_K_NORM ) { dBCompensationLineEdit->show(); dBCompensationLbl->show(); } else { diff --git a/src/gui/src/PreferencesDialog_UI.ui b/src/gui/src/PreferencesDialog_UI.ui index 51f30c054..7a42c5a98 100644 --- a/src/gui/src/PreferencesDialog_UI.ui +++ b/src/gui/src/PreferencesDialog_UI.ui @@ -280,7 +280,7 @@ 10 10 - 451 + 458 451 @@ -619,56 +619,6 @@ 16777215 - - - Balance Law (0dB) - ratio pan parameter - - - - - Constant Power (-3dB) - ratio pan parameter - - - - - Constant Sum (-6dB) - ratio pan parameter - - - - - Balance Law - linear weighted pan parameter - - - - - Constant Power - linear weighted pan parameter - - - - - Constant Sum - linear weighted pan parameter - - - - - Balance Law - polar pan parameter - - - - - Constant Power - polar pan parameter - - - - - Constant Sum - polar pan parameter - - - - - Constant k-Norm (Custom dB compensation!) - linear parameter - - From cf4f147070dd9e6b1216c7dab749e4c2dbe71a11 Mon Sep 17 00:00:00 2001 From: oddtime Date: Mon, 11 Jan 2021 17:33:33 +0100 Subject: [PATCH 11/26] add 3 constant Norm pan laws, commented unused method --- src/core/Sampler/Sampler.cpp | 36 +++++++++++++++++++++++++++++-- src/core/Sampler/Sampler.h | 11 ++++++++-- src/gui/src/PreferencesDialog.cpp | 20 ++++++++++++++--- 3 files changed, 60 insertions(+), 7 deletions(-) diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 554f506d5..627473a98 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -106,6 +106,9 @@ Sampler::Sampler() m_panLawAddresses[ QUADRATIC_CONST_POWER ] = &this->quadraticConstPowerPanLaw; m_panLawAddresses[ QUADRATIC_CONST_SUM ] = &this->quadraticConstSumPanLaw; m_panLawAddresses[ LINEAR_CONST_K_NORM ] = &this->linearConstKNormPanLaw; + m_panLawAddresses[ POLAR_CONST_K_NORM ] = &this->polarConstKNormPanLaw; + m_panLawAddresses[ RATIO_CONST_K_NORM ] = &this->ratioConstKNormPanLaw; + m_panLawAddresses[ QUADRATIC_CONST_K_NORM ] = &this->quadraticConstKNormPanLaw; } @@ -403,6 +406,35 @@ float Sampler::linearConstKNormPanLaw( float fPan ) { return ( 1. - fPan ) / pow( ( pow( (1. - fPan), k ) + pow( (1. + fPan), k ) ), 1./k ); } +float Sampler::quadraticConstKNormPanLaw( float fPan ) { + // the constant k norm pan law interpreting fPan as the "quadratic" parameter + Song* pSong = Hydrogen::get_instance()->getSong(); + float k = pSong->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? + return sqrt( 1. - fPan ) / pow( ( pow( (1. - fPan), 0.5 * k ) + pow( (1. + fPan), 0.5 * k ) ), 1./k ); +} + +float Sampler::polarConstKNormPanLaw( float fPan ) { + // the constant k norm pan law interpreting fPan as the "polar" parameter + float fTheta = 0.25 * M_PI * ( fPan + 1 ); + Song* pSong = Hydrogen::get_instance()->getSong(); + float k = pSong->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? + float cosTheta = cos( fTheta ); + return cosTheta / pow( ( pow( cosTheta, k ) + pow( sin( fTheta ), k ) ), 1./k ); +} + +float Sampler::ratioConstKNormPanLaw( float fPan ) { + // the constant k norm pan law interpreting fPan as the "ratio" parameter + Song* pSong = Hydrogen::get_instance()->getSong(); + float k = pSong->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? + + if ( fPan <= 0 ) { + return 1. / pow( ( 1. + pow( (1. + fPan), k ) ), 1./k ); + } else { + return ( 1. - fPan ) / pow( ( 1. + pow( (1. - fPan), k ) ), 1./k ); + } + +} + //------------------------------------------------------------------ /// Render a note @@ -1630,7 +1662,7 @@ void Sampler::reinitializePlaybackTrack() m_pPlaybackTrackInstrument->get_components()->front()->set_layer( pPlaybackTrackLayer, 0 ); m_nPlayBackSamplePosition = 0; } - +/* inline float ( *Sampler::getPanLawAddress( int idx ) ) ( float ) { if ( idx == RATIO_STRAIGHT_POLYGONAL ) { return &ratioStraightPolygonalPanLaw; @@ -1642,7 +1674,7 @@ inline float ( *Sampler::getPanLawAddress( int idx ) ) ( float ) { //TODO warning return &ratioStraightPolygonalPanLaw; // default value } -} +}*/ }; diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index 59edda552..fe0b3c3c4 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -48,6 +48,9 @@ #define QUADRATIC_CONST_POWER 10 #define QUADRATIC_CONST_SUM 11 #define LINEAR_CONST_K_NORM 12 +#define RATIO_CONST_K_NORM 13 +#define POLAR_CONST_K_NORM 14 +#define QUADRATIC_CONST_K_NORM 15 /* define default k for pan law with -4.5dB center compensation, given L^k + R^k = const @@ -146,9 +149,13 @@ class Sampler : public H2Core::Object static float quadraticStraightPolygonalPanLaw( float fPan ); static float quadraticConstPowerPanLaw( float fPan ); static float quadraticConstSumPanLaw( float fPan ); + // customly compensated static float linearConstKNormPanLaw( float fPan ); - float ( *m_panLawAddresses[13] ) ( float ); - float ( *getPanLawAddress( int idx ) ) ( float ); + static float polarConstKNormPanLaw( float fPan ); + static float ratioConstKNormPanLaw( float fPan ); + static float quadraticConstKNormPanLaw( float fPan ); + float ( *m_panLawAddresses[16] ) ( float ); + // float ( *getPanLawAddress( int idx ) ) ( float ); private: std::vector m_playingNotesQueue; diff --git a/src/gui/src/PreferencesDialog.cpp b/src/gui/src/PreferencesDialog.cpp index 5dce110da..e8f3b7cf4 100644 --- a/src/gui/src/PreferencesDialog.cpp +++ b/src/gui/src/PreferencesDialog.cpp @@ -212,28 +212,36 @@ PreferencesDialog::PreferencesDialog(QWidget* parent) panLawComboBox->addItem( QString("Constant Power (-3dB) - linear pan parameter"), QVariant( LINEAR_CONST_POWER ) ); panLawComboBox->addItem( QString("Constant Sum (-6dB) - linear pan parameter"), QVariant( LINEAR_CONST_SUM ) ); panLawComboBox->addItem( QString("Constant k-Norm (Custom dB compensation) - linear parameter"), - QVariant( LINEAR_CONST_K_NORM ) ); + QVariant( LINEAR_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); panLawComboBox->addItem( QString("Balance Law (0dB) - polar pan parameter"), QVariant( POLAR_STRAIGHT_POLYGONAL ) ); panLawComboBox->addItem( QString("Constant Power (-3dB) - polar pan parameter"), QVariant( POLAR_CONST_POWER ) ); panLawComboBox->addItem( QString("Constant Sum (-6dB) - polar pan parameter"), QVariant( POLAR_CONST_SUM ) ); + panLawComboBox->addItem( QString("Constant k-Norm (Custom dB compensation) - polar parameter"), + QVariant( POLAR_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); panLawComboBox->addItem( QString("Balance Law (0dB) - ratio pan parameter"), QVariant( RATIO_STRAIGHT_POLYGONAL ) ); panLawComboBox->addItem( QString("Constant Power (-3dB) - ratio pan parameter"), QVariant( RATIO_CONST_POWER ) ); panLawComboBox->addItem( QString("Constant Sum (-6dB) - ratio pan parameter"), QVariant( RATIO_CONST_SUM ) ); + panLawComboBox->addItem( QString("Constant k-Norm (Custom dB compensation) - ratio parameter"), + QVariant( RATIO_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); panLawComboBox->addItem( QString("Balance Law (0dB) - quadratic pan parameter"), QVariant( QUADRATIC_STRAIGHT_POLYGONAL ) ); panLawComboBox->addItem( QString("Constant Power (-3dB) - quadratic pan parameter"), QVariant( QUADRATIC_CONST_POWER ) ); panLawComboBox->addItem( QString("Constant Sum (-6dB) - quadratic pan parameter"), QVariant( QUADRATIC_CONST_SUM ) ); + panLawComboBox->addItem( QString("Constant k-Norm (Custom dB compensation) - quadratic parameter"), + QVariant( QUADRATIC_CONST_K_NORM ) ); Song* pSong = Hydrogen::get_instance()->getSong(); panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSong->getPanLawIdx() ) ); panLawChanged(); // to hide dB SPL compensation connect(panLawComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT( panLawChanged() )); + /* dB SPL Center Compensation (will be converted to the corresponding k assuming L^k + R^k = 1 ) + * this is for the engineers! + */ QValidator *validator = new QDoubleValidator( -10000., 0., 20, this ); dBCompensationLineEdit->setValidator( validator ); - dBCompensationLineEdit->setText( QString( "%1" ).arg( -6.0206 / pSong->getPanLawKNorm() ) ); // Appearance tab @@ -1035,7 +1043,13 @@ void PreferencesDialog::toggleOscCheckBox(bool toggled) void PreferencesDialog::panLawChanged(){ bool bOk; - if ( ( panLawComboBox->currentData() ).toInt( &bOk) == LINEAR_CONST_K_NORM ) { + int nPanLaw = ( panLawComboBox->currentData() ).toInt( &bOk); + if ( nPanLaw == LINEAR_CONST_K_NORM + || nPanLaw == POLAR_CONST_K_NORM + || nPanLaw == RATIO_CONST_K_NORM + || nPanLaw == QUADRATIC_CONST_K_NORM + ) + { dBCompensationLineEdit->show(); dBCompensationLbl->show(); } else { From 19329e734a9ea8126e85ba82fffd759e5710e712 Mon Sep 17 00:00:00 2001 From: oddtime Date: Mon, 11 Jan 2021 21:44:40 +0100 Subject: [PATCH 12/26] translatable, further descriptive comments --- src/core/Sampler/Sampler.cpp | 20 ++++++---- src/gui/src/PreferencesDialog.cpp | 57 +++++++++++++++-------------- src/gui/src/PreferencesDialog_UI.ui | 32 ++++++++-------- 3 files changed, 58 insertions(+), 51 deletions(-) diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 627473a98..23f669668 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -254,7 +254,7 @@ void Sampler::noteOff(Note* pNote ) // functions for pan parameters and laws----------------- float Sampler::getRatioPan( float fPan_L, float fPan_R ) { - /* returns the single pan parameter in [-1,1] from the L,R gains + /** returns the single pan parameter in [-1,1] from the L,R gains * as it was input from the GUI (up to scale and translation, which is arbitrary) */ if ( fPan_L < 0. || fPan_R < 0. || ( fPan_L == 0. && fPan_R == 0.) ) { // invalid input @@ -277,22 +277,25 @@ float Sampler::getRatioPan( float fPan_L, float fPan_R ) { * For the right channel use: R(p) == pan_R(p) = pan_L(-p) == L(-p) * thanks to the Left-Right symmetry. *-------------------------------------- - * The prefix of the function names tells the interpretation of the fPan argument: + * The prefix of the function name tells the interpretation of the fPan argument: * * "ratio" parameter: * fPan = R/L - 1 if panned to the left, * fPan = 1 - L/R if panned to the right. * - * "linear" parameter (arithmetic weighted mean): + * "linear" parameter (arithmetic mean with linear weights): * fPan = ( R - L ) / ( R + L ). * * "polar" parameter (polar coordinate in LR plane): * fPan = 4 / pi * arctan( R/L ) - 1 if L != 0, * fPan = 1 if L == 0. * + * "quadratic" parameter (arithmetic mean with squared weights): + * fPan = ( R^2 - L^2 ) / ( R^2 + L^2 ). + * * Note: using a different fPan interpretation makes the output more central or more lateral. * From more central to more lateral: - * "ratio" ---> "polar" ---> "linear" + * "quadratic" ---> "ratio" ---> "polar" ---> "linear" *--------------------------------------------- * After the prefix, the name describes the Image of the pan law in the LR plane. * (remember that each pan law is a parametrized curve in LR plane. @@ -308,10 +311,11 @@ float Sampler::getRatioPan( float fPan_L, float fPan_R ) { * L^k + R^k = const * generalises constant sum (k = 1) and constant power (k = 2) * "StraightPolygonal": - * one gain is constant while the other is progressively decreased. + * one gain is constant while the other varies. * It's ideal as BALANCE law of DUAL-channel track, * has 0 dB center compensation. */ + float Sampler::ratioStraightPolygonalPanLaw( float fPan ) { // the straight polygonal pan law interpreting fPan as the "ratio" parameter if ( fPan <= 0 ) { @@ -369,14 +373,14 @@ float Sampler::polarStraightPolygonalPanLaw( float fPan ) { } float Sampler::polarConstPowerPanLaw( float fPan ) { - float fTheta = 0.25 * M_PI * ( fPan + 1 ); // the constant power pan law interpreting fPan as the "linear" parameter + float fTheta = 0.25 * M_PI * ( fPan + 1 ); return cos( fTheta ); } float Sampler::polarConstSumPanLaw( float fPan ) { - float fTheta = 0.25 * M_PI * ( fPan + 1 ); // the constant Sum pan law interpreting fPan as the "linear" parameter + float fTheta = 0.25 * M_PI * ( fPan + 1 ); return cos( fTheta ) / ( cos( fTheta ) + sin( fTheta ) ); } @@ -391,7 +395,7 @@ float Sampler::quadraticStraightPolygonalPanLaw( float fPan ) { float Sampler::quadraticConstPowerPanLaw( float fPan ) { // the constant power pan law interpreting fPan as the "quadratic" parameter - return sqrt( ( 1. - fPan ) * 0.5 ); + return sqrt( ( 1. - fPan ) * 0.5 ); } float Sampler::quadraticConstSumPanLaw( float fPan ) { diff --git a/src/gui/src/PreferencesDialog.cpp b/src/gui/src/PreferencesDialog.cpp index e8f3b7cf4..c6803444c 100644 --- a/src/gui/src/PreferencesDialog.cpp +++ b/src/gui/src/PreferencesDialog.cpp @@ -207,38 +207,38 @@ PreferencesDialog::PreferencesDialog(QWidget* parent) // pan law - // insert the item here so they are consistent with sampler indices, no matter of their order in this menu - panLawComboBox->addItem( QString("Balance Law (0dB) - linear pan parameter"), QVariant( LINEAR_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( QString("Constant Power (-3dB) - linear pan parameter"), QVariant( LINEAR_CONST_POWER ) ); - panLawComboBox->addItem( QString("Constant Sum (-6dB) - linear pan parameter"), QVariant( LINEAR_CONST_SUM ) ); - panLawComboBox->addItem( QString("Constant k-Norm (Custom dB compensation) - linear parameter"), - QVariant( LINEAR_CONST_K_NORM ) ); + // insert the items here. They are consistent with sampler indices, no matter of the order in this menu + panLawComboBox->addItem( tr("Balance Law (0dB) - linear pan parameter"), QVariant( LINEAR_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB) - linear pan parameter"), QVariant( LINEAR_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB) - linear pan parameter"), QVariant( LINEAR_CONST_SUM ) ); + panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - linear parameter"), + QVariant( LINEAR_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); - panLawComboBox->addItem( QString("Balance Law (0dB) - polar pan parameter"), QVariant( POLAR_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( QString("Constant Power (-3dB) - polar pan parameter"), QVariant( POLAR_CONST_POWER ) ); - panLawComboBox->addItem( QString("Constant Sum (-6dB) - polar pan parameter"), QVariant( POLAR_CONST_SUM ) ); - panLawComboBox->addItem( QString("Constant k-Norm (Custom dB compensation) - polar parameter"), - QVariant( POLAR_CONST_K_NORM ) ); + panLawComboBox->addItem( tr("Balance Law (0dB) - polar pan parameter"), QVariant( POLAR_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB) - polar pan parameter"), QVariant( POLAR_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB) - polar pan parameter"), QVariant( POLAR_CONST_SUM ) ); + panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - polar parameter"), + QVariant( POLAR_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); - panLawComboBox->addItem( QString("Balance Law (0dB) - ratio pan parameter"), QVariant( RATIO_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( QString("Constant Power (-3dB) - ratio pan parameter"), QVariant( RATIO_CONST_POWER ) ); - panLawComboBox->addItem( QString("Constant Sum (-6dB) - ratio pan parameter"), QVariant( RATIO_CONST_SUM ) ); - panLawComboBox->addItem( QString("Constant k-Norm (Custom dB compensation) - ratio parameter"), - QVariant( RATIO_CONST_K_NORM ) ); + panLawComboBox->addItem( tr("Balance Law (0dB) - ratio pan parameter"), QVariant( RATIO_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB) - ratio pan parameter"), QVariant( RATIO_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB) - ratio pan parameter"), QVariant( RATIO_CONST_SUM ) ); + panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - ratio parameter"), + QVariant( RATIO_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); - panLawComboBox->addItem( QString("Balance Law (0dB) - quadratic pan parameter"), QVariant( QUADRATIC_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( QString("Constant Power (-3dB) - quadratic pan parameter"), QVariant( QUADRATIC_CONST_POWER ) ); - panLawComboBox->addItem( QString("Constant Sum (-6dB) - quadratic pan parameter"), QVariant( QUADRATIC_CONST_SUM ) ); - panLawComboBox->addItem( QString("Constant k-Norm (Custom dB compensation) - quadratic parameter"), - QVariant( QUADRATIC_CONST_K_NORM ) ); + panLawComboBox->addItem( tr("Balance Law (0dB) - quadratic pan parameter"), QVariant( QUADRATIC_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB) - quadratic pan parameter"), QVariant( QUADRATIC_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB) - quadratic pan parameter"), QVariant( QUADRATIC_CONST_SUM ) ); + panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - quadratic parameter"), + QVariant( QUADRATIC_CONST_K_NORM ) ); Song* pSong = Hydrogen::get_instance()->getSong(); panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSong->getPanLawIdx() ) ); panLawChanged(); // to hide dB SPL compensation connect(panLawComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT( panLawChanged() )); - /* dB SPL Center Compensation (will be converted to the corresponding k assuming L^k + R^k = 1 ) - * this is for the engineers! + /* dB SPL Center Compensation, audio engineer friendly. + * (will be converted to the corresponding k assuming L^k + R^k = 1 ) */ QValidator *validator = new QDoubleValidator( -10000., 0., 20, this ); dBCompensationLineEdit->setValidator( validator ); @@ -524,15 +524,18 @@ void PreferencesDialog::on_okBtn_clicked() pSong->setPanLawIdx( ( panLawComboBox->currentData() ).toInt( &bOk ) ); // allowing both point or comma decimal separator float fdBCenterCompensation = ( dBCompensationLineEdit->text() ).replace( ",", "." ).toFloat( &bOk ); - if ( !bOk ) { // this should never happen + if ( !bOk ) { // this should not happen QMessageBox::information( this, "Hydrogen", tr( "dB Center Compensation rejected" ) ); return; - } else if (fdBCenterCompensation > -0.01 ) { // due to computer approximation + } else if ( fdBCenterCompensation > -0.01 ) { + /** reject small absolute values since computer approximation (k tends rapidly to infinity at 0) + * and obviously reject positive values to not boost the center (compensation has the opposite aim). + */ QMessageBox::information( this, "Hydrogen", tr( "dB Center Compensation must be less than -0.01" ) ); return; } - /** converts the dB Compensation to corresponding exponent k: assuming L^k + R^k = const - * For example -6.0206 dB => k = 1 => L + R = const (i.e. constant sum) + /** converts the dB Compensation to the corresponding exponent k: assuming constraint L^k + R^k = 1 + * For example -6.0206 dB <=> k = 1 <=> L + R = 1 (i.e. constant sum) */ pSong->setPanLawKNorm( - 6.0206 / fdBCenterCompensation ); diff --git a/src/gui/src/PreferencesDialog_UI.ui b/src/gui/src/PreferencesDialog_UI.ui index 7a42c5a98..fec40f6b1 100644 --- a/src/gui/src/PreferencesDialog_UI.ui +++ b/src/gui/src/PreferencesDialog_UI.ui @@ -259,8 +259,8 @@ 0 - 30 - 181 + 20 + 191 421 @@ -280,8 +280,8 @@ 10 10 - 458 - 451 + 448 + 463 @@ -498,7 +498,7 @@ - 431 + 446 13 @@ -604,7 +604,14 @@ - + + + + + Pan Law + + + @@ -615,19 +622,12 @@ - 385 + 380 16777215 - - - - Pan Law - - - @@ -664,8 +664,8 @@ - 431 - 7 + 446 + 13 From c7dd952f98466ea60c0c5f9d43a2b81435aa2ebb Mon Sep 17 00:00:00 2001 From: oddtime Date: Mon, 18 Jan 2021 14:43:24 +0100 Subject: [PATCH 13/26] pan law members moved to Sampler, pan law enum class, save in song as string --- src/core/Basics/Song.cpp | 53 +++++++++++-- src/core/Basics/Song.h | 23 ++---- src/core/LocalFileMgr.cpp | 44 ++++++++++- src/core/Sampler/Sampler.cpp | 122 ++++++++++++++++++++++-------- src/core/Sampler/Sampler.h | 66 ++++++++++------ src/gui/src/PreferencesDialog.cpp | 82 ++++++++++++-------- 6 files changed, 278 insertions(+), 112 deletions(-) diff --git a/src/core/Basics/Song.cpp b/src/core/Basics/Song.cpp index e448f5cdd..e7ac3fc55 100644 --- a/src/core/Basics/Song.cpp +++ b/src/core/Basics/Song.cpp @@ -87,8 +87,8 @@ Song::Song( const QString& name, const QString& author, float bpm, float volume , __playback_track_enabled( false ) , __playback_track_volume( 0.0 ) , __velocity_automation_path( nullptr ) - , m_nPanLawIdx( RATIO_STRAIGHT_POLYGONAL ) - , m_fPanLawKNorm( K_NORM_DEFAULT ) + //, m_nPanLawIdx( RATIO_STRAIGHT_POLYGONAL ) + //, m_fPanLawKNorm( K_NORM_DEFAULT ) { INFOLOG( QString( "INIT '%1'" ).arg( __name ) ); @@ -169,7 +169,7 @@ Song* Song::get_default_song() pSong->set_humanize_time_value( 0.0 ); pSong->set_humanize_velocity_value( 0.0 ); pSong->set_swing_factor( 0.0 ); - pSong->setPanLawIdx( RATIO_STRAIGHT_POLYGONAL ); +// pSong->setPanLawIdx( RATIO_STRAIGHT_POLYGONAL ); InstrumentList* pInstrList = new InstrumentList(); Instrument* pNewInstr = new Instrument( EMPTY_INSTR_ID, "New instrument" ); @@ -675,8 +675,6 @@ Song* SongReader::readSong( const QString& filename ) float fHumanizeTimeValue = LocalFileMng::readXmlFloat( songNode, "humanize_time", 0.0 ); float fHumanizeVelocityValue = LocalFileMng::readXmlFloat( songNode, "humanize_velocity", 0.0 ); float fSwingFactor = LocalFileMng::readXmlFloat( songNode, "swing_factor", 0.0 ); - int nPanLawIdx = LocalFileMng::readXmlFloat( songNode, "pan_law", RATIO_STRAIGHT_POLYGONAL ); - float nPanLawKNorm = LocalFileMng::readXmlFloat( songNode, "pan_law_k_norm", K_NORM_DEFAULT ); pSong = new Song( sName, sAuthor, fBpm, fVolume ); pSong->set_metronome_volume( fMetronomeVolume ); @@ -687,11 +685,52 @@ Song* SongReader::readSong( const QString& filename ) pSong->set_humanize_time_value( fHumanizeTimeValue ); pSong->set_humanize_velocity_value( fHumanizeVelocityValue ); pSong->set_swing_factor( fSwingFactor ); - pSong->setPanLawIdx( nPanLawIdx ); - pSong->setPanLawKNorm( nPanLawKNorm ); pSong->set_playback_track_filename( sPlaybackTrack ); pSong->set_playback_track_enabled( bPlaybackTrackEnabled ); pSong->set_playback_track_volume( fPlaybackTrackVolume ); + + // pan law + Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + QString sPanLawType( LocalFileMng::readXmlString( songNode, "pan_law", "RATIO_STRAIGHT_POLYGONAL" ) ); + float nPanLawKNorm = LocalFileMng::readXmlFloat( songNode, "pan_law_k_norm", K_NORM_DEFAULT ); + if ( sPanLawType == "RATIO_STRAIGHT_POLYGONAL" ) { + pSampler->setPanLawType( pSampler->RATIO_STRAIGHT_POLYGONAL ); + } else if ( sPanLawType == "RATIO_CONST_POWER" ) { + pSampler->setPanLawType( pSampler->RATIO_CONST_POWER ); + } else if ( sPanLawType == "RATIO_CONST_SUM" ) { + pSampler->setPanLawType( pSampler->RATIO_CONST_SUM ); + } else if ( sPanLawType == "LINEAR_STRAIGHT_POLYGONAL" ) { + pSampler->setPanLawType( pSampler->LINEAR_STRAIGHT_POLYGONAL ); + } else if ( sPanLawType == "LINEAR_CONST_POWER" ) { + pSampler->setPanLawType( pSampler->LINEAR_CONST_POWER ); + } else if ( sPanLawType == "LINEAR_CONST_SUM" ) { + pSampler->setPanLawType( pSampler->LINEAR_CONST_SUM ); + } else if ( sPanLawType == "POLAR_STRAIGHT_POLYGONAL" ) { + pSampler->setPanLawType( pSampler->POLAR_STRAIGHT_POLYGONAL ); + } else if ( sPanLawType == "POLAR_CONST_POWER" ) { + pSampler->setPanLawType( pSampler->POLAR_CONST_POWER ); + } else if ( sPanLawType == "POLAR_CONST_SUM" ) { + pSampler->setPanLawType( pSampler->POLAR_CONST_SUM ); + } else if ( sPanLawType == "QUADRATIC_STRAIGHT_POLYGONAL" ) { + pSampler->setPanLawType( pSampler->QUADRATIC_STRAIGHT_POLYGONAL ); + } else if ( sPanLawType == "QUADRATIC_CONST_POWER" ) { + pSampler->setPanLawType( pSampler->QUADRATIC_CONST_POWER ); + } else if ( sPanLawType == "QUADRATIC_CONST_SUM" ) { + pSampler->setPanLawType( pSampler->QUADRATIC_CONST_SUM ); + } else if ( sPanLawType == "LINEAR_CONST_K_NORM" ) { + pSampler->setPanLawType( pSampler->LINEAR_CONST_K_NORM ); + } else if ( sPanLawType == "POLAR_CONST_K_NORM" ) { + pSampler->setPanLawType( pSampler->POLAR_CONST_K_NORM ); + } else if ( sPanLawType == "RATIO_CONST_K_NORM" ) { + pSampler->setPanLawType( pSampler->RATIO_CONST_K_NORM ); + } else if ( sPanLawType == "QUADRATIC_CONST_K_NORM" ) { + pSampler->setPanLawType( pSampler->QUADRATIC_CONST_K_NORM ); + } else { + pSampler->setPanLawType( pSampler->RATIO_STRAIGHT_POLYGONAL ); + //WARNING( failed setting pan law...) + } + + pSampler->setPanLawKNorm( nPanLawKNorm ); QDomNode componentListNode = songNode.firstChildElement( "componentList" ); if ( ( ! componentListNode.isNull() ) ) { diff --git a/src/core/Basics/Song.h b/src/core/Basics/Song.h index 9d1193fe9..35eec6849 100644 --- a/src/core/Basics/Song.h +++ b/src/core/Basics/Song.h @@ -212,11 +212,9 @@ class Song : public H2Core::Object bool has_missing_samples(); void clear_missing_samples(); - void setPanLawIdx( int idx ); - int getPanLawIdx() const ; - void setPanLawKNorm( float fKNorm ); - float getPanLawKNorm() const; - + //void setPanLawIdx( int idx ); + //int getPanLawIdx() const ; + private: ///< volume of the song (0.0..1.0) float __volume; @@ -270,10 +268,6 @@ class Song : public H2Core::Object AutomationPath* __velocity_automation_path; ///< license of the song QString __license; - /** this is set in preferences - */ - int m_nPanLawIdx; - float m_fPanLawKNorm; }; @@ -428,22 +422,15 @@ inline void Song::set_playback_track_volume( const float volume ) { __playback_track_volume = volume; } - +/* inline void Song::setPanLawIdx( int idx ) { m_nPanLawIdx = idx; } inline int Song::getPanLawIdx() const { return m_nPanLawIdx; -} - -inline void Song::setPanLawKNorm( float fKNorm ) { - m_fPanLawKNorm = fKNorm; -} +}*/ -inline float Song::getPanLawKNorm() const { - return m_fPanLawKNorm; -} /** \ingroup H2CORE diff --git a/src/core/LocalFileMgr.cpp b/src/core/LocalFileMgr.cpp index c1763f913..6b519cdc3 100644 --- a/src/core/LocalFileMgr.cpp +++ b/src/core/LocalFileMgr.cpp @@ -380,8 +380,48 @@ int SongWriter::writeSong( Song * pSong, const QString& filename ) LocalFileMng::writeXmlString( songNode, "humanize_time", QString("%1").arg( pSong->get_humanize_time_value() ) ); LocalFileMng::writeXmlString( songNode, "humanize_velocity", QString("%1").arg( pSong->get_humanize_velocity_value() ) ); LocalFileMng::writeXmlString( songNode, "swing_factor", QString("%1").arg( pSong->get_swing_factor() ) ); - LocalFileMng::writeXmlString( songNode, "pan_law", QString("%1").arg( pSong->getPanLawIdx() ) ); - LocalFileMng::writeXmlString( songNode, "pan_law_k_norm", QString("%1").arg( pSong->getPanLawKNorm() ) ); + Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + //LocalFileMng::writeXmlString( songNode, "pan_law", QString("%1").arg( pSampler->getPanLawType() ) ); //TODO write as string + + QString sPanLawType; + int nPanLawType = pSampler->getPanLawType(); + if ( nPanLawType == pSampler->RATIO_STRAIGHT_POLYGONAL ) { + sPanLawType = "RATIO_STRAIGHT_POLYGONAL"; + } else if ( nPanLawType == pSampler->RATIO_CONST_POWER ) { + sPanLawType = "RATIO_CONST_POWER"; + } else if ( nPanLawType == pSampler->RATIO_CONST_SUM ) { + sPanLawType = "RATIO_CONST_SUM"; + } else if ( nPanLawType == pSampler->LINEAR_STRAIGHT_POLYGONAL ) { + sPanLawType = "LINEAR_STRAIGHT_POLYGONAL"; + } else if ( nPanLawType == pSampler->LINEAR_CONST_POWER ) { + sPanLawType = "LINEAR_CONST_POWER"; + } else if ( nPanLawType == pSampler->LINEAR_CONST_SUM ) { + sPanLawType = "LINEAR_CONST_SUM"; + } else if ( nPanLawType == pSampler->POLAR_STRAIGHT_POLYGONAL ) { + sPanLawType = "POLAR_STRAIGHT_POLYGONAL"; + } else if ( nPanLawType == pSampler->POLAR_CONST_POWER ) { + sPanLawType = "POLAR_CONST_POWER"; + } else if ( nPanLawType == pSampler->POLAR_CONST_SUM ) { + sPanLawType = "POLAR_CONST_SUM"; + } else if ( nPanLawType == pSampler->QUADRATIC_STRAIGHT_POLYGONAL ) { + sPanLawType = "QUADRATIC_STRAIGHT_POLYGONAL"; + } else if ( nPanLawType == pSampler->QUADRATIC_CONST_POWER ) { + sPanLawType = "QUADRATIC_CONST_POWER"; + } else if ( nPanLawType == pSampler->QUADRATIC_CONST_SUM ) { + sPanLawType = "QUADRATIC_CONST_SUM"; + } else if ( nPanLawType == pSampler->LINEAR_CONST_K_NORM ) { + sPanLawType = "LINEAR_CONST_K_NORM"; + } else if ( nPanLawType == pSampler->POLAR_CONST_K_NORM ) { + sPanLawType = "POLAR_CONST_K_NORM"; + } else if ( nPanLawType == pSampler->RATIO_CONST_K_NORM ) { + sPanLawType = "RATIO_CONST_K_NORM"; + } else if ( nPanLawType == pSampler->QUADRATIC_CONST_K_NORM ) { + sPanLawType = "QUADRATIC_CONST_K_NORM"; + } else { + //WARNING( failed setting pan law...) + } + LocalFileMng::writeXmlString( songNode, "pan_law", sPanLawType ); + LocalFileMng::writeXmlString( songNode, "pan_law_k_norm", QString("%1").arg( pSampler->getPanLawKNorm() ) ); // component List QDomNode componentListNode = doc.createElement( "componentList" ); diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 23f669668..8fb58711b 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -91,24 +91,9 @@ Sampler::Sampler() // dummy instrument used for playback track m_pPlaybackTrackInstrument = createInstrument( PLAYBACK_INSTR_ID, sEmptySampleFilename, 0.8 ); m_nPlayBackSamplePosition = 0; - - // write the addresses of pan law function to avoid many switch - case later - m_panLawAddresses[ RATIO_STRAIGHT_POLYGONAL ] = &this->ratioStraightPolygonalPanLaw; - m_panLawAddresses[ RATIO_CONST_POWER ] = &this->ratioConstPowerPanLaw; - m_panLawAddresses[ RATIO_CONST_SUM ] = &this->ratioConstSumPanLaw; - m_panLawAddresses[ LINEAR_STRAIGHT_POLYGONAL ] = &this->linearStraightPolygonalPanLaw; - m_panLawAddresses[ LINEAR_CONST_POWER ] = &this->linearConstPowerPanLaw; - m_panLawAddresses[ LINEAR_CONST_SUM ] = &this->linearConstSumPanLaw; - m_panLawAddresses[ POLAR_STRAIGHT_POLYGONAL ] = &this->polarStraightPolygonalPanLaw; - m_panLawAddresses[ POLAR_CONST_POWER ] = &this->polarConstPowerPanLaw; - m_panLawAddresses[ POLAR_CONST_SUM ] = &this->polarConstSumPanLaw; - m_panLawAddresses[ QUADRATIC_STRAIGHT_POLYGONAL ] = &this->quadraticStraightPolygonalPanLaw; - m_panLawAddresses[ QUADRATIC_CONST_POWER ] = &this->quadraticConstPowerPanLaw; - m_panLawAddresses[ QUADRATIC_CONST_SUM ] = &this->quadraticConstSumPanLaw; - m_panLawAddresses[ LINEAR_CONST_K_NORM ] = &this->linearConstKNormPanLaw; - m_panLawAddresses[ POLAR_CONST_K_NORM ] = &this->polarConstKNormPanLaw; - m_panLawAddresses[ RATIO_CONST_K_NORM ] = &this->ratioConstKNormPanLaw; - m_panLawAddresses[ QUADRATIC_CONST_K_NORM ] = &this->quadraticConstKNormPanLaw; + + // default pan law + m_pPanLaw = &this->linearStraightPolygonalPanLaw; } @@ -405,31 +390,31 @@ float Sampler::quadraticConstSumPanLaw( float fPan ) { float Sampler::linearConstKNormPanLaw( float fPan ) { // the constant k norm pan law interpreting fPan as the "linear" parameter - Song* pSong = Hydrogen::get_instance()->getSong(); - float k = pSong->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? + Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + float k = pSampler->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? return ( 1. - fPan ) / pow( ( pow( (1. - fPan), k ) + pow( (1. + fPan), k ) ), 1./k ); } float Sampler::quadraticConstKNormPanLaw( float fPan ) { // the constant k norm pan law interpreting fPan as the "quadratic" parameter - Song* pSong = Hydrogen::get_instance()->getSong(); - float k = pSong->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? + Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + float k = pSampler->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? return sqrt( 1. - fPan ) / pow( ( pow( (1. - fPan), 0.5 * k ) + pow( (1. + fPan), 0.5 * k ) ), 1./k ); } float Sampler::polarConstKNormPanLaw( float fPan ) { // the constant k norm pan law interpreting fPan as the "polar" parameter float fTheta = 0.25 * M_PI * ( fPan + 1 ); - Song* pSong = Hydrogen::get_instance()->getSong(); - float k = pSong->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? + Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + float k = pSampler->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? float cosTheta = cos( fTheta ); return cosTheta / pow( ( pow( cosTheta, k ) + pow( sin( fTheta ), k ) ), 1./k ); } float Sampler::ratioConstKNormPanLaw( float fPan ) { // the constant k norm pan law interpreting fPan as the "ratio" parameter - Song* pSong = Hydrogen::get_instance()->getSong(); - float k = pSong->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? + Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + float k = pSampler->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? if ( fPan <= 0 ) { return 1. / pow( ( 1. + pow( (1. + fPan), k ) ), 1./k ); @@ -492,12 +477,12 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) // Pass fPan to the Pan Law // use Straight pol pan law. // TODO a new song member, set in preferences, must point the desired pan law Sampler member function - float (*panLaw)( float ); + //float (*panLaw)( float ); //panLaw = getPanLawAddress( pSong->getPanLawIdx() ); //panLaw = &this->ratioStraightPolygonalPanLaw; - panLaw = m_panLawAddresses[ pSong->getPanLawIdx() ]; - float fPan_L = panLaw( fPan ); - float fPan_R = panLaw( -fPan ); + //panLaw = m_panLawAddresses[ pSong->getPanLawIdx() ]; + float fPan_L = m_pPanLaw( fPan ); + float fPan_R = m_pPanLaw( -fPan ); //--------------------------------------------------------- bool nReturnValues [pInstr->get_components()->size()]; @@ -1680,5 +1665,82 @@ inline float ( *Sampler::getPanLawAddress( int idx ) ) ( float ) { } }*/ + +void Sampler::setPanLawType( int nPanLawType ) { + if ( nPanLawType == this->RATIO_STRAIGHT_POLYGONAL ) { + m_pPanLaw = &this->ratioStraightPolygonalPanLaw; + } else if ( nPanLawType == this->RATIO_CONST_POWER ) { + m_pPanLaw = &this->ratioConstPowerPanLaw; + } else if ( nPanLawType == this->RATIO_CONST_SUM ) { + m_pPanLaw = &this->ratioConstPowerPanLaw; + } else if ( nPanLawType == this->LINEAR_STRAIGHT_POLYGONAL ) { + m_pPanLaw = &this->linearStraightPolygonalPanLaw; + } else if ( nPanLawType == this->LINEAR_CONST_POWER ) { + m_pPanLaw = &this->linearConstPowerPanLaw; + } else if ( nPanLawType == this->LINEAR_CONST_SUM ) { + m_pPanLaw = &this->linearConstSumPanLaw; + } else if ( nPanLawType == this->POLAR_STRAIGHT_POLYGONAL ) { + m_pPanLaw = &this->polarStraightPolygonalPanLaw; + } else if ( nPanLawType == this->POLAR_CONST_POWER ) { + m_pPanLaw = &this->polarConstPowerPanLaw; + } else if ( nPanLawType == this->POLAR_CONST_SUM ) { + m_pPanLaw = &this->polarConstSumPanLaw; + } else if ( nPanLawType == this->QUADRATIC_STRAIGHT_POLYGONAL ) { + m_pPanLaw = &this->quadraticStraightPolygonalPanLaw; + } else if ( nPanLawType == this->QUADRATIC_CONST_POWER ) { + m_pPanLaw = &this->quadraticConstPowerPanLaw; + } else if ( nPanLawType == this->QUADRATIC_CONST_SUM ) { + m_pPanLaw = &this->quadraticConstSumPanLaw; + } else if ( nPanLawType == this->LINEAR_CONST_K_NORM ) { + m_pPanLaw = &this->linearConstKNormPanLaw; + } else if ( nPanLawType == this->POLAR_CONST_K_NORM ) { + m_pPanLaw = &this->polarConstKNormPanLaw; + } else if ( nPanLawType == this->RATIO_CONST_K_NORM ) { + m_pPanLaw = &this->ratioConstKNormPanLaw; + } else if ( nPanLawType == this->QUADRATIC_CONST_K_NORM ) { + m_pPanLaw = &this->quadraticConstKNormPanLaw; + } else { + //WARNING( failed setting pan law...) + } +} + +int Sampler::getPanLawType() { + if ( m_pPanLaw == &this->ratioStraightPolygonalPanLaw ) { + return this->RATIO_STRAIGHT_POLYGONAL; + } else if ( m_pPanLaw == &this->ratioConstPowerPanLaw ) { + return this->RATIO_CONST_POWER; + } else if ( m_pPanLaw == &this->ratioConstSumPanLaw ) { + return this->RATIO_CONST_SUM; + } else if ( m_pPanLaw == &this->linearStraightPolygonalPanLaw ) { + return this->LINEAR_STRAIGHT_POLYGONAL; + } else if ( m_pPanLaw == &this->linearConstPowerPanLaw ) { + return this->LINEAR_CONST_POWER; + } else if ( m_pPanLaw == &this->linearConstSumPanLaw ) { + return this->LINEAR_CONST_SUM; + } else if ( m_pPanLaw == &this->polarStraightPolygonalPanLaw ) { + return this->POLAR_STRAIGHT_POLYGONAL; + } else if ( m_pPanLaw == &this->polarConstPowerPanLaw ) { + return this->POLAR_CONST_POWER; + } else if ( m_pPanLaw == &this->polarConstSumPanLaw ) { + return this->POLAR_CONST_SUM; + } else if ( m_pPanLaw == &this->quadraticStraightPolygonalPanLaw ) { + return this->QUADRATIC_STRAIGHT_POLYGONAL; + } else if ( m_pPanLaw == &this->quadraticConstPowerPanLaw ) { + return this->QUADRATIC_CONST_POWER; + } else if ( m_pPanLaw == &this->quadraticConstSumPanLaw ) { + return this->QUADRATIC_CONST_SUM; + } else if ( m_pPanLaw == &this->linearConstKNormPanLaw ) { + return this->LINEAR_CONST_K_NORM; + } else if ( m_pPanLaw == &this->polarConstKNormPanLaw ) { + return this->POLAR_CONST_K_NORM; + } else if ( m_pPanLaw == &this->ratioConstKNormPanLaw ) { + return this->RATIO_CONST_K_NORM; + } else if ( m_pPanLaw == &this->quadraticConstKNormPanLaw ) { + return this->QUADRATIC_CONST_K_NORM; + } else { + return 0; + } +} + }; diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index fe0b3c3c4..cc84d1eb0 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -32,29 +32,10 @@ #include #include -/* indices for pan law types - NOTE: the following values are saved in songs, so developers should not change them... TODO better way to save? -*/ -#define RATIO_STRAIGHT_POLYGONAL 0 -#define RATIO_CONST_POWER 1 -#define RATIO_CONST_SUM 2 -#define LINEAR_STRAIGHT_POLYGONAL 3 -#define LINEAR_CONST_POWER 4 -#define LINEAR_CONST_SUM 5 -#define POLAR_STRAIGHT_POLYGONAL 6 -#define POLAR_CONST_POWER 7 -#define POLAR_CONST_SUM 8 -#define QUADRATIC_STRAIGHT_POLYGONAL 9 -#define QUADRATIC_CONST_POWER 10 -#define QUADRATIC_CONST_SUM 11 -#define LINEAR_CONST_K_NORM 12 -#define RATIO_CONST_K_NORM 13 -#define POLAR_CONST_K_NORM 14 -#define QUADRATIC_CONST_K_NORM 15 - - -/* define default k for pan law with -4.5dB center compensation, given L^k + R^k = const - it is the mean compromise between constant sum and constant power */ + +/** define default k for pan law with -4.5dB center compensation, given L^k + R^k = const + * it is the mean compromise between constant sum and constant power + */ #define K_NORM_DEFAULT 1.3333333333333 namespace H2Core @@ -76,6 +57,25 @@ class Sampler : public H2Core::Object { H2_OBJECT public: + enum PAN_LAW_TYPES { + RATIO_STRAIGHT_POLYGONAL = 0, + RATIO_CONST_POWER, + RATIO_CONST_SUM, + LINEAR_STRAIGHT_POLYGONAL, + LINEAR_CONST_POWER, + LINEAR_CONST_SUM, + POLAR_STRAIGHT_POLYGONAL, + POLAR_CONST_POWER, + POLAR_CONST_SUM, + QUADRATIC_STRAIGHT_POLYGONAL, + QUADRATIC_CONST_POWER, + QUADRATIC_CONST_SUM, + LINEAR_CONST_K_NORM, + RATIO_CONST_K_NORM, + POLAR_CONST_K_NORM, + QUADRATIC_CONST_K_NORM + }; + float* m_pMainOut_L; ///< sampler main out (left channel) float* m_pMainOut_R; ///< sampler main out (right channel) @@ -154,8 +154,13 @@ class Sampler : public H2Core::Object static float polarConstKNormPanLaw( float fPan ); static float ratioConstKNormPanLaw( float fPan ); static float quadraticConstKNormPanLaw( float fPan ); - float ( *m_panLawAddresses[16] ) ( float ); + //float ( *m_panLawAddresses[16] ) ( float ); // float ( *getPanLawAddress( int idx ) ) ( float ); + int getPanLawType(); + void setPanLawType( int nPanLawType ); + void setPanLawKNorm( float fKNorm ); + float getPanLawKNorm() const; + private: std::vector m_playingNotesQueue; @@ -176,6 +181,10 @@ class Sampler : public H2Core::Object int m_nPlayBackSamplePosition; + // points the pan law function + float (*m_pPanLaw)( float ); + // k such that L^k+R^k = 1. Used in constant k-Norm pan law + float m_fPanLawKNorm; bool processPlaybackTrack(int nBufferSize); @@ -215,8 +224,17 @@ class Sampler : public H2Core::Object float fLayerPitch, Song* pSong ); + }; +inline void Sampler::setPanLawKNorm( float fKNorm ) { + m_fPanLawKNorm = fKNorm; +} + +inline float Sampler::getPanLawKNorm() const { + return m_fPanLawKNorm; +} + } // namespace diff --git a/src/gui/src/PreferencesDialog.cpp b/src/gui/src/PreferencesDialog.cpp index c6803444c..8ce50c6ad 100644 --- a/src/gui/src/PreferencesDialog.cpp +++ b/src/gui/src/PreferencesDialog.cpp @@ -207,42 +207,58 @@ PreferencesDialog::PreferencesDialog(QWidget* parent) // pan law - // insert the items here. They are consistent with sampler indices, no matter of the order in this menu - panLawComboBox->addItem( tr("Balance Law (0dB) - linear pan parameter"), QVariant( LINEAR_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB) - linear pan parameter"), QVariant( LINEAR_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB) - linear pan parameter"), QVariant( LINEAR_CONST_SUM ) ); + Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + + + // insert the items here. They work consistently no matter of the order in this menu + panLawComboBox->addItem( tr("Balance Law (0dB) - linear pan parameter"), + QVariant( pSampler->LINEAR_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB) - linear pan parameter"), + QVariant( pSampler->LINEAR_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB) - linear pan parameter"), + QVariant( pSampler->LINEAR_CONST_SUM ) ); panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - linear parameter"), - QVariant( LINEAR_CONST_K_NORM ) ); + QVariant( pSampler->LINEAR_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); - panLawComboBox->addItem( tr("Balance Law (0dB) - polar pan parameter"), QVariant( POLAR_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB) - polar pan parameter"), QVariant( POLAR_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB) - polar pan parameter"), QVariant( POLAR_CONST_SUM ) ); + panLawComboBox->addItem( tr("Balance Law (0dB) - polar pan parameter"), + QVariant( pSampler->POLAR_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB) - polar pan parameter"), + QVariant( pSampler->POLAR_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB) - polar pan parameter"), + QVariant( pSampler->POLAR_CONST_SUM ) ); panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - polar parameter"), - QVariant( POLAR_CONST_K_NORM ) ); + QVariant( pSampler->POLAR_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); - panLawComboBox->addItem( tr("Balance Law (0dB) - ratio pan parameter"), QVariant( RATIO_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB) - ratio pan parameter"), QVariant( RATIO_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB) - ratio pan parameter"), QVariant( RATIO_CONST_SUM ) ); + panLawComboBox->addItem( tr("Balance Law (0dB) - ratio pan parameter"), + QVariant( pSampler->RATIO_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB) - ratio pan parameter"), + QVariant( pSampler->RATIO_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB) - ratio pan parameter"), + QVariant( pSampler->RATIO_CONST_SUM ) ); panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - ratio parameter"), - QVariant( RATIO_CONST_K_NORM ) ); + QVariant( pSampler->RATIO_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); - panLawComboBox->addItem( tr("Balance Law (0dB) - quadratic pan parameter"), QVariant( QUADRATIC_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB) - quadratic pan parameter"), QVariant( QUADRATIC_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB) - quadratic pan parameter"), QVariant( QUADRATIC_CONST_SUM ) ); + panLawComboBox->addItem( tr("Balance Law (0dB) - quadratic pan parameter"), + QVariant( pSampler->QUADRATIC_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB) - quadratic pan parameter"), + QVariant( pSampler->QUADRATIC_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB) - quadratic pan parameter"), + QVariant( pSampler->QUADRATIC_CONST_SUM ) ); panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - quadratic parameter"), - QVariant( QUADRATIC_CONST_K_NORM ) ); + QVariant( pSampler->QUADRATIC_CONST_K_NORM ) ); + - Song* pSong = Hydrogen::get_instance()->getSong(); - panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSong->getPanLawIdx() ) ); + //panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSong->getPanLawIdx() ) ); + panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSampler->getPanLawType() ) ); panLawChanged(); // to hide dB SPL compensation connect(panLawComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT( panLawChanged() )); - /* dB SPL Center Compensation, audio engineer friendly. - * (will be converted to the corresponding k assuming L^k + R^k = 1 ) - */ + /** dB SPL Center Compensation, audio engineers friendly. + * (will be converted to the corresponding k assuming L^k + R^k = 1 ) + */ QValidator *validator = new QDoubleValidator( -10000., 0., 20, this ); dBCompensationLineEdit->setValidator( validator ); - dBCompensationLineEdit->setText( QString( "%1" ).arg( -6.0206 / pSong->getPanLawKNorm() ) ); + dBCompensationLineEdit->setText( QString( "%1" ).arg( -6.0206 / pSampler->getPanLawKNorm() ) ); // Appearance tab QString applicationFamily = pPref->getApplicationFontFamily(); @@ -519,9 +535,12 @@ void PreferencesDialog::on_okBtn_clicked() } - Song* pSong = Hydrogen::get_instance()->getSong(); + Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); bool bOk; - pSong->setPanLawIdx( ( panLawComboBox->currentData() ).toInt( &bOk ) ); + // pSong->setPanLawIdx( ( panLawComboBox->currentData() ).toInt( &bOk ) ); + pSampler->setPanLawType( ( panLawComboBox->currentData() ).toInt( &bOk ) ); + + // allowing both point or comma decimal separator float fdBCenterCompensation = ( dBCompensationLineEdit->text() ).replace( ",", "." ).toFloat( &bOk ); if ( !bOk ) { // this should not happen @@ -537,7 +556,7 @@ void PreferencesDialog::on_okBtn_clicked() /** converts the dB Compensation to the corresponding exponent k: assuming constraint L^k + R^k = 1 * For example -6.0206 dB <=> k = 1 <=> L + R = 1 (i.e. constant sum) */ - pSong->setPanLawKNorm( - 6.0206 / fdBCenterCompensation ); + pSampler->setPanLawKNorm( - 6.0206 / fdBCenterCompensation ); // metronome pPref->m_fMetronomeVolume = (metronomeVolumeSpinBox->value()) / 100.0; @@ -1046,11 +1065,12 @@ void PreferencesDialog::toggleOscCheckBox(bool toggled) void PreferencesDialog::panLawChanged(){ bool bOk; - int nPanLaw = ( panLawComboBox->currentData() ).toInt( &bOk); - if ( nPanLaw == LINEAR_CONST_K_NORM - || nPanLaw == POLAR_CONST_K_NORM - || nPanLaw == RATIO_CONST_K_NORM - || nPanLaw == QUADRATIC_CONST_K_NORM + int nPanLawType = ( panLawComboBox->currentData() ).toInt( &bOk); + Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + if ( nPanLawType == pSampler->LINEAR_CONST_K_NORM + || nPanLawType == pSampler->POLAR_CONST_K_NORM + || nPanLawType == pSampler->RATIO_CONST_K_NORM + || nPanLawType == pSampler->QUADRATIC_CONST_K_NORM ) { dBCompensationLineEdit->show(); From f1cf5569bf954ea6500b76e5ed48c372295fc97e Mon Sep 17 00:00:00 2001 From: oddtime Date: Mon, 18 Jan 2021 15:44:54 +0100 Subject: [PATCH 14/26] add PanLawDialog, remove from PreferencesDialog --- src/core/Sampler/Sampler.cpp | 32 +- src/core/Sampler/Sampler.h | 2 - src/gui/src/HydrogenApp.cpp | 7 +- src/gui/src/HydrogenApp.h | 3 +- src/gui/src/MainForm.cpp | 5 + src/gui/src/MainForm.h | 1 + src/gui/src/PanLawDialog.cpp | 172 +++++++ src/gui/src/PanLawDialog.h | 52 ++ src/gui/src/PanLawDialog_UI.ui | 184 +++++++ src/gui/src/PreferencesDialog.cpp | 98 +--- src/gui/src/PreferencesDialog.h | 1 - src/gui/src/PreferencesDialog_UI.ui | 740 +++++++++++++--------------- 12 files changed, 764 insertions(+), 533 deletions(-) create mode 100644 src/gui/src/PanLawDialog.cpp create mode 100644 src/gui/src/PanLawDialog.h create mode 100644 src/gui/src/PanLawDialog_UI.ui diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 8fb58711b..4e9e74627 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -391,14 +391,14 @@ float Sampler::quadraticConstSumPanLaw( float fPan ) { float Sampler::linearConstKNormPanLaw( float fPan ) { // the constant k norm pan law interpreting fPan as the "linear" parameter Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - float k = pSampler->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? + float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? return ( 1. - fPan ) / pow( ( pow( (1. - fPan), k ) + pow( (1. + fPan), k ) ), 1./k ); } float Sampler::quadraticConstKNormPanLaw( float fPan ) { // the constant k norm pan law interpreting fPan as the "quadratic" parameter Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - float k = pSampler->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? + float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? return sqrt( 1. - fPan ) / pow( ( pow( (1. - fPan), 0.5 * k ) + pow( (1. + fPan), 0.5 * k ) ), 1./k ); } @@ -406,7 +406,7 @@ float Sampler::polarConstKNormPanLaw( float fPan ) { // the constant k norm pan law interpreting fPan as the "polar" parameter float fTheta = 0.25 * M_PI * ( fPan + 1 ); Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - float k = pSampler->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? + float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? float cosTheta = cos( fTheta ); return cosTheta / pow( ( pow( cosTheta, k ) + pow( sin( fTheta ), k ) ), 1./k ); } @@ -414,7 +414,7 @@ float Sampler::polarConstKNormPanLaw( float fPan ) { float Sampler::ratioConstKNormPanLaw( float fPan ) { // the constant k norm pan law interpreting fPan as the "ratio" parameter Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - float k = pSampler->getPanLawKNorm(); //TODO move k from song to sampler class? pass it as argument? + float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? if ( fPan <= 0 ) { return 1. / pow( ( 1. + pow( (1. + fPan), k ) ), 1./k ); @@ -475,14 +475,8 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) float fPan = fInstrPan + fNotePan * ( 1 - fabs( fInstrPan ) ); // Pass fPan to the Pan Law - // use Straight pol pan law. - // TODO a new song member, set in preferences, must point the desired pan law Sampler member function - //float (*panLaw)( float ); - //panLaw = getPanLawAddress( pSong->getPanLawIdx() ); - //panLaw = &this->ratioStraightPolygonalPanLaw; - //panLaw = m_panLawAddresses[ pSong->getPanLawIdx() ]; - float fPan_L = m_pPanLaw( fPan ); - float fPan_R = m_pPanLaw( -fPan ); + float fPan_L = m_pPanLaw( fPan ); + float fPan_R = m_pPanLaw( -fPan ); //--------------------------------------------------------- bool nReturnValues [pInstr->get_components()->size()]; @@ -1651,20 +1645,6 @@ void Sampler::reinitializePlaybackTrack() m_pPlaybackTrackInstrument->get_components()->front()->set_layer( pPlaybackTrackLayer, 0 ); m_nPlayBackSamplePosition = 0; } -/* -inline float ( *Sampler::getPanLawAddress( int idx ) ) ( float ) { - if ( idx == RATIO_STRAIGHT_POLYGONAL ) { - return &ratioStraightPolygonalPanLaw; - } else if ( idx == RATIO_CONST_POWER ) { - return &ratioConstPowerPanLaw; - } else if ( idx == RATIO_CONST_SUM ) { - return &ratioConstSumPanLaw; - } else { - //TODO warning - return &ratioStraightPolygonalPanLaw; // default value - } -}*/ - void Sampler::setPanLawType( int nPanLawType ) { if ( nPanLawType == this->RATIO_STRAIGHT_POLYGONAL ) { diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index cc84d1eb0..fd4dace4f 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -154,8 +154,6 @@ class Sampler : public H2Core::Object static float polarConstKNormPanLaw( float fPan ); static float ratioConstKNormPanLaw( float fPan ); static float quadraticConstKNormPanLaw( float fPan ); - //float ( *m_panLawAddresses[16] ) ( float ); - // float ( *getPanLawAddress( int idx ) ) ( float ); int getPanLawType(); void setPanLawType( int nPanLawType ); void setPanLawKNorm( float fKNorm ); diff --git a/src/gui/src/HydrogenApp.cpp b/src/gui/src/HydrogenApp.cpp index 366a8f067..7a791cab8 100644 --- a/src/gui/src/HydrogenApp.cpp +++ b/src/gui/src/HydrogenApp.cpp @@ -31,6 +31,7 @@ #include "HydrogenApp.h" #include "Skin.h" #include "PreferencesDialog.h" +#include "PanLawDialog.h" #include "MainForm.h" #include "PlayerControl.h" #include "AudioEngineInfoForm.h" @@ -388,7 +389,11 @@ void HydrogenApp::showInstrumentPanel(bool show) m_pMainForm->update_instrument_checkbox( !show ); } - +void HydrogenApp::showPanLawDialog() +{ + PanLawDialog panLawDialog(m_pMainForm); + panLawDialog.exec(); +} void HydrogenApp::showPreferencesDialog() { diff --git a/src/gui/src/HydrogenApp.h b/src/gui/src/HydrogenApp.h index 046ed8443..fd6b1f7dd 100644 --- a/src/gui/src/HydrogenApp.h +++ b/src/gui/src/HydrogenApp.h @@ -86,7 +86,8 @@ class HydrogenApp : public QObject, public EventListener, public H2Core::Object */ bool openSong( const QString sFilename ); bool openSong( H2Core::Song* pSong ); - + + void showPanLawDialog(); void showPreferencesDialog(); void updateMixerCheckbox(); void showMixer(bool bShow); diff --git a/src/gui/src/MainForm.cpp b/src/gui/src/MainForm.cpp index 1d5071c9e..8a64cdf29 100644 --- a/src/gui/src/MainForm.cpp +++ b/src/gui/src/MainForm.cpp @@ -291,6 +291,7 @@ void MainForm::createMenuBar() m_pFileMenu->addAction( textFileNew, this, SLOT( action_file_new() ), QKeySequence( "Ctrl+N" ) ); m_pFileMenu->addAction( tr( "Show &info" ), this, SLOT( action_file_songProperties() ), QKeySequence( "" ) ); + m_pFileMenu->addAction( tr( "Select Pan Law" ), this, SLOT( showPanLawDialog() ), QKeySequence( "" ) ); m_pFileMenu->addSeparator(); // ----- @@ -936,6 +937,10 @@ void MainForm::action_file_openDemo() } } +void MainForm::showPanLawDialog() +{ + h2app->showPanLawDialog(); +} void MainForm::showPreferencesDialog() diff --git a/src/gui/src/MainForm.h b/src/gui/src/MainForm.h index e35d4f463..8791bacf0 100644 --- a/src/gui/src/MainForm.h +++ b/src/gui/src/MainForm.h @@ -80,6 +80,7 @@ class MainForm : public QMainWindow, public EventListener, public H2Core::Object public slots: void showPreferencesDialog(); + void showPanLawDialog(); void showUserManual(); /** diff --git a/src/gui/src/PanLawDialog.cpp b/src/gui/src/PanLawDialog.cpp new file mode 100644 index 000000000..3e5b3ec79 --- /dev/null +++ b/src/gui/src/PanLawDialog.cpp @@ -0,0 +1,172 @@ +/* + * Hydrogen + * Copyright(c) 2002-2008 by Alex >Comix< Cominu [comix@users.sourceforge.net] + * + * http://www.hydrogen-music.org + * + * This 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 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include + +#include "Skin.h" +#include "PanLawDialog.h" +#include "HydrogenApp.h" +#include "MainForm.h" + +#include "qmessagebox.h" +#include "qstylefactory.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include "SongEditor/SongEditor.h" +#include "SongEditor/SongEditorPanel.h" + + +using namespace H2Core; + +const char* PanLawDialog::__class_name = "PanLawDialog"; + +PanLawDialog::PanLawDialog(QWidget* parent) + : QDialog( parent ) + , Object( __class_name ) +{ + setupUi( this ); + + setWindowTitle( tr( "Pan Law Settings" ) ); + + setMinimumSize( width(), height() ); + + Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + + // insert the items here. They work consistently no matter of the order in this menu + panLawComboBox->addItem( tr("Balance Law (0dB) - linear pan parameter"), + QVariant( pSampler->LINEAR_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB) - linear pan parameter"), + QVariant( pSampler->LINEAR_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB) - linear pan parameter"), + QVariant( pSampler->LINEAR_CONST_SUM ) ); + panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - linear parameter"), + QVariant( pSampler->LINEAR_CONST_K_NORM ) ); + panLawComboBox->insertSeparator(100); + panLawComboBox->addItem( tr("Balance Law (0dB) - polar pan parameter"), + QVariant( pSampler->POLAR_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB) - polar pan parameter"), + QVariant( pSampler->POLAR_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB) - polar pan parameter"), + QVariant( pSampler->POLAR_CONST_SUM ) ); + panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - polar parameter"), + QVariant( pSampler->POLAR_CONST_K_NORM ) ); + panLawComboBox->insertSeparator(100); + panLawComboBox->addItem( tr("Balance Law (0dB) - ratio pan parameter"), + QVariant( pSampler->RATIO_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB) - ratio pan parameter"), + QVariant( pSampler->RATIO_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB) - ratio pan parameter"), + QVariant( pSampler->RATIO_CONST_SUM ) ); + panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - ratio parameter"), + QVariant( pSampler->RATIO_CONST_K_NORM ) ); + panLawComboBox->insertSeparator(100); + panLawComboBox->addItem( tr("Balance Law (0dB) - quadratic pan parameter"), + QVariant( pSampler->QUADRATIC_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB) - quadratic pan parameter"), + QVariant( pSampler->QUADRATIC_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB) - quadratic pan parameter"), + QVariant( pSampler->QUADRATIC_CONST_SUM ) ); + panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - quadratic parameter"), + QVariant( pSampler->QUADRATIC_CONST_K_NORM ) ); + + panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSampler->getPanLawType() ) ); + panLawChanged(); // to hide dB SPL compensation + connect(panLawComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT( panLawChanged() )); + + /** dB SPL Center Compensation, audio engineers friendly. + * (will be converted to the corresponding k assuming L^k + R^k = 1 ) + */ + QValidator *validator = new QDoubleValidator( -10000., 0., 20, this ); + dBCompensationLineEdit->setValidator( validator ); + dBCompensationLineEdit->setText( QString( "%1" ).arg( -6.0206 / pSampler->getPanLawKNorm() ) ); + +} + + + + +PanLawDialog::~PanLawDialog() +{ + INFOLOG("~PAN_LAW_DIALOG"); +} + + + +void PanLawDialog::on_cancelBtn_clicked() +{ + reject(); +} + + +void PanLawDialog::on_okBtn_clicked() +{ + Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + bool bOk; + + pSampler->setPanLawType( ( panLawComboBox->currentData() ).toInt( &bOk ) ); + + + // allowing both point or comma decimal separator + float fdBCenterCompensation = ( dBCompensationLineEdit->text() ).replace( ",", "." ).toFloat( &bOk ); + if ( !bOk ) { // this should not happen + QMessageBox::information( this, "Hydrogen", tr( "dB Center Compensation rejected" ) ); + return; + } else if ( fdBCenterCompensation > -0.01 ) { + /** reject small absolute values since computer approximation (k tends rapidly to infinity at 0) + * and obviously reject positive values to not boost the center (compensation has the opposite aim). + */ + QMessageBox::information( this, "Hydrogen", tr( "dB Center Compensation must be less than -0.01" ) ); + return; + } + /** convert the dB Compensation to the corresponding exponent k: assuming constraint L^k + R^k = 1 + * For example -6.0206 dB <=> k = 1 <=> L + R = 1 (i.e. constant sum) + */ + pSampler->setPanLawKNorm( - 6.0206 / fdBCenterCompensation ); + + accept(); +} + +void PanLawDialog::panLawChanged(){ + bool bOk; + int nPanLawType = ( panLawComboBox->currentData() ).toInt( &bOk); + Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + if ( nPanLawType == pSampler->LINEAR_CONST_K_NORM + || nPanLawType == pSampler->POLAR_CONST_K_NORM + || nPanLawType == pSampler->RATIO_CONST_K_NORM + || nPanLawType == pSampler->QUADRATIC_CONST_K_NORM + ) + { + dBCompensationLineEdit->show(); + dBCompensationLbl->show(); + } else { + dBCompensationLineEdit->hide(); + dBCompensationLbl->hide(); + } +} diff --git a/src/gui/src/PanLawDialog.h b/src/gui/src/PanLawDialog.h new file mode 100644 index 000000000..3f680c01e --- /dev/null +++ b/src/gui/src/PanLawDialog.h @@ -0,0 +1,52 @@ +/* + * Hydrogen + * Copyright(c) 2002-2008 by Alex >Comix< Cominu [comix@users.sourceforge.net] + * + * http://www.hydrogen-music.org + * + * This 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 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef PAN_LAW_DIALOG_H +#define PAN_LAW_DIALOG_H + + +#include "ui_PanLawDialog_UI.h" + +#include + +/// +/// Preferences Dialog +/// +class PanLawDialog : public QDialog, private Ui_PanLawDialog_UI, public H2Core::Object +{ + H2_OBJECT + Q_OBJECT + public: + explicit PanLawDialog( QWidget* parent ); + ~PanLawDialog(); + + private slots: + void on_okBtn_clicked(); + void on_cancelBtn_clicked(); + void panLawChanged(); + + private: + void updateInfo(); +}; + +#endif + diff --git a/src/gui/src/PanLawDialog_UI.ui b/src/gui/src/PanLawDialog_UI.ui new file mode 100644 index 000000000..64f89a082 --- /dev/null +++ b/src/gui/src/PanLawDialog_UI.ui @@ -0,0 +1,184 @@ + + + PanLawDialog_UI + + + + 0 + 0 + 508 + 171 + + + + Form1 + + + + + 20 + 40 + 471 + 26 + + + + + 0 + 26 + + + + + 500 + 16777215 + + + + + + + 20 + 20 + 121 + 18 + + + + Select Pan Law: + + + + + + 180 + 80 + 220 + 26 + + + + + 246 + 16777215 + + + + dB SPL Center Compensation + + + + + + 410 + 80 + 80 + 26 + + + + + 80 + 16777215 + + + + + + + 10 + 130 + 491 + 28 + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 184 + 16 + + + + + + + + + 0 + 0 + + + + + 0 + 22 + + + + &Cancel + + + Alt+C + + + + + + + + 0 + 0 + + + + + 0 + 22 + + + + &OK + + + Alt+O + + + true + + + false + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 183 + 16 + + + + + + + + + + + diff --git a/src/gui/src/PreferencesDialog.cpp b/src/gui/src/PreferencesDialog.cpp index 8ce50c6ad..9af262dc6 100644 --- a/src/gui/src/PreferencesDialog.cpp +++ b/src/gui/src/PreferencesDialog.cpp @@ -204,62 +204,7 @@ PreferencesDialog::PreferencesDialog(QWidget* parent) } resampleComboBox->setCurrentIndex( (int) AudioEngine::get_instance()->get_sampler()->getInterpolateMode() ); - - - // pan law - Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - - // insert the items here. They work consistently no matter of the order in this menu - panLawComboBox->addItem( tr("Balance Law (0dB) - linear pan parameter"), - QVariant( pSampler->LINEAR_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB) - linear pan parameter"), - QVariant( pSampler->LINEAR_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB) - linear pan parameter"), - QVariant( pSampler->LINEAR_CONST_SUM ) ); - panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - linear parameter"), - QVariant( pSampler->LINEAR_CONST_K_NORM ) ); - panLawComboBox->insertSeparator(100); - panLawComboBox->addItem( tr("Balance Law (0dB) - polar pan parameter"), - QVariant( pSampler->POLAR_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB) - polar pan parameter"), - QVariant( pSampler->POLAR_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB) - polar pan parameter"), - QVariant( pSampler->POLAR_CONST_SUM ) ); - panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - polar parameter"), - QVariant( pSampler->POLAR_CONST_K_NORM ) ); - panLawComboBox->insertSeparator(100); - panLawComboBox->addItem( tr("Balance Law (0dB) - ratio pan parameter"), - QVariant( pSampler->RATIO_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB) - ratio pan parameter"), - QVariant( pSampler->RATIO_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB) - ratio pan parameter"), - QVariant( pSampler->RATIO_CONST_SUM ) ); - panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - ratio parameter"), - QVariant( pSampler->RATIO_CONST_K_NORM ) ); - panLawComboBox->insertSeparator(100); - panLawComboBox->addItem( tr("Balance Law (0dB) - quadratic pan parameter"), - QVariant( pSampler->QUADRATIC_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB) - quadratic pan parameter"), - QVariant( pSampler->QUADRATIC_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB) - quadratic pan parameter"), - QVariant( pSampler->QUADRATIC_CONST_SUM ) ); - panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - quadratic parameter"), - QVariant( pSampler->QUADRATIC_CONST_K_NORM ) ); - - - //panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSong->getPanLawIdx() ) ); - panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSampler->getPanLawType() ) ); - panLawChanged(); // to hide dB SPL compensation - connect(panLawComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT( panLawChanged() )); - - /** dB SPL Center Compensation, audio engineers friendly. - * (will be converted to the corresponding k assuming L^k + R^k = 1 ) - */ - QValidator *validator = new QDoubleValidator( -10000., 0., 20, this ); - dBCompensationLineEdit->setValidator( validator ); - dBCompensationLineEdit->setText( QString( "%1" ).arg( -6.0206 / pSampler->getPanLawKNorm() ) ); - // Appearance tab QString applicationFamily = pPref->getApplicationFontFamily(); int applicationPointSize = pPref->getApplicationFontPointSize(); @@ -533,30 +478,7 @@ void PreferencesDialog::on_okBtn_clicked() else if ( sampleRateComboBox->currentText() == "96000" ) { pPref->m_nSampleRate = 96000; } - - - Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - bool bOk; - // pSong->setPanLawIdx( ( panLawComboBox->currentData() ).toInt( &bOk ) ); - pSampler->setPanLawType( ( panLawComboBox->currentData() ).toInt( &bOk ) ); - - - // allowing both point or comma decimal separator - float fdBCenterCompensation = ( dBCompensationLineEdit->text() ).replace( ",", "." ).toFloat( &bOk ); - if ( !bOk ) { // this should not happen - QMessageBox::information( this, "Hydrogen", tr( "dB Center Compensation rejected" ) ); - return; - } else if ( fdBCenterCompensation > -0.01 ) { - /** reject small absolute values since computer approximation (k tends rapidly to infinity at 0) - * and obviously reject positive values to not boost the center (compensation has the opposite aim). - */ - QMessageBox::information( this, "Hydrogen", tr( "dB Center Compensation must be less than -0.01" ) ); - return; - } - /** converts the dB Compensation to the corresponding exponent k: assuming constraint L^k + R^k = 1 - * For example -6.0206 dB <=> k = 1 <=> L + R = 1 (i.e. constant sum) - */ - pSampler->setPanLawKNorm( - 6.0206 / fdBCenterCompensation ); + // metronome pPref->m_fMetronomeVolume = (metronomeVolumeSpinBox->value()) / 100.0; @@ -1062,21 +984,3 @@ void PreferencesDialog::toggleOscCheckBox(bool toggled) { oscWidget->setEnabled( toggled ); } - -void PreferencesDialog::panLawChanged(){ - bool bOk; - int nPanLawType = ( panLawComboBox->currentData() ).toInt( &bOk); - Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - if ( nPanLawType == pSampler->LINEAR_CONST_K_NORM - || nPanLawType == pSampler->POLAR_CONST_K_NORM - || nPanLawType == pSampler->RATIO_CONST_K_NORM - || nPanLawType == pSampler->QUADRATIC_CONST_K_NORM - ) - { - dBCompensationLineEdit->show(); - dBCompensationLbl->show(); - } else { - dBCompensationLineEdit->hide(); - dBCompensationLbl->hide(); - } -} diff --git a/src/gui/src/PreferencesDialog.h b/src/gui/src/PreferencesDialog.h index fde9b012c..1895305b1 100644 --- a/src/gui/src/PreferencesDialog.h +++ b/src/gui/src/PreferencesDialog.h @@ -57,7 +57,6 @@ class PreferencesDialog : public QDialog, private Ui_PreferencesDialog_UI, publi void toggleTrackOutsCheckBox(bool toggled); void toggleOscCheckBox(bool toggled); void coloringMethodCombo_currentIndexChanged (int index); - void panLawChanged(); private: diff --git a/src/gui/src/PreferencesDialog_UI.ui b/src/gui/src/PreferencesDialog_UI.ui index fec40f6b1..06a2cba5b 100644 --- a/src/gui/src/PreferencesDialog_UI.ui +++ b/src/gui/src/PreferencesDialog_UI.ui @@ -6,15 +6,15 @@ 0 0 - 685 - 541 + 664 + 555 Form1 - - + + @@ -32,7 +32,7 @@ QTabWidget::Rounded - 1 + 0 @@ -243,435 +243,365 @@ Audio &System - - - - 470 - 10 - 191 - 451 - - - - Audio output details - - - - - 0 - 20 - 191 - 421 - - - - ### - - - Qt::AlignTop - - - true - - - - - - - 10 - 10 - 448 - 463 - - - - - - - - - - - - Restart output - - - - - - - - - - - - 0 - 22 - - - - 100 - - - 5000 - - - 100 - - - 1024 - - - - - - - - 0 - 22 - - - - Sample rate - - - - - - - Device - - - - - - - - 0 - 22 - - - - Buffer size - - - - - - - - 0 - 0 - - - - - - - - 0 - - + + + + + + + + + + - 44100 + Restart output - - - - 48000 + + + + + + + + + + + 0 + 22 + - - - - 88200 + + 100 - - - - 96000 + + 5000 + + + 100 + + + 1024 + + + + + + + + 0 + 22 + - - - - - - - 0 - - - Post-Fader + Sample rate - - + + + + - Pre-Fader + Device + + + + + + + + 0 + 22 + - - - - - - - - 0 - 22 - - - - Track output - - - - - - - - 0 - 22 - - - - Specifies the variable, which has to remain constant in order to guarantee a working synchronization and relocation in the presence of another Jack timebase master. - - - BBT sync method - - - - - - - - 0 - 22 - - - - Specifies the variable, which has to remain constant in order to guarantee a working synchronization and relocation in the presence of another Jack timebase master. - - - constant measure + Buffer size + + + + + + + + 0 + 0 + + + + + + + + 0 + + + + 44100 + + + + + 48000 + + + + + 88200 + + + + + 96000 + + + + + + + + 0 + + + + Post-Fader + + + + + Pre-Fader + + + + + + + + + 0 + 22 + - - - matching bars + Track output - - - - - - - - - 6 - - - - - Connect to &Default Output Pair - - - Alt+D - - - - - - - Create per-instrument outputs - - - Alt+D - - - - - - - - - Qt::Vertical - - - - 446 - 13 - - - - - - - - - - - 0 - 22 - - - - 1 - - - 512 - - - - - - - false - - - - 0 - 22 - - - - 1 - - - 100 - - - - - - - - 0 - 22 - - - - Metronome volume - - - - - - - Polyphony - - - - - - - - - - - Interpolate resampling - - - - - - + + + + + + + 0 + 22 + + + + BBT sync method + + + Specifies the variable, which has to remain constant in order to guarantee a working synchronization and relocation in the presence of another Jack timebase master. + + + + + + + + 0 + 22 + + + + Specifies the variable, which has to remain constant in order to guarantee a working synchronization and relocation in the presence of another Jack timebase master. + + + + constant measure + + + + + matching bars + + + + + + + + + + 6 + + + - Linear + Connect to &Default Output Pair - - + + Alt+D + + + + + - Cosine + Create per-instrument outputs + + + Alt+D + + + + + + + + + Qt::Vertical + + + + 331 + 13 + + + + + + + + + + + 0 + 22 + + + + 1 + + + 512 + + + + + + + false + + + + 0 + 22 + + + + 1 + + + 100 + + + + + + + + 0 + 22 + - - - Third + Metronome volume - - + + + + - Cubic + Polyphony - - + + + + + + + + - Hermite + Interpolate resampling - - - - - - - - - + + + + + + + Linear + + + + + Cosine + + + + + Third + + + + + Cubic + + + + + Hermite + + + + + + + + + + Qt::Vertical + + + + 331 + 13 + + + + + + + + + + Audio output details + + + + - Pan Law + ### - - - - - - - 0 - 26 - + + Qt::AlignTop - - - 380 - 16777215 - + + true - - - - - - - - 246 - 16777215 - - - - dB SPL Center Compensation - - - - - - - - 80 - 16777215 - - - - - - - - - - Qt::Vertical - - - - 446 - 13 - - - - - - + + + @@ -1253,7 +1183,7 @@ - + From 093bb6ab385cfac011d4c2973b4ea4712682ebdc Mon Sep 17 00:00:00 2001 From: oddtime Date: Mon, 18 Jan 2021 23:48:12 +0100 Subject: [PATCH 15/26] deprecate pointers to pan law static member function --- src/core/Basics/Song.cpp | 10 ++-- src/core/Sampler/Sampler.cpp | 98 ++++++++++++++++++++++++---------- src/core/Sampler/Sampler.h | 22 ++++++-- src/gui/src/MainForm.cpp | 2 +- src/gui/src/PanLawDialog_UI.ui | 16 +++--- 5 files changed, 104 insertions(+), 44 deletions(-) diff --git a/src/core/Basics/Song.cpp b/src/core/Basics/Song.cpp index e7ac3fc55..65c135d17 100644 --- a/src/core/Basics/Song.cpp +++ b/src/core/Basics/Song.cpp @@ -692,7 +692,6 @@ Song* SongReader::readSong( const QString& filename ) // pan law Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); QString sPanLawType( LocalFileMng::readXmlString( songNode, "pan_law", "RATIO_STRAIGHT_POLYGONAL" ) ); - float nPanLawKNorm = LocalFileMng::readXmlFloat( songNode, "pan_law_k_norm", K_NORM_DEFAULT ); if ( sPanLawType == "RATIO_STRAIGHT_POLYGONAL" ) { pSampler->setPanLawType( pSampler->RATIO_STRAIGHT_POLYGONAL ); } else if ( sPanLawType == "RATIO_CONST_POWER" ) { @@ -727,10 +726,15 @@ Song* SongReader::readSong( const QString& filename ) pSampler->setPanLawType( pSampler->QUADRATIC_CONST_K_NORM ); } else { pSampler->setPanLawType( pSampler->RATIO_STRAIGHT_POLYGONAL ); - //WARNING( failed setting pan law...) + WARNINGLOG( "Unknown pan law type in import song. Set default." ); } - pSampler->setPanLawKNorm( nPanLawKNorm ); + float fPanLawKNorm = LocalFileMng::readXmlFloat( songNode, "pan_law_k_norm", K_NORM_DEFAULT ); + if ( fPanLawKNorm <= 0.0 ) { + fPanLawKNorm = K_NORM_DEFAULT; + WARNINGLOG( "Invalid pan law k in import song (<= 0). Set default k." ); + } + pSampler->setPanLawKNorm( fPanLawKNorm ); QDomNode componentListNode = songNode.firstChildElement( "componentList" ); if ( ( ! componentListNode.isNull() ) ) { diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 4e9e74627..7cc716c16 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -93,7 +93,8 @@ Sampler::Sampler() m_nPlayBackSamplePosition = 0; // default pan law - m_pPanLaw = &this->linearStraightPolygonalPanLaw; + m_nPanLawType = RATIO_STRAIGHT_POLYGONAL; + //m_pPanLaw = &this->linearStraightPolygonalPanLaw; } @@ -243,7 +244,7 @@ float Sampler::getRatioPan( float fPan_L, float fPan_R ) { * as it was input from the GUI (up to scale and translation, which is arbitrary) */ if ( fPan_L < 0. || fPan_R < 0. || ( fPan_L == 0. && fPan_R == 0.) ) { // invalid input - //TODO Warning + WARNINGLOG( "Invalid (panL, panR): both zero or some is negative. Pan set to center." ); return 0.; // default central value } else { if ( fPan_L >= fPan_R ) { @@ -388,33 +389,33 @@ float Sampler::quadraticConstSumPanLaw( float fPan ) { return sqrt( 1. - fPan ) / ( sqrt( 1. - fPan ) + sqrt( 1. + fPan ) ); } -float Sampler::linearConstKNormPanLaw( float fPan ) { +float Sampler::linearConstKNormPanLaw( float fPan, float k ) { // the constant k norm pan law interpreting fPan as the "linear" parameter - Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? + //Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + //float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? return ( 1. - fPan ) / pow( ( pow( (1. - fPan), k ) + pow( (1. + fPan), k ) ), 1./k ); } -float Sampler::quadraticConstKNormPanLaw( float fPan ) { +float Sampler::quadraticConstKNormPanLaw( float fPan, float k ) { // the constant k norm pan law interpreting fPan as the "quadratic" parameter - Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? + //Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + //float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? return sqrt( 1. - fPan ) / pow( ( pow( (1. - fPan), 0.5 * k ) + pow( (1. + fPan), 0.5 * k ) ), 1./k ); } -float Sampler::polarConstKNormPanLaw( float fPan ) { +float Sampler::polarConstKNormPanLaw( float fPan, float k ) { // the constant k norm pan law interpreting fPan as the "polar" parameter float fTheta = 0.25 * M_PI * ( fPan + 1 ); - Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? + //Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + //float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? float cosTheta = cos( fTheta ); return cosTheta / pow( ( pow( cosTheta, k ) + pow( sin( fTheta ), k ) ), 1./k ); } -float Sampler::ratioConstKNormPanLaw( float fPan ) { +float Sampler::ratioConstKNormPanLaw( float fPan, float k) { // the constant k norm pan law interpreting fPan as the "ratio" parameter - Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? + //Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + //float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? if ( fPan <= 0 ) { return 1. / pow( ( 1. + pow( (1. + fPan), k ) ), 1./k ); @@ -424,6 +425,49 @@ float Sampler::ratioConstKNormPanLaw( float fPan ) { } +/* function to address the previous. +*/ +inline float Sampler::panLaw( float fPan ) { + if ( m_nPanLawType == RATIO_STRAIGHT_POLYGONAL ) { + return ratioStraightPolygonalPanLaw( fPan ); + } else if ( m_nPanLawType == RATIO_CONST_POWER ) { + return ratioConstPowerPanLaw( fPan ); + } else if ( m_nPanLawType == RATIO_CONST_SUM ) { + return ratioConstPowerPanLaw( fPan ); + } else if ( m_nPanLawType == LINEAR_STRAIGHT_POLYGONAL ) { + return linearStraightPolygonalPanLaw( fPan ); + } else if ( m_nPanLawType == LINEAR_CONST_POWER ) { + return linearConstPowerPanLaw( fPan ); + } else if ( m_nPanLawType == LINEAR_CONST_SUM ) { + return linearConstSumPanLaw( fPan ); + } else if ( m_nPanLawType == POLAR_STRAIGHT_POLYGONAL ) { + return polarStraightPolygonalPanLaw( fPan ); + } else if ( m_nPanLawType == POLAR_CONST_POWER ) { + return polarConstPowerPanLaw( fPan ); + } else if ( m_nPanLawType == POLAR_CONST_SUM ) { + return polarConstSumPanLaw( fPan ); + } else if ( m_nPanLawType == QUADRATIC_STRAIGHT_POLYGONAL ) { + return quadraticStraightPolygonalPanLaw( fPan ); + } else if ( m_nPanLawType == QUADRATIC_CONST_POWER ) { + return quadraticConstPowerPanLaw( fPan ); + } else if ( m_nPanLawType == QUADRATIC_CONST_SUM ) { + return quadraticConstSumPanLaw( fPan ); + } else if ( m_nPanLawType == LINEAR_CONST_K_NORM ) { + return linearConstKNormPanLaw( fPan, m_fPanLawKNorm ); + } else if ( m_nPanLawType == POLAR_CONST_K_NORM ) { + return polarConstKNormPanLaw( fPan, m_fPanLawKNorm ); + } else if ( m_nPanLawType == RATIO_CONST_K_NORM ) { + return ratioConstKNormPanLaw( fPan, m_fPanLawKNorm ); + } else if ( m_nPanLawType == QUADRATIC_CONST_K_NORM ) { + return quadraticConstKNormPanLaw( fPan, m_fPanLawKNorm ); + } else { + WARNINGLOG( "Unknown pan law type. Used default" ); + return ratioStraightPolygonalPanLaw( fPan ); + } +} + + + //------------------------------------------------------------------ /// Render a note @@ -475,8 +519,10 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) float fPan = fInstrPan + fNotePan * ( 1 - fabs( fInstrPan ) ); // Pass fPan to the Pan Law - float fPan_L = m_pPanLaw( fPan ); - float fPan_R = m_pPanLaw( -fPan ); + //float fPan_L = m_pPanLaw( fPan ); + //float fPan_R = m_pPanLaw( -fPan ); + float fPan_L = panLaw( fPan ); + float fPan_R = panLaw( -fPan ); //--------------------------------------------------------- bool nReturnValues [pInstr->get_components()->size()]; @@ -828,10 +874,8 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) } - cost_L *= fPan_L; //pan - //cost_L = cost_L * pNote->get_pan_l(); // note pan + cost_L *= fPan_L; // pan cost_L = cost_L * fLayerGain; // layer gain - //cost_L = cost_L * pInstr->get_pan_l(); // instrument pan cost_L = cost_L * pInstr->get_gain(); // instrument gain cost_L = cost_L * pCompo->get_gain(); // Component gain @@ -842,12 +886,9 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) cost_track_L = cost_L * 2; } cost_L = cost_L * pSong->get_volume(); // song volume - // cost_L = cost_L * 2; // max pan is 0.5 cost_R *= fPan_R; // pan - //cost_R = cost_R * pNote->get_pan_r(); // note pan cost_R = cost_R * fLayerGain; // layer gain - //cost_R = cost_R * pInstr->get_pan_r(); // instrument pan cost_R = cost_R * pInstr->get_gain(); // instrument gain cost_R = cost_R * pCompo->get_gain(); // Component gain @@ -857,8 +898,7 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) if ( Preferences::get_instance()->m_JackTrackOutputMode == Preferences::JackTrackOutputMode::postFader ) { cost_track_R = cost_R * 2; } - cost_R = cost_R * pSong->get_volume(); // song pan - // cost_R = cost_R * 2; // max pan is 0.5 + cost_R = cost_R * pSong->get_volume(); // song volume } // direct track outputs only use velocity @@ -1646,7 +1686,8 @@ void Sampler::reinitializePlaybackTrack() m_nPlayBackSamplePosition = 0; } -void Sampler::setPanLawType( int nPanLawType ) { +/* +void Sampler::setPanLawType( int nPanLawType ) { // TODO simplify with enum if ( nPanLawType == this->RATIO_STRAIGHT_POLYGONAL ) { m_pPanLaw = &this->ratioStraightPolygonalPanLaw; } else if ( nPanLawType == this->RATIO_CONST_POWER ) { @@ -1680,11 +1721,12 @@ void Sampler::setPanLawType( int nPanLawType ) { } else if ( nPanLawType == this->QUADRATIC_CONST_K_NORM ) { m_pPanLaw = &this->quadraticConstKNormPanLaw; } else { - //WARNING( failed setting pan law...) + WARNINGLOG( "Failed setting pan law: unknown type. Set default."); + m_pPanLaw = &this->ratioStraightPolygonalPanLaw; } } -int Sampler::getPanLawType() { +int Sampler::getPanLawType() { // TODO simplify with enum if ( m_pPanLaw == &this->ratioStraightPolygonalPanLaw ) { return this->RATIO_STRAIGHT_POLYGONAL; } else if ( m_pPanLaw == &this->ratioConstPowerPanLaw ) { @@ -1718,9 +1760,11 @@ int Sampler::getPanLawType() { } else if ( m_pPanLaw == &this->quadraticConstKNormPanLaw ) { return this->QUADRATIC_CONST_K_NORM; } else { + WARNINGLOG( "Failed getting pan law: unknown type. set default."); return 0; } } +*/ }; diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index fd4dace4f..4ff11ce25 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -150,10 +150,10 @@ class Sampler : public H2Core::Object static float quadraticConstPowerPanLaw( float fPan ); static float quadraticConstSumPanLaw( float fPan ); // customly compensated - static float linearConstKNormPanLaw( float fPan ); - static float polarConstKNormPanLaw( float fPan ); - static float ratioConstKNormPanLaw( float fPan ); - static float quadraticConstKNormPanLaw( float fPan ); + static float linearConstKNormPanLaw( float fPan, float k ); + static float polarConstKNormPanLaw( float fPan, float k ); + static float ratioConstKNormPanLaw( float fPan, float k ); + static float quadraticConstKNormPanLaw( float fPan, float k ); int getPanLawType(); void setPanLawType( int nPanLawType ); void setPanLawKNorm( float fKNorm ); @@ -180,7 +180,10 @@ class Sampler : public H2Core::Object int m_nPlayBackSamplePosition; // points the pan law function - float (*m_pPanLaw)( float ); + //float (*m_pPanLaw)( float ); // TODO change to method panLaw(pan) + int m_nPanLawType; + float panLaw( float fPan ); + // k such that L^k+R^k = 1. Used in constant k-Norm pan law float m_fPanLawKNorm; @@ -225,6 +228,15 @@ class Sampler : public H2Core::Object }; +inline void Sampler::setPanLawType( int nPanLawType ) { + m_nPanLawType = nPanLawType; +} + +inline int Sampler::getPanLawType() { + return m_nPanLawType; +} + + inline void Sampler::setPanLawKNorm( float fKNorm ) { m_fPanLawKNorm = fKNorm; } diff --git a/src/gui/src/MainForm.cpp b/src/gui/src/MainForm.cpp index 8a64cdf29..793b498d1 100644 --- a/src/gui/src/MainForm.cpp +++ b/src/gui/src/MainForm.cpp @@ -291,7 +291,7 @@ void MainForm::createMenuBar() m_pFileMenu->addAction( textFileNew, this, SLOT( action_file_new() ), QKeySequence( "Ctrl+N" ) ); m_pFileMenu->addAction( tr( "Show &info" ), this, SLOT( action_file_songProperties() ), QKeySequence( "" ) ); - m_pFileMenu->addAction( tr( "Select Pan Law" ), this, SLOT( showPanLawDialog() ), QKeySequence( "" ) ); + m_pFileMenu->addAction( tr( "Pan Law Settings" ), this, SLOT( showPanLawDialog() ), QKeySequence( "" ) ); m_pFileMenu->addSeparator(); // ----- diff --git a/src/gui/src/PanLawDialog_UI.ui b/src/gui/src/PanLawDialog_UI.ui index 64f89a082..685ffd68d 100644 --- a/src/gui/src/PanLawDialog_UI.ui +++ b/src/gui/src/PanLawDialog_UI.ui @@ -6,8 +6,8 @@ 0 0 - 508 - 171 + 490 + 157 @@ -16,7 +16,7 @@ - 20 + 10 40 471 26 @@ -38,7 +38,7 @@ - 20 + 10 20 121 18 @@ -51,7 +51,7 @@ - 180 + 170 80 220 26 @@ -70,7 +70,7 @@ - 410 + 400 80 80 26 @@ -87,8 +87,8 @@ 10 - 130 - 491 + 120 + 471 28 From 7ecf62bcc8260c0fa823f7396a0dcaa63ed1c100 Mon Sep 17 00:00:00 2001 From: oddtime Date: Tue, 19 Jan 2021 13:58:24 +0100 Subject: [PATCH 16/26] mixerSetting button in mixer master line --- .../gray/mixerPanel/openMixerSettings_off.png | Bin 0 -> 8677 bytes .../mixerPanel/openMixerSettings_over.png | Bin 0 -> 9759 bytes src/gui/src/HydrogenApp.cpp | 7 +- src/gui/src/HydrogenApp.h | 3 +- src/gui/src/MainForm.cpp | 5 - src/gui/src/MainForm.h | 1 - src/gui/src/Mixer/Mixer.cpp | 18 ++++ src/gui/src/Mixer/Mixer.h | 4 +- src/gui/src/Mixer/MixerLine.cpp | 13 ++- .../MixerSettingsDialog.cpp} | 21 ++-- .../MixerSettingsDialog.h} | 17 ++-- .../MixerSettingsDialog_UI.ui} | 90 +++++++++++------- 12 files changed, 103 insertions(+), 76 deletions(-) create mode 100644 data/img/gray/mixerPanel/openMixerSettings_off.png create mode 100644 data/img/gray/mixerPanel/openMixerSettings_over.png rename src/gui/src/{PanLawDialog.cpp => Mixer/MixerSettingsDialog.cpp} (93%) rename src/gui/src/{PanLawDialog.h => Mixer/MixerSettingsDialog.h} (77%) rename src/gui/src/{PanLawDialog_UI.ui => Mixer/MixerSettingsDialog_UI.ui} (74%) diff --git a/data/img/gray/mixerPanel/openMixerSettings_off.png b/data/img/gray/mixerPanel/openMixerSettings_off.png new file mode 100644 index 0000000000000000000000000000000000000000..5e12876e7ca154c785653a85a1e2d893baccb469 GIT binary patch literal 8677 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 Dfw0_U literal 0 HcmV?d00001 diff --git a/data/img/gray/mixerPanel/openMixerSettings_over.png b/data/img/gray/mixerPanel/openMixerSettings_over.png new file mode 100644 index 0000000000000000000000000000000000000000..0eb934204487f5cac09ad66f19293af41ea80f84 GIT binary patch literal 9759 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 literal 0 HcmV?d00001 diff --git a/src/gui/src/HydrogenApp.cpp b/src/gui/src/HydrogenApp.cpp index 7a791cab8..366a8f067 100644 --- a/src/gui/src/HydrogenApp.cpp +++ b/src/gui/src/HydrogenApp.cpp @@ -31,7 +31,6 @@ #include "HydrogenApp.h" #include "Skin.h" #include "PreferencesDialog.h" -#include "PanLawDialog.h" #include "MainForm.h" #include "PlayerControl.h" #include "AudioEngineInfoForm.h" @@ -389,11 +388,7 @@ void HydrogenApp::showInstrumentPanel(bool show) m_pMainForm->update_instrument_checkbox( !show ); } -void HydrogenApp::showPanLawDialog() -{ - PanLawDialog panLawDialog(m_pMainForm); - panLawDialog.exec(); -} + void HydrogenApp::showPreferencesDialog() { diff --git a/src/gui/src/HydrogenApp.h b/src/gui/src/HydrogenApp.h index fd6b1f7dd..046ed8443 100644 --- a/src/gui/src/HydrogenApp.h +++ b/src/gui/src/HydrogenApp.h @@ -86,8 +86,7 @@ class HydrogenApp : public QObject, public EventListener, public H2Core::Object */ bool openSong( const QString sFilename ); bool openSong( H2Core::Song* pSong ); - - void showPanLawDialog(); + void showPreferencesDialog(); void updateMixerCheckbox(); void showMixer(bool bShow); diff --git a/src/gui/src/MainForm.cpp b/src/gui/src/MainForm.cpp index 793b498d1..1d5071c9e 100644 --- a/src/gui/src/MainForm.cpp +++ b/src/gui/src/MainForm.cpp @@ -291,7 +291,6 @@ void MainForm::createMenuBar() m_pFileMenu->addAction( textFileNew, this, SLOT( action_file_new() ), QKeySequence( "Ctrl+N" ) ); m_pFileMenu->addAction( tr( "Show &info" ), this, SLOT( action_file_songProperties() ), QKeySequence( "" ) ); - m_pFileMenu->addAction( tr( "Pan Law Settings" ), this, SLOT( showPanLawDialog() ), QKeySequence( "" ) ); m_pFileMenu->addSeparator(); // ----- @@ -937,10 +936,6 @@ void MainForm::action_file_openDemo() } } -void MainForm::showPanLawDialog() -{ - h2app->showPanLawDialog(); -} void MainForm::showPreferencesDialog() diff --git a/src/gui/src/MainForm.h b/src/gui/src/MainForm.h index 8791bacf0..e35d4f463 100644 --- a/src/gui/src/MainForm.h +++ b/src/gui/src/MainForm.h @@ -80,7 +80,6 @@ class MainForm : public QMainWindow, public EventListener, public H2Core::Object public slots: void showPreferencesDialog(); - void showPanLawDialog(); void showUserManual(); /** diff --git a/src/gui/src/Mixer/Mixer.cpp b/src/gui/src/Mixer/Mixer.cpp index 71fbf04be..7c07f1e16 100644 --- a/src/gui/src/Mixer/Mixer.cpp +++ b/src/gui/src/Mixer/Mixer.cpp @@ -29,6 +29,7 @@ #include "../InstrumentEditor/InstrumentEditorPanel.h" #include "../Widgets/Button.h" #include "../Widgets/PixmapWidget.h" +#include "MixerSettingsDialog.h" #include #include @@ -107,6 +108,18 @@ Mixer::Mixer( QWidget* pParent ) m_pMasterLine = new MasterMixerLine( nullptr ); m_pMasterLine->move( 0, 0 ); connect( m_pMasterLine, SIGNAL( volumeChanged(MasterMixerLine*) ), this, SLOT( masterVolumeChanged(MasterMixerLine*) ) ); + + m_pOpenMixerSettingsBtn = new Button( + m_pMasterLine, + "/mixerPanel/openMixerSettings_over.png", + "/mixerPanel/openMixerSettings_off.png", + "/mixerPanel/openMixerSettings_over.png", + QSize(15, 15) + ); + m_pOpenMixerSettingsBtn->move( 96, 8 ); + m_pOpenMixerSettingsBtn->setToolTip( tr( "Mixer Settings" ) ); + connect( m_pOpenMixerSettingsBtn, SIGNAL( clicked( Button* ) ), this, SLOT( openMixerSettingsDialog( Button* ) ) ); + m_pShowFXPanelBtn = new ToggleButton( m_pMasterLine, @@ -819,3 +832,8 @@ void Mixer::getPeaksInMixerLine( uint nMixerLine, float& fPeak_L, float& fPeak_R fPeak_R = 0; } } + +void Mixer::openMixerSettingsDialog( Button* ref ) { + MixerSettingsDialog mixerSettingsDialog( this ); // use this as *parent because button makes smaller fonts + mixerSettingsDialog.exec(); +} diff --git a/src/gui/src/Mixer/Mixer.h b/src/gui/src/Mixer/Mixer.h index cb03ea6f3..5ddba855d 100644 --- a/src/gui/src/Mixer/Mixer.h +++ b/src/gui/src/Mixer/Mixer.h @@ -26,7 +26,6 @@ #include #include - #include #include #include "../EventListener.h" @@ -73,6 +72,7 @@ class Mixer : public QWidget, public EventListener, public H2Core::Object void updateMixer(); void showFXPanelClicked(Button* ref); void showPeaksBtnClicked(Button* ref); + void openMixerSettingsDialog( Button* ref ); void ladspaActiveBtnClicked( LadspaFXMixerLine* ref ); void ladspaEditBtnClicked( LadspaFXMixerLine *ref ); void ladspaVolumeChanged( LadspaFXMixerLine* ref); @@ -85,6 +85,7 @@ class Mixer : public QWidget, public EventListener, public H2Core::Object QScrollArea* m_pFaderScrollArea; ToggleButton * m_pShowFXPanelBtn; ToggleButton * m_pShowPeaksBtn; + Button * m_pOpenMixerSettingsBtn; MasterMixerLine * m_pMasterLine; QWidget * m_pFaderPanel; @@ -107,5 +108,4 @@ class Mixer : public QWidget, public EventListener, public H2Core::Object }; - #endif diff --git a/src/gui/src/Mixer/MixerLine.cpp b/src/gui/src/Mixer/MixerLine.cpp index fef8e8eb1..3ed8d9398 100644 --- a/src/gui/src/Mixer/MixerLine.cpp +++ b/src/gui/src/Mixer/MixerLine.cpp @@ -348,11 +348,13 @@ void MixerLine::panChanged(Rotary *ref) pan_R = panValue * 2.0; } - char m_pFaderPos[100]; + /* do not print messages in the old fashion panL and panL style since inconsistent with new pan implementation. + the rotary widget knob value tip is enough*/ + /*char m_pFaderPos[100]; snprintf( m_pFaderPos, 99, "%#.2fL, %#.2fR", pan_L, pan_R); - HydrogenApp::get_instance()->setStatusBarMessage( tr( "Set instr. pan [%1]" ).arg( m_pFaderPos ), 2000 ); + HydrogenApp::get_instance()->setStatusBarMessage( tr( "Set instr. pan [%1]" ).arg( m_pFaderPos ), 2000 ); - m_pPanRotary->setToolTip( QString("Pan ") + QString( m_pFaderPos ) ); + m_pPanRotary->setToolTip( QString("Pan ") + QString( m_pFaderPos ) );*/ } float MixerLine::getPan() @@ -372,9 +374,12 @@ void MixerLine::setPan(float fValue) pan_L = 1.0; pan_R = fValue * 2.0; } + /* do not set tooltip in the old fashion panL and panL style since inconsistent with new pan implementation. + the rotary widget knob value tip is enough*/ + /* char m_pFaderPos[100]; snprintf( m_pFaderPos, 99,"Pan %#.2fL, %#.2fR", pan_L, pan_R); - m_pPanRotary->setToolTip( QString( m_pFaderPos ) ); + m_pPanRotary->setToolTip( QString( m_pFaderPos ) );*/ } } diff --git a/src/gui/src/PanLawDialog.cpp b/src/gui/src/Mixer/MixerSettingsDialog.cpp similarity index 93% rename from src/gui/src/PanLawDialog.cpp rename to src/gui/src/Mixer/MixerSettingsDialog.cpp index 3e5b3ec79..b70bf331c 100644 --- a/src/gui/src/PanLawDialog.cpp +++ b/src/gui/src/Mixer/MixerSettingsDialog.cpp @@ -23,7 +23,7 @@ #include #include "Skin.h" -#include "PanLawDialog.h" +#include "MixerSettingsDialog.h" #include "HydrogenApp.h" #include "MainForm.h" @@ -45,15 +45,15 @@ using namespace H2Core; -const char* PanLawDialog::__class_name = "PanLawDialog"; +const char* MixerSettingsDialog::__class_name = "MixerSettingsDialog"; -PanLawDialog::PanLawDialog(QWidget* parent) +MixerSettingsDialog::MixerSettingsDialog(QWidget* parent) : QDialog( parent ) , Object( __class_name ) { setupUi( this ); - setWindowTitle( tr( "Pan Law Settings" ) ); + setWindowTitle( tr( "Mixer Settings" ) ); setMinimumSize( width(), height() ); @@ -112,23 +112,26 @@ PanLawDialog::PanLawDialog(QWidget* parent) -PanLawDialog::~PanLawDialog() +MixerSettingsDialog::~MixerSettingsDialog() { - INFOLOG("~PAN_LAW_DIALOG"); + INFOLOG("~MIXER_SETTINGS_DIALOG"); } -void PanLawDialog::on_cancelBtn_clicked() +void MixerSettingsDialog::on_cancelBtn_clicked() { reject(); } -void PanLawDialog::on_okBtn_clicked() +void MixerSettingsDialog::on_okBtn_clicked() { Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); bool bOk; + + + // Pan Law settings pSampler->setPanLawType( ( panLawComboBox->currentData() ).toInt( &bOk ) ); @@ -153,7 +156,7 @@ void PanLawDialog::on_okBtn_clicked() accept(); } -void PanLawDialog::panLawChanged(){ +void MixerSettingsDialog::panLawChanged(){ bool bOk; int nPanLawType = ( panLawComboBox->currentData() ).toInt( &bOk); Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); diff --git a/src/gui/src/PanLawDialog.h b/src/gui/src/Mixer/MixerSettingsDialog.h similarity index 77% rename from src/gui/src/PanLawDialog.h rename to src/gui/src/Mixer/MixerSettingsDialog.h index 3f680c01e..6297f434f 100644 --- a/src/gui/src/PanLawDialog.h +++ b/src/gui/src/Mixer/MixerSettingsDialog.h @@ -20,32 +20,29 @@ * */ -#ifndef PAN_LAW_DIALOG_H -#define PAN_LAW_DIALOG_H +#ifndef MIXER_SETTINGS_DIALOG_H +#define MIXER_SETTINGS_DIALOG_H -#include "ui_PanLawDialog_UI.h" +#include "ui_MixerSettingsDialog_UI.h" #include /// -/// Preferences Dialog +/// Mixer Settings Dialog /// -class PanLawDialog : public QDialog, private Ui_PanLawDialog_UI, public H2Core::Object +class MixerSettingsDialog : public QDialog, private Ui_MixerSettingsDialog_UI, public H2Core::Object { H2_OBJECT Q_OBJECT public: - explicit PanLawDialog( QWidget* parent ); - ~PanLawDialog(); + explicit MixerSettingsDialog( QWidget* parent ); + ~MixerSettingsDialog(); private slots: void on_okBtn_clicked(); void on_cancelBtn_clicked(); void panLawChanged(); - - private: - void updateInfo(); }; #endif diff --git a/src/gui/src/PanLawDialog_UI.ui b/src/gui/src/Mixer/MixerSettingsDialog_UI.ui similarity index 74% rename from src/gui/src/PanLawDialog_UI.ui rename to src/gui/src/Mixer/MixerSettingsDialog_UI.ui index 685ffd68d..56867f7da 100644 --- a/src/gui/src/PanLawDialog_UI.ui +++ b/src/gui/src/Mixer/MixerSettingsDialog_UI.ui @@ -1,7 +1,7 @@ - PanLawDialog_UI - + MixerSettingsDialog_UI + 0 @@ -48,41 +48,6 @@ Select Pan Law: - - - - 170 - 80 - 220 - 26 - - - - - 246 - 16777215 - - - - dB SPL Center Compensation - - - - - - 400 - 80 - 80 - 26 - - - - - 80 - 16777215 - - - @@ -177,6 +142,57 @@ + + + + 10 + 80 + 471 + 28 + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 184 + 16 + + + + + + + + + 246 + 16777215 + + + + dB SPL Center Compensation + + + + + + + + 80 + 16777215 + + + + + + From f606a60693dcd810fb44bc0091dae4dbdcb81740 Mon Sep 17 00:00:00 2001 From: oddtime Date: Tue, 19 Jan 2021 16:11:37 +0100 Subject: [PATCH 17/26] correct and clean --- src/core/Basics/Song.cpp | 3 - src/core/Basics/Song.h | 15 +---- src/core/Sampler/Sampler.cpp | 106 +++----------------------------- src/core/Sampler/Sampler.h | 10 ++- src/gui/src/Mixer/Mixer.h | 2 + src/gui/src/Mixer/MixerLine.cpp | 40 +++--------- 6 files changed, 23 insertions(+), 153 deletions(-) diff --git a/src/core/Basics/Song.cpp b/src/core/Basics/Song.cpp index 65c135d17..38ae5f762 100644 --- a/src/core/Basics/Song.cpp +++ b/src/core/Basics/Song.cpp @@ -87,8 +87,6 @@ Song::Song( const QString& name, const QString& author, float bpm, float volume , __playback_track_enabled( false ) , __playback_track_volume( 0.0 ) , __velocity_automation_path( nullptr ) - //, m_nPanLawIdx( RATIO_STRAIGHT_POLYGONAL ) - //, m_fPanLawKNorm( K_NORM_DEFAULT ) { INFOLOG( QString( "INIT '%1'" ).arg( __name ) ); @@ -169,7 +167,6 @@ Song* Song::get_default_song() pSong->set_humanize_time_value( 0.0 ); pSong->set_humanize_velocity_value( 0.0 ); pSong->set_swing_factor( 0.0 ); -// pSong->setPanLawIdx( RATIO_STRAIGHT_POLYGONAL ); InstrumentList* pInstrList = new InstrumentList(); Instrument* pNewInstr = new Instrument( EMPTY_INSTR_ID, "New instrument" ); diff --git a/src/core/Basics/Song.h b/src/core/Basics/Song.h index 35eec6849..a4b3676fe 100644 --- a/src/core/Basics/Song.h +++ b/src/core/Basics/Song.h @@ -211,10 +211,7 @@ class Song : public H2Core::Object */ bool has_missing_samples(); void clear_missing_samples(); - - //void setPanLawIdx( int idx ); - //int getPanLawIdx() const ; - + private: ///< volume of the song (0.0..1.0) float __volume; @@ -270,7 +267,6 @@ class Song : public H2Core::Object QString __license; }; - inline bool Song::get_is_modified() const { return __is_modified; @@ -422,15 +418,6 @@ inline void Song::set_playback_track_volume( const float volume ) { __playback_track_volume = volume; } -/* -inline void Song::setPanLawIdx( int idx ) { - m_nPanLawIdx = idx; -} - -inline int Song::getPanLawIdx() const { - return m_nPanLawIdx; -}*/ - /** \ingroup H2CORE diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 7cc716c16..429799264 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -279,7 +279,7 @@ float Sampler::getRatioPan( float fPan_L, float fPan_R ) { * "quadratic" parameter (arithmetic mean with squared weights): * fPan = ( R^2 - L^2 ) / ( R^2 + L^2 ). * - * Note: using a different fPan interpretation makes the output more central or more lateral. + * Note: using a different fPan interpretation makes the output signal more central or more lateral. * From more central to more lateral: * "quadratic" ---> "ratio" ---> "polar" ---> "linear" *--------------------------------------------- @@ -349,7 +349,7 @@ float Sampler::linearConstSumPanLaw( float fPan ) { } float Sampler::polarStraightPolygonalPanLaw( float fPan ) { - // the constant power pan law interpreting fPan as the "linear" parameter + // the constant power pan law interpreting fPan as the "polar" parameter float fTheta = 0.25 * M_PI * ( fPan + 1 ); if ( fPan <= 0 ) { return 1.; @@ -359,13 +359,13 @@ float Sampler::polarStraightPolygonalPanLaw( float fPan ) { } float Sampler::polarConstPowerPanLaw( float fPan ) { - // the constant power pan law interpreting fPan as the "linear" parameter + // the constant power pan law interpreting fPan as the "polar" parameter float fTheta = 0.25 * M_PI * ( fPan + 1 ); return cos( fTheta ); } float Sampler::polarConstSumPanLaw( float fPan ) { - // the constant Sum pan law interpreting fPan as the "linear" parameter + // the constant Sum pan law interpreting fPan as the "polar" parameter float fTheta = 0.25 * M_PI * ( fPan + 1 ); return cos( fTheta ) / ( cos( fTheta ) + sin( fTheta ) ); } @@ -391,49 +391,38 @@ float Sampler::quadraticConstSumPanLaw( float fPan ) { float Sampler::linearConstKNormPanLaw( float fPan, float k ) { // the constant k norm pan law interpreting fPan as the "linear" parameter - //Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - //float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? return ( 1. - fPan ) / pow( ( pow( (1. - fPan), k ) + pow( (1. + fPan), k ) ), 1./k ); } float Sampler::quadraticConstKNormPanLaw( float fPan, float k ) { // the constant k norm pan law interpreting fPan as the "quadratic" parameter - //Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - //float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? return sqrt( 1. - fPan ) / pow( ( pow( (1. - fPan), 0.5 * k ) + pow( (1. + fPan), 0.5 * k ) ), 1./k ); } float Sampler::polarConstKNormPanLaw( float fPan, float k ) { // the constant k norm pan law interpreting fPan as the "polar" parameter float fTheta = 0.25 * M_PI * ( fPan + 1 ); - //Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - //float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? float cosTheta = cos( fTheta ); return cosTheta / pow( ( pow( cosTheta, k ) + pow( sin( fTheta ), k ) ), 1./k ); } float Sampler::ratioConstKNormPanLaw( float fPan, float k) { // the constant k norm pan law interpreting fPan as the "ratio" parameter - //Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - //float k = pSampler->getPanLawKNorm(); //TODO pass it as argument? - if ( fPan <= 0 ) { return 1. / pow( ( 1. + pow( (1. + fPan), k ) ), 1./k ); } else { return ( 1. - fPan ) / pow( ( 1. + pow( (1. - fPan), k ) ), 1./k ); } - } -/* function to address the previous. -*/ +// function to direct the computation to the selected pan law. inline float Sampler::panLaw( float fPan ) { if ( m_nPanLawType == RATIO_STRAIGHT_POLYGONAL ) { return ratioStraightPolygonalPanLaw( fPan ); } else if ( m_nPanLawType == RATIO_CONST_POWER ) { return ratioConstPowerPanLaw( fPan ); } else if ( m_nPanLawType == RATIO_CONST_SUM ) { - return ratioConstPowerPanLaw( fPan ); + return ratioConstSumPanLaw( fPan ); } else if ( m_nPanLawType == LINEAR_STRAIGHT_POLYGONAL ) { return linearStraightPolygonalPanLaw( fPan ); } else if ( m_nPanLawType == LINEAR_CONST_POWER ) { @@ -461,7 +450,8 @@ inline float Sampler::panLaw( float fPan ) { } else if ( m_nPanLawType == QUADRATIC_CONST_K_NORM ) { return quadraticConstKNormPanLaw( fPan, m_fPanLawKNorm ); } else { - WARNINGLOG( "Unknown pan law type. Used default" ); + WARNINGLOG( "Unknown pan law type. Set default." ); + m_nPanLawType = RATIO_STRAIGHT_POLYGONAL; return ratioStraightPolygonalPanLaw( fPan ); } } @@ -1686,85 +1676,5 @@ void Sampler::reinitializePlaybackTrack() m_nPlayBackSamplePosition = 0; } -/* -void Sampler::setPanLawType( int nPanLawType ) { // TODO simplify with enum - if ( nPanLawType == this->RATIO_STRAIGHT_POLYGONAL ) { - m_pPanLaw = &this->ratioStraightPolygonalPanLaw; - } else if ( nPanLawType == this->RATIO_CONST_POWER ) { - m_pPanLaw = &this->ratioConstPowerPanLaw; - } else if ( nPanLawType == this->RATIO_CONST_SUM ) { - m_pPanLaw = &this->ratioConstPowerPanLaw; - } else if ( nPanLawType == this->LINEAR_STRAIGHT_POLYGONAL ) { - m_pPanLaw = &this->linearStraightPolygonalPanLaw; - } else if ( nPanLawType == this->LINEAR_CONST_POWER ) { - m_pPanLaw = &this->linearConstPowerPanLaw; - } else if ( nPanLawType == this->LINEAR_CONST_SUM ) { - m_pPanLaw = &this->linearConstSumPanLaw; - } else if ( nPanLawType == this->POLAR_STRAIGHT_POLYGONAL ) { - m_pPanLaw = &this->polarStraightPolygonalPanLaw; - } else if ( nPanLawType == this->POLAR_CONST_POWER ) { - m_pPanLaw = &this->polarConstPowerPanLaw; - } else if ( nPanLawType == this->POLAR_CONST_SUM ) { - m_pPanLaw = &this->polarConstSumPanLaw; - } else if ( nPanLawType == this->QUADRATIC_STRAIGHT_POLYGONAL ) { - m_pPanLaw = &this->quadraticStraightPolygonalPanLaw; - } else if ( nPanLawType == this->QUADRATIC_CONST_POWER ) { - m_pPanLaw = &this->quadraticConstPowerPanLaw; - } else if ( nPanLawType == this->QUADRATIC_CONST_SUM ) { - m_pPanLaw = &this->quadraticConstSumPanLaw; - } else if ( nPanLawType == this->LINEAR_CONST_K_NORM ) { - m_pPanLaw = &this->linearConstKNormPanLaw; - } else if ( nPanLawType == this->POLAR_CONST_K_NORM ) { - m_pPanLaw = &this->polarConstKNormPanLaw; - } else if ( nPanLawType == this->RATIO_CONST_K_NORM ) { - m_pPanLaw = &this->ratioConstKNormPanLaw; - } else if ( nPanLawType == this->QUADRATIC_CONST_K_NORM ) { - m_pPanLaw = &this->quadraticConstKNormPanLaw; - } else { - WARNINGLOG( "Failed setting pan law: unknown type. Set default."); - m_pPanLaw = &this->ratioStraightPolygonalPanLaw; - } -} - -int Sampler::getPanLawType() { // TODO simplify with enum - if ( m_pPanLaw == &this->ratioStraightPolygonalPanLaw ) { - return this->RATIO_STRAIGHT_POLYGONAL; - } else if ( m_pPanLaw == &this->ratioConstPowerPanLaw ) { - return this->RATIO_CONST_POWER; - } else if ( m_pPanLaw == &this->ratioConstSumPanLaw ) { - return this->RATIO_CONST_SUM; - } else if ( m_pPanLaw == &this->linearStraightPolygonalPanLaw ) { - return this->LINEAR_STRAIGHT_POLYGONAL; - } else if ( m_pPanLaw == &this->linearConstPowerPanLaw ) { - return this->LINEAR_CONST_POWER; - } else if ( m_pPanLaw == &this->linearConstSumPanLaw ) { - return this->LINEAR_CONST_SUM; - } else if ( m_pPanLaw == &this->polarStraightPolygonalPanLaw ) { - return this->POLAR_STRAIGHT_POLYGONAL; - } else if ( m_pPanLaw == &this->polarConstPowerPanLaw ) { - return this->POLAR_CONST_POWER; - } else if ( m_pPanLaw == &this->polarConstSumPanLaw ) { - return this->POLAR_CONST_SUM; - } else if ( m_pPanLaw == &this->quadraticStraightPolygonalPanLaw ) { - return this->QUADRATIC_STRAIGHT_POLYGONAL; - } else if ( m_pPanLaw == &this->quadraticConstPowerPanLaw ) { - return this->QUADRATIC_CONST_POWER; - } else if ( m_pPanLaw == &this->quadraticConstSumPanLaw ) { - return this->QUADRATIC_CONST_SUM; - } else if ( m_pPanLaw == &this->linearConstKNormPanLaw ) { - return this->LINEAR_CONST_K_NORM; - } else if ( m_pPanLaw == &this->polarConstKNormPanLaw ) { - return this->POLAR_CONST_K_NORM; - } else if ( m_pPanLaw == &this->ratioConstKNormPanLaw ) { - return this->RATIO_CONST_K_NORM; - } else if ( m_pPanLaw == &this->quadraticConstKNormPanLaw ) { - return this->QUADRATIC_CONST_K_NORM; - } else { - WARNINGLOG( "Failed getting pan law: unknown type. set default."); - return 0; - } -} -*/ - }; diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index 4ff11ce25..80aaffb9a 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -154,8 +154,9 @@ class Sampler : public H2Core::Object static float polarConstKNormPanLaw( float fPan, float k ); static float ratioConstKNormPanLaw( float fPan, float k ); static float quadraticConstKNormPanLaw( float fPan, float k ); - int getPanLawType(); + void setPanLawType( int nPanLawType ); + int getPanLawType() const; void setPanLawKNorm( float fKNorm ); float getPanLawKNorm() const; @@ -178,9 +179,7 @@ class Sampler : public H2Core::Object int m_nMaxLayers; int m_nPlayBackSamplePosition; - - // points the pan law function - //float (*m_pPanLaw)( float ); // TODO change to method panLaw(pan) + int m_nPanLawType; float panLaw( float fPan ); @@ -225,14 +224,13 @@ class Sampler : public H2Core::Object float fLayerPitch, Song* pSong ); - }; inline void Sampler::setPanLawType( int nPanLawType ) { m_nPanLawType = nPanLawType; } -inline int Sampler::getPanLawType() { +inline int Sampler::getPanLawType() const { return m_nPanLawType; } diff --git a/src/gui/src/Mixer/Mixer.h b/src/gui/src/Mixer/Mixer.h index 5ddba855d..193a9e20a 100644 --- a/src/gui/src/Mixer/Mixer.h +++ b/src/gui/src/Mixer/Mixer.h @@ -26,6 +26,7 @@ #include #include + #include #include #include "../EventListener.h" @@ -108,4 +109,5 @@ class Mixer : public QWidget, public EventListener, public H2Core::Object }; + #endif diff --git a/src/gui/src/Mixer/MixerLine.cpp b/src/gui/src/Mixer/MixerLine.cpp index 3ed8d9398..9ea5b1b21 100644 --- a/src/gui/src/Mixer/MixerLine.cpp +++ b/src/gui/src/Mixer/MixerLine.cpp @@ -337,24 +337,10 @@ void MixerLine::panChanged(Rotary *ref) Song *pSong = Hydrogen::get_instance()->getSong(); pSong->set_is_modified( true ); emit panChanged( this ); - - float panValue = ref->getValue(); - float pan_L, pan_R; - if (panValue > 0.5) { - pan_L = (1.0 - panValue) * 2.0; - pan_R = 1.0; - } else { - pan_L = 1.0; - pan_R = panValue * 2.0; - } - - /* do not print messages in the old fashion panL and panL style since inconsistent with new pan implementation. - the rotary widget knob value tip is enough*/ - /*char m_pFaderPos[100]; - snprintf( m_pFaderPos, 99, "%#.2fL, %#.2fR", pan_L, pan_R); - HydrogenApp::get_instance()->setStatusBarMessage( tr( "Set instr. pan [%1]" ).arg( m_pFaderPos ), 2000 ); - - m_pPanRotary->setToolTip( QString("Pan ") + QString( m_pFaderPos ) );*/ + /** Do not update tooltip nor print status message in the old fashion panL and panL style + * since inconsistent with new pan implementation. The resultant pan depends also on note pan. + * The rotary widget valuetip is enough to read the value. + */ } float MixerLine::getPan() @@ -366,20 +352,10 @@ void MixerLine::setPan(float fValue) { if ( fValue != m_pPanRotary->getValue() ) { m_pPanRotary->setValue( fValue ); - float pan_L, pan_R; - if (fValue > 0.5) { - pan_L = (1.0 - fValue) * 2.0; - pan_R = 1.0; - } else { - pan_L = 1.0; - pan_R = fValue * 2.0; - } - /* do not set tooltip in the old fashion panL and panL style since inconsistent with new pan implementation. - the rotary widget knob value tip is enough*/ - /* - char m_pFaderPos[100]; - snprintf( m_pFaderPos, 99,"Pan %#.2fL, %#.2fR", pan_L, pan_R); - m_pPanRotary->setToolTip( QString( m_pFaderPos ) );*/ + /** Do not update tooltip in the old fashion panL and panL style + * since inconsistent with new pan implementation. The resultant pan depends also on note pan. + * The rotary widget valuetip is enough to read the value. + */ } } From 2655e936f943fcf3878bc861e781f928cc6bf31b Mon Sep 17 00:00:00 2001 From: oddtime Date: Tue, 19 Jan 2021 16:22:43 +0100 Subject: [PATCH 18/26] correct and clean 2 --- src/core/LocalFileMgr.cpp | 4 ++-- src/core/Sampler/Sampler.cpp | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/core/LocalFileMgr.cpp b/src/core/LocalFileMgr.cpp index 6b519cdc3..0e398e091 100644 --- a/src/core/LocalFileMgr.cpp +++ b/src/core/LocalFileMgr.cpp @@ -381,7 +381,6 @@ int SongWriter::writeSong( Song * pSong, const QString& filename ) LocalFileMng::writeXmlString( songNode, "humanize_velocity", QString("%1").arg( pSong->get_humanize_velocity_value() ) ); LocalFileMng::writeXmlString( songNode, "swing_factor", QString("%1").arg( pSong->get_swing_factor() ) ); Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - //LocalFileMng::writeXmlString( songNode, "pan_law", QString("%1").arg( pSampler->getPanLawType() ) ); //TODO write as string QString sPanLawType; int nPanLawType = pSampler->getPanLawType(); @@ -418,7 +417,8 @@ int SongWriter::writeSong( Song * pSong, const QString& filename ) } else if ( nPanLawType == pSampler->QUADRATIC_CONST_K_NORM ) { sPanLawType = "QUADRATIC_CONST_K_NORM"; } else { - //WARNING( failed setting pan law...) + WARNINGLOG( "Unknown pan law in saving song. Saved default type." ); + sPanLawType = "RATIO_STRAIGHT_POLYGONAL"; } LocalFileMng::writeXmlString( songNode, "pan_law", sPanLawType ); LocalFileMng::writeXmlString( songNode, "pan_law_k_norm", QString("%1").arg( pSampler->getPanLawKNorm() ) ); diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 429799264..2f6e96353 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -94,7 +94,6 @@ Sampler::Sampler() // default pan law m_nPanLawType = RATIO_STRAIGHT_POLYGONAL; - //m_pPanLaw = &this->linearStraightPolygonalPanLaw; } @@ -509,8 +508,6 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) float fPan = fInstrPan + fNotePan * ( 1 - fabs( fInstrPan ) ); // Pass fPan to the Pan Law - //float fPan_L = m_pPanLaw( fPan ); - //float fPan_R = m_pPanLaw( -fPan ); float fPan_L = panLaw( fPan ); float fPan_R = panLaw( -fPan ); //--------------------------------------------------------- From 99ae7601552acf7da4dc8371922c0bfa68a51763 Mon Sep 17 00:00:00 2001 From: oddtime Date: Wed, 20 Jan 2021 15:17:42 +0100 Subject: [PATCH 19/26] sharper icon --- .../gray/mixerPanel/openMixerSettings_off.png | Bin 8677 -> 374 bytes .../gray/mixerPanel/openMixerSettings_over.png | Bin 9759 -> 343 bytes src/gui/src/Mixer/Mixer.cpp | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/img/gray/mixerPanel/openMixerSettings_off.png b/data/img/gray/mixerPanel/openMixerSettings_off.png index 5e12876e7ca154c785653a85a1e2d893baccb469..e6801e891c814b066ff20e5710d896744912415b 100644 GIT binary patch literal 374 zcmV-+0g3*JP)ZUoT9YI&fu`N z$e5n6!^zvMvc!~{tiZmCku0)&LFd3k9h9| zd!z+fiYGim@jT7Ey9-a@*SdMnYGlwPBjlV%Nh%=M1u4I<5FWcr0 USJ~kOQvd(}07*qoM6N<$f^Bubg8%>k literal 8677 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 Dfw0_U diff --git a/data/img/gray/mixerPanel/openMixerSettings_over.png b/data/img/gray/mixerPanel/openMixerSettings_over.png index 0eb934204487f5cac09ad66f19293af41ea80f84..f7c5131e63561708bd9e950de3a35a65ee6010e7 100644 GIT binary patch literal 343 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 diff --git a/src/gui/src/Mixer/Mixer.cpp b/src/gui/src/Mixer/Mixer.cpp index f7530ef12..ca36b3d7b 100644 --- a/src/gui/src/Mixer/Mixer.cpp +++ b/src/gui/src/Mixer/Mixer.cpp @@ -114,9 +114,9 @@ Mixer::Mixer( QWidget* pParent ) "/mixerPanel/openMixerSettings_over.png", "/mixerPanel/openMixerSettings_off.png", "/mixerPanel/openMixerSettings_over.png", - QSize(15, 15) + QSize(17, 17) ); - m_pOpenMixerSettingsBtn->move( 96, 8 ); + m_pOpenMixerSettingsBtn->move( 96, 6 ); m_pOpenMixerSettingsBtn->setToolTip( tr( "Mixer Settings" ) ); connect( m_pOpenMixerSettingsBtn, SIGNAL( clicked( Button* ) ), this, SLOT( openMixerSettingsDialog( Button* ) ) ); From 5089fab47aa6f26eb53dffbebe9e5644b949f9a8 Mon Sep 17 00:00:00 2001 From: oddtime Date: Thu, 21 Jan 2021 00:29:39 +0100 Subject: [PATCH 20/26] add tooltip in pan law combo box --- src/gui/src/Mixer/MixerSettingsDialog.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gui/src/Mixer/MixerSettingsDialog.cpp b/src/gui/src/Mixer/MixerSettingsDialog.cpp index b70bf331c..f884f833e 100644 --- a/src/gui/src/Mixer/MixerSettingsDialog.cpp +++ b/src/gui/src/Mixer/MixerSettingsDialog.cpp @@ -98,6 +98,9 @@ MixerSettingsDialog::MixerSettingsDialog(QWidget* parent) panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSampler->getPanLawType() ) ); panLawChanged(); // to hide dB SPL compensation + panLawComboBox->setToolTip( tr("Relationship between the sound's apparent image position and the pan knob control" + ) ); + connect(panLawComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT( panLawChanged() )); /** dB SPL Center Compensation, audio engineers friendly. From 98813cd02bc2076756c5c4e9e04388753dac91dd Mon Sep 17 00:00:00 2001 From: oddtime Date: Sat, 23 Jan 2021 11:34:12 +0100 Subject: [PATCH 21/26] headings in pan law combobox --- src/gui/src/Mixer/MixerSettingsDialog.cpp | 73 ++++++++++++----------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/src/gui/src/Mixer/MixerSettingsDialog.cpp b/src/gui/src/Mixer/MixerSettingsDialog.cpp index f884f833e..bc75656c0 100644 --- a/src/gui/src/Mixer/MixerSettingsDialog.cpp +++ b/src/gui/src/Mixer/MixerSettingsDialog.cpp @@ -59,45 +59,50 @@ MixerSettingsDialog::MixerSettingsDialog(QWidget* parent) Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - // insert the items here. They work consistently no matter of the order in this menu - panLawComboBox->addItem( tr("Balance Law (0dB) - linear pan parameter"), - QVariant( pSampler->LINEAR_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB) - linear pan parameter"), - QVariant( pSampler->LINEAR_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB) - linear pan parameter"), - QVariant( pSampler->LINEAR_CONST_SUM ) ); - panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - linear parameter"), - QVariant( pSampler->LINEAR_CONST_K_NORM ) ); + /* insert the items here so they work consistently no matter of their order in the menu (except the headings) + */ + + // heading + panLawComboBox->addItem( tr("------ Linear pan parameter ------"), QVariant( -10000 ) ); + qobject_cast< QStandardItemModel * >( panLawComboBox->model() )->item( 0 )->setEnabled( false ); + panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( pSampler->LINEAR_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( pSampler->LINEAR_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB)"), QVariant( pSampler->LINEAR_CONST_SUM ) ); + panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation)"), + QVariant( pSampler->LINEAR_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); - panLawComboBox->addItem( tr("Balance Law (0dB) - polar pan parameter"), - QVariant( pSampler->POLAR_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB) - polar pan parameter"), - QVariant( pSampler->POLAR_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB) - polar pan parameter"), - QVariant( pSampler->POLAR_CONST_SUM ) ); - panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - polar parameter"), - QVariant( pSampler->POLAR_CONST_K_NORM ) ); + + // heading + panLawComboBox->addItem( tr("------ Polar pan parameter ------"), QVariant( -10000 ) ); + qobject_cast< QStandardItemModel * >( panLawComboBox->model() )->item( 6 )->setEnabled( false ); + panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( pSampler->POLAR_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( pSampler->POLAR_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB)"), QVariant( pSampler->POLAR_CONST_SUM ) ); + panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation)"), + QVariant( pSampler->POLAR_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); - panLawComboBox->addItem( tr("Balance Law (0dB) - ratio pan parameter"), - QVariant( pSampler->RATIO_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB) - ratio pan parameter"), - QVariant( pSampler->RATIO_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB) - ratio pan parameter"), - QVariant( pSampler->RATIO_CONST_SUM ) ); - panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - ratio parameter"), - QVariant( pSampler->RATIO_CONST_K_NORM ) ); + + // heading + panLawComboBox->addItem( tr("------ Ratio pan parameter ------"), QVariant( -10000 ) ); + qobject_cast< QStandardItemModel * >( panLawComboBox->model() )->item( 12 )->setEnabled( false ); + panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( pSampler->RATIO_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( pSampler->RATIO_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB)"), QVariant( pSampler->RATIO_CONST_SUM ) ); + panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation)"), + QVariant( pSampler->RATIO_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); - panLawComboBox->addItem( tr("Balance Law (0dB) - quadratic pan parameter"), - QVariant( pSampler->QUADRATIC_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB) - quadratic pan parameter"), - QVariant( pSampler->QUADRATIC_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB) - quadratic pan parameter"), - QVariant( pSampler->QUADRATIC_CONST_SUM ) ); - panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation) - quadratic parameter"), - QVariant( pSampler->QUADRATIC_CONST_K_NORM ) ); + + // heading + panLawComboBox->addItem( tr("----- Quadratic pan parameter ------"), QVariant( -10000 ) ); + qobject_cast< QStandardItemModel * >( panLawComboBox->model() )->item( 18 )->setEnabled( false ); + panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( pSampler->QUADRATIC_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( pSampler->QUADRATIC_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB)"), QVariant( pSampler->QUADRATIC_CONST_SUM ) ); + panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation)"), + QVariant( pSampler->QUADRATIC_CONST_K_NORM ) ); panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSampler->getPanLawType() ) ); - panLawChanged(); // to hide dB SPL compensation + panLawChanged(); // to hide custom dB SPL compensation panLawComboBox->setToolTip( tr("Relationship between the sound's apparent image position and the pan knob control" ) ); From e799a46974a50d6f26e7605b85ae3f1e172d0101 Mon Sep 17 00:00:00 2001 From: oddtime Date: Sat, 23 Jan 2021 18:22:32 +0100 Subject: [PATCH 22/26] typo --- src/gui/src/Mixer/MixerSettingsDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/src/Mixer/MixerSettingsDialog.cpp b/src/gui/src/Mixer/MixerSettingsDialog.cpp index bc75656c0..1c1f86201 100644 --- a/src/gui/src/Mixer/MixerSettingsDialog.cpp +++ b/src/gui/src/Mixer/MixerSettingsDialog.cpp @@ -93,7 +93,7 @@ MixerSettingsDialog::MixerSettingsDialog(QWidget* parent) panLawComboBox->insertSeparator(100); // heading - panLawComboBox->addItem( tr("----- Quadratic pan parameter ------"), QVariant( -10000 ) ); + panLawComboBox->addItem( tr("------ Quadratic pan parameter ------"), QVariant( -10000 ) ); qobject_cast< QStandardItemModel * >( panLawComboBox->model() )->item( 18 )->setEnabled( false ); panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( pSampler->QUADRATIC_STRAIGHT_POLYGONAL ) ); panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( pSampler->QUADRATIC_CONST_POWER ) ); From dc21783a1eb19608ead018119c6903009d6e869a Mon Sep 17 00:00:00 2001 From: oddtime Date: Thu, 28 Jan 2021 17:02:06 +0100 Subject: [PATCH 23/26] mantainabilty changes --- .../gray/mixerPanel/openMixerSettings_off.png | Bin 374 -> 220 bytes .../mixerPanel/openMixerSettings_over.png | Bin 343 -> 201 bytes src/core/Basics/Song.cpp | 55 ++++--- src/core/Basics/Song.h | 21 +++ src/core/LocalFileMgr.cpp | 41 +++--- src/core/Sampler/Sampler.cpp | 108 ++++---------- src/core/Sampler/Sampler.h | 137 +++++++++++------- src/gui/src/Mixer/MixerSettingsDialog.cpp | 62 ++++---- src/gui/src/Mixer/MixerSettingsDialog_UI.ui | 3 - 9 files changed, 217 insertions(+), 210 deletions(-) diff --git a/data/img/gray/mixerPanel/openMixerSettings_off.png b/data/img/gray/mixerPanel/openMixerSettings_off.png index e6801e891c814b066ff20e5710d896744912415b..485665ca0a8b73a366d2285b1aadd557c383e1b9 100644 GIT binary patch delta 204 zcmV;-05kvg0^9+R7=Hu<0002VLt4oI000|MOjJbx006kh;W|D@oUF)=m8P)2*#H0k zzt;Dap|?n8BRv2B0DMVAK~xCWMb5zv0YMDL@xNhlRI>M4*}FB|2X&vtGt3J}Jio3@ z=%M)~?bj4#EM;EGE51vCg-E6sfk`cib3G_G5VUuVk*&+SC`Fa)?)y0m(={TiAg%+Q z>_Z1r*lm>MFWb7(_ukF*JSpw*0ac8NYm6{6yEJCT|Gy6h{|?j=ojtVx0000W0rmor7=H)@0000Cv$x0q0050pOjJcWK1cun0RR90+TilS$lBK2?!U#? zr>(!z*y_5#(xa)n(AMaz{c39 zuE3C%sJ+A0rK`P-lcl-8(V?fgiI1VRyUm@WwS|kFvA4;YpMSA|hncRl#+IC}euS2) zu)>m%`DbO3_h{;OCt(a;~wlQwNWjBgp8 z`>2yYU~tb&?$A}=c-0!pD-OqJNR2b7$k8KaaAPj_yFLN5F0~BVANH_Zb|DsnkhTRt~Pme1QnYD<_W(zqHacXvk z%)Wynrcq4?a_Hlb3rNXB?2jO)sCR!A@eFclyJ-aRUw0krL^P9NleIQskTl~wh*yF5 z8_1nOIE26;j6pSKsy)lJ)Sd$JTJ3s+JfwM#JT;SqwF)IHNi&(D`U^EP$Wl~9RL_4! a)BORr6$_p>4BI6D0000= 0. ) { + m_fPanLawKNorm = fKNorm; + } else { + WARNINGLOG("negative kNorm. Set default" ); + m_fPanLawKNorm = Sampler::K_NORM_DEFAULT; + } +} + /// /// Reads a song. /// return nullptr = error reading song file. @@ -728,51 +738,50 @@ Song* SongReader::readSong( const QString& sFileName ) pSong->setActionMode( actionMode ); // pan law - Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - QString sPanLawType( LocalFileMng::readXmlString( songNode, "pan_law", "RATIO_STRAIGHT_POLYGONAL" ) ); + QString sPanLawType( LocalFileMng::readXmlString( songNode, "pan_law_type", "RATIO_STRAIGHT_POLYGONAL" ) ); if ( sPanLawType == "RATIO_STRAIGHT_POLYGONAL" ) { - pSampler->setPanLawType( pSampler->RATIO_STRAIGHT_POLYGONAL ); + pSong->setPanLawType( Sampler::RATIO_STRAIGHT_POLYGONAL ); } else if ( sPanLawType == "RATIO_CONST_POWER" ) { - pSampler->setPanLawType( pSampler->RATIO_CONST_POWER ); + pSong->setPanLawType( Sampler::RATIO_CONST_POWER ); } else if ( sPanLawType == "RATIO_CONST_SUM" ) { - pSampler->setPanLawType( pSampler->RATIO_CONST_SUM ); + pSong->setPanLawType( Sampler::RATIO_CONST_SUM ); } else if ( sPanLawType == "LINEAR_STRAIGHT_POLYGONAL" ) { - pSampler->setPanLawType( pSampler->LINEAR_STRAIGHT_POLYGONAL ); + pSong->setPanLawType( Sampler::LINEAR_STRAIGHT_POLYGONAL ); } else if ( sPanLawType == "LINEAR_CONST_POWER" ) { - pSampler->setPanLawType( pSampler->LINEAR_CONST_POWER ); + pSong->setPanLawType( Sampler::LINEAR_CONST_POWER ); } else if ( sPanLawType == "LINEAR_CONST_SUM" ) { - pSampler->setPanLawType( pSampler->LINEAR_CONST_SUM ); + pSong->setPanLawType( Sampler::LINEAR_CONST_SUM ); } else if ( sPanLawType == "POLAR_STRAIGHT_POLYGONAL" ) { - pSampler->setPanLawType( pSampler->POLAR_STRAIGHT_POLYGONAL ); + pSong->setPanLawType( Sampler::POLAR_STRAIGHT_POLYGONAL ); } else if ( sPanLawType == "POLAR_CONST_POWER" ) { - pSampler->setPanLawType( pSampler->POLAR_CONST_POWER ); + pSong->setPanLawType( Sampler::POLAR_CONST_POWER ); } else if ( sPanLawType == "POLAR_CONST_SUM" ) { - pSampler->setPanLawType( pSampler->POLAR_CONST_SUM ); + pSong->setPanLawType( Sampler::POLAR_CONST_SUM ); } else if ( sPanLawType == "QUADRATIC_STRAIGHT_POLYGONAL" ) { - pSampler->setPanLawType( pSampler->QUADRATIC_STRAIGHT_POLYGONAL ); + pSong->setPanLawType( Sampler::QUADRATIC_STRAIGHT_POLYGONAL ); } else if ( sPanLawType == "QUADRATIC_CONST_POWER" ) { - pSampler->setPanLawType( pSampler->QUADRATIC_CONST_POWER ); + pSong->setPanLawType( Sampler::QUADRATIC_CONST_POWER ); } else if ( sPanLawType == "QUADRATIC_CONST_SUM" ) { - pSampler->setPanLawType( pSampler->QUADRATIC_CONST_SUM ); + pSong->setPanLawType( Sampler::QUADRATIC_CONST_SUM ); } else if ( sPanLawType == "LINEAR_CONST_K_NORM" ) { - pSampler->setPanLawType( pSampler->LINEAR_CONST_K_NORM ); + pSong->setPanLawType( Sampler::LINEAR_CONST_K_NORM ); } else if ( sPanLawType == "POLAR_CONST_K_NORM" ) { - pSampler->setPanLawType( pSampler->POLAR_CONST_K_NORM ); + pSong->setPanLawType( Sampler::POLAR_CONST_K_NORM ); } else if ( sPanLawType == "RATIO_CONST_K_NORM" ) { - pSampler->setPanLawType( pSampler->RATIO_CONST_K_NORM ); + pSong->setPanLawType( Sampler::RATIO_CONST_K_NORM ); } else if ( sPanLawType == "QUADRATIC_CONST_K_NORM" ) { - pSampler->setPanLawType( pSampler->QUADRATIC_CONST_K_NORM ); + pSong->setPanLawType( Sampler::QUADRATIC_CONST_K_NORM ); } else { - pSampler->setPanLawType( pSampler->RATIO_STRAIGHT_POLYGONAL ); + pSong->setPanLawType( Sampler::RATIO_STRAIGHT_POLYGONAL ); WARNINGLOG( "Unknown pan law type in import song. Set default." ); } - float fPanLawKNorm = LocalFileMng::readXmlFloat( songNode, "pan_law_k_norm", K_NORM_DEFAULT ); + float fPanLawKNorm = LocalFileMng::readXmlFloat( songNode, "pan_law_k_norm", Sampler::K_NORM_DEFAULT ); if ( fPanLawKNorm <= 0.0 ) { - fPanLawKNorm = K_NORM_DEFAULT; + fPanLawKNorm = Sampler::K_NORM_DEFAULT; WARNINGLOG( "Invalid pan law k in import song (<= 0). Set default k." ); } - pSampler->setPanLawKNorm( fPanLawKNorm ); + pSong->setPanLawKNorm( fPanLawKNorm ); QDomNode componentListNode = songNode.firstChildElement( "componentList" ); if ( ( ! componentListNode.isNull() ) ) { diff --git a/src/core/Basics/Song.h b/src/core/Basics/Song.h index fea3ce320..0f41daae1 100644 --- a/src/core/Basics/Song.h +++ b/src/core/Basics/Song.h @@ -197,6 +197,11 @@ class Song : public H2Core::Object */ bool hasMissingSamples() const; void clearMissingSamples(); + + void setPanLawType( int nPanLawType ); + int getPanLawType() const; + void setPanLawKNorm( float fKNorm ); + float getPanLawKNorm() const; private: @@ -273,6 +278,10 @@ class Song : public H2Core::Object /** Stores the type of interaction with the SongEditor. */ ActionMode m_actionMode; + + int m_nPanLawType; + // k such that L^k+R^k = 1. Used in constant k-Norm pan law + float m_fPanLawKNorm; }; @@ -516,6 +525,18 @@ inline Song::ActionMode Song::getActionMode() const { return m_actionMode; } +inline void Song::setPanLawType( int nPanLawType ) { + m_nPanLawType = nPanLawType; +} + +inline int Song::getPanLawType() const { + return m_nPanLawType; +} + +inline float Song::getPanLawKNorm() const { + return m_fPanLawKNorm; +} + /** \ingroup H2CORE \brief Read XML file of a song diff --git a/src/core/LocalFileMgr.cpp b/src/core/LocalFileMgr.cpp index 9ce06c23f..71d383eec 100644 --- a/src/core/LocalFileMgr.cpp +++ b/src/core/LocalFileMgr.cpp @@ -388,46 +388,47 @@ int SongWriter::writeSong( Song * pSong, const QString& filename ) Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - QString sPanLawType; - int nPanLawType = pSampler->getPanLawType(); - if ( nPanLawType == pSampler->RATIO_STRAIGHT_POLYGONAL ) { + QString sPanLawType; // prepare the pan law string to write + int nPanLawType = pSong->getPanLawType(); + if ( nPanLawType == Sampler::RATIO_STRAIGHT_POLYGONAL ) { sPanLawType = "RATIO_STRAIGHT_POLYGONAL"; - } else if ( nPanLawType == pSampler->RATIO_CONST_POWER ) { + } else if ( nPanLawType == Sampler::RATIO_CONST_POWER ) { sPanLawType = "RATIO_CONST_POWER"; - } else if ( nPanLawType == pSampler->RATIO_CONST_SUM ) { + } else if ( nPanLawType == Sampler::RATIO_CONST_SUM ) { sPanLawType = "RATIO_CONST_SUM"; - } else if ( nPanLawType == pSampler->LINEAR_STRAIGHT_POLYGONAL ) { + } else if ( nPanLawType == Sampler::LINEAR_STRAIGHT_POLYGONAL ) { sPanLawType = "LINEAR_STRAIGHT_POLYGONAL"; - } else if ( nPanLawType == pSampler->LINEAR_CONST_POWER ) { + } else if ( nPanLawType == Sampler::LINEAR_CONST_POWER ) { sPanLawType = "LINEAR_CONST_POWER"; - } else if ( nPanLawType == pSampler->LINEAR_CONST_SUM ) { + } else if ( nPanLawType == Sampler::LINEAR_CONST_SUM ) { sPanLawType = "LINEAR_CONST_SUM"; - } else if ( nPanLawType == pSampler->POLAR_STRAIGHT_POLYGONAL ) { + } else if ( nPanLawType == Sampler::POLAR_STRAIGHT_POLYGONAL ) { sPanLawType = "POLAR_STRAIGHT_POLYGONAL"; - } else if ( nPanLawType == pSampler->POLAR_CONST_POWER ) { + } else if ( nPanLawType == Sampler::POLAR_CONST_POWER ) { sPanLawType = "POLAR_CONST_POWER"; - } else if ( nPanLawType == pSampler->POLAR_CONST_SUM ) { + } else if ( nPanLawType == Sampler::POLAR_CONST_SUM ) { sPanLawType = "POLAR_CONST_SUM"; - } else if ( nPanLawType == pSampler->QUADRATIC_STRAIGHT_POLYGONAL ) { + } else if ( nPanLawType == Sampler::QUADRATIC_STRAIGHT_POLYGONAL ) { sPanLawType = "QUADRATIC_STRAIGHT_POLYGONAL"; - } else if ( nPanLawType == pSampler->QUADRATIC_CONST_POWER ) { + } else if ( nPanLawType == Sampler::QUADRATIC_CONST_POWER ) { sPanLawType = "QUADRATIC_CONST_POWER"; - } else if ( nPanLawType == pSampler->QUADRATIC_CONST_SUM ) { + } else if ( nPanLawType == Sampler::QUADRATIC_CONST_SUM ) { sPanLawType = "QUADRATIC_CONST_SUM"; - } else if ( nPanLawType == pSampler->LINEAR_CONST_K_NORM ) { + } else if ( nPanLawType == Sampler::LINEAR_CONST_K_NORM ) { sPanLawType = "LINEAR_CONST_K_NORM"; - } else if ( nPanLawType == pSampler->POLAR_CONST_K_NORM ) { + } else if ( nPanLawType == Sampler::POLAR_CONST_K_NORM ) { sPanLawType = "POLAR_CONST_K_NORM"; - } else if ( nPanLawType == pSampler->RATIO_CONST_K_NORM ) { + } else if ( nPanLawType == Sampler::RATIO_CONST_K_NORM ) { sPanLawType = "RATIO_CONST_K_NORM"; - } else if ( nPanLawType == pSampler->QUADRATIC_CONST_K_NORM ) { + } else if ( nPanLawType == Sampler::QUADRATIC_CONST_K_NORM ) { sPanLawType = "QUADRATIC_CONST_K_NORM"; } else { WARNINGLOG( "Unknown pan law in saving song. Saved default type." ); sPanLawType = "RATIO_STRAIGHT_POLYGONAL"; } - LocalFileMng::writeXmlString( songNode, "pan_law", sPanLawType ); - LocalFileMng::writeXmlString( songNode, "pan_law_k_norm", QString("%1").arg( pSampler->getPanLawKNorm() ) ); + // write the pan law string in file + LocalFileMng::writeXmlString( songNode, "pan_law_type", sPanLawType ); + LocalFileMng::writeXmlString( songNode, "pan_law_k_norm", QString("%1").arg( pSong->getPanLawKNorm() ) ); LocalFileMng::writeXmlString( songNode, "humanize_time", QString("%1").arg( pSong->getHumanizeTimeValue() ) ); LocalFileMng::writeXmlString( songNode, "humanize_velocity", QString("%1").arg( pSong->getHumanizeVelocityValue() ) ); diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index e0eb63b6d..8da863a60 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -92,8 +92,6 @@ Sampler::Sampler() m_pPlaybackTrackInstrument = createInstrument( PLAYBACK_INSTR_ID, sEmptySampleFilename, 0.8 ); m_nPlayBackSamplePosition = 0; - // default pan law - m_nPanLawType = RATIO_STRAIGHT_POLYGONAL; } @@ -111,6 +109,11 @@ Sampler::~Sampler() m_pPlaybackTrackInstrument = nullptr; } +/** set default k for pan law with -4.5dB center compensation, given L^k + R^k = const + * it is the mean compromise between constant sum and constant power + */ +float const Sampler::K_NORM_DEFAULT = 1.33333333333333; + void Sampler::process( uint32_t nFrames, Song* pSong ) { //infoLog( "[process]" ); @@ -239,9 +242,6 @@ void Sampler::noteOff(Note* pNote ) // functions for pan parameters and laws----------------- float Sampler::getRatioPan( float fPan_L, float fPan_R ) { - /** returns the single pan parameter in [-1,1] from the L,R gains - * as it was input from the GUI (up to scale and translation, which is arbitrary) - */ if ( fPan_L < 0. || fPan_R < 0. || ( fPan_L == 0. && fPan_R == 0.) ) { // invalid input WARNINGLOG( "Invalid (panL, panR): both zero or some is negative. Pan set to center." ); return 0.; // default central value @@ -254,52 +254,6 @@ float Sampler::getRatioPan( float fPan_L, float fPan_R ) { } } - /** PAN LAWS - * The following pan law functions return pan_L (==L, which is the gain for Left channel). - * They assume a fPan argument domain in [-1;1], and this always happens - * thanks to the previously called getRatioPan(). - *---------------------------- - * For the right channel use: R(p) == pan_R(p) = pan_L(-p) == L(-p) - * thanks to the Left-Right symmetry. - *-------------------------------------- - * The prefix of the function name tells the interpretation of the fPan argument: - * - * "ratio" parameter: - * fPan = R/L - 1 if panned to the left, - * fPan = 1 - L/R if panned to the right. - * - * "linear" parameter (arithmetic mean with linear weights): - * fPan = ( R - L ) / ( R + L ). - * - * "polar" parameter (polar coordinate in LR plane): - * fPan = 4 / pi * arctan( R/L ) - 1 if L != 0, - * fPan = 1 if L == 0. - * - * "quadratic" parameter (arithmetic mean with squared weights): - * fPan = ( R^2 - L^2 ) / ( R^2 + L^2 ). - * - * Note: using a different fPan interpretation makes the output signal more central or more lateral. - * From more central to more lateral: - * "quadratic" ---> "ratio" ---> "polar" ---> "linear" - *--------------------------------------------- - * After the prefix, the name describes the Image of the pan law in the LR plane. - * (remember that each pan law is a parametrized curve in LR plane. - * E.g.: - * "ConstantSum": - * it's properly used in an anechoic room, where there are no reflections. - * Ensures uniform volumes in MONO export, - * has -6.02 dB center compensation. - * "ConstantPower": - * probably makes uniform volumes in a common room, - * has -3.01 dB center compensation. - * "ConstantKNorm": - * L^k + R^k = const - * generalises constant sum (k = 1) and constant power (k = 2) - * "StraightPolygonal": - * one gain is constant while the other varies. - * It's ideal as BALANCE law of DUAL-channel track, - * has 0 dB center compensation. - */ float Sampler::ratioStraightPolygonalPanLaw( float fPan ) { // the straight polygonal pan law interpreting fPan as the "ratio" parameter @@ -415,48 +369,46 @@ float Sampler::ratioConstKNormPanLaw( float fPan, float k) { } // function to direct the computation to the selected pan law. -inline float Sampler::panLaw( float fPan ) { - if ( m_nPanLawType == RATIO_STRAIGHT_POLYGONAL ) { +inline float Sampler::panLaw( float fPan, Song* pSong ) { + int nPanLawType = pSong->getPanLawType(); + if ( nPanLawType == RATIO_STRAIGHT_POLYGONAL ) { return ratioStraightPolygonalPanLaw( fPan ); - } else if ( m_nPanLawType == RATIO_CONST_POWER ) { + } else if ( nPanLawType == RATIO_CONST_POWER ) { return ratioConstPowerPanLaw( fPan ); - } else if ( m_nPanLawType == RATIO_CONST_SUM ) { + } else if ( nPanLawType == RATIO_CONST_SUM ) { return ratioConstSumPanLaw( fPan ); - } else if ( m_nPanLawType == LINEAR_STRAIGHT_POLYGONAL ) { + } else if ( nPanLawType == LINEAR_STRAIGHT_POLYGONAL ) { return linearStraightPolygonalPanLaw( fPan ); - } else if ( m_nPanLawType == LINEAR_CONST_POWER ) { + } else if ( nPanLawType == LINEAR_CONST_POWER ) { return linearConstPowerPanLaw( fPan ); - } else if ( m_nPanLawType == LINEAR_CONST_SUM ) { + } else if ( nPanLawType == LINEAR_CONST_SUM ) { return linearConstSumPanLaw( fPan ); - } else if ( m_nPanLawType == POLAR_STRAIGHT_POLYGONAL ) { + } else if ( nPanLawType == POLAR_STRAIGHT_POLYGONAL ) { return polarStraightPolygonalPanLaw( fPan ); - } else if ( m_nPanLawType == POLAR_CONST_POWER ) { + } else if ( nPanLawType == POLAR_CONST_POWER ) { return polarConstPowerPanLaw( fPan ); - } else if ( m_nPanLawType == POLAR_CONST_SUM ) { + } else if ( nPanLawType == POLAR_CONST_SUM ) { return polarConstSumPanLaw( fPan ); - } else if ( m_nPanLawType == QUADRATIC_STRAIGHT_POLYGONAL ) { + } else if ( nPanLawType == QUADRATIC_STRAIGHT_POLYGONAL ) { return quadraticStraightPolygonalPanLaw( fPan ); - } else if ( m_nPanLawType == QUADRATIC_CONST_POWER ) { + } else if ( nPanLawType == QUADRATIC_CONST_POWER ) { return quadraticConstPowerPanLaw( fPan ); - } else if ( m_nPanLawType == QUADRATIC_CONST_SUM ) { + } else if ( nPanLawType == QUADRATIC_CONST_SUM ) { return quadraticConstSumPanLaw( fPan ); - } else if ( m_nPanLawType == LINEAR_CONST_K_NORM ) { - return linearConstKNormPanLaw( fPan, m_fPanLawKNorm ); - } else if ( m_nPanLawType == POLAR_CONST_K_NORM ) { - return polarConstKNormPanLaw( fPan, m_fPanLawKNorm ); - } else if ( m_nPanLawType == RATIO_CONST_K_NORM ) { - return ratioConstKNormPanLaw( fPan, m_fPanLawKNorm ); - } else if ( m_nPanLawType == QUADRATIC_CONST_K_NORM ) { - return quadraticConstKNormPanLaw( fPan, m_fPanLawKNorm ); + } else if ( nPanLawType == LINEAR_CONST_K_NORM ) { + return linearConstKNormPanLaw( fPan, pSong->getPanLawKNorm() ); + } else if ( nPanLawType == POLAR_CONST_K_NORM ) { + return polarConstKNormPanLaw( fPan, pSong->getPanLawKNorm() ); + } else if ( nPanLawType == RATIO_CONST_K_NORM ) { + return ratioConstKNormPanLaw( fPan, pSong->getPanLawKNorm() ); + } else if ( nPanLawType == QUADRATIC_CONST_K_NORM ) { + return quadraticConstKNormPanLaw( fPan, pSong->getPanLawKNorm() ); } else { - WARNINGLOG( "Unknown pan law type. Set default." ); - m_nPanLawType = RATIO_STRAIGHT_POLYGONAL; + WARNINGLOG( "Unknown pan law type. Used default." ); return ratioStraightPolygonalPanLaw( fPan ); } } - - //------------------------------------------------------------------ /// Render a note @@ -508,8 +460,8 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) float fPan = fInstrPan + fNotePan * ( 1 - fabs( fInstrPan ) ); // Pass fPan to the Pan Law - float fPan_L = panLaw( fPan ); - float fPan_R = panLaw( -fPan ); + float fPan_L = panLaw( fPan, pSong ); + float fPan_R = panLaw( -fPan, pSong ); //--------------------------------------------------------- bool nReturnValues [pInstr->get_components()->size()]; diff --git a/src/core/Sampler/Sampler.h b/src/core/Sampler/Sampler.h index 80aaffb9a..c69d0fc19 100644 --- a/src/core/Sampler/Sampler.h +++ b/src/core/Sampler/Sampler.h @@ -33,10 +33,6 @@ #include -/** define default k for pan law with -4.5dB center compensation, given L^k + R^k = const - * it is the mean compromise between constant sum and constant power - */ -#define K_NORM_DEFAULT 1.3333333333333 namespace H2Core { @@ -57,6 +53,53 @@ class Sampler : public H2Core::Object { H2_OBJECT public: + + /** PAN LAWS + * The following pan law functions return pan_L (==L, which is the gain for Left channel). + * They assume a fPan argument domain in [-1;1], and this always happens + * thanks to the previously called getRatioPan(). + *---------------------------- + * For the right channel use: R(p) == pan_R(p) = pan_L(-p) == L(-p) + * thanks to the Left-Right symmetry. + *-------------------------------------- + * The prefix of the function name tells the interpretation of the fPan argument: + * + * "ratio" parameter: + * fPan = R/L - 1 if panned to the left, + * fPan = 1 - L/R if panned to the right. + * + * "linear" parameter (arithmetic mean with linear weights): + * fPan = ( R - L ) / ( R + L ). + * + * "polar" parameter (polar coordinate in LR plane): + * fPan = 4 / pi * arctan( R/L ) - 1 if L != 0, + * fPan = 1 if L == 0. + * + * "quadratic" parameter (arithmetic mean with squared weights): + * fPan = ( R^2 - L^2 ) / ( R^2 + L^2 ). + * + * Note: using a different fPan interpretation makes the output signal more central or more lateral. + * From more central to more lateral: + * "quadratic" ---> "ratio" ---> "polar" ---> "linear" + *--------------------------------------------- + * After the prefix, the name describes the Image of the pan law in the LR plane. + * (remember that each pan law is a parametrized curve in LR plane. + * E.g.: + * "ConstantSum": + * it's properly used in an anechoic room, where there are no reflections. + * Ensures uniform volumes in MONO export, + * has -6.02 dB center compensation. + * "ConstantPower": + * probably makes uniform volumes in a common room, + * has -3.01 dB center compensation. + * "ConstantKNorm": + * L^k + R^k = const + * generalises constant sum (k = 1) and constant power (k = 2) + * "StraightPolygonal": + * one gain is constant while the other varies. + * It's ideal as BALANCE law of DUAL-channel track, + * has 0 dB center compensation. + */ enum PAN_LAW_TYPES { RATIO_STRAIGHT_POLYGONAL = 0, RATIO_CONST_POWER, @@ -75,6 +118,40 @@ class Sampler : public H2Core::Object POLAR_CONST_K_NORM, QUADRATIC_CONST_K_NORM }; + + /** default k for pan law with such that L^k + R^k = const + * must be initialised in Sampler.cpp + */ + static const float K_NORM_DEFAULT; + + + // pan law functions + static float ratioStraightPolygonalPanLaw( float fPan ); + static float ratioConstPowerPanLaw( float fPan ); + static float ratioConstSumPanLaw( float fPan ); + static float linearStraightPolygonalPanLaw( float fPan ); + static float linearConstPowerPanLaw( float fPan ); + static float linearConstSumPanLaw( float fPan ); + static float polarStraightPolygonalPanLaw( float fPan ); + static float polarConstPowerPanLaw( float fPan ); + static float polarConstSumPanLaw( float fPan ); + static float quadraticStraightPolygonalPanLaw( float fPan ); + static float quadraticConstPowerPanLaw( float fPan ); + static float quadraticConstSumPanLaw( float fPan ); + // customly compensated + static float linearConstKNormPanLaw( float fPan, float k ); + static float polarConstKNormPanLaw( float fPan, float k ); + static float ratioConstKNormPanLaw( float fPan, float k ); + static float quadraticConstKNormPanLaw( float fPan, float k ); + + + /** This necessary function + * returns the single pan parameter in [-1,1] from the L,R gains + * as it was input from the GUI (up to scale and translation, which is arbitrary) + */ + static float getRatioPan( float fPan_L, float fPan_R ); + + float* m_pMainOut_L; ///< sampler main out (left channel) float* m_pMainOut_R; ///< sampler main out (right channel) @@ -134,33 +211,6 @@ class Sampler : public H2Core::Object */ void reinitializePlaybackTrack(); - // functions for pan law - static float getRatioPan( float fPan_L, float fPan_R ); - - static float ratioStraightPolygonalPanLaw( float fPan ); - static float ratioConstPowerPanLaw( float fPan ); - static float ratioConstSumPanLaw( float fPan ); - static float linearStraightPolygonalPanLaw( float fPan ); - static float linearConstPowerPanLaw( float fPan ); - static float linearConstSumPanLaw( float fPan ); - static float polarStraightPolygonalPanLaw( float fPan ); - static float polarConstPowerPanLaw( float fPan ); - static float polarConstSumPanLaw( float fPan ); - static float quadraticStraightPolygonalPanLaw( float fPan ); - static float quadraticConstPowerPanLaw( float fPan ); - static float quadraticConstSumPanLaw( float fPan ); - // customly compensated - static float linearConstKNormPanLaw( float fPan, float k ); - static float polarConstKNormPanLaw( float fPan, float k ); - static float ratioConstKNormPanLaw( float fPan, float k ); - static float quadraticConstKNormPanLaw( float fPan, float k ); - - void setPanLawType( int nPanLawType ); - int getPanLawType() const; - void setPanLawKNorm( float fKNorm ); - float getPanLawKNorm() const; - - private: std::vector m_playingNotesQueue; std::vector m_queuedNoteOffs; @@ -179,12 +229,12 @@ class Sampler : public H2Core::Object int m_nMaxLayers; int m_nPlayBackSamplePosition; + + /** function to direct the computation to the selected pan law function + */ + float panLaw( float fPan, Song* pSong ); - int m_nPanLawType; - float panLaw( float fPan ); - // k such that L^k+R^k = 1. Used in constant k-Norm pan law - float m_fPanLawKNorm; bool processPlaybackTrack(int nBufferSize); @@ -226,23 +276,6 @@ class Sampler : public H2Core::Object ); }; -inline void Sampler::setPanLawType( int nPanLawType ) { - m_nPanLawType = nPanLawType; -} - -inline int Sampler::getPanLawType() const { - return m_nPanLawType; -} - - -inline void Sampler::setPanLawKNorm( float fKNorm ) { - m_fPanLawKNorm = fKNorm; -} - -inline float Sampler::getPanLawKNorm() const { - return m_fPanLawKNorm; -} - } // namespace diff --git a/src/gui/src/Mixer/MixerSettingsDialog.cpp b/src/gui/src/Mixer/MixerSettingsDialog.cpp index 1c1f86201..2555821e6 100644 --- a/src/gui/src/Mixer/MixerSettingsDialog.cpp +++ b/src/gui/src/Mixer/MixerSettingsDialog.cpp @@ -57,7 +57,7 @@ MixerSettingsDialog::MixerSettingsDialog(QWidget* parent) setMinimumSize( width(), height() ); - Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); + Song* pSong = Hydrogen::get_instance()->getSong(); /* insert the items here so they work consistently no matter of their order in the menu (except the headings) */ @@ -65,43 +65,43 @@ MixerSettingsDialog::MixerSettingsDialog(QWidget* parent) // heading panLawComboBox->addItem( tr("------ Linear pan parameter ------"), QVariant( -10000 ) ); qobject_cast< QStandardItemModel * >( panLawComboBox->model() )->item( 0 )->setEnabled( false ); - panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( pSampler->LINEAR_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( pSampler->LINEAR_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB)"), QVariant( pSampler->LINEAR_CONST_SUM ) ); + panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( Sampler::LINEAR_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( Sampler::LINEAR_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB)"), QVariant( Sampler::LINEAR_CONST_SUM ) ); panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation)"), - QVariant( pSampler->LINEAR_CONST_K_NORM ) ); + QVariant( Sampler::LINEAR_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); // heading panLawComboBox->addItem( tr("------ Polar pan parameter ------"), QVariant( -10000 ) ); qobject_cast< QStandardItemModel * >( panLawComboBox->model() )->item( 6 )->setEnabled( false ); - panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( pSampler->POLAR_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( pSampler->POLAR_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB)"), QVariant( pSampler->POLAR_CONST_SUM ) ); + panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( Sampler::POLAR_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( Sampler::POLAR_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB)"), QVariant( Sampler::POLAR_CONST_SUM ) ); panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation)"), - QVariant( pSampler->POLAR_CONST_K_NORM ) ); + QVariant( Sampler::POLAR_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); // heading panLawComboBox->addItem( tr("------ Ratio pan parameter ------"), QVariant( -10000 ) ); qobject_cast< QStandardItemModel * >( panLawComboBox->model() )->item( 12 )->setEnabled( false ); - panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( pSampler->RATIO_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( pSampler->RATIO_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB)"), QVariant( pSampler->RATIO_CONST_SUM ) ); + panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( Sampler::RATIO_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( Sampler::RATIO_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB)"), QVariant( Sampler::RATIO_CONST_SUM ) ); panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation)"), - QVariant( pSampler->RATIO_CONST_K_NORM ) ); + QVariant( Sampler::RATIO_CONST_K_NORM ) ); panLawComboBox->insertSeparator(100); // heading panLawComboBox->addItem( tr("------ Quadratic pan parameter ------"), QVariant( -10000 ) ); qobject_cast< QStandardItemModel * >( panLawComboBox->model() )->item( 18 )->setEnabled( false ); - panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( pSampler->QUADRATIC_STRAIGHT_POLYGONAL ) ); - panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( pSampler->QUADRATIC_CONST_POWER ) ); - panLawComboBox->addItem( tr("Constant Sum (-6dB)"), QVariant( pSampler->QUADRATIC_CONST_SUM ) ); + panLawComboBox->addItem( tr("Balance Law (0dB)"), QVariant( Sampler::QUADRATIC_STRAIGHT_POLYGONAL ) ); + panLawComboBox->addItem( tr("Constant Power (-3dB)"), QVariant( Sampler::QUADRATIC_CONST_POWER ) ); + panLawComboBox->addItem( tr("Constant Sum (-6dB)"), QVariant( Sampler::QUADRATIC_CONST_SUM ) ); panLawComboBox->addItem( tr("Constant k-Norm (Custom dB compensation)"), - QVariant( pSampler->QUADRATIC_CONST_K_NORM ) ); + QVariant( Sampler::QUADRATIC_CONST_K_NORM ) ); - panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSampler->getPanLawType() ) ); + panLawComboBox->setCurrentIndex( panLawComboBox->findData( pSong->getPanLawType() ) ); panLawChanged(); // to hide custom dB SPL compensation panLawComboBox->setToolTip( tr("Relationship between the sound's apparent image position and the pan knob control" ) ); @@ -113,8 +113,7 @@ MixerSettingsDialog::MixerSettingsDialog(QWidget* parent) */ QValidator *validator = new QDoubleValidator( -10000., 0., 20, this ); dBCompensationLineEdit->setValidator( validator ); - dBCompensationLineEdit->setText( QString( "%1" ).arg( -6.0206 / pSampler->getPanLawKNorm() ) ); - + dBCompensationLineEdit->setText( QString( "%1" ).arg( -6.0206 / pSong->getPanLawKNorm() ) ); } @@ -133,16 +132,12 @@ void MixerSettingsDialog::on_cancelBtn_clicked() } -void MixerSettingsDialog::on_okBtn_clicked() -{ - Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); +void MixerSettingsDialog::on_okBtn_clicked() { + Song* pSong = Hydrogen::get_instance()->getSong(); bool bOk; - // Pan Law settings - - pSampler->setPanLawType( ( panLawComboBox->currentData() ).toInt( &bOk ) ); - + pSong->setPanLawType( ( panLawComboBox->currentData() ).toInt( &bOk ) ); // allowing both point or comma decimal separator float fdBCenterCompensation = ( dBCompensationLineEdit->text() ).replace( ",", "." ).toFloat( &bOk ); @@ -159,19 +154,18 @@ void MixerSettingsDialog::on_okBtn_clicked() /** convert the dB Compensation to the corresponding exponent k: assuming constraint L^k + R^k = 1 * For example -6.0206 dB <=> k = 1 <=> L + R = 1 (i.e. constant sum) */ - pSampler->setPanLawKNorm( - 6.0206 / fdBCenterCompensation ); + pSong->setPanLawKNorm( - 6.0206 / fdBCenterCompensation ); accept(); } -void MixerSettingsDialog::panLawChanged(){ +void MixerSettingsDialog::panLawChanged(){ // hide/show some widgets bool bOk; int nPanLawType = ( panLawComboBox->currentData() ).toInt( &bOk); - Sampler* pSampler = AudioEngine::get_instance()->get_sampler(); - if ( nPanLawType == pSampler->LINEAR_CONST_K_NORM - || nPanLawType == pSampler->POLAR_CONST_K_NORM - || nPanLawType == pSampler->RATIO_CONST_K_NORM - || nPanLawType == pSampler->QUADRATIC_CONST_K_NORM + if ( nPanLawType == Sampler::LINEAR_CONST_K_NORM + || nPanLawType == Sampler::POLAR_CONST_K_NORM + || nPanLawType == Sampler::RATIO_CONST_K_NORM + || nPanLawType == Sampler::QUADRATIC_CONST_K_NORM ) { dBCompensationLineEdit->show(); diff --git a/src/gui/src/Mixer/MixerSettingsDialog_UI.ui b/src/gui/src/Mixer/MixerSettingsDialog_UI.ui index 56867f7da..ee572c8a5 100644 --- a/src/gui/src/Mixer/MixerSettingsDialog_UI.ui +++ b/src/gui/src/Mixer/MixerSettingsDialog_UI.ui @@ -10,9 +10,6 @@ 157 - - Form1 - From 07c7afc68878267965a985f5c85c6d2d3c6ca0b8 Mon Sep 17 00:00:00 2001 From: oddtime Date: Thu, 28 Jan 2021 17:14:09 +0100 Subject: [PATCH 24/26] a line was missed --- src/core/Sampler/Sampler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 8da863a60..21db06afe 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -91,7 +91,6 @@ Sampler::Sampler() // dummy instrument used for playback track m_pPlaybackTrackInstrument = createInstrument( PLAYBACK_INSTR_ID, sEmptySampleFilename, 0.8 ); m_nPlayBackSamplePosition = 0; - } @@ -404,7 +403,8 @@ inline float Sampler::panLaw( float fPan, Song* pSong ) { } else if ( nPanLawType == QUADRATIC_CONST_K_NORM ) { return quadraticConstKNormPanLaw( fPan, pSong->getPanLawKNorm() ); } else { - WARNINGLOG( "Unknown pan law type. Used default." ); + WARNINGLOG( "Unknown pan law type. Set default." ); + pSong->setPanLawType( RATIO_STRAIGHT_POLYGONAL ); return ratioStraightPolygonalPanLaw( fPan ); } } From bface81cc0cf50087360ca5d314b601e5569b471 Mon Sep 17 00:00:00 2001 From: oddtime Date: Sat, 30 Jan 2021 10:01:48 +0100 Subject: [PATCH 25/26] changelog, some graphic in doc comments --- ChangeLog | 1 + src/core/Sampler/Sampler.cpp | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9a075c4ac..8acb9ece7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,7 @@ * Deprecating JACK-session * Instrument main pitch shift offset * Custom pattern size support with representation in note values + * Custom pan law support in mixer 2020-08-03 the hydrogen team * Release 1.0 diff --git a/src/core/Sampler/Sampler.cpp b/src/core/Sampler/Sampler.cpp index 21db06afe..debf84e09 100644 --- a/src/core/Sampler/Sampler.cpp +++ b/src/core/Sampler/Sampler.cpp @@ -436,7 +436,7 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) } // new instrument and note pan interaction-------------------------- - // note pan moves the pan in a smaller pan range centered at instrument pan + // notePan moves the RESULTANT pan in a smaller pan range centered at instrumentPan /** reconvert (pan_L,pan_R) to a single pan parameter (as it was input from the GUI) in [-1,1]. * This redundance avoids to import old files as legacy. @@ -450,11 +450,21 @@ bool Sampler::renderNote( Note* pNote, unsigned nBufferSize, Song* pSong ) float fNotePan = getRatioPan( pNote->get_pan_l(), pNote->get_pan_r() ); float fInstrPan = getRatioPan( pInstr->get_pan_l(), pInstr->get_pan_r() ); - /** Get the resultant pan, following a "matryoshka" multi panning: - * note pan moves the pan in a smaller pan range centered at instrument pan. - * The "note resultant pan range" depends on instrPan value: + /** Get the RESULTANT pan, following a "matryoshka" multi panning, like in this graphic: + * + * L--------------instrPan---------C------------------------------>R (instrumentPan = -0.4) + * | + * V + * L-----------------C---notePan-------->R (notePan = +0.3) + * | + * V + * L----------------------resPan---C------------------------------>R (resultantPan = -0.22) + * + * Explanation: + * notePan moves the RESULTANT pan in a smaller pan range centered at instrumentPan value, + * whose extension depends on instrPan value: * if instrPan is central, notePan moves the signal in the whole pan range (really from left to right); - * if instrPan is sided, notePan moves the signal in a progressively smaller pan range centered at instrument pan; + * if instrPan is sided, notePan moves the signal in a progressively smaller pan range centered at instrPan; * if instrPan is HARD-sided, notePan doesn't have any effect. */ float fPan = fInstrPan + fNotePan * ( 1 - fabs( fInstrPan ) ); From 11bb83f80a541c12b414e325c632e5460f7ab47b Mon Sep 17 00:00:00 2001 From: oddtime Date: Mon, 1 Feb 2021 22:33:54 +0100 Subject: [PATCH 26/26] replace test.ref.flac because the new pan law functions introduce negligible float differences --- src/tests/data/functional/test.ref.flac | Bin 250922 -> 243248 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/tests/data/functional/test.ref.flac b/src/tests/data/functional/test.ref.flac index b6ba254d1749693f4ef6aecdfb36c17bbb2c1e3a..77113c71d3330e2640f7bfebbeea1be0662f924c 100644 GIT binary patch literal 243248 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
K17CvBo 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�-hd0td6<5yJnWv#z@q$B(HpUM)0CWY|C!%eZwP4 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 UN2Log)Admw3WLOXZvRI(=MTv^!2kdN literal 250922 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 z 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 c`ahcxPA8$<7|jBOYwn>T6E$kX(43fJ