@@ -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)
|
||||
|
||||
Binary file not shown.
@@ -654,6 +654,63 @@ Wenn Sie daran interessiert sind LMMS in eine andere Sprache zu übersetzen oder
|
||||
<translation>Plugin entfe&rnen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DelayControls</name>
|
||||
<message>
|
||||
<source>Delay Samples</source>
|
||||
<translation>Samples verzögern</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feedback</source>
|
||||
<translation>Rückkopplung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lfo Frequency</source>
|
||||
<translation>LFO-Frequenz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lfo Amount</source>
|
||||
<translation>LFO-Stärke</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DelayControlsDialog</name>
|
||||
<message>
|
||||
<source>Delay</source>
|
||||
<translation>Verzögerung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delay Time</source>
|
||||
<translation>Verzögerungszeit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Regen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feedback Amount</source>
|
||||
<translation>Rückkopplungsstärke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rate</source>
|
||||
<translation>Rate</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lfo</source>
|
||||
<translation>LFO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lfo Amt</source>
|
||||
<translation>LFO-Stärke</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DetuningHelper</name>
|
||||
<message>
|
||||
<source>Note detuning</source>
|
||||
<translation>Noten-Verstimmung</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DualFilterControlDialog</name>
|
||||
<message>
|
||||
@@ -780,6 +837,13 @@ Wenn Sie daran interessiert sind LMMS in eine andere Sprache zu übersetzen oder
|
||||
<translation>Vokalformant-Filter</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DummyEffect</name>
|
||||
<message>
|
||||
<source>NOT FOUND</source>
|
||||
<translation>NICHT GEFUNDEN</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Effect</name>
|
||||
<message>
|
||||
@@ -3294,7 +3358,7 @@ Bitte besuchen Sie http://lmms.sf.net/wiki für Dokumentationen über LMMS.</tra
|
||||
</message>
|
||||
<message>
|
||||
<source>Bandlimited Ramp wave</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Bandbegrenzte Sägezahnwelle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bandlimited Square wave</source>
|
||||
@@ -3330,7 +3394,7 @@ Bitte besuchen Sie http://lmms.sf.net/wiki für Dokumentationen über LMMS.</tra
|
||||
</message>
|
||||
<message>
|
||||
<source>Digital Ramp wave</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Digitale Sägezahnwelle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Digital Square wave</source>
|
||||
@@ -3350,7 +3414,7 @@ Bitte besuchen Sie http://lmms.sf.net/wiki für Dokumentationen über LMMS.</tra
|
||||
</message>
|
||||
<message>
|
||||
<source>Ramp wave</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sägezahnwelle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Square wave</source>
|
||||
@@ -4085,6 +4149,21 @@ Grund: »%2«</translation>
|
||||
<translation>LMMS Plugin %1 hat keinen Plugin-Deskriptor namens %2!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PluginBrowser</name>
|
||||
<message>
|
||||
<source>Instrument plugins</source>
|
||||
<translation>Instrument-Plugins</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Instrument browser</source>
|
||||
<translation>Instrument-Browser</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Drag an instrument into either the Song-Editor, the Beat+Bassline Editor or into an existing instrument track.</source>
|
||||
<translation>Ziehen Sie ein Instrument entweder in den Song-Editor, den Beat+Bassline-Editor oder in eine existierende Instrumentspur.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ProjectRenderer</name>
|
||||
<message>
|
||||
@@ -6990,10 +7069,6 @@ Doppelklicken auf eines der Plugins zeigt Informaitonen über die Ports an.</tra
|
||||
</context>
|
||||
<context>
|
||||
<name>pluginBrowser</name>
|
||||
<message>
|
||||
<source>Instrument plugins</source>
|
||||
<translation>Instrument-Plugins</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>VST-host for using VST(i)-plugins within LMMS</source>
|
||||
<translation>VST-Host zum Benutzen von VST(i)-Plugins innerhalb von LMMS</translation>
|
||||
@@ -7056,14 +7131,6 @@ This chip was used in the Commodore 64 computer.</source>
|
||||
<translation>Emulation des MOS6581 und MOS8580 SID Chips.
|
||||
Dieser Chip wurde in Commodore 64 Computern genutzt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Instrument browser</source>
|
||||
<translation>Instrument-Browser</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Drag an instrument into either the Song-Editor, the Beat+Bassline Editor or into an existing instrument track.</source>
|
||||
<translation>Ziehen Sie ein Instrument entweder in den Song-Editor, den Beat+Bassline-Editor oder in eine existierende Instrumentspur.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Player for SoundFont files</source>
|
||||
<translation>Wiedergabe von SoundFont-Dateien</translation>
|
||||
@@ -7148,6 +7215,10 @@ Dieser Chip wurde in Commodore 64 Computern genutzt.</translation>
|
||||
<source>Carla Patchbay Instrument</source>
|
||||
<translation>Carla Patchbay Instrument</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A native delay plugin</source>
|
||||
<translation>Ein natives Verzögerung-Plugin</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>projectNotes</name>
|
||||
@@ -7476,6 +7547,57 @@ Latenz: %2 ms</translation>
|
||||
<translation>Wiedergabe-Courser im AudioFileProcessor anzeigen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>setupWidget</name>
|
||||
<message>
|
||||
<source>OSS (Open Sound System)</source>
|
||||
<translation>OSS (Open Sound System)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>SDL (Simple DirectMedia Layer)</source>
|
||||
<translation>SDL (Simple DirectMedia Layer)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>ALSA-Sequencer (Advanced Linux Sound Architecture)</source>
|
||||
<translation>ALSA-Sequencer (Advanced Linux Sound Architecture)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>JACK (JACK Audio Connection Kit)</source>
|
||||
<translation>JACK (JACK Audio Connection Kit)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>ALSA Raw-MIDI (Advanced Linux Sound Architecture)</source>
|
||||
<translation>ALSA Raw-MIDI (Advanced Linux Sound Architecture)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PulseAudio (bad latency!)</source>
|
||||
<translation>PulseAudio (Schlechte Latenz!)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Dummy (no sound output)</source>
|
||||
<translation>Dummy (Keine Soundausgabe)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Dummy (no MIDI support)</source>
|
||||
<translation>Dummy (Keine MIDI-Unterstützung)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>WinMM MIDI</source>
|
||||
<translation>WinMM MIDI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>OSS Raw-MIDI (Open Sound System)</source>
|
||||
<translation>OSS Raw-MIDI (Open Sound System)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>ALSA (Advanced Linux Sound Architecture)</source>
|
||||
<translation>ALSA (Advanced Linux Sound Architecture)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PortAudio</source>
|
||||
<translation>PortAudio</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>sf2Instrument</name>
|
||||
<message>
|
||||
@@ -7902,6 +8024,13 @@ Latenz: %2 ms</translation>
|
||||
<translation>Rechts-nach-rechts</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>tabWidget</name>
|
||||
<message>
|
||||
<source>Settings for %1</source>
|
||||
<translation>Einstellungen für %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>timeLine</name>
|
||||
<message>
|
||||
|
||||
@@ -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>
|
||||
@@ -16,10 +16,11 @@ DMG_BACKGROUND_IMG="dmg_branding.png"
|
||||
cp "@CMAKE_SOURCE_DIR@/data/${DMG_BACKGROUND_IMG}" .
|
||||
|
||||
# you should not need to change these
|
||||
OS_VER=`sw_vers -productVersion|cut -d"." -f1-2`
|
||||
APP_LOWERCASE=$(echo $APP_NAME|tr '[:upper:]' '[:lower:]')
|
||||
APP_EXE="${APP_NAME}.app/Contents/MacOS/${APP_LOWERCASE}"
|
||||
|
||||
VOL_NAME="${APP_NAME} ${VERSION}" # volume name will be "SuperCoolApp 1.0.0"
|
||||
VOL_NAME="${APP_LOWERCASE}-${VERSION}-mac${OS_VER}" # volume name will be "SuperCoolApp 1.0.0"
|
||||
DMG_TMP="${VOL_NAME}-temp.dmg"
|
||||
DMG_FINAL="${VOL_NAME}.dmg" # final DMG name will be "SuperCoolApp 1.0.0.dmg"
|
||||
STAGING_DIR="./Install" # we copy all our stuff into this dir
|
||||
|
||||
@@ -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" ) )
|
||||
{
|
||||
|
||||
@@ -74,7 +74,11 @@ static fftw_real *real_in, *real_out, *comp_in, *comp_out;
|
||||
|
||||
unsigned int fft_length[IMPULSES];
|
||||
|
||||
#ifdef __clang__
|
||||
void impulse2freq(int id, float *imp, unsigned int length, fftw_real *out)
|
||||
#else
|
||||
inline void impulse2freq(int id, float *imp, unsigned int length, fftw_real *out)
|
||||
#endif
|
||||
{
|
||||
fftw_real impulse_time[MAX_FFT_LENGTH];
|
||||
#ifdef FFTW3
|
||||
|
||||
@@ -740,6 +740,7 @@ AudioFileProcessorWaveView::AudioFileProcessorWaveView( QWidget * _parent, int _
|
||||
m_to( m_sampleBuffer.frames() ),
|
||||
m_last_from( 0 ),
|
||||
m_last_to( 0 ),
|
||||
m_last_amp( 0 ),
|
||||
m_startKnob( 0 ),
|
||||
m_endKnob( 0 ),
|
||||
m_loopKnob( 0 ),
|
||||
|
||||
@@ -251,16 +251,16 @@ intptr_t CarlaInstrument::handleDispatcher(const NativeHostDispatcherOpcode opco
|
||||
|
||||
switch (opcode)
|
||||
{
|
||||
case HOST_OPCODE_NULL:
|
||||
case NATIVE_HOST_OPCODE_NULL:
|
||||
break;
|
||||
case HOST_OPCODE_UPDATE_PARAMETER:
|
||||
case HOST_OPCODE_UPDATE_MIDI_PROGRAM:
|
||||
case HOST_OPCODE_RELOAD_PARAMETERS:
|
||||
case HOST_OPCODE_RELOAD_MIDI_PROGRAMS:
|
||||
case HOST_OPCODE_RELOAD_ALL:
|
||||
case NATIVE_HOST_OPCODE_UPDATE_PARAMETER:
|
||||
case NATIVE_HOST_OPCODE_UPDATE_MIDI_PROGRAM:
|
||||
case NATIVE_HOST_OPCODE_RELOAD_PARAMETERS:
|
||||
case NATIVE_HOST_OPCODE_RELOAD_MIDI_PROGRAMS:
|
||||
case NATIVE_HOST_OPCODE_RELOAD_ALL:
|
||||
// nothing
|
||||
break;
|
||||
case HOST_OPCODE_UI_UNAVAILABLE:
|
||||
case NATIVE_HOST_OPCODE_UI_UNAVAILABLE:
|
||||
handleUiClosed();
|
||||
break;
|
||||
}
|
||||
@@ -459,7 +459,7 @@ PluginView* CarlaInstrument::instantiateView(QWidget* parent)
|
||||
|
||||
void CarlaInstrument::sampleRateChanged()
|
||||
{
|
||||
fDescriptor->dispatcher(fHandle, PLUGIN_OPCODE_SAMPLE_RATE_CHANGED, 0, 0, nullptr, handleGetSampleRate());
|
||||
fDescriptor->dispatcher(fHandle, NATIVE_PLUGIN_OPCODE_SAMPLE_RATE_CHANGED, 0, 0, nullptr, handleGetSampleRate());
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -30,14 +30,14 @@
|
||||
#include "song.h"
|
||||
|
||||
DelayControls::DelayControls( DelayEffect* effect ):
|
||||
EffectControls( effect ),
|
||||
m_effect ( effect ),
|
||||
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" ) )
|
||||
EffectControls( effect ),
|
||||
m_effect ( effect ),
|
||||
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" ) )
|
||||
{
|
||||
connect( engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( changeSampleRate() ) );
|
||||
connect( engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( changeSampleRate() ) );
|
||||
}
|
||||
|
||||
|
||||
@@ -45,10 +45,10 @@ DelayControls::DelayControls( DelayEffect* effect ):
|
||||
|
||||
void DelayControls::loadSettings( const QDomElement &_this )
|
||||
{
|
||||
m_delayTimeModel.loadSettings(_this, "DelayTimeSamples" );
|
||||
m_feedbackModel.loadSettings( _this, "FeebackAmount" );
|
||||
m_lfoTimeModel.loadSettings( _this , "LfoFrequency");
|
||||
m_lfoAmountModel.loadSettings( _this, "LfoAmount");
|
||||
m_delayTimeModel.loadSettings(_this, "DelayTimeSamples" );
|
||||
m_feedbackModel.loadSettings( _this, "FeebackAmount" );
|
||||
m_lfoTimeModel.loadSettings( _this , "LfoFrequency");
|
||||
m_lfoAmountModel.loadSettings( _this, "LfoAmount");
|
||||
}
|
||||
|
||||
|
||||
@@ -56,17 +56,15 @@ void DelayControls::loadSettings( const QDomElement &_this )
|
||||
|
||||
void DelayControls::saveSettings( QDomDocument& doc, QDomElement& _this )
|
||||
{
|
||||
m_delayTimeModel.saveSettings( doc, _this, "DelayTimeSamples" );
|
||||
m_feedbackModel.saveSettings( doc, _this ,"FeebackAmount" );
|
||||
m_lfoTimeModel.saveSettings( doc, _this, "LfoFrequency" );
|
||||
m_lfoAmountModel.saveSettings( doc, _this ,"LfoAmount" );
|
||||
m_delayTimeModel.saveSettings( doc, _this, "DelayTimeSamples" );
|
||||
m_feedbackModel.saveSettings( doc, _this ,"FeebackAmount" );
|
||||
m_lfoTimeModel.saveSettings( doc, _this, "LfoFrequency" );
|
||||
m_lfoAmountModel.saveSettings( doc, _this ,"LfoAmount" );
|
||||
}
|
||||
|
||||
|
||||
|
||||
void DelayControls::changeSampleRate()
|
||||
{
|
||||
m_effect->changeSampleRate();
|
||||
m_effect->changeSampleRate();
|
||||
}
|
||||
|
||||
#include "moc_delaycontrols.cxx"
|
||||
|
||||
@@ -35,38 +35,38 @@ class DelayEffect;
|
||||
|
||||
class DelayControls : public EffectControls
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_OBJECT
|
||||
public:
|
||||
DelayControls( DelayEffect* effect );
|
||||
virtual ~DelayControls()
|
||||
{
|
||||
}
|
||||
virtual void saveSettings( QDomDocument& doc, QDomElement& parent );
|
||||
virtual void loadSettings( const QDomElement& _this );
|
||||
inline virtual QString nodeName() const
|
||||
{
|
||||
return "Delay";
|
||||
}
|
||||
virtual int controlCount(){
|
||||
return 4;
|
||||
}
|
||||
virtual EffectControlDialog* createView()
|
||||
{
|
||||
return new DelayControlsDialog( this );
|
||||
}
|
||||
DelayControls( DelayEffect* effect );
|
||||
virtual ~DelayControls()
|
||||
{
|
||||
}
|
||||
virtual void saveSettings( QDomDocument& doc, QDomElement& parent );
|
||||
virtual void loadSettings( const QDomElement& _this );
|
||||
inline virtual QString nodeName() const
|
||||
{
|
||||
return "Delay";
|
||||
}
|
||||
virtual int controlCount(){
|
||||
return 4;
|
||||
}
|
||||
virtual EffectControlDialog* createView()
|
||||
{
|
||||
return new DelayControlsDialog( this );
|
||||
}
|
||||
|
||||
private slots:
|
||||
void changeSampleRate();
|
||||
void changeSampleRate();
|
||||
|
||||
private:
|
||||
DelayEffect* m_effect;
|
||||
TempoSyncKnobModel m_delayTimeModel;
|
||||
FloatModel m_feedbackModel;
|
||||
TempoSyncKnobModel m_lfoTimeModel;
|
||||
TempoSyncKnobModel m_lfoAmountModel;
|
||||
DelayEffect* m_effect;
|
||||
TempoSyncKnobModel m_delayTimeModel;
|
||||
FloatModel m_feedbackModel;
|
||||
TempoSyncKnobModel m_lfoTimeModel;
|
||||
TempoSyncKnobModel m_lfoAmountModel;
|
||||
|
||||
friend class DelayControlsDialog;
|
||||
friend class DelayEffect;
|
||||
friend class DelayControlsDialog;
|
||||
friend class DelayEffect;
|
||||
};
|
||||
|
||||
#endif // DELAYCONTROLS_H
|
||||
|
||||
@@ -31,41 +31,44 @@
|
||||
|
||||
|
||||
DelayControlsDialog::DelayControlsDialog( DelayControls *controls ) :
|
||||
EffectControlDialog( controls )
|
||||
EffectControlDialog( controls )
|
||||
{
|
||||
setAutoFillBackground( true );
|
||||
QPalette pal;
|
||||
pal.setBrush( backgroundRole(), PLUGIN_NAME::getIconPixmap( "artwork" ) );
|
||||
setPalette( pal );
|
||||
setFixedSize( 200, 75 );
|
||||
setAutoFillBackground( true );
|
||||
QPalette pal;
|
||||
pal.setBrush( backgroundRole(), PLUGIN_NAME::getIconPixmap( "artwork" ) );
|
||||
setPalette( pal );
|
||||
setFixedSize( 200, 75 );
|
||||
|
||||
TempoSyncKnob* sampleDelayKnob = new TempoSyncKnob( knobBright_26, this );
|
||||
sampleDelayKnob->move( 20,10 );
|
||||
sampleDelayKnob->setVolumeKnob( false );
|
||||
sampleDelayKnob->setModel( &controls->m_delayTimeModel );
|
||||
sampleDelayKnob->setLabel( tr( "Delay" ) );
|
||||
sampleDelayKnob->setHintText( tr( "Delay Time" ) + " ", " s" );
|
||||
TempoSyncKnob* sampleDelayKnob = new TempoSyncKnob( knobBright_26, this );
|
||||
sampleDelayKnob->move( 20,10 );
|
||||
sampleDelayKnob->setVolumeKnob( false );
|
||||
sampleDelayKnob->setModel( &controls->m_delayTimeModel );
|
||||
sampleDelayKnob->setLabel( tr( "Delay" ) );
|
||||
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" ) + " " , "" );
|
||||
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" ) + " " , "" );
|
||||
|
||||
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") + " ", " s" );
|
||||
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") + " ", " 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" ) + " " , " 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" ) + " " , " s" );
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
#include "moc_delaycontrols.cxx"
|
||||
|
||||
@@ -32,10 +32,10 @@ class DelayControls;
|
||||
class DelayControlsDialog : public EffectControlDialog
|
||||
{
|
||||
public:
|
||||
DelayControlsDialog( DelayControls* controls );
|
||||
virtual ~DelayControlsDialog()
|
||||
{
|
||||
}
|
||||
DelayControlsDialog( DelayControls* controls );
|
||||
virtual ~DelayControlsDialog()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
#endif // DELAYCONTROLSDIALOG_H
|
||||
|
||||
@@ -32,27 +32,27 @@ extern "C"
|
||||
|
||||
Plugin::Descriptor PLUGIN_EXPORT delay_plugin_descriptor =
|
||||
{
|
||||
STRINGIFY( PLUGIN_NAME ),
|
||||
"Delay",
|
||||
QT_TRANSLATE_NOOP( "pluginBrowser", "A native delay plugin" ),
|
||||
"Dave French <contact/dot/dave/dot/french3/at/googlemail/dot/com>",
|
||||
0x0100,
|
||||
Plugin::Effect,
|
||||
new PluginPixmapLoader( "logo" ),
|
||||
NULL,
|
||||
NULL
|
||||
STRINGIFY( PLUGIN_NAME ),
|
||||
"Delay",
|
||||
QT_TRANSLATE_NOOP( "pluginBrowser", "A native delay plugin" ),
|
||||
"Dave French <contact/dot/dave/dot/french3/at/googlemail/dot/com>",
|
||||
0x0100,
|
||||
Plugin::Effect,
|
||||
new PluginPixmapLoader( "logo" ),
|
||||
NULL,
|
||||
NULL
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
DelayEffect::DelayEffect( Model* parent, const Plugin::Descriptor::SubPluginFeatures::Key* key ) :
|
||||
Effect( &delay_plugin_descriptor, parent, key ),
|
||||
m_delayControls( this )
|
||||
Effect( &delay_plugin_descriptor, parent, key ),
|
||||
m_delayControls( this )
|
||||
{
|
||||
m_delay = 0;
|
||||
m_delay = new StereoDelay( 20, engine::mixer()->processingSampleRate() );
|
||||
m_lfo = new Lfo( engine::mixer()->processingSampleRate() );
|
||||
m_delay = 0;
|
||||
m_delay = new StereoDelay( 20, engine::mixer()->processingSampleRate() );
|
||||
m_lfo = new Lfo( engine::mixer()->processingSampleRate() );
|
||||
}
|
||||
|
||||
|
||||
@@ -60,14 +60,14 @@ DelayEffect::DelayEffect( Model* parent, const Plugin::Descriptor::SubPluginFeat
|
||||
|
||||
DelayEffect::~DelayEffect()
|
||||
{
|
||||
if( m_delay )
|
||||
{
|
||||
delete m_delay;
|
||||
}
|
||||
if( m_lfo )
|
||||
{
|
||||
delete m_lfo;
|
||||
}
|
||||
if( m_delay )
|
||||
{
|
||||
delete m_delay;
|
||||
}
|
||||
if( m_lfo )
|
||||
{
|
||||
delete m_lfo;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -75,37 +75,37 @@ DelayEffect::~DelayEffect()
|
||||
|
||||
bool DelayEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames )
|
||||
{
|
||||
if( !isEnabled() || !isRunning () )
|
||||
{
|
||||
return( false );
|
||||
}
|
||||
double outSum = 0.0;
|
||||
const float d = dryLevel();
|
||||
const float w = wetLevel();
|
||||
const float length = m_delayControls.m_delayTimeModel.value() * engine::mixer()->processingSampleRate();
|
||||
const float amplitude = m_delayControls.m_lfoAmountModel.value() * engine::mixer()->processingSampleRate();
|
||||
m_lfo->setFrequency( 1.0 / m_delayControls.m_lfoTimeModel.value() );
|
||||
m_delay->setFeedback( m_delayControls.m_feedbackModel.value() );
|
||||
sample_t dryS[2];
|
||||
for( fpp_t f = 0; f < frames; ++f )
|
||||
{
|
||||
dryS[0] = buf[f][0];
|
||||
dryS[1] = buf[f][1];
|
||||
m_delay->setLength( ( float )length + ( amplitude * ( float )m_lfo->tick() ) );
|
||||
m_delay->tick( buf[f] );
|
||||
if( !isEnabled() || !isRunning () )
|
||||
{
|
||||
return( false );
|
||||
}
|
||||
double outSum = 0.0;
|
||||
const float d = dryLevel();
|
||||
const float w = wetLevel();
|
||||
const float length = m_delayControls.m_delayTimeModel.value() * engine::mixer()->processingSampleRate();
|
||||
const float amplitude = m_delayControls.m_lfoAmountModel.value() * engine::mixer()->processingSampleRate();
|
||||
m_lfo->setFrequency( 1.0 / m_delayControls.m_lfoTimeModel.value() );
|
||||
m_delay->setFeedback( m_delayControls.m_feedbackModel.value() );
|
||||
sample_t dryS[2];
|
||||
for( fpp_t f = 0; f < frames; ++f )
|
||||
{
|
||||
dryS[0] = buf[f][0];
|
||||
dryS[1] = buf[f][1];
|
||||
m_delay->setLength( ( float )length + ( amplitude * ( float )m_lfo->tick() ) );
|
||||
m_delay->tick( buf[f] );
|
||||
|
||||
buf[f][0] = ( d * dryS[0] ) + ( w * buf[f][0] );
|
||||
buf[f][1] = ( d * dryS[1] ) + ( w * buf[f][1] );
|
||||
outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1];
|
||||
}
|
||||
checkGate( outSum / frames );
|
||||
return isRunning();
|
||||
buf[f][0] = ( d * dryS[0] ) + ( w * buf[f][0] );
|
||||
buf[f][1] = ( d * dryS[1] ) + ( w * buf[f][1] );
|
||||
outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1];
|
||||
}
|
||||
checkGate( outSum / frames );
|
||||
return isRunning();
|
||||
}
|
||||
|
||||
void DelayEffect::changeSampleRate()
|
||||
{
|
||||
m_lfo->setSampleRate( engine::mixer()->processingSampleRate() );
|
||||
m_delay->setSampleRate( engine::mixer()->processingSampleRate() );
|
||||
m_lfo->setSampleRate( engine::mixer()->processingSampleRate() );
|
||||
m_delay->setSampleRate( engine::mixer()->processingSampleRate() );
|
||||
}
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ extern "C"
|
||||
//needed for getting plugin out of shared lib
|
||||
Plugin * PLUGIN_EXPORT lmms_plugin_main( Model* parent, void* data )
|
||||
{
|
||||
return new DelayEffect( parent , static_cast<const Plugin::Descriptor::SubPluginFeatures::Key *>( data ) );
|
||||
return new DelayEffect( parent , static_cast<const Plugin::Descriptor::SubPluginFeatures::Key *>( data ) );
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
@@ -33,19 +33,19 @@
|
||||
class DelayEffect : public Effect
|
||||
{
|
||||
public:
|
||||
DelayEffect(Model* parent , const Descriptor::SubPluginFeatures::Key* key );
|
||||
virtual ~DelayEffect();
|
||||
virtual bool processAudioBuffer( sampleFrame* buf, const fpp_t frames );
|
||||
virtual EffectControls* controls()
|
||||
{
|
||||
return &m_delayControls;
|
||||
}
|
||||
void changeSampleRate();
|
||||
DelayEffect(Model* parent , const Descriptor::SubPluginFeatures::Key* key );
|
||||
virtual ~DelayEffect();
|
||||
virtual bool processAudioBuffer( sampleFrame* buf, const fpp_t frames );
|
||||
virtual EffectControls* controls()
|
||||
{
|
||||
return &m_delayControls;
|
||||
}
|
||||
void changeSampleRate();
|
||||
|
||||
private:
|
||||
DelayControls m_delayControls;
|
||||
StereoDelay* m_delay;
|
||||
Lfo* m_lfo;
|
||||
DelayControls m_delayControls;
|
||||
StereoDelay* m_delay;
|
||||
Lfo* m_lfo;
|
||||
};
|
||||
|
||||
#endif // DELAYEFFECT_H
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
|
||||
Lfo::Lfo( int samplerate )
|
||||
{
|
||||
m_samplerate = samplerate;
|
||||
m_twoPiOverSr = F_2PI / samplerate;
|
||||
m_samplerate = samplerate;
|
||||
m_twoPiOverSr = F_2PI / samplerate;
|
||||
}
|
||||
|
||||
|
||||
@@ -39,8 +39,8 @@ Lfo::Lfo( int samplerate )
|
||||
|
||||
float Lfo::tick()
|
||||
{
|
||||
float output = sinf( m_phase );
|
||||
m_phase += m_increment;
|
||||
float output = sinf( m_phase );
|
||||
m_phase += m_increment;
|
||||
|
||||
return output;
|
||||
return output;
|
||||
}
|
||||
|
||||
@@ -30,50 +30,50 @@
|
||||
class Lfo
|
||||
{
|
||||
public:
|
||||
Lfo( int samplerate );
|
||||
~Lfo()
|
||||
{
|
||||
}
|
||||
Lfo( int samplerate );
|
||||
~Lfo()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
inline void setFrequency( double frequency )
|
||||
{
|
||||
if( frequency < 0 || frequency > ( m_samplerate / 2.0 ) || frequency == m_frequency )
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_frequency = frequency;
|
||||
m_increment = m_frequency * m_twoPiOverSr;
|
||||
inline void setFrequency( double frequency )
|
||||
{
|
||||
if( frequency < 0 || frequency > ( m_samplerate / 2.0 ) || frequency == m_frequency )
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_frequency = frequency;
|
||||
m_increment = m_frequency * m_twoPiOverSr;
|
||||
|
||||
if( m_phase >= F_2PI )
|
||||
{
|
||||
m_phase -= F_2PI;
|
||||
}
|
||||
}
|
||||
if( m_phase >= F_2PI )
|
||||
{
|
||||
m_phase -= F_2PI;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
inline void setSampleRate ( int samplerate )
|
||||
{
|
||||
m_samplerate = samplerate;
|
||||
m_twoPiOverSr = F_2PI / samplerate;
|
||||
m_increment = m_frequency * m_twoPiOverSr;
|
||||
}
|
||||
inline void setSampleRate ( int samplerate )
|
||||
{
|
||||
m_samplerate = samplerate;
|
||||
m_twoPiOverSr = F_2PI / samplerate;
|
||||
m_increment = m_frequency * m_twoPiOverSr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
float tick();
|
||||
float tick();
|
||||
|
||||
private:
|
||||
double m_frequency;
|
||||
double m_phase;
|
||||
double m_increment;
|
||||
double m_twoPiOverSr;
|
||||
int m_samplerate;
|
||||
double m_frequency;
|
||||
double m_phase;
|
||||
double m_increment;
|
||||
double m_twoPiOverSr;
|
||||
int m_samplerate;
|
||||
};
|
||||
|
||||
#endif // LFO_H
|
||||
|
||||
@@ -31,14 +31,14 @@
|
||||
|
||||
StereoDelay::StereoDelay( int maxTime, int sampleRate )
|
||||
{
|
||||
m_buffer = 0;
|
||||
m_maxTime = maxTime;
|
||||
m_maxLength = maxTime * sampleRate;
|
||||
m_length = m_maxLength;
|
||||
m_buffer = 0;
|
||||
m_maxTime = maxTime;
|
||||
m_maxLength = maxTime * sampleRate;
|
||||
m_length = m_maxLength;
|
||||
|
||||
m_index = 0;
|
||||
m_feedback = 0.0f;
|
||||
setSampleRate( sampleRate );
|
||||
m_index = 0;
|
||||
m_feedback = 0.0f;
|
||||
setSampleRate( sampleRate );
|
||||
}
|
||||
|
||||
|
||||
@@ -46,10 +46,10 @@ StereoDelay::StereoDelay( int maxTime, int sampleRate )
|
||||
|
||||
StereoDelay::~StereoDelay()
|
||||
{
|
||||
if( m_buffer )
|
||||
{
|
||||
delete m_buffer;
|
||||
}
|
||||
if( m_buffer )
|
||||
{
|
||||
delete m_buffer;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -57,24 +57,24 @@ StereoDelay::~StereoDelay()
|
||||
|
||||
void StereoDelay::tick( sampleFrame frame )
|
||||
{
|
||||
m_buffer[m_index][0] = frame[0];
|
||||
m_buffer[m_index][1] = frame[1];
|
||||
m_buffer[m_index][0] = frame[0];
|
||||
m_buffer[m_index][1] = frame[1];
|
||||
|
||||
int readIndex = m_index - ( int )m_length;
|
||||
if( readIndex < 0 )
|
||||
{
|
||||
readIndex += m_maxLength;
|
||||
}
|
||||
float fract = fraction( m_length );
|
||||
frame[0] = linearInterpolate( m_buffer[readIndex][0] ,
|
||||
m_buffer[( readIndex+1) % m_maxLength][0], fract );
|
||||
frame[1] = linearInterpolate( m_buffer[readIndex][1] ,
|
||||
m_buffer[( readIndex+1) % m_maxLength][1], fract );
|
||||
int readIndex = m_index - ( int )m_length - 1;
|
||||
if( readIndex < 0 )
|
||||
{
|
||||
readIndex += m_maxLength;
|
||||
}
|
||||
float fract = 1.0f - fraction( m_length );
|
||||
frame[0] = linearInterpolate( m_buffer[readIndex][0] ,
|
||||
m_buffer[( readIndex+1) % m_maxLength][0], fract );
|
||||
frame[1] = linearInterpolate( m_buffer[readIndex][1] ,
|
||||
m_buffer[( readIndex+1) % m_maxLength][1], fract );
|
||||
|
||||
m_buffer[m_index][0] += frame[0] * m_feedback;
|
||||
m_buffer[m_index][1] += frame[1] * m_feedback;
|
||||
m_buffer[m_index][0] += frame[0] * m_feedback;
|
||||
m_buffer[m_index][1] += frame[1] * m_feedback;
|
||||
|
||||
m_index = ( m_index + 1) % m_maxLength;
|
||||
m_index = ( m_index + 1) % m_maxLength;
|
||||
}
|
||||
|
||||
|
||||
@@ -82,13 +82,18 @@ void StereoDelay::tick( sampleFrame frame )
|
||||
|
||||
void StereoDelay::setSampleRate( int sampleRate )
|
||||
{
|
||||
if( m_buffer )
|
||||
{
|
||||
delete m_buffer;
|
||||
}
|
||||
if( m_buffer )
|
||||
{
|
||||
delete m_buffer;
|
||||
}
|
||||
|
||||
|
||||
m_buffer = new sampleFrame[( int )( sampleRate * m_maxTime )];
|
||||
int bufferSize = ( int )( sampleRate * m_maxTime );
|
||||
m_buffer = new sampleFrame[bufferSize];
|
||||
for( int i = 0 ; i < bufferSize ; i++)
|
||||
{
|
||||
m_buffer[i][0] = 0.0;
|
||||
m_buffer[i][1] = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -30,31 +30,31 @@
|
||||
class StereoDelay
|
||||
{
|
||||
public:
|
||||
StereoDelay( int maxLength, int sampleRate );
|
||||
~StereoDelay();
|
||||
inline void setLength( float length )
|
||||
{
|
||||
if( length <= m_maxLength && length >= 0 )
|
||||
{
|
||||
m_length = length;
|
||||
}
|
||||
}
|
||||
StereoDelay( int maxLength, int sampleRate );
|
||||
~StereoDelay();
|
||||
inline void setLength( float length )
|
||||
{
|
||||
if( length <= m_maxLength && length >= 0 )
|
||||
{
|
||||
m_length = length;
|
||||
}
|
||||
}
|
||||
|
||||
inline void setFeedback( float feedback )
|
||||
{
|
||||
m_feedback = feedback;
|
||||
}
|
||||
inline void setFeedback( float feedback )
|
||||
{
|
||||
m_feedback = feedback;
|
||||
}
|
||||
|
||||
void tick( sampleFrame frame );
|
||||
void setSampleRate( int sampleRate );
|
||||
void tick( sampleFrame frame );
|
||||
void setSampleRate( int sampleRate );
|
||||
|
||||
private:
|
||||
sampleFrame* m_buffer;
|
||||
int m_maxLength;
|
||||
float m_length;
|
||||
int m_index;
|
||||
float m_feedback;
|
||||
float m_maxTime;
|
||||
sampleFrame* m_buffer;
|
||||
int m_maxLength;
|
||||
float m_length;
|
||||
int m_index;
|
||||
float m_feedback;
|
||||
float m_maxTime;
|
||||
};
|
||||
|
||||
#endif // STEREODELAY_H
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -497,7 +497,7 @@ void opl2instrument::loadPatch(unsigned char inst[14]) {
|
||||
void opl2instrument::tuneEqual(int center, float Hz) {
|
||||
float tmp;
|
||||
for(int n=0; n<128; ++n) {
|
||||
tmp = Hz*pow( 2, ( n - center ) / 12.0 + pitchbend / 1200.0 );
|
||||
tmp = Hz*pow( 2.0, ( n - center ) * ( 1.0 / 12.0 ) + pitchbend * ( 1.0 / 1200.0 ) );
|
||||
fnums[n] = Hz2fnum( tmp );
|
||||
}
|
||||
}
|
||||
@@ -505,7 +505,7 @@ void opl2instrument::tuneEqual(int center, float Hz) {
|
||||
// Find suitable F number in lowest possible block
|
||||
int opl2instrument::Hz2fnum(float Hz) {
|
||||
for(int block=0; block<8; ++block) {
|
||||
unsigned int fnum = Hz * pow(2, 20-block) / 49716;
|
||||
unsigned int fnum = Hz * pow( 2.0, 20.0 - (double)block ) * ( 1.0 / 49716.0 );
|
||||
if(fnum<1023) {
|
||||
return fnum + (block << 10);
|
||||
}
|
||||
|
||||
@@ -360,11 +360,11 @@ void papuInstrument::playNote( NotePlayHandle * _n,
|
||||
//PRNG Frequency = (1048576 Hz / (ratio + 1)) / 2 ^ (shiftclockfreq + 1)
|
||||
char sopt=0;
|
||||
char ropt=1;
|
||||
float fopt = 524288.0 / ( ropt * pow( 2, sopt+1 ) );
|
||||
float fopt = 524288.0 / ( ropt * pow( 2.0, sopt + 1.0 ) );
|
||||
float f;
|
||||
for ( char s=0; s<16; s++ )
|
||||
for ( char r=0; r<8; r++ ) {
|
||||
f = 524288.0 / ( r * pow( 2, s+1 ) );
|
||||
f = 524288.0 / ( r * pow( 2.0, s + 1.0 ) );
|
||||
if( fabs( freq-fopt ) > fabs( freq-f ) ) {
|
||||
fopt = f;
|
||||
ropt = r;
|
||||
|
||||
@@ -415,7 +415,7 @@ void VstPlugin::setParameterDump( const QMap<QString, QString> & _pdump )
|
||||
{
|
||||
( *it ).section( ':', 0, 0 ).toInt(),
|
||||
"",
|
||||
( *it ).section( ':', 1, 1 ).toFloat()
|
||||
( *it ).section( ':', 2, -1 ).toFloat()
|
||||
} ;
|
||||
m.addInt( item.index );
|
||||
m.addString( item.shortLabel );
|
||||
|
||||
@@ -89,6 +89,7 @@ LocalZynAddSubFx::LocalZynAddSubFx() :
|
||||
LocalZynAddSubFx::~LocalZynAddSubFx()
|
||||
{
|
||||
delete m_master;
|
||||
delete m_ioEngine;
|
||||
|
||||
if( --s_instanceCount == 0 )
|
||||
{
|
||||
|
||||
@@ -173,8 +173,11 @@ Controller * Controller::create( ControllerTypes _ct, Model * _parent )
|
||||
if( dummy )
|
||||
c = dummy;
|
||||
else
|
||||
{
|
||||
c = new Controller( DummyController, NULL,
|
||||
QString() );
|
||||
dummy = c;
|
||||
}
|
||||
break;
|
||||
|
||||
case Controller::LfoController:
|
||||
|
||||
@@ -99,7 +99,7 @@ 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 );
|
||||
|
||||
@@ -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() )
|
||||
|
||||
@@ -194,11 +194,12 @@ void FxMixerView::refreshDisplay()
|
||||
for( int i = 1; i<m_fxChannelViews.size(); ++i )
|
||||
{
|
||||
chLayout->removeWidget(m_fxChannelViews[i]->m_fxLine);
|
||||
m_racksLayout->removeWidget( m_fxChannelViews[i]->m_rackView );
|
||||
delete m_fxChannelViews[i]->m_fader;
|
||||
delete m_fxChannelViews[i]->m_muteBtn;
|
||||
delete m_fxChannelViews[i]->m_fxLine;
|
||||
delete m_fxChannelViews[i]->m_rackView;
|
||||
delete m_fxChannelViews[i];
|
||||
m_racksLayout->removeWidget( m_fxChannelViews[i]->m_rackView );
|
||||
}
|
||||
m_channelAreaWidget->adjustSize();
|
||||
|
||||
@@ -343,15 +344,14 @@ void FxMixerView::deleteChannel(int index)
|
||||
|
||||
// delete the view
|
||||
chLayout->removeWidget(m_fxChannelViews[index]->m_fxLine);
|
||||
m_racksLayout->removeWidget( m_fxChannelViews[index]->m_rackView );
|
||||
delete m_fxChannelViews[index]->m_fader;
|
||||
delete m_fxChannelViews[index]->m_muteBtn;
|
||||
delete m_fxChannelViews[index]->m_fxLine;
|
||||
delete m_fxChannelViews[index]->m_rackView;
|
||||
delete m_fxChannelViews[index];
|
||||
m_channelAreaWidget->adjustSize();
|
||||
|
||||
// delete the fx rack
|
||||
m_racksLayout->removeWidget( m_fxChannelViews[index]->m_rackView );
|
||||
|
||||
// make sure every channel knows what index it is
|
||||
for(int i=0; i<m_fxChannelViews.size(); ++i)
|
||||
{
|
||||
|
||||
@@ -529,6 +529,11 @@ void MainWindow::finalize()
|
||||
setupDialog sd( setupDialog::AudioSettings );
|
||||
sd.exec();
|
||||
}
|
||||
// reset window title every time we change the state of a subwindow to show the correct title
|
||||
foreach( QMdiSubWindow * subWindow, workspace()->subWindowList() )
|
||||
{
|
||||
connect( subWindow, SIGNAL( windowStateChanged(Qt::WindowStates,Qt::WindowStates) ), this, SLOT( resetWindowTitle() ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -70,6 +70,11 @@
|
||||
#include "text_float.h"
|
||||
|
||||
|
||||
#if QT_VERSION < 0x040800
|
||||
#define MiddleButton MidButton
|
||||
#endif
|
||||
|
||||
|
||||
typedef AutomationPattern::timeMap timeMap;
|
||||
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
#include <QtGui/QMouseEvent>
|
||||
#include <QtGui/QScrollArea>
|
||||
|
||||
#include <algorithm> // for std::sort
|
||||
|
||||
#include "plugin_browser.h"
|
||||
#include "embed.h"
|
||||
#include "debug.h"
|
||||
|
||||
@@ -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