Compare commits
39 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f65ec07603 | ||
|
|
b789eb9a69 | ||
|
|
569c83101a | ||
|
|
8b2ce06da8 | ||
|
|
8d3637e754 | ||
|
|
c6a22747da | ||
|
|
f27ea7bc2b | ||
|
|
2aa7b64938 | ||
|
|
e6ae2be65a | ||
|
|
a182a3e8cc | ||
|
|
90bb470642 | ||
|
|
a8924a34dd | ||
|
|
73cad09968 | ||
|
|
60ad2c8aa0 | ||
|
|
4a6257a47c | ||
|
|
891ab058eb | ||
|
|
bbe337bd03 | ||
|
|
7431e77229 | ||
|
|
5a0dfdd3c0 | ||
|
|
76d766fe25 | ||
|
|
591acbf732 | ||
|
|
56d0910533 | ||
|
|
6e01e8d4e0 | ||
|
|
2e8534955b | ||
|
|
82cd1ca65d | ||
|
|
decac20298 | ||
|
|
4a2a60255c | ||
|
|
cefee3a721 | ||
|
|
97a8705811 | ||
|
|
074eada27f | ||
|
|
951663ec3d | ||
|
|
8c0ab4dfec | ||
|
|
762b667b47 | ||
|
|
fc6374a07b | ||
|
|
e7e8e79630 | ||
|
|
c3c5501396 | ||
|
|
4e5d4b95a0 | ||
|
|
2a6d6c2a7e | ||
|
|
9635232b45 |
@@ -15,7 +15,7 @@ INCLUDE(FindPkgConfig)
|
||||
|
||||
SET(VERSION_MAJOR "1")
|
||||
SET(VERSION_MINOR "0")
|
||||
SET(VERSION_PATCH "99")
|
||||
SET(VERSION_PATCH "100")
|
||||
#SET(VERSION_SUFFIX "")
|
||||
SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
||||
IF(VERSION_SUFFIX)
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE lmms-project>
|
||||
<lmms-project version="1.0" creator="LMMS" creatorversion="1.0.98" type="instrumenttracksettings">
|
||||
<lmms-project version="1.0" creator="LMMS" creatorversion="1.0.99" type="instrumenttracksettings">
|
||||
<head/>
|
||||
<instrumenttracksettings muted="0" type="0" name="Kick power" solo="0">
|
||||
<instrumenttrack pan="0" fxch="0" scale_type="linear" pitchrange="1" pitch="0" basenote="57" vol="100">
|
||||
<instrumenttrack pan="0" fxch="0" pitchrange="1" pitch="0" basenote="57" vol="100">
|
||||
<instrument name="kicker">
|
||||
<kicker decay_numerator="4" decay_denominator="4" distend="0.8" click="0.25" endnote="0" version="1" decay="594" syncmode="0" noise="0" slope="0.33" dist="1.2" env="0.163" scale_type="linear" startnote="0" startfreq="130" endfreq="5" gain="1"/>
|
||||
<kicker decay_numerator="4" decay_denominator="4" distend="0.8" click="0.25" endnote="0" version="1" decay="360" syncmode="0" noise="0.2" slope="0.372" dist="1.2" env="0.163" startnote="0" startfreq="145" endfreq="30" gain="1"/>
|
||||
</instrument>
|
||||
<eldata scale_type="linear" fres="0.5" ftype="0" fcut="14000" fwet="0">
|
||||
<elvol lspd_denominator="4" sustain="0.5" pdel="0" userwavefile="" dec="0.5" lamt="0" syncmode="0" latt="0" rel="0.1" amt="0" x100="0" att="0" lpdel="0" hold="0.5" lshp="0" lspd="0.1" ctlenvamt="0" lspd_numerator="4" scale_type="linear"/>
|
||||
<elcut lspd_denominator="4" sustain="0.5" pdel="0" userwavefile="" dec="0.5" lamt="0" syncmode="0" latt="0" rel="0.1" amt="0" x100="0" att="0" lpdel="0" hold="0.5" lshp="0" lspd="0.1" ctlenvamt="0" lspd_numerator="4" scale_type="linear"/>
|
||||
<elres lspd_denominator="4" sustain="0.5" pdel="0" userwavefile="" dec="0.5" lamt="0" syncmode="0" latt="0" rel="0.1" amt="0" x100="0" att="0" lpdel="0" hold="0.5" lshp="0" lspd="0.1" ctlenvamt="0" lspd_numerator="4" scale_type="linear"/>
|
||||
<eldata fres="0.5" ftype="0" fcut="14000" fwet="0">
|
||||
<elvol lspd_denominator="4" sustain="0.5" pdel="0" userwavefile="" dec="0.5" lamt="0" syncmode="0" latt="0" rel="0.1" amt="0" x100="0" att="0" lpdel="0" hold="0.5" lshp="0" lspd="0.1" ctlenvamt="0" lspd_numerator="4"/>
|
||||
<elcut lspd_denominator="4" sustain="0.5" pdel="0" userwavefile="" dec="0.5" lamt="0" syncmode="0" latt="0" rel="0.1" amt="0" x100="0" att="0" lpdel="0" hold="0.5" lshp="0" lspd="0.1" ctlenvamt="0" lspd_numerator="4"/>
|
||||
<elres lspd_denominator="4" sustain="0.5" pdel="0" userwavefile="" dec="0.5" lamt="0" syncmode="0" latt="0" rel="0.1" amt="0" x100="0" att="0" lpdel="0" hold="0.5" lshp="0" lspd="0.1" ctlenvamt="0" lspd_numerator="4"/>
|
||||
</eldata>
|
||||
<chordcreator chord="0" scale_type="linear" chordrange="1" chord-enabled="0"/>
|
||||
<arpeggiator arptime="100" arprange="1" arptime_denominator="4" syncmode="0" arpmode="0" scale_type="linear" arp-enabled="0" arp="0" arptime_numerator="4" arpdir="0" arpgate="100"/>
|
||||
<midiport inputcontroller="0" fixedoutputvelocity="-1" inputchannel="0" scale_type="linear" outputcontroller="0" writable="0" outputchannel="1" fixedinputvelocity="-1" fixedoutputnote="-1" outputprogram="1" basevelocity="63" readable="0"/>
|
||||
<chordcreator chord="0" chordrange="1" chord-enabled="0"/>
|
||||
<arpeggiator arptime="100" arprange="1" arptime_denominator="4" syncmode="0" arpmode="0" arp-enabled="0" arp="0" arptime_numerator="4" arpdir="0" arpgate="100"/>
|
||||
<midiport inputcontroller="0" fixedoutputvelocity="-1" inputchannel="0" outputcontroller="0" writable="0" outputchannel="1" fixedinputvelocity="-1" fixedoutputnote="-1" outputprogram="1" basevelocity="63" readable="0"/>
|
||||
<fxchain numofeffects="0" enabled="0"/>
|
||||
</instrumenttrack>
|
||||
</instrumenttracksettings>
|
||||
161
data/presets/Kicker/SnareMarch.xpf
Normal file
161
data/presets/Kicker/SnareMarch.xpf
Normal file
@@ -0,0 +1,161 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE lmms-project>
|
||||
<lmms-project version="1.0" creator="LMMS" creatorversion="1.0.99" type="instrumenttracksettings">
|
||||
<head/>
|
||||
<instrumenttracksettings muted="0" type="0" name="Snare March" solo="0">
|
||||
<instrumenttrack pan="0" fxch="0" pitchrange="1" pitch="0" basenote="57" vol="100">
|
||||
<instrument name="kicker">
|
||||
<kicker decay_numerator="4" decay_denominator="4" distend="0" click="1" endnote="0" version="1" decay="240" syncmode="0" noise="0.85" slope="1" dist="0" env="0.644" startnote="0" startfreq="229" endfreq="195" gain="1"/>
|
||||
</instrument>
|
||||
<eldata fres="0.56" ftype="3" fcut="929" fwet="1">
|
||||
<elvol lspd_denominator="4" sustain="0.294" pdel="0" userwavefile="" dec="0.453" lamt="0" syncmode="0" latt="0" rel="0.1" amt="1" x100="0" att="0" lpdel="0" hold="0" lshp="2" lspd="0.0997" ctlenvamt="0" lspd_numerator="4"/>
|
||||
<elcut lspd_denominator="4" sustain="0.5" pdel="0" userwavefile="" dec="0.5" lamt="0" syncmode="0" latt="0" rel="0.1" amt="0" x100="0" att="0" lpdel="0" hold="0.5" lshp="2" lspd="0.001" ctlenvamt="0" lspd_numerator="4"/>
|
||||
<elres lspd_denominator="4" sustain="0.5" pdel="0" userwavefile="" dec="0.5" lamt="0" syncmode="0" latt="0" rel="0.1" amt="0" x100="0" att="0" lpdel="0" hold="0.5" lshp="0" lspd="0.1" ctlenvamt="0" lspd_numerator="4"/>
|
||||
</eldata>
|
||||
<chordcreator chord="0" chordrange="1" chord-enabled="0"/>
|
||||
<arpeggiator arptime="100" arprange="1" arptime_denominator="4" syncmode="0" arpmode="0" arp-enabled="0" arp="0" arptime_numerator="4" arpdir="0" arpgate="100"/>
|
||||
<midiport inputcontroller="0" fixedoutputvelocity="-1" inputchannel="0" outputcontroller="0" writable="0" outputchannel="1" fixedinputvelocity="-1" fixedoutputnote="-1" outputprogram="1" basevelocity="63" readable="0"/>
|
||||
<fxchain numofeffects="6" enabled="1">
|
||||
<effect autoquit_numerator="4" autoquit_denominator="4" syncmode="0" autoquit="1" gate="0" name="ladspaeffect" wet="1" on="1">
|
||||
<ladspacontrols ports="10">
|
||||
<port02 data="0"/>
|
||||
<port03 data="0"/>
|
||||
<port04 data="2.07"/>
|
||||
<port05 data="3.51"/>
|
||||
<port06 data="-47.97"/>
|
||||
<port07 data="-12.69"/>
|
||||
<port08 data="-47.97"/>
|
||||
<port09 data="-47.34"/>
|
||||
<port010 data="-47.97"/>
|
||||
<port011 data="9.99"/>
|
||||
</ladspacontrols>
|
||||
<key>
|
||||
<attribute value="caps" name="file"/>
|
||||
<attribute value="Eq2x2" name="plugin"/>
|
||||
</key>
|
||||
</effect>
|
||||
<effect autoquit_numerator="4" autoquit_denominator="4" syncmode="0" autoquit="1" gate="0" name="ladspaeffect" wet="0.5" on="0">
|
||||
<ladspacontrols ports="4">
|
||||
<port02 data="0.370265"/>
|
||||
<port03 data="0"/>
|
||||
<port04 data="0.9995"/>
|
||||
<port05 data="0.10875"/>
|
||||
</ladspacontrols>
|
||||
<key>
|
||||
<attribute value="caps" name="file"/>
|
||||
<attribute value="Plate2x2" name="plugin"/>
|
||||
</key>
|
||||
</effect>
|
||||
<effect autoquit_numerator="4" autoquit_denominator="4" syncmode="0" autoquit="1" gate="0" name="ladspaeffect" wet="1" on="1">
|
||||
<ladspacontrols ports="9">
|
||||
<port07>
|
||||
<data scale_type="log" value="0.4" id="6315252"/>
|
||||
</port07>
|
||||
<port08>
|
||||
<data scale_type="log" value="2000.25" id="2498139"/>
|
||||
</port08>
|
||||
<port09 data="0"/>
|
||||
<port010 data="1"/>
|
||||
<port011 data="0.5"/>
|
||||
<port012 data="1"/>
|
||||
<port013 data="0"/>
|
||||
<port014>
|
||||
<data scale_type="log" value="659.34" id="5231681"/>
|
||||
</port014>
|
||||
<port015>
|
||||
<data scale_type="log" value="4862.63" id="1579810"/>
|
||||
</port015>
|
||||
</ladspacontrols>
|
||||
<key>
|
||||
<attribute value="calf" name="file"/>
|
||||
<attribute value="Reverb" name="plugin"/>
|
||||
</key>
|
||||
</effect>
|
||||
<effect autoquit_numerator="4" autoquit_denominator="4" syncmode="0" autoquit="1" gate="0" name="ladspaeffect" wet="0.18" on="1">
|
||||
<ladspacontrols ports="13">
|
||||
<port04 data="0"/>
|
||||
<port05 data="1.02375"/>
|
||||
<port06 data="0.96"/>
|
||||
<port07 data="0.50125"/>
|
||||
<port012 data="5.049"/>
|
||||
<port013 data="10"/>
|
||||
<port015>
|
||||
<data scale_type="log" value="20000" id="8103466"/>
|
||||
</port015>
|
||||
<port016>
|
||||
<data scale_type="log" value="10" id="4889780"/>
|
||||
</port016>
|
||||
<port017>
|
||||
<data scale_type="log" value="20000" id="6261168"/>
|
||||
</port017>
|
||||
<port018>
|
||||
<data scale_type="log" value="10" id="4037431"/>
|
||||
</port018>
|
||||
<port019>
|
||||
<data scale_type="log" value="215.82" id="6293968"/>
|
||||
</port019>
|
||||
<port020 data="15.9973"/>
|
||||
<port021>
|
||||
<data scale_type="log" value="0.9999" id="2846145"/>
|
||||
</port021>
|
||||
</ladspacontrols>
|
||||
<key>
|
||||
<attribute value="calf" name="file"/>
|
||||
<attribute value="Saturator" name="plugin"/>
|
||||
</key>
|
||||
</effect>
|
||||
<effect autoquit_numerator="4" autoquit_denominator="4" syncmode="0" autoquit="1" gate="0" name="ladspaeffect" wet="1" on="1">
|
||||
<ladspacontrols ports="13">
|
||||
<port04 data="0"/>
|
||||
<port05 data="1.02375"/>
|
||||
<port06 data="0.96"/>
|
||||
<port07 data="1"/>
|
||||
<port012 data="5.049"/>
|
||||
<port013 data="10"/>
|
||||
<port015>
|
||||
<data scale_type="log" value="20000" id="7709628"/>
|
||||
</port015>
|
||||
<port016>
|
||||
<data scale_type="log" value="10" id="7480205"/>
|
||||
</port016>
|
||||
<port017>
|
||||
<data scale_type="log" value="20000" id="4036038"/>
|
||||
</port017>
|
||||
<port018>
|
||||
<data scale_type="log" value="10" id="1042561"/>
|
||||
</port018>
|
||||
<port019>
|
||||
<data scale_type="log" value="721.71" id="92193"/>
|
||||
</port019>
|
||||
<port020 data="1.31484"/>
|
||||
<port021>
|
||||
<data scale_type="log" value="0.100237" id="7520542"/>
|
||||
</port021>
|
||||
</ladspacontrols>
|
||||
<key>
|
||||
<attribute value="calf" name="file"/>
|
||||
<attribute value="Saturator" name="plugin"/>
|
||||
</key>
|
||||
</effect>
|
||||
<effect autoquit_numerator="4" autoquit_denominator="4" syncmode="0" autoquit="1" gate="0" name="ladspaeffect" wet="1" on="1">
|
||||
<ladspacontrols ports="10">
|
||||
<port02 data="-47.97"/>
|
||||
<port03 data="-10.8"/>
|
||||
<port04 data="0"/>
|
||||
<port05 data="0"/>
|
||||
<port06 data="0"/>
|
||||
<port07 data="0"/>
|
||||
<port08 data="0"/>
|
||||
<port09 data="0"/>
|
||||
<port010 data="0.72"/>
|
||||
<port011 data="2.52"/>
|
||||
</ladspacontrols>
|
||||
<key>
|
||||
<attribute value="caps" name="file"/>
|
||||
<attribute value="Eq2x2" name="plugin"/>
|
||||
</key>
|
||||
</effect>
|
||||
</fxchain>
|
||||
</instrumenttrack>
|
||||
</instrumenttracksettings>
|
||||
</lmms-project>
|
||||
21
data/presets/Kicker/TR909-RimShot.xpf
Normal file
21
data/presets/Kicker/TR909-RimShot.xpf
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE lmms-project>
|
||||
<lmms-project version="1.0" creator="LMMS" creatorversion="1.0.98" type="instrumenttracksettings">
|
||||
<head/>
|
||||
<instrumenttracksettings muted="0" type="0" name="TR909-RimShot" solo="0">
|
||||
<instrumenttrack pan="0" fxch="0" pitchrange="1" pitch="0" basenote="57" vol="100">
|
||||
<instrument name="kicker">
|
||||
<kicker decay_numerator="4" decay_denominator="4" distend="0.8" click="0.15" endnote="0" version="1" decay="40" syncmode="0" noise="0.13" slope="0.265" dist="100" env="0.044" startnote="0" startfreq="330" endfreq="5" gain="0.75"/>
|
||||
</instrument>
|
||||
<eldata fres="2.75" ftype="1" fcut="100" fwet="1">
|
||||
<elvol lspd_denominator="4" sustain="0" pdel="0" userwavefile="" dec="0.2" lamt="1" syncmode="7" latt="0.1" rel="0" amt="1" x100="0" att="0" lpdel="0" hold="0" lshp="0" lspd="0.0027" ctlenvamt="0" lspd_numerator="4"/>
|
||||
<elcut lspd_denominator="4" sustain="0" pdel="0" userwavefile="" dec="0" lamt="0" syncmode="6" latt="0" rel="0" amt="0.2" x100="0" att="0" lpdel="0" hold="0.2" lshp="1" lspd="0.0054" ctlenvamt="0" lspd_numerator="4"/>
|
||||
<elres lspd_denominator="4" sustain="0" pdel="0" userwavefile="" dec="0.5" lamt="0" syncmode="0" latt="0" rel="0" amt="0.2" x100="0" att="0" lpdel="0" hold="0" lshp="0" lspd="0.1" ctlenvamt="0" lspd_numerator="4"/>
|
||||
</eldata>
|
||||
<chordcreator chord="0" chordrange="1" chord-enabled="0"/>
|
||||
<arpeggiator arptime="100" arprange="1" arptime_denominator="4" syncmode="0" arpmode="0" arp-enabled="0" arp="0" arptime_numerator="4" arpdir="0" arpgate="100"/>
|
||||
<midiport inputcontroller="0" fixedoutputvelocity="-1" inputchannel="0" outputcontroller="0" writable="0" outputchannel="1" fixedinputvelocity="-1" fixedoutputnote="-1" outputprogram="1" basevelocity="63" readable="0"/>
|
||||
<fxchain numofeffects="0" enabled="0"/>
|
||||
</instrumenttrack>
|
||||
</instrumenttracksettings>
|
||||
</lmms-project>
|
||||
@@ -74,7 +74,7 @@ public:
|
||||
}
|
||||
|
||||
void clearJournal();
|
||||
|
||||
void stopAllJournalling();
|
||||
JournallingObject * journallingObject( const jo_id_t _id )
|
||||
{
|
||||
if( m_joIDs.contains( _id ) )
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
#include <math.h>
|
||||
#include "lmms_constants.h"
|
||||
#include "lmms_math.h"
|
||||
|
||||
inline float hermiteInterpolate( float x0, float x1, float x2, float x3,
|
||||
float frac_pos )
|
||||
@@ -80,24 +81,13 @@ inline float cubicInterpolate( float v0, float v1, float v2, float v3, float x )
|
||||
inline float cosinusInterpolate( float v0, float v1, float x )
|
||||
{
|
||||
const float f = ( 1.0f - cosf( x * F_PI ) ) * 0.5f;
|
||||
#ifdef FP_FAST_FMAF
|
||||
return fmaf( f, v1-v0, v0 );
|
||||
#else
|
||||
return f * (v1-v0) + v0;
|
||||
#endif
|
||||
// return( v0*f + v1*( 1.0f-f ) );
|
||||
return fastFmaf( f, v1-v0, v0 );
|
||||
}
|
||||
|
||||
|
||||
inline float linearInterpolate( float v0, float v1, float x )
|
||||
{
|
||||
// take advantage of fma function if present in hardware
|
||||
|
||||
#ifdef FP_FAST_FMAF
|
||||
return fmaf( x, v1-v0, v0 );
|
||||
#else
|
||||
return x * (v1-v0) + v0;
|
||||
#endif
|
||||
return fastFmaf( x, v1-v0, v0 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -130,7 +130,40 @@ static inline int fast_rand()
|
||||
return( (unsigned)( next / 65536 ) % 32768 );
|
||||
}
|
||||
|
||||
//! @brief Takes advantage of fmal() function if present in hardware
|
||||
static inline long double fastFmal( long double a, long double b, long double c ) {
|
||||
#ifdef FP_FAST_FMAL
|
||||
#ifdef __clang__
|
||||
return fma( a, b, c );
|
||||
#else
|
||||
return fmal( a, b, c );
|
||||
#endif
|
||||
#else
|
||||
return a * b + c;
|
||||
#endif
|
||||
}
|
||||
|
||||
//! @brief Takes advantage of fmaf() function if present in hardware
|
||||
static inline float fastFmaf( float a, float b, float c ) {
|
||||
#ifdef FP_FAST_FMAF
|
||||
#ifdef __clang__
|
||||
return fma( a, b, c );
|
||||
#else
|
||||
return fmaf( a, b, c );
|
||||
#endif
|
||||
#else
|
||||
return a * b + c;
|
||||
#endif
|
||||
}
|
||||
|
||||
//! @brief Takes advantage of fma() function if present in hardware
|
||||
static inline double fastFma( double a, double b, double c ) {
|
||||
#ifdef FP_FAST_FMA
|
||||
return fma( a, b, c );
|
||||
#else
|
||||
return a * b + c;
|
||||
#endif
|
||||
}
|
||||
|
||||
// source: http://martin.ankerl.com/2007/10/04/optimized-pow-approximation-for-java-and-c-c/
|
||||
static inline double fastPow( double a, double b )
|
||||
|
||||
@@ -39,7 +39,7 @@ DualFilterControls::DualFilterControls( DualFilterEffect* effect ) :
|
||||
|
||||
m_enabled1Model( true, this, tr( "Filter 1 enabled" ) ),
|
||||
m_filter1Model( this, tr( "Filter 1 type" ) ),
|
||||
m_cut1Model( 7000.0f, 1.0f, 14000.0f, 1.0f, this, tr( "Cutoff 1 frequency" ) ),
|
||||
m_cut1Model( 7000.0f, 1.0f, 20000.0f, 1.0f, this, tr( "Cutoff 1 frequency" ) ),
|
||||
m_res1Model( 0.5, basicFilters<0>::minQ(), 10.0, 0.01, this, tr( "Q/Resonance 1" ) ),
|
||||
m_gain1Model( 100.0f, 0.0f, 200.0f, 0.1f, this, tr( "Gain 1" ) ),
|
||||
|
||||
@@ -47,7 +47,7 @@ DualFilterControls::DualFilterControls( DualFilterEffect* effect ) :
|
||||
|
||||
m_enabled2Model( true, this, tr( "Filter 2 enabled" ) ),
|
||||
m_filter2Model( this, tr( "Filter 2 type" ) ),
|
||||
m_cut2Model( 7000.0f, 1.0f, 14000.0f, 1.0f, this, tr( "Cutoff 2 frequency" ) ),
|
||||
m_cut2Model( 7000.0f, 1.0f, 20000.0f, 1.0f, this, tr( "Cutoff 2 frequency" ) ),
|
||||
m_res2Model( 0.5, basicFilters<0>::minQ(), 10.0, 0.01, this, tr( "Q/Resonance 2" ) ),
|
||||
m_gain2Model( 100.0f, 0.0f, 200.0f, 0.1f, this, tr( "Gain 2" ) )
|
||||
{
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
DelayControls::DelayControls( DelayEffect* effect ):
|
||||
EffectControls( effect ),
|
||||
m_effect ( effect ),
|
||||
m_delayTimeModel( 2.0, 0.01, 20.0, 0.0001, 20000.0, this, tr( "Delay Samples" )) ,
|
||||
m_delayTimeModel( 0.5, 0.01, 20.0, 0.0001, 20000.0, this, tr( "Delay Samples" )) ,
|
||||
m_feedbackModel(0.0f,0.0f,1.0f,0.01f,this,tr( "Feedback" ) ),
|
||||
m_lfoTimeModel(2.0, 0.01, 20.0, 0.0001, 20000.0, this, tr( "Lfo Frequency" ) ),
|
||||
m_lfoAmountModel(0.0, 0.0, 2.0, 0.0001, 2000.0, this, tr ( "Lfo Amount" ) )
|
||||
|
||||
@@ -44,27 +44,28 @@ DelayControlsDialog::DelayControlsDialog( DelayControls *controls ) :
|
||||
sampleDelayKnob->setVolumeKnob( false );
|
||||
sampleDelayKnob->setModel( &controls->m_delayTimeModel );
|
||||
sampleDelayKnob->setLabel( tr( "Delay" ) );
|
||||
sampleDelayKnob->setHintText( tr( "Delay Time Seconds:" ) + " ", "" );
|
||||
sampleDelayKnob->setHintText( tr( "Delay Time" ) + " ", " s" );
|
||||
|
||||
knob * feedbackKnob = new knob( knobBright_26, this );
|
||||
feedbackKnob->move( 63,10 );
|
||||
feedbackKnob->setVolumeKnob( true) ;
|
||||
feedbackKnob->setModel( &controls->m_feedbackModel);
|
||||
feedbackKnob->setLabel( tr( "Regen" ) );
|
||||
feedbackKnob->setHintText( tr ( "Feedback Amount:" ) + " ", "" );
|
||||
feedbackKnob->setHintText( tr ( "Feedback Amount" ) + " " , "" );
|
||||
|
||||
TempoSyncKnob * lfoFreqKnob = new TempoSyncKnob( knobBright_26, this );
|
||||
lfoFreqKnob->move( 106,10 );
|
||||
lfoFreqKnob->setVolumeKnob( false );
|
||||
lfoFreqKnob->setModel( &controls->m_lfoTimeModel );
|
||||
lfoFreqKnob->setLabel( tr( "Rate" ) );
|
||||
lfoFreqKnob->setHintText( tr ( "Lfo Seconds:" ) + " ", "" );
|
||||
lfoFreqKnob->setHintText( tr ( "Lfo") + " ", " s" );
|
||||
|
||||
TempoSyncKnob * lfoAmtKnob = new TempoSyncKnob( knobBright_26, this );
|
||||
lfoAmtKnob->move( 150,10 );
|
||||
lfoAmtKnob->setVolumeKnob( false );
|
||||
lfoAmtKnob->setModel( &controls->m_lfoAmountModel );
|
||||
lfoAmtKnob->setLabel( tr( "Lfo" ) );
|
||||
lfoAmtKnob->setHintText( tr ( "Lfo Amt:" ) + " ", "" );
|
||||
lfoAmtKnob->setHintText( tr ( "Lfo Amt" ) + " " , " s" );
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -780,16 +780,18 @@ void lb302Synth::processNote( NotePlayHandle * _n )
|
||||
|
||||
void lb302Synth::play( sampleFrame * _working_buffer )
|
||||
{
|
||||
m_notesMutex.lock();
|
||||
while( ! m_notes.isEmpty() )
|
||||
{
|
||||
processNote( m_notes.takeFirst() );
|
||||
};
|
||||
m_notesMutex.unlock();
|
||||
|
||||
const fpp_t frames = engine::mixer()->framesPerPeriod();
|
||||
|
||||
process( _working_buffer, frames );
|
||||
instrumentTrack()->processAudioBuffer( _working_buffer, frames, NULL );
|
||||
release_frame = 0;
|
||||
// release_frame = 0; //removed for issue # 1432
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -99,11 +99,10 @@ inline void FxChannel::processed()
|
||||
void FxChannel::incrementDeps()
|
||||
{
|
||||
m_dependenciesMet.ref();
|
||||
if( m_dependenciesMet >= m_receives.size() )
|
||||
if( m_dependenciesMet >= m_receives.size() && ! m_queued )
|
||||
{
|
||||
m_queued = true;
|
||||
MixerWorkerThread::addJob( this );
|
||||
m_dependenciesMet = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,8 +163,8 @@ void FxChannel::doProcessing( sampleFrame * _buf )
|
||||
{
|
||||
m_peakLeft = m_peakRight = 0.0f;
|
||||
}
|
||||
|
||||
// increment dependency counter of all receivers
|
||||
|
||||
// increment dependency counter of all receivers
|
||||
processed();
|
||||
}
|
||||
|
||||
@@ -358,7 +357,7 @@ FxRoute * FxMixer::createRoute( FxChannel * from, FxChannel * to, float amount )
|
||||
// add us to fxmixer's list
|
||||
engine::fxMixer()->m_fxRoutes.append( route );
|
||||
m_sendsMutex.unlock();
|
||||
|
||||
|
||||
return route;
|
||||
}
|
||||
|
||||
@@ -515,9 +514,6 @@ void FxMixer::masterMix( sampleFrame * _buf )
|
||||
const float v = m_fxChannels[0]->m_volumeModel.value();
|
||||
MixHelpers::addSanitizedMultiplied( _buf, m_fxChannels[0]->m_buffer, v, fpp );
|
||||
|
||||
m_fxChannels[0]->m_peakLeft *= engine::mixer()->masterGain();
|
||||
m_fxChannels[0]->m_peakRight *= engine::mixer()->masterGain();
|
||||
|
||||
// clear all channel buffers and
|
||||
// reset channel process state
|
||||
for( int i = 0; i < numChannels(); ++i)
|
||||
@@ -527,6 +523,7 @@ void FxMixer::masterMix( sampleFrame * _buf )
|
||||
m_fxChannels[i]->m_queued = false;
|
||||
// also reset hasInput
|
||||
m_fxChannels[i]->m_hasInput = false;
|
||||
m_fxChannels[i]->m_dependenciesMet = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -600,7 +597,7 @@ void FxMixer::saveSettings( QDomDocument & _doc, QDomElement & _this )
|
||||
ch->m_sends[si]->amount()->saveSettings( _doc, sendsDom, "amount" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// make sure we have at least num channels
|
||||
void FxMixer::allocateChannelsTo(int num)
|
||||
|
||||
@@ -70,14 +70,19 @@ void JournallingObject::addJournalCheckPoint()
|
||||
QDomElement JournallingObject::saveState( QDomDocument & _doc,
|
||||
QDomElement & _parent )
|
||||
{
|
||||
QDomElement _this = SerializingObject::saveState( _doc, _parent );
|
||||
if( isJournalling() )
|
||||
{
|
||||
QDomElement _this = SerializingObject::saveState( _doc, _parent );
|
||||
|
||||
QDomElement journalNode = _doc.createElement( "journallingObject" );
|
||||
journalNode.setAttribute( "id", id() );
|
||||
journalNode.setAttribute( "metadata", true );
|
||||
_this.appendChild( journalNode );
|
||||
QDomElement journalNode = _doc.createElement( "journallingObject" );
|
||||
journalNode.setAttribute( "id", id() );
|
||||
journalNode.setAttribute( "metadata", true );
|
||||
_this.appendChild( journalNode );
|
||||
|
||||
return _this;
|
||||
return _this;
|
||||
} else {
|
||||
return QDomElement();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -168,5 +168,17 @@ void ProjectJournal::clearJournal()
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectJournal::stopAllJournalling()
|
||||
{
|
||||
for( JoIdMap::Iterator it = m_joIDs.begin(); it != m_joIDs.end(); ++it)
|
||||
{
|
||||
if( it.value() != NULL )
|
||||
{
|
||||
it.value()->setJournalling(false);
|
||||
}
|
||||
}
|
||||
setJournalling(false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -942,6 +942,7 @@ void SampleBuffer::visualize( QPainter & _p, const QRect & _dr,
|
||||
_p.drawPolyline( l, nb_frames / fpp );
|
||||
_p.drawPolyline( r, nb_frames / fpp );
|
||||
delete[] l;
|
||||
delete[] r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -289,7 +289,13 @@ void configManager::loadConfigFile()
|
||||
node = node.nextSibling();
|
||||
}
|
||||
|
||||
if( value( "paths", "artwork" ) != "" )
|
||||
// don't use dated theme folders as they break the UI (i.e. 0.4 != 1.0, etc)
|
||||
bool use_artwork_path =
|
||||
root.attribute( "version" ).startsWith(
|
||||
QString::number( LMMS_VERSION_MAJOR ) + "." +
|
||||
QString::number( LMMS_VERSION_MINOR ) );
|
||||
|
||||
if( use_artwork_path && value( "paths", "artwork" ) != "" )
|
||||
{
|
||||
m_artworkDir = value( "paths", "artwork" );
|
||||
if( !QDir( m_artworkDir ).exists() )
|
||||
|
||||
@@ -115,6 +115,7 @@ void engine::init( const bool _has_gui )
|
||||
|
||||
void engine::destroy()
|
||||
{
|
||||
s_projectJournal->stopAllJournalling();
|
||||
s_mixer->stopProcessing();
|
||||
|
||||
deleteHelper( &s_projectNotes );
|
||||
|
||||
@@ -480,6 +480,11 @@ void FxMixerView::clear()
|
||||
void FxMixerView::updateFaders()
|
||||
{
|
||||
FxMixer * m = engine::fxMixer();
|
||||
|
||||
// apply master gain
|
||||
m->m_fxChannels[0]->m_peakLeft *= engine::mixer()->masterGain();
|
||||
m->m_fxChannels[0]->m_peakRight *= engine::mixer()->masterGain();
|
||||
|
||||
for( int i = 0; i < m_fxChannelViews.size(); ++i )
|
||||
{
|
||||
const float opl = m_fxChannelViews[i]->m_fader->getPeak_L();
|
||||
|
||||
@@ -86,7 +86,7 @@ const char * volume_help = QT_TRANSLATE_NOOP( "InstrumentTrack",
|
||||
|
||||
const int INSTRUMENT_WIDTH = 254;
|
||||
const int INSTRUMENT_HEIGHT = INSTRUMENT_WIDTH;
|
||||
const int PIANO_HEIGHT = 84;
|
||||
const int PIANO_HEIGHT = 82;
|
||||
const int INSTRUMENT_WINDOW_CACHE_SIZE = 8;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user