Merge lp:~timo-jyrinki/ubuntu/trusty/lmms/1.0.0_packaging into lp:ubuntu/trusty/lmms

Proposed by Timo Jyrinki
Status: Merged
Merged at revision: 40
Proposed branch: lp:~timo-jyrinki/ubuntu/trusty/lmms/1.0.0_packaging
Merge into: lp:ubuntu/trusty/lmms
Diff against target: 1604696 lines (+209524/-1019521)
3079 files modified
.gitattributes (+2/-0)
.gitignore (+5/-0)
.mailmap (+11/-0)
.pc/applied-patches (+0/-1)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/caps/interface.cc (+145/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_autopan.c (+361/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_chorusflanger.c (+595/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_deesser.c (+491/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_doubler.c (+737/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_dynamics_m.c (+666/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_dynamics_st.c (+877/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_echo.c (+629/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_eq.c (+777/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_eqbw.c (+967/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_limiter.c (+443/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_pinknoise.c (+345/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_pitch.c (+556/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_reflector.c (+500/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_reverb.c (+835/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_rotspeak.c (+768/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_sigmoid.c (+338/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_tremolo.c (+343/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_tubewarmth.c (+491/-0)
.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_vibrato.c (+445/-0)
.pc/lib64-builddir.patch/cmake/modules/DetectMachine.cmake (+0/-60)
.pc/upstream-fixes/src/core/AutomatableModel.cpp (+461/-0)
.svnignore (+6/-0)
.travis.yml (+6/-0)
AUTHORS (+0/-35)
CMakeLists.txt (+0/-686)
COPYING (+0/-339)
INSTALL (+0/-33)
README (+0/-107)
README.md (+37/-0)
TODO (+0/-32)
build_mingw32 (+0/-7)
build_mingw64 (+0/-6)
buildtools/bin2res.cpp (+0/-212)
cmake/modules/BuildPlugin.cmake (+0/-98)
cmake/modules/ChecksForLibSamplerate.cmake (+0/-76)
cmake/modules/DetectMachine.cmake (+0/-56)
cmake/modules/FindAlsa.cmake (+0/-64)
cmake/modules/FindOggVorbis.cmake (+0/-86)
cmake/modules/FindPortaudio.cmake (+0/-36)
cmake/modules/FindPulseAudio.cmake (+0/-59)
cmake/modules/FindSTK.cmake (+0/-20)
cmake/modules/FindWine.cmake (+19/-0)
cmake/modules/InstallHelpers.cmake (+0/-45)
cmake/modules/MinGWCrossCompile.cmake (+0/-41)
cmake/modules/Win32Toolchain.cmake (+0/-6)
cmake/modules/Win64Toolchain.cmake (+0/-11)
cmake/modules/config-alsa.h.cmake (+0/-34)
cmake/nsis/FileAssociation.nsh (+0/-190)
configure (+0/-10)
data/CMakeLists.txt (+0/-19)
data/application-x-lmms-project.svg (+1912/-0)
data/backgrounds/CMakeLists.txt (+0/-2)
data/lmms (+0/-4)
data/lmms.desktop (+0/-13)
data/lmms.xml (+0/-14)
data/locale/CMakeLists.txt (+0/-6)
data/locale/ca.ts (+0/-6119)
data/locale/cs.ts (+0/-6104)
data/locale/de.ts (+0/-6331)
data/locale/en.qm (+0/-1)
data/locale/en.ts (+0/-6081)
data/locale/es.ts (+0/-6082)
data/locale/fa.ts (+0/-6081)
data/locale/fr.ts (+0/-6133)
data/locale/gl.ts (+6784/-0)
data/locale/it.ts (+0/-6133)
data/locale/ja.ts (+0/-6133)
data/locale/ko.ts (+0/-6086)
data/locale/nl.ts (+0/-6107)
data/locale/pl.ts (+0/-6299)
data/locale/pt_br.ts (+0/-6084)
data/locale/ru.ts (+0/-6145)
data/locale/sv.ts (+0/-6084)
data/presets/AudioFileProcessor/Bass-Mania.xpf (+0/-17)
data/presets/AudioFileProcessor/Erazor.xpf (+0/-30)
data/presets/AudioFileProcessor/Fat-Reversed-Kick.xpf (+0/-17)
data/presets/AudioFileProcessor/Kick-4-your-Subwoofer.xpf (+0/-17)
data/presets/AudioFileProcessor/SString.xpf (+0/-47)
data/presets/AudioFileProcessor/orion.xpf (+0/-40)
data/presets/BitInvader/alien_strings.xpf (+0/-17)
data/presets/BitInvader/beehive.xpf (+0/-17)
data/presets/BitInvader/bell.xpf (+0/-17)
data/presets/BitInvader/cello.xpf (+0/-17)
data/presets/BitInvader/drama.xpf (+0/-17)
data/presets/BitInvader/epiano.xpf (+0/-17)
data/presets/BitInvader/pluck.xpf (+0/-17)
data/presets/BitInvader/soft_pad.xpf (+0/-17)
data/presets/BitInvader/spacefx.xpf (+0/-17)
data/presets/BitInvader/subbass.xpf (+0/-17)
data/presets/BitInvader/sweep_pad.xpf (+0/-17)
data/presets/BitInvader/toy_piano.xpf (+0/-17)
data/presets/BitInvader/wah_synth.xpf (+0/-17)
data/presets/CMakeLists.txt (+0/-5)
data/presets/LB302/GoodOldTimes.xpf (+0/-21)
data/presets/LB302/Oh Synth.xpf (+0/-20)
data/presets/LB302/STrash.xpf (+0/-52)
data/presets/OpulenZ/Bagpipe.xpf (+29/-0)
data/presets/OpulenZ/Bells.xpf (+21/-0)
data/presets/OpulenZ/Brass.xpf (+21/-0)
data/presets/OpulenZ/Bubbly_days.xpf (+21/-0)
data/presets/OpulenZ/Cheesy_synth.xpf (+21/-0)
data/presets/OpulenZ/Clarinet.xpf (+21/-0)
data/presets/OpulenZ/Combo_organ.xpf (+29/-0)
data/presets/OpulenZ/Epiano.xpf (+21/-0)
data/presets/OpulenZ/Funky.xpf (+29/-0)
data/presets/OpulenZ/Halo_pad.xpf (+21/-0)
data/presets/OpulenZ/Harp.xpf (+29/-0)
data/presets/OpulenZ/Organ_leslie.xpf (+29/-0)
data/presets/OpulenZ/Pad.xpf (+21/-0)
data/presets/OpulenZ/Square.xpf (+29/-0)
data/presets/OpulenZ/Vibraphone.xpf (+21/-0)
data/presets/Organic/organ_blues.xpf (+0/-17)
data/presets/Organic/organ_risingsun.xpf (+0/-17)
data/presets/Organic/organ_swish.xpf (+0/-17)
data/presets/Organic/pad_ethereal.xpf (+0/-17)
data/presets/Organic/pad_rich.xpf (+0/-17)
data/presets/Organic/pad_sweep.xpf (+0/-17)
data/presets/Organic/puresine.xpf (+0/-17)
data/presets/Organic/sequencer_64.xpf (+0/-17)
data/presets/TripleOscillator/AmazingBubbles.xpf (+0/-18)
data/presets/TripleOscillator/AnalogDreamz.xpf (+0/-18)
data/presets/TripleOscillator/AnalogTimes.xpf (+0/-18)
data/presets/TripleOscillator/AnalogTimes2.xpf (+0/-21)
data/presets/TripleOscillator/Analogous.xpf (+0/-18)
data/presets/TripleOscillator/ArpKing.xpf (+0/-17)
data/presets/TripleOscillator/Arpeggio_1.xpf (+0/-21)
data/presets/TripleOscillator/Arpeggio_2.xpf (+0/-16)
data/presets/TripleOscillator/Bell.xpf (+0/-18)
data/presets/TripleOscillator/Bell_2.xpf (+0/-18)
data/presets/TripleOscillator/ChurchOrgan.xpf (+0/-21)
data/presets/TripleOscillator/DeathBass.xpf (+0/-28)
data/presets/TripleOscillator/Distorted-FM-Bass.xpf (+0/-18)
data/presets/TripleOscillator/Dull-Bell-Arp.xpf (+0/-18)
data/presets/TripleOscillator/E-Organ.xpf (+0/-21)
data/presets/TripleOscillator/E-Organ2.xpf (+0/-25)
data/presets/TripleOscillator/Erazzor.xpf (+0/-68)
data/presets/TripleOscillator/Fat-FMish-Bells.xpf (+0/-18)
data/presets/TripleOscillator/Fat-TB303-Arp.xpf (+0/-17)
data/presets/TripleOscillator/Fat.xpf (+0/-16)
data/presets/TripleOscillator/FatCheese.xpf (+0/-16)
data/presets/TripleOscillator/Freaky-Bass.xpf (+0/-18)
data/presets/TripleOscillator/FutureBass.xpf (+0/-17)
data/presets/TripleOscillator/Gong.xpf (+0/-18)
data/presets/TripleOscillator/Harmonium.xpf (+0/-21)
data/presets/TripleOscillator/Harp-of-a-Fairy.xpf (+0/-18)
data/presets/TripleOscillator/Harpsichord.xpf (+0/-18)
data/presets/TripleOscillator/HiPad.xpf (+0/-18)
data/presets/TripleOscillator/Jupiter.xpf (+0/-21)
data/presets/TripleOscillator/Kick.xpf (+0/-30)
data/presets/TripleOscillator/Kick2.xpf (+0/-30)
data/presets/TripleOscillator/LFO-party.xpf (+0/-21)
data/presets/TripleOscillator/LovelyDream.xpf (+0/-18)
data/presets/TripleOscillator/MoogArpeggio.xpf (+0/-21)
data/presets/TripleOscillator/MoveYourBody.xpf (+0/-17)
data/presets/TripleOscillator/OldComputerGames.xpf (+0/-34)
data/presets/TripleOscillator/Play-some-rock.xpf (+0/-17)
data/presets/TripleOscillator/PluckArpeggio.xpf (+0/-21)
data/presets/TripleOscillator/Plucked.xpf (+0/-17)
data/presets/TripleOscillator/PowerStrings.xpf (+0/-27)
data/presets/TripleOscillator/RaveBass.xpf (+0/-21)
data/presets/TripleOscillator/Ravemania.xpf (+0/-23)
data/presets/TripleOscillator/ResoBass.xpf (+0/-18)
data/presets/TripleOscillator/ResonantPad.xpf (+0/-18)
data/presets/TripleOscillator/RockOrgan.xpf (+0/-18)
data/presets/TripleOscillator/Rough!.xpf (+0/-18)
data/presets/TripleOscillator/SBass.xpf (+0/-54)
data/presets/TripleOscillator/SBass2.xpf (+0/-36)
data/presets/TripleOscillator/SEGuitar.xpf (+0/-61)
data/presets/TripleOscillator/SawLead.xpf (+0/-21)
data/presets/TripleOscillator/SawReso.xpf (+0/-17)
data/presets/TripleOscillator/Short1.xpf (+0/-18)
data/presets/TripleOscillator/Short2.xpf (+0/-18)
data/presets/TripleOscillator/Short3.xpf (+0/-18)
data/presets/TripleOscillator/Short4.xpf (+0/-18)
data/presets/TripleOscillator/Snare.xpf (+0/-30)
data/presets/TripleOscillator/SoftBass.xpf (+0/-21)
data/presets/TripleOscillator/SoftStrings.xpf (+0/-21)
data/presets/TripleOscillator/SpaceBass.xpf (+0/-18)
data/presets/TripleOscillator/Square.xpf (+0/-21)
data/presets/TripleOscillator/Supernova.xpf (+0/-61)
data/presets/TripleOscillator/TB303-Arpeggio.xpf (+0/-21)
data/presets/TripleOscillator/TB303.xpf (+0/-21)
data/presets/TripleOscillator/TheFirstOne.xpf (+0/-18)
data/presets/TripleOscillator/TheMaster.xpf (+0/-17)
data/presets/TripleOscillator/TranceLead.xpf (+0/-18)
data/presets/TripleOscillator/WarmStack.xpf (+0/-31)
data/presets/TripleOscillator/Whistle.xpf (+0/-18)
data/presets/TripleOscillator/Xylophon.xpf (+0/-16)
data/presets/Vibed/Harpsichord.xpf (+0/-17)
data/presets/Vibed/SadPad.xpf (+0/-17)
data/presets/Watsyn/Epic_lead.xpf (+48/-0)
data/presets/Watsyn/Phase_bass.xpf (+21/-0)
data/presets/ZynAddSubFX/Collections/WillGodfrey/README (+0/-4)
data/presets/ZynAddSubFX/Plucked/progressive-house-pluck.xiz (+465/-0)
data/projects/CMakeLists.txt (+0/-6)
data/projects/CoolSongs/LICENSES.TXT (+0/-67)
data/projects/CoolSongs/StrictProduction-DearJonDoe.mmp (+0/-871)
data/projects/Covers/LICENSES.TXT (+0/-20)
data/projects/Demos/LICENSES.TXT (+0/-24)
data/projects/OldStuff/BlueWolf-DreamTravel.mmp (+0/-883)
data/projects/OldStuff/Chris-HorizonRemix.mmp (+0/-1328)
data/projects/OldStuff/Malex-Horizon4.mmp (+0/-639)
data/projects/OldStuff/Siegel-DreamWave.mmp (+0/-1204)
data/projects/OldStuff/Siegel-SpeedTrack.mmp (+0/-671)
data/projects/OldStuff/Silva-ElvesCall.mmp (+0/-890)
data/projects/OldStuff/TobyDox-Confused.mmp (+0/-929)
data/projects/OldStuff/TobyDox-Psycho.mmp (+0/-1044)
data/projects/Shorties/Crunk(Demo).mmp (+0/-388)
data/projects/Shorties/LICENSES.TXT (+0/-15)
data/projects/templates/AcousticDrumset.mpt (+0/-88)
data/projects/templates/CR8000.mpt (+0/-399)
data/projects/templates/ClubMix.mpt (+0/-101)
data/projects/templates/TR808.mpt (+0/-459)
data/projects/tutorials/editing_note_volumes.mmp (+0/-63)
data/samples/CMakeLists.txt (+0/-4)
data/samples/drumsynth/acoustic/Brush1.ds (+0/-35)
data/samples/drumsynth/acoustic/Brush2.ds (+0/-35)
data/samples/drumsynth/acoustic/JazzKick.ds (+0/-35)
data/samples/drumsynth/acoustic/JazzSnr.ds (+0/-60)
data/samples/drumsynth/acoustic/JazzSnr_H.ds (+0/-60)
data/samples/drumsynth/acoustic/K_Muffle.ds (+0/-35)
data/samples/drumsynth/acoustic/Kick.ds (+0/-35)
data/samples/drumsynth/acoustic/Plain_Kick.ds (+0/-58)
data/samples/drumsynth/acoustic/Ride.ds (+0/-57)
data/samples/drumsynth/acoustic/Ride2.ds (+0/-58)
data/samples/drumsynth/acoustic/Ride3.ds (+0/-60)
data/samples/drumsynth/acoustic/Snare.ds (+0/-57)
data/samples/drumsynth/cr78/Bongo_h.ds (+0/-36)
data/samples/drumsynth/cr78/Bongo_l.ds (+0/-35)
data/samples/drumsynth/cr78/Clave.ds (+0/-35)
data/samples/drumsynth/cr78/Conga.ds (+0/-35)
data/samples/drumsynth/cr78/Cymbal.ds (+0/-57)
data/samples/drumsynth/cr78/Hihat.ds (+0/-35)
data/samples/drumsynth/cr78/Kick.ds (+0/-35)
data/samples/drumsynth/cr78/Maracas.ds (+0/-35)
data/samples/drumsynth/cr78/Rim.ds (+0/-35)
data/samples/drumsynth/cr78/Snare.ds (+0/-35)
data/samples/drumsynth/cr78/Tamb.ds (+0/-35)
data/samples/drumsynth/cr8000/Clap.ds (+0/-57)
data/samples/drumsynth/cr8000/Clave.ds (+0/-57)
data/samples/drumsynth/cr8000/Conga_l.ds (+0/-57)
data/samples/drumsynth/cr8000/Conga_m.ds (+0/-57)
data/samples/drumsynth/cr8000/Cowbell.ds (+0/-57)
data/samples/drumsynth/cr8000/Cymbal.ds (+0/-58)
data/samples/drumsynth/cr8000/Hat_c.ds (+0/-58)
data/samples/drumsynth/cr8000/Hat_o.ds (+0/-57)
data/samples/drumsynth/cr8000/Kick.ds (+0/-57)
data/samples/drumsynth/cr8000/Rim.ds (+0/-60)
data/samples/drumsynth/cr8000/Snare.ds (+0/-57)
data/samples/drumsynth/effects/Bubble.ds (+0/-35)
data/samples/drumsynth/effects/Cicada.ds (+0/-58)
data/samples/drumsynth/effects/Glass.ds (+0/-34)
data/samples/drumsynth/effects/Glass_rn.ds (+0/-61)
data/samples/drumsynth/effects/Gunshot.ds (+0/-58)
data/samples/drumsynth/effects/Hammer.ds (+0/-58)
data/samples/drumsynth/effects/Laser.ds (+0/-58)
data/samples/drumsynth/effects/Reverse.ds (+0/-35)
data/samples/drumsynth/effects/Ringing.ds (+0/-58)
data/samples/drumsynth/effects/Scissors.ds (+0/-60)
data/samples/drumsynth/effects/Sonar.ds (+0/-58)
data/samples/drumsynth/effects/dialing.ds (+0/-58)
data/samples/drumsynth/effects/hammer2.ds (+0/-58)
data/samples/drumsynth/effects/impulses.ds (+0/-60)
data/samples/drumsynth/effects/loop.ds (+0/-58)
data/samples/drumsynth/effects/thunder.ds (+0/-58)
data/samples/drumsynth/electro/Boom.ds (+0/-58)
data/samples/drumsynth/electro/H_closed.ds (+0/-60)
data/samples/drumsynth/electro/H_open.ds (+0/-35)
data/samples/drumsynth/electro/Hi-q.ds (+0/-57)
data/samples/drumsynth/electro/Hi-q_2.ds (+0/-57)
data/samples/drumsynth/electro/K_8bit.ds (+0/-58)
data/samples/drumsynth/electro/K_Linn.ds (+0/-58)
data/samples/drumsynth/electro/K_reverb.ds (+0/-60)
data/samples/drumsynth/electro/S_8bit.ds (+0/-58)
data/samples/drumsynth/electro/S_Linn.ds (+0/-58)
data/samples/drumsynth/electro/S_reverb.ds (+0/-60)
data/samples/drumsynth/electro/Syntom_1.ds (+0/-35)
data/samples/drumsynth/electro/Syntom_2.ds (+0/-57)
data/samples/drumsynth/electro/s_eq.ds (+0/-58)
data/samples/drumsynth/farfisa/Fisa_Bongo.ds (+0/-61)
data/samples/drumsynth/farfisa/Fisa_Cym.ds (+0/-61)
data/samples/drumsynth/farfisa/Fisa_Hat.ds (+0/-61)
data/samples/drumsynth/farfisa/Fisa_K_H.ds (+0/-61)
data/samples/drumsynth/farfisa/Fisa_K_K.ds (+0/-61)
data/samples/drumsynth/farfisa/Fisa_Kick.ds (+0/-61)
data/samples/drumsynth/farfisa/Fisa_S_B.ds (+0/-61)
data/samples/drumsynth/farfisa/Fisa_Snare.ds (+0/-61)
data/samples/drumsynth/farfisa/Fisa_Tom.ds (+0/-61)
data/samples/drumsynth/ferraro/curb_meat_bass.ds (+0/-61)
data/samples/drumsynth/ferraro/eel_bass.ds (+0/-60)
data/samples/drumsynth/ferraro/feed_this.ds (+0/-61)
data/samples/drumsynth/ferraro/gerbil_snare.ds (+0/-61)
data/samples/drumsynth/ferraro/grumpy_buzzard.ds (+0/-61)
data/samples/drumsynth/ferraro/jaguar_hats.ds (+0/-61)
data/samples/drumsynth/ferraro/radio_hats.ds (+0/-60)
data/samples/drumsynth/ferraro/worm_bass.ds (+0/-60)
data/samples/drumsynth/instrument/E_Piano.ds (+0/-57)
data/samples/drumsynth/instrument/FM_Bass.ds (+0/-57)
data/samples/drumsynth/instrument/Moog_bass.ds (+0/-61)
data/samples/drumsynth/instrument/Oboe.ds (+0/-57)
data/samples/drumsynth/instrument/Temple_Bell.ds (+0/-57)
data/samples/drumsynth/instrument/flute.ds (+0/-57)
data/samples/drumsynth/instrument/mute_bass.ds (+0/-57)
data/samples/drumsynth/instrument/pizzi.ds (+0/-58)
data/samples/drumsynth/instrument/soft_piano.ds (+0/-60)
data/samples/drumsynth/instrument/square_lead.ds (+0/-57)
data/samples/drumsynth/instrument/sweep.ds (+0/-57)
data/samples/drumsynth/instrument/techno_stab.ds (+0/-60)
data/samples/drumsynth/instrument/tinkle.ds (+0/-57)
data/samples/drumsynth/instrument/trumpet.ds (+0/-57)
data/samples/drumsynth/instrument/upright_bass.ds (+0/-57)
data/samples/drumsynth/instrument/violin.ds (+0/-57)
data/samples/drumsynth/instrument/whistler.ds (+0/-57)
data/samples/drumsynth/jorgensohn/hihatopclo.ds (+0/-61)
data/samples/drumsynth/jorgensohn/kick.ds (+0/-60)
data/samples/drumsynth/jorgensohn/ramacymlong.ds (+0/-60)
data/samples/drumsynth/jorgensohn/ramacymshort.ds (+0/-60)
data/samples/drumsynth/jorgensohn/ride6.ds (+0/-60)
data/samples/drumsynth/jorgensohn/snare5.ds (+0/-61)
data/samples/drumsynth/jorgensohn/vibra.ds (+0/-61)
data/samples/drumsynth/jorgensohn/wood.ds (+0/-60)
data/samples/drumsynth/jorgensohn/wood2.ds (+0/-60)
data/samples/drumsynth/jorgensohn/zurrr.ds (+0/-60)
data/samples/drumsynth/latin/Bongo_h.ds (+0/-58)
data/samples/drumsynth/latin/Bongo_m2.ds (+0/-58)
data/samples/drumsynth/latin/Bongo_mu.ds (+0/-58)
data/samples/drumsynth/latin/Clave_we.ds (+0/-60)
data/samples/drumsynth/latin/Gamelan.ds (+0/-58)
data/samples/drumsynth/latin/Maracas.ds (+0/-58)
data/samples/drumsynth/latin/Shaker_1.ds (+0/-58)
data/samples/drumsynth/latin/Shaker_2.ds (+0/-58)
data/samples/drumsynth/latin/Tamb_hit.ds (+0/-58)
data/samples/drumsynth/latin/Tamb_shk.ds (+0/-58)
data/samples/drumsynth/latin/ThumbPno.ds (+0/-58)
data/samples/drumsynth/latin/Triangle.ds (+0/-58)
data/samples/drumsynth/latin/bongo_l.ds (+0/-58)
data/samples/drumsynth/latin/guiro.ds (+0/-61)
data/samples/drumsynth/latin/one_clap.ds (+0/-60)
data/samples/drumsynth/latin/taiko.ds (+0/-58)
data/samples/drumsynth/linn/linn_cab.ds (+0/-60)
data/samples/drumsynth/linn/linn_cga1.ds (+0/-58)
data/samples/drumsynth/linn/linn_cga2.ds (+0/-58)
data/samples/drumsynth/linn/linn_cga3.ds (+0/-58)
data/samples/drumsynth/linn/linn_cgam.ds (+0/-58)
data/samples/drumsynth/linn/linn_clp.ds (+0/-60)
data/samples/drumsynth/linn/linn_cow.ds (+0/-60)
data/samples/drumsynth/linn/linn_kik.ds (+0/-60)
data/samples/drumsynth/linn/linn_snr.ds (+0/-60)
data/samples/drumsynth/linn/linn_stk.ds (+0/-60)
data/samples/drumsynth/linn/linn_tamb.ds (+0/-60)
data/samples/drumsynth/linn/linn_tom1.ds (+0/-58)
data/samples/drumsynth/linn/linn_tom2.ds (+0/-58)
data/samples/drumsynth/linn/linn_tom3.ds (+0/-58)
data/samples/drumsynth/linn/linn_tom4.ds (+0/-58)
data/samples/drumsynth/linn/linn_tom5.ds (+0/-58)
data/samples/drumsynth/magnetboy/Eye_Eye.ds (+0/-60)
data/samples/drumsynth/magnetboy/Fp1.ds (+0/-59)
data/samples/drumsynth/magnetboy/Mist1.ds (+0/-60)
data/samples/drumsynth/magnetboy/Mist2.ds (+0/-59)
data/samples/drumsynth/magnetboy/Randion1.ds (+0/-60)
data/samples/drumsynth/magnetboy/Squelb.ds (+0/-60)
data/samples/drumsynth/magnetboy/Throaties1.ds (+0/-59)
data/samples/drumsynth/magnetboy/Tone1.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone10.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone11.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone12.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone14.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone15.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone16.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone17.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone18.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone19.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone2.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone20.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone3.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone4.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone5.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone6.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone7.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone8.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone9.ds (+0/-60)
data/samples/drumsynth/magnetboy/Tone_float1.ds (+0/-60)
data/samples/drumsynth/misc/'lectro_hammer.ds (+0/-61)
data/samples/drumsynth/misc/'lectro_square_hammer.ds (+0/-61)
data/samples/drumsynth/misc/12-bit_heavy_hitter.ds (+0/-60)
data/samples/drumsynth/misc/909_hard_snare.ds (+0/-60)
data/samples/drumsynth/misc/AAH.ds (+0/-60)
data/samples/drumsynth/misc/B1_B2.ds (+0/-58)
data/samples/drumsynth/misc/Clap.ds (+0/-60)
data/samples/drumsynth/misc/Distant_Thunder.ds (+0/-60)
data/samples/drumsynth/misc/N_low.ds (+0/-58)
data/samples/drumsynth/misc/N_vlow.ds (+0/-58)
data/samples/drumsynth/misc/RimShot.ds (+0/-60)
data/samples/drumsynth/misc/Saber_fight.ds (+0/-60)
data/samples/drumsynth/misc/Simple-c.ds (+0/-60)
data/samples/drumsynth/misc/Simple-r.ds (+0/-58)
data/samples/drumsynth/misc/Simple-s.ds (+0/-57)
data/samples/drumsynth/misc/Tone_dis.ds (+0/-58)
data/samples/drumsynth/misc/Tone_sw2.ds (+0/-58)
data/samples/drumsynth/misc/Tone_swp.ds (+0/-58)
data/samples/drumsynth/misc/airbrush_bd.ds (+0/-61)
data/samples/drumsynth/misc/ambient_noise_snare.ds (+0/-60)
data/samples/drumsynth/misc/amen_bd.ds (+0/-61)
data/samples/drumsynth/misc/amen_sn_1.ds (+0/-61)
data/samples/drumsynth/misc/and_loud_sn.ds (+0/-61)
data/samples/drumsynth/misc/another_909_moment.ds (+0/-61)
data/samples/drumsynth/misc/another_example_snare.ds (+0/-61)
data/samples/drumsynth/misc/application_bass_drum.ds (+0/-61)
data/samples/drumsynth/misc/b1_0.ds (+0/-59)
data/samples/drumsynth/misc/b1_2.ds (+0/-58)
data/samples/drumsynth/misc/b1_5.ds (+0/-58)
data/samples/drumsynth/misc/b1_9.ds (+0/-58)
data/samples/drumsynth/misc/basic_808_click_hum.ds (+0/-61)
data/samples/drumsynth/misc/battle_hook_sn.ds (+0/-60)
data/samples/drumsynth/misc/bauble_bd.ds (+0/-61)
data/samples/drumsynth/misc/beat_box_bd.ds (+0/-60)
data/samples/drumsynth/misc/beefy_wack.ds (+0/-61)
data/samples/drumsynth/misc/big_80's.ds (+0/-61)
data/samples/drumsynth/misc/big_80's_2.ds (+0/-61)
data/samples/drumsynth/misc/big_sleeper_snare.ds (+0/-61)
data/samples/drumsynth/misc/blended_snare.ds (+0/-60)
data/samples/drumsynth/misc/bouncy809bd.ds (+0/-61)
data/samples/drumsynth/misc/break_kick.ds (+0/-60)
data/samples/drumsynth/misc/breathing_snare.ds (+0/-60)
data/samples/drumsynth/misc/bright_house_sn.ds (+0/-61)
data/samples/drumsynth/misc/buff_hit.ds (+0/-61)
data/samples/drumsynth/misc/buff_sound.ds (+0/-61)
data/samples/drumsynth/misc/bug_into_water.ds (+0/-61)
data/samples/drumsynth/misc/bulge_n_yr_woofer.ds (+0/-60)
data/samples/drumsynth/misc/bumpin_quickie.ds (+0/-61)
data/samples/drumsynth/misc/calamity_snare.ds (+0/-60)
data/samples/drumsynth/misc/change_the_channel_snare.ds (+0/-60)
data/samples/drumsynth/misc/chow_bd.ds (+0/-61)
data/samples/drumsynth/misc/clappy_snare.ds (+0/-61)
data/samples/drumsynth/misc/clean_low_key_kick.ds (+0/-60)
data/samples/drumsynth/misc/clean_soft_808.ds (+0/-61)
data/samples/drumsynth/misc/clearly_snare.ds (+0/-60)
data/samples/drumsynth/misc/close_mic_sn.ds (+0/-61)
data/samples/drumsynth/misc/compression_does_it_808.ds (+0/-61)
data/samples/drumsynth/misc/crusty_bump.ds (+0/-61)
data/samples/drumsynth/misc/crusty_snare.ds (+0/-60)
data/samples/drumsynth/misc/cymbal.ds (+0/-61)
data/samples/drumsynth/misc/decompression_snare.ds (+0/-60)
data/samples/drumsynth/misc/deep_bauble_bd.ds (+0/-61)
data/samples/drumsynth/misc/deep_tones.ds (+0/-60)
data/samples/drumsynth/misc/difference_snare.ds (+0/-61)
data/samples/drumsynth/misc/different_909_snare.ds (+0/-60)
data/samples/drumsynth/misc/dirty_world_bd.ds (+0/-61)
data/samples/drumsynth/misc/dist_sub_kick.ds (+0/-60)
data/samples/drumsynth/misc/dist_sub_kick_2.ds (+0/-60)
data/samples/drumsynth/misc/electro_dnb_kick.ds (+0/-60)
data/samples/drumsynth/misc/electro_snare_layer.ds (+0/-61)
data/samples/drumsynth/misc/electronic_rim.ds (+0/-60)
data/samples/drumsynth/misc/end_transmission.ds (+0/-60)
data/samples/drumsynth/misc/every_909.ds (+0/-61)
data/samples/drumsynth/misc/fatness.ds (+0/-61)
data/samples/drumsynth/misc/fattie_bd.ds (+0/-61)
data/samples/drumsynth/misc/feel_me!.ds (+0/-61)
data/samples/drumsynth/misc/few_people_will_use_this_snare.ds (+0/-61)
data/samples/drumsynth/misc/flat_tire.ds (+0/-60)
data/samples/drumsynth/misc/fm.ds (+0/-58)
data/samples/drumsynth/misc/fried_food.ds (+0/-61)
data/samples/drumsynth/misc/funky_trashcan_snare.ds (+0/-61)
data/samples/drumsynth/misc/fuzzy_sn.ds (+0/-61)
data/samples/drumsynth/misc/gabbakick.ds (+0/-60)
data/samples/drumsynth/misc/gimme_a_hard_tone.ds (+0/-61)
data/samples/drumsynth/misc/gimmie_a_tone.ds (+0/-61)
data/samples/drumsynth/misc/hard_electro_brush_sn.ds (+0/-61)
data/samples/drumsynth/misc/hard_electronic_snare.ds (+0/-61)
data/samples/drumsynth/misc/hard_hittin.ds (+0/-60)
data/samples/drumsynth/misc/hardcore_a_bd.ds (+0/-61)
data/samples/drumsynth/misc/hardcore_bd.ds (+0/-61)
data/samples/drumsynth/misc/hardersnare.ds (+0/-61)
data/samples/drumsynth/misc/heady_mix_sn.ds (+0/-61)
data/samples/drumsynth/misc/heavy.ds (+0/-60)
data/samples/drumsynth/misc/hed_chunk_snare.ds (+0/-61)
data/samples/drumsynth/misc/hi-pass.ds (+0/-58)
data/samples/drumsynth/misc/hi_pic.ds (+0/-60)
data/samples/drumsynth/misc/hip-hop_fantasy_kick.ds (+0/-61)
data/samples/drumsynth/misc/hipster_joint_bd.ds (+0/-61)
data/samples/drumsynth/misc/hit_me_wooden_snare.ds (+0/-60)
data/samples/drumsynth/misc/hitthosesubs.ds (+0/-61)
data/samples/drumsynth/misc/hot_morning_bass_drum.ds (+0/-61)
data/samples/drumsynth/misc/hot_snare.ds (+0/-60)
data/samples/drumsynth/misc/i_luv_u_fat_noise.ds (+0/-60)
data/samples/drumsynth/misc/invisible_909_kick.ds (+0/-60)
data/samples/drumsynth/misc/it's_like_that_snare.ds (+0/-61)
data/samples/drumsynth/misc/just_the_bass_drum.ds (+0/-61)
data/samples/drumsynth/misc/kneel_and_buzz.ds (+0/-60)
data/samples/drumsynth/misc/large_hall_bd.ds (+0/-61)
data/samples/drumsynth/misc/laughter_and_jellybeans_snare.ds (+0/-61)
data/samples/drumsynth/misc/light_snare.ds (+0/-60)
data/samples/drumsynth/misc/lo-fi_bass_drum.ds (+0/-61)
data/samples/drumsynth/misc/lo-fi_march.ds (+0/-61)
data/samples/drumsynth/misc/lo-fi_rim.ds (+0/-61)
data/samples/drumsynth/misc/loudness_sn.ds (+0/-60)
data/samples/drumsynth/misc/lovely_clean_bd.ds (+0/-61)
data/samples/drumsynth/misc/lower_electro_bd.ds (+0/-61)
data/samples/drumsynth/misc/mack_bd.ds (+0/-61)
data/samples/drumsynth/misc/manipulate_bd.ds (+0/-61)
data/samples/drumsynth/misc/many_frequencies.ds (+0/-61)
data/samples/drumsynth/misc/mello_bd.ds (+0/-60)
data/samples/drumsynth/misc/mind_ya_heds.ds (+0/-61)
data/samples/drumsynth/misc/missing_snare.ds (+0/-61)
data/samples/drumsynth/misc/missing_snare_2.ds (+0/-61)
data/samples/drumsynth/misc/more_basic_bd.ds (+0/-60)
data/samples/drumsynth/misc/more_snap.ds (+0/-60)
data/samples/drumsynth/misc/muted_snare.ds (+0/-61)
data/samples/drumsynth/misc/n_hi.ds (+0/-58)
data/samples/drumsynth/misc/n_mid.ds (+0/-58)
data/samples/drumsynth/misc/neo808.ds (+0/-60)
data/samples/drumsynth/misc/neo808_2.ds (+0/-60)
data/samples/drumsynth/misc/noise.ds (+0/-61)
data/samples/drumsynth/misc/noise_calling_kick.ds (+0/-60)
data/samples/drumsynth/misc/noise_clip.ds (+0/-60)
data/samples/drumsynth/misc/nosie_calling_kick_2.ds (+0/-60)
data/samples/drumsynth/misc/odd_snare.ds (+0/-60)
data/samples/drumsynth/misc/original_tone_snare.ds (+0/-60)
data/samples/drumsynth/misc/ot_12.ds (+0/-58)
data/samples/drumsynth/misc/ot_34.ds (+0/-58)
data/samples/drumsynth/misc/ot_sine.ds (+0/-58)
data/samples/drumsynth/misc/overdriver_kick.ds (+0/-61)
data/samples/drumsynth/misc/pleasure_factory_kick.ds (+0/-60)
data/samples/drumsynth/misc/pop_1_off_snare.ds (+0/-61)
data/samples/drumsynth/misc/power_out.ds (+0/-61)
data/samples/drumsynth/misc/psychoacoutic_bd.ds (+0/-61)
data/samples/drumsynth/misc/punchy_clean_kick.ds (+0/-60)
data/samples/drumsynth/misc/puppy_kick.ds (+0/-60)
data/samples/drumsynth/misc/q'ey_bass_drum.ds (+0/-61)
data/samples/drumsynth/misc/q_kick_2.ds (+0/-60)
data/samples/drumsynth/misc/questoin_kick.ds (+0/-60)
data/samples/drumsynth/misc/r+b_fantasy_kick.ds (+0/-61)
data/samples/drumsynth/misc/reverb_please_snare.ds (+0/-60)
data/samples/drumsynth/misc/rimmy_noise.ds (+0/-61)
data/samples/drumsynth/misc/rimshot_1.ds (+0/-60)
data/samples/drumsynth/misc/rimshot_2.ds (+0/-60)
data/samples/drumsynth/misc/ring_fray_kick.ds (+0/-60)
data/samples/drumsynth/misc/ring_mod_drone_bd.ds (+0/-60)
data/samples/drumsynth/misc/rm.ds (+0/-58)
data/samples/drumsynth/misc/rubber_'82.ds (+0/-60)
data/samples/drumsynth/misc/rubbery_deep_house_kick.ds (+0/-60)
data/samples/drumsynth/misc/serious_bd.ds (+0/-60)
data/samples/drumsynth/misc/short_909.ds (+0/-61)
data/samples/drumsynth/misc/simon's_snare.ds (+0/-60)
data/samples/drumsynth/misc/simple-h.ds (+0/-57)
data/samples/drumsynth/misc/simple-k.ds (+0/-57)
data/samples/drumsynth/misc/simple_click_bd.ds (+0/-61)
data/samples/drumsynth/misc/skiwlz_snare.ds (+0/-61)
data/samples/drumsynth/misc/slepper_n_the_wilderness.ds (+0/-61)
data/samples/drumsynth/misc/sloppy_electric.ds (+0/-60)
data/samples/drumsynth/misc/smooth_rim.ds (+0/-61)
data/samples/drumsynth/misc/snappy_809.ds (+0/-60)
data/samples/drumsynth/misc/softsnare.ds (+0/-61)
data/samples/drumsynth/misc/sounding_kick.ds (+0/-61)
data/samples/drumsynth/misc/sounds_like_a_low_tom.ds (+0/-60)
data/samples/drumsynth/misc/special_man_bass_drum.ds (+0/-61)
data/samples/drumsynth/misc/splatter.ds (+0/-60)
data/samples/drumsynth/misc/sticky_q_kick.ds (+0/-60)
data/samples/drumsynth/misc/stiffy_snare.ds (+0/-60)
data/samples/drumsynth/misc/sweet_tight_snare.ds (+0/-61)
data/samples/drumsynth/misc/tchak_snare.ds (+0/-61)
data/samples/drumsynth/misc/terror_n_yr_hood_snare.ds (+0/-60)
data/samples/drumsynth/misc/test.ds (+0/-61)
data/samples/drumsynth/misc/think_bd.ds (+0/-60)
data/samples/drumsynth/misc/think_sn_1.ds (+0/-60)
data/samples/drumsynth/misc/think_sn_2.ds (+0/-60)
data/samples/drumsynth/misc/this_snare_spells_electronic.ds (+0/-61)
data/samples/drumsynth/misc/tomita_clip.ds (+0/-60)
data/samples/drumsynth/misc/tone.ds (+0/-58)
data/samples/drumsynth/misc/tone_deg.ds (+0/-58)
data/samples/drumsynth/misc/tone_snare.ds (+0/-60)
data/samples/drumsynth/misc/transient_snare.ds (+0/-60)
data/samples/drumsynth/misc/trashyovertones.ds (+0/-61)
data/samples/drumsynth/misc/type_snare.ds (+0/-61)
data/samples/drumsynth/misc/ultra_electro_bd.ds (+0/-61)
data/samples/drumsynth/misc/usgae_bd.ds (+0/-61)
data/samples/drumsynth/misc/verby_soundin_808.ds (+0/-61)
data/samples/drumsynth/misc/very_basic_snare.ds (+0/-60)
data/samples/drumsynth/misc/verylong.ds (+0/-58)
data/samples/drumsynth/misc/warm_deep_house_kick.ds (+0/-60)
data/samples/drumsynth/misc/warm_digi_808_click.ds (+0/-61)
data/samples/drumsynth/misc/whoa_bd.ds (+0/-61)
data/samples/drumsynth/misc/wobble_wobble.ds (+0/-61)
data/samples/drumsynth/misc/wobbly_thumb_bd.ds (+0/-61)
data/samples/drumsynth/misc/yet_another_electric_bass_drum.ds (+0/-61)
data/samples/drumsynth/misc/yr_808_hummer.ds (+0/-60)
data/samples/drumsynth/misc/zoom#4.ds (+0/-58)
data/samples/drumsynth/misc_bass/a_day_in_the_noise.ds (+0/-61)
data/samples/drumsynth/misc_bass/bumble_bass.ds (+0/-61)
data/samples/drumsynth/misc_bass/depth_bass_drum.ds (+0/-61)
data/samples/drumsynth/misc_bass/dirty_a.ds (+0/-61)
data/samples/drumsynth/misc_bass/filter_idea_bd.ds (+0/-60)
data/samples/drumsynth/misc_bass/jarre_bass_drum.ds (+0/-61)
data/samples/drumsynth/misc_bass/jungle_laser.ds (+0/-60)
data/samples/drumsynth/misc_bass/low_end_hum.ds (+0/-61)
data/samples/drumsynth/misc_bass/melodictone.ds (+0/-61)
data/samples/drumsynth/misc_bass/metal_bass.ds (+0/-61)
data/samples/drumsynth/misc_bass/more_bass.ds (+0/-61)
data/samples/drumsynth/misc_bass/more_bass_2.ds (+0/-61)
data/samples/drumsynth/misc_bass/rubber.ds (+0/-61)
data/samples/drumsynth/misc_bass/smooth_bass.ds (+0/-61)
data/samples/drumsynth/misc_bass/solid.ds (+0/-61)
data/samples/drumsynth/misc_bass/synthbass.ds (+0/-61)
data/samples/drumsynth/misc_bass/the_funk.ds (+0/-61)
data/samples/drumsynth/misc_bass/warm_bass.ds (+0/-61)
data/samples/drumsynth/misc_claps/big_beat_clap.ds (+0/-60)
data/samples/drumsynth/misc_claps/bright_clap.ds (+0/-61)
data/samples/drumsynth/misc_claps/clap.ds (+0/-61)
data/samples/drumsynth/misc_claps/clap2.ds (+0/-61)
data/samples/drumsynth/misc_claps/clap_layer.ds (+0/-61)
data/samples/drumsynth/misc_claps/classic_clap.ds (+0/-60)
data/samples/drumsynth/misc_claps/electro_clap.ds (+0/-60)
data/samples/drumsynth/misc_claps/filter_clappy.ds (+0/-61)
data/samples/drumsynth/misc_claps/pitch_clap.ds (+0/-60)
data/samples/drumsynth/misc_claps/pitch_clap_2.ds (+0/-60)
data/samples/drumsynth/misc_claps/shutter_clap.ds (+0/-60)
data/samples/drumsynth/misc_claps/u_don't_kno.ds (+0/-60)
data/samples/drumsynth/misc_electro/'lectro_spliff.ds (+0/-60)
data/samples/drumsynth/misc_electro/a_round_thing.ds (+0/-61)
data/samples/drumsynth/misc_electro/applied_engineering.ds (+0/-61)
data/samples/drumsynth/misc_electro/atmosphere_of_space.ds (+0/-61)
data/samples/drumsynth/misc_electro/bottle_bill_fx.ds (+0/-61)
data/samples/drumsynth/misc_electro/casio_poppin.ds (+0/-61)
data/samples/drumsynth/misc_electro/category.ds (+0/-61)
data/samples/drumsynth/misc_electro/cheap_fx.ds (+0/-60)
data/samples/drumsynth/misc_electro/chrip_q.ds (+0/-61)
data/samples/drumsynth/misc_electro/clean_rock_bd.ds (+0/-61)
data/samples/drumsynth/misc_electro/cold_shot.ds (+0/-61)
data/samples/drumsynth/misc_electro/confusion.ds (+0/-61)
data/samples/drumsynth/misc_electro/cymbal_madness.ds (+0/-61)
data/samples/drumsynth/misc_electro/depth_fx.ds (+0/-61)
data/samples/drumsynth/misc_electro/dialed.ds (+0/-60)
data/samples/drumsynth/misc_electro/doom_bump.ds (+0/-61)
data/samples/drumsynth/misc_electro/electric_triangle.ds (+0/-61)
data/samples/drumsynth/misc_electro/electro_perc_long.ds (+0/-61)
data/samples/drumsynth/misc_electro/electro_perc_short.ds (+0/-61)
data/samples/drumsynth/misc_electro/electro_rim.ds (+0/-61)
data/samples/drumsynth/misc_electro/electro_rim_2.ds (+0/-61)
data/samples/drumsynth/misc_electro/electro_rim_3.ds (+0/-61)
data/samples/drumsynth/misc_electro/electro_squeek.ds (+0/-60)
data/samples/drumsynth/misc_electro/fuzzy_q_bd.ds (+0/-61)
data/samples/drumsynth/misc_electro/g_question.ds (+0/-61)
data/samples/drumsynth/misc_electro/general_obscurity.ds (+0/-61)
data/samples/drumsynth/misc_electro/hard_bork.ds (+0/-61)
data/samples/drumsynth/misc_electro/hello_q.ds (+0/-61)
data/samples/drumsynth/misc_electro/just_the_tweet.ds (+0/-60)
data/samples/drumsynth/misc_electro/lo-fi_house_c.ds (+0/-61)
data/samples/drumsynth/misc_electro/lo-fi_metal.ds (+0/-60)
data/samples/drumsynth/misc_electro/lo-finess.ds (+0/-61)
data/samples/drumsynth/misc_electro/long_q_1.ds (+0/-60)
data/samples/drumsynth/misc_electro/long_q_2.ds (+0/-60)
data/samples/drumsynth/misc_electro/long_q_3.ds (+0/-60)
data/samples/drumsynth/misc_electro/long_quack.ds (+0/-61)
data/samples/drumsynth/misc_electro/low_bit_tom.ds (+0/-61)
data/samples/drumsynth/misc_electro/metal_noise_shot.ds (+0/-61)
data/samples/drumsynth/misc_electro/open_reso.ds (+0/-61)
data/samples/drumsynth/misc_electro/paging_the_jetsons.ds (+0/-60)
data/samples/drumsynth/misc_electro/pan.ds (+0/-60)
data/samples/drumsynth/misc_electro/pleasant_combo.ds (+0/-61)
data/samples/drumsynth/misc_electro/q-ziq_for_the_masses.ds (+0/-61)
data/samples/drumsynth/misc_electro/rich_bd.ds (+0/-61)
data/samples/drumsynth/misc_electro/ring.ds (+0/-61)
data/samples/drumsynth/misc_electro/ringing_sn.ds (+0/-61)
data/samples/drumsynth/misc_electro/rockin_electro_bass_drum.ds (+0/-61)
data/samples/drumsynth/misc_electro/shocking_kiss.ds (+0/-61)
data/samples/drumsynth/misc_electro/siren_sing.ds (+0/-61)
data/samples/drumsynth/misc_electro/slide_tom.ds (+0/-61)
data/samples/drumsynth/misc_electro/space_dynamic.ds (+0/-61)
data/samples/drumsynth/misc_electro/spaceness.ds (+0/-61)
data/samples/drumsynth/misc_electro/startling_one.ds (+0/-61)
data/samples/drumsynth/misc_electro/tone_percussion.ds (+0/-60)
data/samples/drumsynth/misc_electro/tweet.ds (+0/-60)
data/samples/drumsynth/misc_electro/wee_dog.ds (+0/-61)
data/samples/drumsynth/misc_electro/what_to_do_at_220.ds (+0/-61)
data/samples/drumsynth/misc_electro/who_hears_all_sound.ds (+0/-61)
data/samples/drumsynth/misc_electro/why_hit.ds (+0/-61)
data/samples/drumsynth/misc_electro/yr_tv_will_be_next.ds (+0/-61)
data/samples/drumsynth/misc_electro/zappy_bells.ds (+0/-61)
data/samples/drumsynth/misc_fx/2-bit_zone_drone.ds (+0/-61)
data/samples/drumsynth/misc_fx/2_bit_click.ds (+0/-61)
data/samples/drumsynth/misc_fx/a_blast.ds (+0/-61)
data/samples/drumsynth/misc_fx/across_the_universe.ds (+0/-61)
data/samples/drumsynth/misc_fx/alarm_3.ds (+0/-61)
data/samples/drumsynth/misc_fx/alarming_buzz.ds (+0/-61)
data/samples/drumsynth/misc_fx/alarming_buzz_2.ds (+0/-61)
data/samples/drumsynth/misc_fx/alien_curiousity.ds (+0/-60)
data/samples/drumsynth/misc_fx/ambient_backgroud.ds (+0/-60)
data/samples/drumsynth/misc_fx/click.ds (+0/-60)
data/samples/drumsynth/misc_fx/coo.ds (+0/-61)
data/samples/drumsynth/misc_fx/detonate.ds (+0/-61)
data/samples/drumsynth/misc_fx/dirty_transform.ds (+0/-60)
data/samples/drumsynth/misc_fx/dirty_transform_2.ds (+0/-60)
data/samples/drumsynth/misc_fx/distorion_oscilator.ds (+0/-60)
data/samples/drumsynth/misc_fx/electric_intro_to_a.ds (+0/-61)
data/samples/drumsynth/misc_fx/electric_waves_out_my_window.ds (+0/-61)
data/samples/drumsynth/misc_fx/elekperc1.ds (+0/-61)
data/samples/drumsynth/misc_fx/elekperc2.ds (+0/-60)
data/samples/drumsynth/misc_fx/end_of_broadcast_day.ds (+0/-61)
data/samples/drumsynth/misc_fx/entre.ds (+0/-61)
data/samples/drumsynth/misc_fx/experiment_1.ds (+0/-61)
data/samples/drumsynth/misc_fx/experiment_2_-_turn_off_the_tv.ds (+0/-61)
data/samples/drumsynth/misc_fx/experiment_3_-_the_transform.ds (+0/-61)
data/samples/drumsynth/misc_fx/experiment_4_-_clean.ds (+0/-61)
data/samples/drumsynth/misc_fx/f#m7_space_signal.ds (+0/-61)
data/samples/drumsynth/misc_fx/feedback.ds (+0/-61)
data/samples/drumsynth/misc_fx/flashy_wind.ds (+0/-61)
data/samples/drumsynth/misc_fx/flipper.ds (+0/-60)
data/samples/drumsynth/misc_fx/formant_techno.ds (+0/-61)
data/samples/drumsynth/misc_fx/frequency_revolution.ds (+0/-61)
data/samples/drumsynth/misc_fx/fried_food_for_dinner.ds (+0/-61)
data/samples/drumsynth/misc_fx/funky_stab.ds (+0/-61)
data/samples/drumsynth/misc_fx/future.ds (+0/-61)
data/samples/drumsynth/misc_fx/gmaj_lo-fi_chord.ds (+0/-61)
data/samples/drumsynth/misc_fx/gmaj_lo-fi_chord_2.ds (+0/-61)
data/samples/drumsynth/misc_fx/halt_variety.ds (+0/-61)
data/samples/drumsynth/misc_fx/hip-hop_stop.ds (+0/-61)
data/samples/drumsynth/misc_fx/hip-hop_stop_2.ds (+0/-61)
data/samples/drumsynth/misc_fx/hollow.ds (+0/-61)
data/samples/drumsynth/misc_fx/howdy_oil_barrel.ds (+0/-61)
data/samples/drumsynth/misc_fx/jaggies.ds (+0/-61)
data/samples/drumsynth/misc_fx/laser_gun_&_ricochet.ds (+0/-61)
data/samples/drumsynth/misc_fx/machine_drone.ds (+0/-61)
data/samples/drumsynth/misc_fx/metal_twist.ds (+0/-61)
data/samples/drumsynth/misc_fx/modular.ds (+0/-60)
data/samples/drumsynth/misc_fx/modular_fm_counterpoint.ds (+0/-60)
data/samples/drumsynth/misc_fx/multi-ping.ds (+0/-61)
data/samples/drumsynth/misc_fx/my_atari_memory.ds (+0/-61)
data/samples/drumsynth/misc_fx/new_sweep.ds (+0/-60)
data/samples/drumsynth/misc_fx/noise_filtering.ds (+0/-61)
data/samples/drumsynth/misc_fx/not_trying_too_hard.ds (+0/-61)
data/samples/drumsynth/misc_fx/numb.ds (+0/-61)
data/samples/drumsynth/misc_fx/obligatory_ufo_liftoff.ds (+0/-61)
data/samples/drumsynth/misc_fx/obligatory_ufo_liftoff_2.ds (+0/-61)
data/samples/drumsynth/misc_fx/oom_paa.ds (+0/-61)
data/samples/drumsynth/misc_fx/oom_pulse.ds (+0/-61)
data/samples/drumsynth/misc_fx/owwww.ds (+0/-61)
data/samples/drumsynth/misc_fx/playing_in_water.ds (+0/-61)
data/samples/drumsynth/misc_fx/plot_thickens_2.ds (+0/-61)
data/samples/drumsynth/misc_fx/punch_flange.ds (+0/-60)
data/samples/drumsynth/misc_fx/punch_flange_2.ds (+0/-60)
data/samples/drumsynth/misc_fx/q_zone_drone.ds (+0/-61)
data/samples/drumsynth/misc_fx/recption.ds (+0/-61)
data/samples/drumsynth/misc_fx/sci-fi.ds (+0/-61)
data/samples/drumsynth/misc_fx/sci-fi_door_open.ds (+0/-61)
data/samples/drumsynth/misc_fx/sickly_wineglass.ds (+0/-61)
data/samples/drumsynth/misc_fx/sign_off.ds (+0/-61)
data/samples/drumsynth/misc_fx/slow_moving_traffic.ds (+0/-61)
data/samples/drumsynth/misc_fx/synthetic_dive.ds (+0/-61)
data/samples/drumsynth/misc_fx/synthetic_dive_crust.ds (+0/-61)
data/samples/drumsynth/misc_fx/teeth.ds (+0/-61)
data/samples/drumsynth/misc_fx/the_plot_thickens.ds (+0/-61)
data/samples/drumsynth/misc_fx/the_tweek.ds (+0/-60)
data/samples/drumsynth/misc_fx/transportive.ds (+0/-61)
data/samples/drumsynth/misc_fx/ufo_buzz.ds (+0/-61)
data/samples/drumsynth/misc_fx/ufo_buzz_2.ds (+0/-61)
data/samples/drumsynth/misc_fx/what_time_is_it.ds (+0/-61)
data/samples/drumsynth/misc_fx/wipeout.ds (+0/-61)
data/samples/drumsynth/misc_fx/wooo.ds (+0/-61)
data/samples/drumsynth/misc_fx/yeah_hit.ds (+0/-61)
data/samples/drumsynth/misc_fx/yeah_hit_dry.ds (+0/-61)
data/samples/drumsynth/misc_fx/zipper.ds (+0/-61)
data/samples/drumsynth/misc_hats/amen_ride.ds (+0/-61)
data/samples/drumsynth/misc_hats/band_pass_cymbal.ds (+0/-61)
data/samples/drumsynth/misc_hats/basic_hh.ds (+0/-60)
data/samples/drumsynth/misc_hats/bright_808_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/bright_808_hat_2.ds (+0/-61)
data/samples/drumsynth/misc_hats/bright_808_hat_3.ds (+0/-61)
data/samples/drumsynth/misc_hats/bring_me_out.ds (+0/-61)
data/samples/drumsynth/misc_hats/clicky_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/close_ride.ds (+0/-61)
data/samples/drumsynth/misc_hats/default_hi-hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/drama_hat.ds (+0/-60)
data/samples/drumsynth/misc_hats/drama_hat_2.ds (+0/-60)
data/samples/drumsynth/misc_hats/dusty_simple_hh.ds (+0/-61)
data/samples/drumsynth/misc_hats/dusty_simple_oh.ds (+0/-61)
data/samples/drumsynth/misc_hats/electro_hh.ds (+0/-61)
data/samples/drumsynth/misc_hats/electrometallic_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/errie_ride.ds (+0/-61)
data/samples/drumsynth/misc_hats/fedora_hat.ds (+0/-60)
data/samples/drumsynth/misc_hats/feelin'_high_hat_1.ds (+0/-60)
data/samples/drumsynth/misc_hats/feelin'_high_hat_2.ds (+0/-60)
data/samples/drumsynth/misc_hats/feelin'_high_hat_3.ds (+0/-60)
data/samples/drumsynth/misc_hats/feelin'_open_high_hat.ds (+0/-60)
data/samples/drumsynth/misc_hats/flat_cymbal.ds (+0/-61)
data/samples/drumsynth/misc_hats/get_out.ds (+0/-61)
data/samples/drumsynth/misc_hats/hardhat.ds (+0/-61)
data/samples/drumsynth/misc_hats/hardhat_2.ds (+0/-61)
data/samples/drumsynth/misc_hats/hardly_hh.ds (+0/-61)
data/samples/drumsynth/misc_hats/heavy_electrihat.ds (+0/-61)
data/samples/drumsynth/misc_hats/hh.ds (+0/-61)
data/samples/drumsynth/misc_hats/hip_overtone_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/large_open_hh.ds (+0/-61)
data/samples/drumsynth/misc_hats/lighthat.ds (+0/-61)
data/samples/drumsynth/misc_hats/little_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/live_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/live_sound_hh.ds (+0/-61)
data/samples/drumsynth/misc_hats/live_sound_oh.ds (+0/-61)
data/samples/drumsynth/misc_hats/loaded_hat.ds (+0/-60)
data/samples/drumsynth/misc_hats/loaded_open_hat.ds (+0/-60)
data/samples/drumsynth/misc_hats/oh_so_high_hat.ds (+0/-60)
data/samples/drumsynth/misc_hats/oil_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/pedal_hh.ds (+0/-61)
data/samples/drumsynth/misc_hats/q_ride.ds (+0/-61)
data/samples/drumsynth/misc_hats/q_ride_2.ds (+0/-61)
data/samples/drumsynth/misc_hats/sandy_ride.ds (+0/-61)
data/samples/drumsynth/misc_hats/scratchy_hh.ds (+0/-61)
data/samples/drumsynth/misc_hats/shaker_ride.ds (+0/-61)
data/samples/drumsynth/misc_hats/shaker_ride_long.ds (+0/-61)
data/samples/drumsynth/misc_hats/simple_ride.ds (+0/-61)
data/samples/drumsynth/misc_hats/sleepy_1.ds (+0/-61)
data/samples/drumsynth/misc_hats/sleepy_2.ds (+0/-61)
data/samples/drumsynth/misc_hats/sleepy_ride.ds (+0/-60)
data/samples/drumsynth/misc_hats/sleepy_ride_2.ds (+0/-60)
data/samples/drumsynth/misc_hats/slick_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/slick_hat_compressd_open.ds (+0/-61)
data/samples/drumsynth/misc_hats/slick_hat_half_open.ds (+0/-61)
data/samples/drumsynth/misc_hats/slick_hat_open.ds (+0/-61)
data/samples/drumsynth/misc_hats/slide_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/softie_lo-fi_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/softie_lo-fi_open_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/softie_lo-fi_open_hat_2.ds (+0/-61)
data/samples/drumsynth/misc_hats/squeeze_me_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/squeeze_me_open_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/stack_hhh.ds (+0/-61)
data/samples/drumsynth/misc_hats/starry_hh.ds (+0/-61)
data/samples/drumsynth/misc_hats/starry_short_oh.ds (+0/-61)
data/samples/drumsynth/misc_hats/static_tone_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/tarp_hh.ds (+0/-61)
data/samples/drumsynth/misc_hats/the_sting_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/the_sting_hat_2.ds (+0/-61)
data/samples/drumsynth/misc_hats/the_sting_open_hat.ds (+0/-61)
data/samples/drumsynth/misc_hats/threshold_noise.ds (+0/-61)
data/samples/drumsynth/misc_hats/threshold_noise_open.ds (+0/-61)
data/samples/drumsynth/misc_hats/touch_me_hat.ds (+0/-61)
data/samples/drumsynth/misc_perc/ambient_tom.ds (+0/-61)
data/samples/drumsynth/misc_perc/bell.ds (+0/-61)
data/samples/drumsynth/misc_perc/bell_rim.ds (+0/-60)
data/samples/drumsynth/misc_perc/clav.ds (+0/-61)
data/samples/drumsynth/misc_perc/clav_2.ds (+0/-61)
data/samples/drumsynth/misc_perc/deep_cowbell.ds (+0/-61)
data/samples/drumsynth/misc_perc/dist_tom.ds (+0/-61)
data/samples/drumsynth/misc_perc/dist_tom_2.ds (+0/-61)
data/samples/drumsynth/misc_perc/door_knock.ds (+0/-61)
data/samples/drumsynth/misc_perc/electric_clav.ds (+0/-61)
data/samples/drumsynth/misc_perc/feel_me_clinky.ds (+0/-61)
data/samples/drumsynth/misc_perc/fidelity_faction_tom.ds (+0/-61)
data/samples/drumsynth/misc_perc/funk_box_perc_1.ds (+0/-61)
data/samples/drumsynth/misc_perc/funk_box_perc_2.ds (+0/-61)
data/samples/drumsynth/misc_perc/funkay_timbale.ds (+0/-61)
data/samples/drumsynth/misc_perc/give_it_to_me.ds (+0/-60)
data/samples/drumsynth/misc_perc/hammond_cowbell.ds (+0/-60)
data/samples/drumsynth/misc_perc/hollow_wood.ds (+0/-61)
data/samples/drumsynth/misc_perc/hollow_wood_2.ds (+0/-61)
data/samples/drumsynth/misc_perc/it's_the_simple_things.ds (+0/-61)
data/samples/drumsynth/misc_perc/layered_sleigh_bell.ds (+0/-60)
data/samples/drumsynth/misc_perc/light_tamb_1.ds (+0/-60)
data/samples/drumsynth/misc_perc/light_tamb_2.ds (+0/-60)
data/samples/drumsynth/misc_perc/light_tamb_3.ds (+0/-60)
data/samples/drumsynth/misc_perc/like_a_tabla_1.ds (+0/-61)
data/samples/drumsynth/misc_perc/like_a_tabla_2.ds (+0/-61)
data/samples/drumsynth/misc_perc/like_a_tabla_3.ds (+0/-61)
data/samples/drumsynth/misc_perc/limited_shaker.ds (+0/-61)
data/samples/drumsynth/misc_perc/lo-fi_tamb.ds (+0/-60)
data/samples/drumsynth/misc_perc/low_key_tom.ds (+0/-61)
data/samples/drumsynth/misc_perc/low_ping.ds (+0/-61)
data/samples/drumsynth/misc_perc/mellow_shake.ds (+0/-60)
data/samples/drumsynth/misc_perc/metallic_node.ds (+0/-60)
data/samples/drumsynth/misc_perc/mild_tamb.ds (+0/-60)
data/samples/drumsynth/misc_perc/ol'_skool_shake.ds (+0/-60)
data/samples/drumsynth/misc_perc/poppy.ds (+0/-60)
data/samples/drumsynth/misc_perc/q_tom.ds (+0/-60)
data/samples/drumsynth/misc_perc/resonant_knock.ds (+0/-61)
data/samples/drumsynth/misc_perc/ringmod_rim.ds (+0/-60)
data/samples/drumsynth/misc_perc/ringmod_rim_2.ds (+0/-60)
data/samples/drumsynth/misc_perc/shaaka.ds (+0/-61)
data/samples/drumsynth/misc_perc/shaaka_2.ds (+0/-61)
data/samples/drumsynth/misc_perc/short_tom.ds (+0/-60)
data/samples/drumsynth/misc_perc/short_tom_1.ds (+0/-60)
data/samples/drumsynth/misc_perc/short_tom_2.ds (+0/-60)
data/samples/drumsynth/misc_perc/sickly_cowbell.ds (+0/-60)
data/samples/drumsynth/misc_perc/slinky_tamb.ds (+0/-60)
data/samples/drumsynth/misc_perc/super_tom.ds (+0/-61)
data/samples/drumsynth/misc_perc/sweetness_shaker.ds (+0/-61)
data/samples/drumsynth/misc_perc/timbale_sound.ds (+0/-61)
data/samples/drumsynth/misc_perc/tom.ds (+0/-61)
data/samples/drumsynth/misc_perc/tom_tone.ds (+0/-60)
data/samples/drumsynth/misc_perc/tommy.ds (+0/-60)
data/samples/drumsynth/misc_perc/tone_tom.ds (+0/-60)
data/samples/drumsynth/misc_perc/torn_tweeter.ds (+0/-61)
data/samples/drumsynth/misc_perc/tweety_cowbell.ds (+0/-61)
data/samples/drumsynth/misc_perc/tweety_cowbell_2.ds (+0/-61)
data/samples/drumsynth/misc_perc/type_noise.ds (+0/-61)
data/samples/drumsynth/misc_perc/very_high_clav.ds (+0/-61)
data/samples/drumsynth/misc_perc/video_game_clip.ds (+0/-61)
data/samples/drumsynth/misc_perc/weird_1.ds (+0/-61)
data/samples/drumsynth/misc_perc/wood_and_metal.ds (+0/-61)
data/samples/drumsynth/misc_synth/average_rock.ds (+0/-61)
data/samples/drumsynth/misc_synth/c_maj_chord.ds (+0/-61)
data/samples/drumsynth/misc_synth/casio_piano_c.ds (+0/-61)
data/samples/drumsynth/misc_synth/chorded_perc.ds (+0/-61)
data/samples/drumsynth/misc_synth/consumer_fm.ds (+0/-60)
data/samples/drumsynth/misc_synth/dark_and_sweet_fm.ds (+0/-61)
data/samples/drumsynth/misc_synth/dist_high_c.ds (+0/-61)
data/samples/drumsynth/misc_synth/eno's_lift.ds (+0/-60)
data/samples/drumsynth/misc_synth/eno's_pad.ds (+0/-60)
data/samples/drumsynth/misc_synth/eno's_ride.ds (+0/-60)
data/samples/drumsynth/misc_synth/flat_square_c.ds (+0/-61)
data/samples/drumsynth/misc_synth/fm_c_bass_burst.ds (+0/-61)
data/samples/drumsynth/misc_synth/fur_strings.ds (+0/-61)
data/samples/drumsynth/misc_synth/fur_strings_2.ds (+0/-61)
data/samples/drumsynth/misc_synth/it's_the_music_tom_c.ds (+0/-61)
data/samples/drumsynth/misc_synth/layered_bass_synth_c.ds (+0/-61)
data/samples/drumsynth/misc_synth/my_red_hot_guitar.ds (+0/-61)
data/samples/drumsynth/misc_synth/raver_organ.ds (+0/-61)
data/samples/drumsynth/misc_synth/strong_c_dub_bass.ds (+0/-61)
data/samples/drumsynth/misc_synth/sync_drift.ds (+0/-61)
data/samples/drumsynth/misc_synth/sync_man.ds (+0/-61)
data/samples/drumsynth/misc_synth/that_house_chord_cm.ds (+0/-61)
data/samples/drumsynth/misc_synth/vibrato_pad.ds (+0/-60)
data/samples/drumsynth/misc_synth/who_loves_ya,_baby.ds (+0/-61)
data/samples/drumsynth/misc_synth/wowmelodictone.ds (+0/-61)
data/samples/drumsynth/r_n_b/Hat_O.ds (+0/-58)
data/samples/drumsynth/r_n_b/S_hollow.ds (+0/-58)
data/samples/drumsynth/r_n_b/clapfilt.ds (+0/-58)
data/samples/drumsynth/r_n_b/hat.ds (+0/-58)
data/samples/drumsynth/r_n_b/hat_rattle.ds (+0/-60)
data/samples/drumsynth/r_n_b/k_hard.ds (+0/-58)
data/samples/drumsynth/r_n_b/k_muffle.ds (+0/-58)
data/samples/drumsynth/r_n_b/k_soft.ds (+0/-58)
data/samples/drumsynth/r_n_b/old_kik.ds (+0/-60)
data/samples/drumsynth/r_n_b/popclap.ds (+0/-60)
data/samples/drumsynth/r_n_b/popsnare.ds (+0/-60)
data/samples/drumsynth/r_n_b/s_pitch.ds (+0/-58)
data/samples/drumsynth/r_n_b/s_spit.ds (+0/-58)
data/samples/drumsynth/r_n_b/snare&hat.ds (+0/-58)
data/samples/drumsynth/r_n_b/x_backwd.ds (+0/-58)
data/samples/drumsynth/tr606/TR606_Cymbal.ds (+0/-61)
data/samples/drumsynth/tr606/TR606_Hat_C.ds (+0/-61)
data/samples/drumsynth/tr606/TR606_Hat_O.ds (+0/-61)
data/samples/drumsynth/tr606/TR606_Kick.ds (+0/-61)
data/samples/drumsynth/tr606/TR606_Snare.ds (+0/-61)
data/samples/drumsynth/tr606/TR606_Tom_H.ds (+0/-61)
data/samples/drumsynth/tr606/TR606_Tom_L.ds (+0/-61)
data/samples/drumsynth/tr77/Tr77_cui1.ds (+0/-61)
data/samples/drumsynth/tr77/Tr77_cui2.ds (+0/-61)
data/samples/drumsynth/tr77/Tr77_cym.ds (+0/-60)
data/samples/drumsynth/tr77/Tr77_hat.ds (+0/-57)
data/samples/drumsynth/tr77/Tr77_kick.ds (+0/-58)
data/samples/drumsynth/tr77/Tr77_snare.ds (+0/-60)
data/samples/drumsynth/tr77/Tr77_tom1.ds (+0/-57)
data/samples/drumsynth/tr77/Tr77_tom2.ds (+0/-57)
data/samples/drumsynth/tr808/Clave.ds (+0/-60)
data/samples/drumsynth/tr808/Cowbell.ds (+0/-60)
data/samples/drumsynth/tr808/Handclap.ds (+0/-60)
data/samples/drumsynth/tr808/Hat_c.ds (+0/-60)
data/samples/drumsynth/tr808/Hat_o.ds (+0/-60)
data/samples/drumsynth/tr808/Kick.ds (+0/-34)
data/samples/drumsynth/tr808/Kickhard.ds (+0/-58)
data/samples/drumsynth/tr808/Kicklong.ds (+0/-60)
data/samples/drumsynth/tr808/Ride.ds (+0/-60)
data/samples/drumsynth/tr808/Rimshot.ds (+0/-60)
data/samples/drumsynth/tr808/Snare.ds (+0/-60)
data/samples/drumsynth/tr808/Snr_snap.ds (+0/-60)
data/samples/drumsynth/tr808/Tom_hi.ds (+0/-60)
data/samples/drumsynth/tr808/Tom_lo.ds (+0/-60)
data/samples/drumsynth/tr808/Tom_mid.ds (+0/-60)
data/samples/drumsynth/tr909/Clap.ds (+0/-34)
data/samples/drumsynth/tr909/Hat-c.ds (+0/-34)
data/samples/drumsynth/tr909/Hat-c2.ds (+0/-58)
data/samples/drumsynth/tr909/Hat-o.ds (+0/-57)
data/samples/drumsynth/tr909/Hat-o2.ds (+0/-58)
data/samples/drumsynth/tr909/Kick.ds (+0/-57)
data/samples/drumsynth/tr909/Kick_1.ds (+0/-60)
data/samples/drumsynth/tr909/Kick_2.ds (+0/-58)
data/samples/drumsynth/tr909/Kick_3.ds (+0/-60)
data/samples/drumsynth/tr909/Snare.ds (+0/-60)
data/samples/drumsynth/tr909/Snare2.ds (+0/-60)
data/samples/drumsynth/tr909/TR909_Clap.ds (+0/-34)
data/samples/drumsynth/tr909/TR909_Kick.ds (+0/-60)
data/themes/CMakeLists.txt (+0/-4)
data/themes/default/style.css (+0/-232)
debian/changelog (+79/-0)
debian/compat (+1/-1)
debian/control (+28/-3)
debian/lmms-common.install (+1/-1)
debian/lmms-common.postinst (+0/-8)
debian/lmms-common.postrm (+0/-6)
debian/lmms.install (+5/-1)
debian/lmms.lintian-overrides (+3/-0)
debian/lmms.xpm (+226/-0)
debian/menu (+1/-1)
debian/patches/AutomatableModel-always-fit-value-from-linked-model.patch (+33/-0)
debian/patches/Fix-broken-command-line-rendering.-Should-always-che.patch (+26/-0)
debian/patches/fix-crash-on-close.patch (+519/-0)
debian/patches/lib64-builddir.patch (+0/-16)
debian/patches/series (+3/-1)
debian/rules (+10/-100)
doc/CMakeLists.txt (+17/-0)
doc/Doxyfile.in (+2311/-0)
include/AudioAlsa.h (+0/-99)
include/AudioDevice.h (+0/-183)
include/AudioDummy.h (+0/-121)
include/AudioFileDevice.h (+0/-114)
include/AudioFileOgg.h (+0/-107)
include/AudioFileWave.h (+0/-84)
include/AudioJack.h (+0/-128)
include/AudioOss.h (+0/-83)
include/AudioPort.h (+0/-143)
include/AudioPortAudio.h (+0/-152)
include/AudioPulseAudio.h (+0/-90)
include/AudioSampleRecorder.h (+0/-59)
include/AudioSdl.h (+0/-91)
include/AutomatableModel.h (+0/-340)
include/AutomatableModelView.h (+0/-142)
include/AutomationEditor.h (+0/-251)
include/AutomationPattern.h (+0/-126)
include/AutomationPatternView.h (+0/-72)
include/AutomationTrack.h (+0/-74)
include/Clipboard.h (+0/-53)
include/ComboBoxModel.h (+0/-93)
include/Controller.h (+0/-157)
include/ControllerConnection.h (+0/-117)
include/ControllerConnectionDialog.h (+0/-101)
include/ControllerDialog.h (+0/-54)
include/ControllerRackView.h (+0/-76)
include/ControllerView.h (+0/-87)
include/DataFile.h (+112/-0)
include/DetuningHelper.h (+0/-62)
include/DspEffectLibrary.h (+352/-0)
include/DummyEffect.h (+0/-112)
include/DummyInstrument.h (+0/-69)
include/DummyPlugin.h (+0/-68)
include/Effect.h (+0/-228)
include/EffectChain.h (+0/-84)
include/EffectControlDialog.h (+0/-55)
include/EffectControls.h (+0/-76)
include/EffectRackView.h (+0/-86)
include/EffectSelectDialog.h (+0/-70)
include/EffectView.h (+0/-93)
include/EnvelopeAndLfoParameters.h (+0/-183)
include/EnvelopeAndLfoView.h (+0/-96)
include/FileDialog.h (+44/-0)
include/FxLine.h (+66/-0)
include/FxMixer.h (+0/-100)
include/FxMixerView.h (+0/-84)
include/ImportFilter.h (+0/-106)
include/InlineAutomation.h (+0/-80)
include/Instrument.h (+0/-140)
include/InstrumentFunctionViews.h (+0/-92)
include/InstrumentFunctions.h (+0/-211)
include/InstrumentMidiIOView.h (+0/-64)
include/InstrumentPlayHandle.h (+0/-71)
include/InstrumentSoundShaping.h (+0/-88)
include/InstrumentSoundShapingView.h (+0/-64)
include/InstrumentTrack.h (+0/-416)
include/InstrumentView.h (+0/-58)
include/JournallingObject.h (+0/-185)
include/LadspaBase.h (+0/-85)
include/LadspaControl.h (+0/-109)
include/LadspaControlView.h (+0/-48)
include/LcdSpinBox.h (+88/-0)
include/LcdWidget.h (+87/-0)
include/LfoController.h (+0/-112)
include/LmmsStyle.h (+97/-0)
include/MainWindow.h (+0/-186)
include/MeterDialog.h (+0/-51)
include/MeterModel.h (+0/-65)
include/MicroTimer.h (+0/-70)
include/Midi.h (+140/-0)
include/MidiAlsaRaw.h (+0/-90)
include/MidiAlsaSeq.h (+0/-161)
include/MidiClient.h (+0/-200)
include/MidiController.h (+0/-84)
include/MidiDummy.h (+0/-81)
include/MidiEvent.h (+210/-0)
include/MidiEventProcessor.h (+0/-52)
include/MidiOss.h (+0/-86)
include/MidiPort.h (+0/-184)
include/MidiPortMenu.h (+0/-61)
include/MidiTime.h (+153/-0)
include/MidiWinMM.h (+0/-155)
include/MixHelpers.h (+55/-0)
include/Mixer.h (+474/-0)
include/MixerWorkerThread.h (+118/-0)
include/Model.h (+0/-92)
include/ModelView.h (+0/-84)
include/NotePlayHandle.h (+291/-0)
include/Oscillator.h (+0/-215)
include/PeakController.h (+0/-91)
include/Piano.h (+0/-63)
include/PianoRoll.h (+354/-0)
include/PianoView.h (+0/-89)
include/Pitch.h (+38/-0)
include/PlayHandle.h (+119/-0)
include/Plugin.h (+0/-204)
include/PluginView.h (+0/-46)
include/PresetPreviewPlayHandle.h (+61/-0)
include/ProjectJournal.h (+0/-106)
include/ProjectRenderer.h (+0/-118)
include/RemotePlugin.h (+0/-1225)
include/SampleBuffer.h (+277/-0)
include/SamplePlayHandle.h (+97/-0)
include/SampleRecordHandle.h (+72/-0)
include/SampleTrack.h (+184/-0)
include/SendButtonIndicator.h (+32/-0)
include/SerializingObject.h (+0/-100)
include/SideBar.h (+0/-57)
include/SideBarWidget.h (+0/-82)
include/SongEditor.h (+140/-0)
include/SweepOscillator.h (+0/-73)
include/TempoSyncKnob.h (+0/-83)
include/TempoSyncKnobModel.h (+0/-107)
include/ThreadableJob.h (+84/-0)
include/TimeDisplayWidget.h (+70/-0)
include/ToolPlugin.h (+0/-45)
include/ToolPluginView.h (+0/-41)
include/TrackContainer.h (+124/-0)
include/TrackContainerView.h (+187/-0)
include/VST_sync_shm.h (+0/-58)
include/VersionedSaveDialog.h (+53/-0)
include/VstSyncController.h (+99/-0)
include/VstSyncData.h (+61/-0)
include/about_dialog.h (+0/-43)
include/aeffectx.h (+0/-304)
include/atomic_int.h (+0/-103)
include/automatable_button.h (+0/-109)
include/automatable_slider.h (+0/-77)
include/base64.h (+0/-58)
include/basic_filters.h (+0/-674)
include/bb_editor.h (+0/-72)
include/bb_track.h (+0/-188)
include/bb_track_container.h (+0/-83)
include/caption_menu.h (+0/-46)
include/combobox.h (+0/-77)
include/config_mgr.h (+0/-222)
include/cpuload_widget.h (+0/-67)
include/custom_events.h (+0/-46)
include/debug.h (+0/-40)
include/drumsynth.h (+0/-51)
include/effect_lib.h (+0/-452)
include/embed.h (+0/-130)
include/endian_handling.h (+0/-54)
include/engine.h (+0/-205)
include/export.h (+0/-47)
include/export_project_dialog.h (+0/-74)
include/fade_button.h (+0/-64)
include/fader.h (+0/-119)
include/fft_helpers.h (+0/-85)
include/fifo_buffer.h (+0/-88)
include/file_browser.h (+0/-238)
include/graph.h (+0/-175)
include/group_box.h (+0/-70)
include/gui_templates.h (+0/-68)
include/interpolation.h (+0/-94)
include/knob.h (+0/-170)
include/ladspa.h (+0/-603)
include/ladspa_2_lmms.h (+0/-78)
include/ladspa_manager.h (+0/-338)
include/lcd_spinbox.h (+0/-104)
include/led_checkbox.h (+0/-71)
include/lmms_basics.h (+0/-151)
include/lmms_constants.h (+0/-33)
include/lmms_math.h (+0/-110)
include/lmms_style.h (+0/-59)
include/midi.h (+0/-258)
include/midi_time.h (+0/-155)
include/mixer.h (+0/-472)
include/mmp.h (+0/-111)
include/note.h (+0/-249)
include/note_play_handle.h (+0/-280)
include/nstate_button.h (+0/-75)
include/panning.h (+0/-53)
include/panning_constants.h (+0/-34)
include/pattern.h (+0/-282)
include/pch.h (+0/-36)
include/piano_roll.h (+0/-351)
include/pixmap_button.h (+0/-64)
include/play_handle.h (+0/-104)
include/plugin_browser.h (+0/-87)
include/preset_preview_play_handle.h (+0/-63)
include/project_notes.h (+0/-91)
include/project_version.h (+0/-56)
include/rename_dialog.h (+0/-61)
include/rubberband.h (+0/-94)
include/sample_buffer.h (+0/-262)
include/sample_play_handle.h (+0/-100)
include/sample_record_handle.h (+0/-73)
include/sample_track.h (+0/-186)
include/setup_dialog.h (+0/-180)
include/shared_object.h (+0/-80)
include/song.h (+0/-348)
include/song_editor.h (+0/-138)
include/string_pair_drag.h (+0/-58)
include/surround_area.h (+0/-118)
include/tab_bar.h (+0/-88)
include/tab_button.h (+0/-66)
include/tab_widget.h (+0/-72)
include/templates.h (+0/-39)
include/text_float.h (+0/-82)
include/timeline.h (+0/-192)
include/tool_button.h (+0/-82)
include/tooltip.h (+0/-42)
include/track.h (+0/-588)
include/track_container.h (+0/-124)
include/track_container_view.h (+0/-190)
include/track_label_button.h (+0/-61)
include/transformable_auto_model.h (+0/-91)
include/update_event.h (+0/-44)
include/versioninfo.h (+29/-0)
include/visualization_widget.h (+0/-69)
include/volume.h (+0/-53)
lmms.1 (+0/-69)
lmms.rc.in (+0/-26)
lmms.spec.in (+0/-216)
lmmsconfig.h.in (+0/-63)
lmmsversion.h.in (+0/-6)
plugins/Amplifier/Amplifier.cpp (+125/-0)
plugins/Amplifier/Amplifier.h (+54/-0)
plugins/Amplifier/AmplifierControlDialog.cpp (+69/-0)
plugins/Amplifier/AmplifierControlDialog.h (+45/-0)
plugins/Amplifier/AmplifierControls.cpp (+82/-0)
plugins/Amplifier/AmplifierControls.h (+79/-0)
plugins/Amplifier/CMakeLists.txt (+3/-0)
plugins/BassBooster/BassBooster.cpp (+107/-0)
plugins/BassBooster/BassBooster.h (+56/-0)
plugins/BassBooster/BassBoosterControlDialog.cpp (+70/-0)
plugins/BassBooster/BassBoosterControlDialog.h (+44/-0)
plugins/BassBooster/BassBoosterControls.cpp (+102/-0)
plugins/BassBooster/BassBoosterControls.h (+79/-0)
plugins/BassBooster/CMakeLists.txt (+3/-0)
plugins/CMakeLists.txt (+0/-27)
plugins/DualFilter/CMakeLists.txt (+3/-0)
plugins/DualFilter/DualFilter.cpp (+172/-0)
plugins/DualFilter/DualFilter.h (+60/-0)
plugins/DualFilter/DualFilterControlDialog.cpp (+86/-0)
plugins/DualFilter/DualFilterControlDialog.h (+45/-0)
plugins/DualFilter/DualFilterControls.cpp (+167/-0)
plugins/DualFilter/DualFilterControls.h (+91/-0)
plugins/HydrogenImport/CMakeLists.txt (+0/-4)
plugins/HydrogenImport/HydrogenImport.cpp (+0/-404)
plugins/HydrogenImport/HydrogenImport.h (+0/-27)
plugins/HydrogenImport/LocalFileMng.h (+0/-29)
plugins/HydrogenImport/local_file_mgr.cpp (+0/-234)
plugins/LadspaEffect/CMakeLists.txt (+26/-0)
plugins/LadspaEffect/LadspaControlDialog.cpp (+147/-0)
plugins/LadspaEffect/LadspaControlDialog.h (+56/-0)
plugins/LadspaEffect/LadspaControls.cpp (+187/-0)
plugins/LadspaEffect/LadspaControls.h (+86/-0)
plugins/LadspaEffect/LadspaEffect.cpp (+580/-0)
plugins/LadspaEffect/LadspaEffect.h (+88/-0)
plugins/LadspaEffect/LadspaSubPluginFeatures.cpp (+171/-0)
plugins/LadspaEffect/LadspaSubPluginFeatures.h (+50/-0)
plugins/LadspaEffect/calf/AUTHORS (+16/-0)
plugins/LadspaEffect/calf/CMakeLists.txt (+21/-0)
plugins/LadspaEffect/calf/COPYING (+504/-0)
plugins/LadspaEffect/calf/COPYING.GPL (+340/-0)
plugins/LadspaEffect/calf/ChangeLog (+220/-0)
plugins/LadspaEffect/calf/INSTALL (+254/-0)
plugins/LadspaEffect/calf/README (+49/-0)
plugins/LadspaEffect/calf/TODO (+40/-0)
plugins/LadspaEffect/calf/src/audio_fx.cpp (+829/-0)
plugins/LadspaEffect/calf/src/calf/audio_fx.h (+625/-0)
plugins/LadspaEffect/calf/src/calf/biquad.h (+653/-0)
plugins/LadspaEffect/calf/src/calf/buffer.h (+229/-0)
plugins/LadspaEffect/calf/src/calf/delay.h (+185/-0)
plugins/LadspaEffect/calf/src/calf/envelope.h (+282/-0)
plugins/LadspaEffect/calf/src/calf/fft.h (+113/-0)
plugins/LadspaEffect/calf/src/calf/fixed_point.h (+269/-0)
plugins/LadspaEffect/calf/src/calf/giface.h (+722/-0)
plugins/LadspaEffect/calf/src/calf/inertia.h (+258/-0)
plugins/LadspaEffect/calf/src/calf/ladspa_wrap.h (+130/-0)
plugins/LadspaEffect/calf/src/calf/loudness.h (+90/-0)
plugins/LadspaEffect/calf/src/calf/lv2_external_ui.h (+101/-0)
plugins/LadspaEffect/calf/src/calf/lv2helpers.h (+30/-0)
plugins/LadspaEffect/calf/src/calf/lv2wrap.h (+350/-0)
plugins/LadspaEffect/calf/src/calf/metadata.h (+595/-0)
plugins/LadspaEffect/calf/src/calf/modmatrix.h (+125/-0)
plugins/LadspaEffect/calf/src/calf/modulelist.h (+35/-0)
plugins/LadspaEffect/calf/src/calf/modules.h (+303/-0)
plugins/LadspaEffect/calf/src/calf/modules_comp.h (+334/-0)
plugins/LadspaEffect/calf/src/calf/modules_dev.h (+113/-0)
plugins/LadspaEffect/calf/src/calf/modules_dist.h (+101/-0)
plugins/LadspaEffect/calf/src/calf/modules_eq.h (+90/-0)
plugins/LadspaEffect/calf/src/calf/modules_limit.h (+98/-0)
plugins/LadspaEffect/calf/src/calf/modules_mod.h (+190/-0)
plugins/LadspaEffect/calf/src/calf/modules_synths.h (+193/-0)
plugins/LadspaEffect/calf/src/calf/multichorus.h (+213/-0)
plugins/LadspaEffect/calf/src/calf/onepole.h (+192/-0)
plugins/LadspaEffect/calf/src/calf/organ.h (+359/-0)
plugins/LadspaEffect/calf/src/calf/osc.h (+336/-0)
plugins/LadspaEffect/calf/src/calf/osctl.h (+561/-0)
plugins/LadspaEffect/calf/src/calf/plugin_tools.h (+133/-0)
plugins/LadspaEffect/calf/src/calf/preset.h (+167/-0)
plugins/LadspaEffect/calf/src/calf/primitives.h (+533/-0)
plugins/LadspaEffect/calf/src/calf/synth.h (+230/-0)
plugins/LadspaEffect/calf/src/calf/utils.h (+191/-0)
plugins/LadspaEffect/calf/src/calf/vumeter.h (+147/-0)
plugins/LadspaEffect/calf/src/calf/waveshaping.h (+37/-0)
plugins/LadspaEffect/calf/src/calf/wavetable.h (+167/-0)
plugins/LadspaEffect/calf/src/config.h (+1/-0)
plugins/LadspaEffect/calf/src/giface.cpp (+397/-0)
plugins/LadspaEffect/calf/src/metadata.cpp (+1446/-0)
plugins/LadspaEffect/calf/src/modmatrix.cpp (+153/-0)
plugins/LadspaEffect/calf/src/modules.cpp (+797/-0)
plugins/LadspaEffect/calf/src/modules_comp.cpp (+2577/-0)
plugins/LadspaEffect/calf/src/modules_dist.cpp (+644/-0)
plugins/LadspaEffect/calf/src/modules_eq.cpp (+343/-0)
plugins/LadspaEffect/calf/src/modules_limit.cpp (+695/-0)
plugins/LadspaEffect/calf/src/modules_mod.cpp (+753/-0)
plugins/LadspaEffect/calf/src/monosynth.cpp (+802/-0)
plugins/LadspaEffect/calf/src/organ.cpp (+1095/-0)
plugins/LadspaEffect/calf/src/plugin.cpp (+538/-0)
plugins/LadspaEffect/calf/src/synth.cpp (+220/-0)
plugins/LadspaEffect/calf/src/utils.cpp (+156/-0)
plugins/LadspaEffect/calf/src/wavetable.cpp (+552/-0)
plugins/LadspaEffect/caps/Amp.cc (+637/-0)
plugins/LadspaEffect/caps/Amp.h (+377/-0)
plugins/LadspaEffect/caps/CHANGES (+206/-0)
plugins/LadspaEffect/caps/CMakeLists.txt (+21/-0)
plugins/LadspaEffect/caps/Cabinet-Models32.h (+235/-0)
plugins/LadspaEffect/caps/Cabinet.cc (+304/-0)
plugins/LadspaEffect/caps/Cabinet.h (+135/-0)
plugins/LadspaEffect/caps/Chorus.cc (+506/-0)
plugins/LadspaEffect/caps/Chorus.h (+301/-0)
plugins/LadspaEffect/caps/Click.cc (+233/-0)
plugins/LadspaEffect/caps/Click.h (+98/-0)
plugins/LadspaEffect/caps/Clip.cc (+148/-0)
plugins/LadspaEffect/caps/Clip.h (+87/-0)
plugins/LadspaEffect/caps/Compress.cc (+153/-0)
plugins/LadspaEffect/caps/Compress.h (+78/-0)
plugins/LadspaEffect/caps/Descriptor.h (+222/-0)
plugins/LadspaEffect/caps/Eq.cc (+335/-0)
plugins/LadspaEffect/caps/Eq.h (+93/-0)
plugins/LadspaEffect/caps/HRTF.cc (+148/-0)
plugins/LadspaEffect/caps/HRTF.h (+72/-0)
plugins/LadspaEffect/caps/Lorenz.cc (+114/-0)
plugins/LadspaEffect/caps/Lorenz.h (+62/-0)
plugins/LadspaEffect/caps/Pan.cc (+251/-0)
plugins/LadspaEffect/caps/Pan.h (+114/-0)
plugins/LadspaEffect/caps/Phaser.cc (+231/-0)
plugins/LadspaEffect/caps/Phaser.h (+164/-0)
plugins/LadspaEffect/caps/Preamp.cc (+244/-0)
plugins/LadspaEffect/caps/README (+7/-0)
plugins/LadspaEffect/caps/README.ardour (+41/-0)
plugins/LadspaEffect/caps/README.dist (+18/-0)
plugins/LadspaEffect/caps/Reverb.cc (+495/-0)
plugins/LadspaEffect/caps/Reverb.h (+255/-0)
plugins/LadspaEffect/caps/Roessler.cc (+120/-0)
plugins/LadspaEffect/caps/Roessler.h (+64/-0)
plugins/LadspaEffect/caps/Scape.cc (+205/-0)
plugins/LadspaEffect/caps/Scape.h (+79/-0)
plugins/LadspaEffect/caps/Sin.cc (+95/-0)
plugins/LadspaEffect/caps/Sin.h (+62/-0)
plugins/LadspaEffect/caps/SweepVF.cc (+458/-0)
plugins/LadspaEffect/caps/SweepVF.h (+160/-0)
plugins/LadspaEffect/caps/ToneControls.cc (+73/-0)
plugins/LadspaEffect/caps/ToneStack.cc (+195/-0)
plugins/LadspaEffect/caps/ToneStack.h (+98/-0)
plugins/LadspaEffect/caps/VCO.cc (+242/-0)
plugins/LadspaEffect/caps/VCO.h (+134/-0)
plugins/LadspaEffect/caps/White.cc (+81/-0)
plugins/LadspaEffect/caps/White.h (+62/-0)
plugins/LadspaEffect/caps/basics.h (+199/-0)
plugins/LadspaEffect/caps/caps.html (+1715/-0)
plugins/LadspaEffect/caps/caps.rdf (+447/-0)
plugins/LadspaEffect/caps/configure.py (+30/-0)
plugins/LadspaEffect/caps/dsp/BiQuad.h (+165/-0)
plugins/LadspaEffect/caps/dsp/Delay.h (+171/-0)
plugins/LadspaEffect/caps/dsp/Eq.h (+158/-0)
plugins/LadspaEffect/caps/dsp/FIR.h (+252/-0)
plugins/LadspaEffect/caps/dsp/FPTruncateMode.h (+56/-0)
plugins/LadspaEffect/caps/dsp/LatFilt.h (+102/-0)
plugins/LadspaEffect/caps/dsp/Lorenz.h (+108/-0)
plugins/LadspaEffect/caps/dsp/OnePole.h (+124/-0)
plugins/LadspaEffect/caps/dsp/RBJ.h (+294/-0)
plugins/LadspaEffect/caps/dsp/RMS.h (+77/-0)
plugins/LadspaEffect/caps/dsp/Roessler.h (+100/-0)
plugins/LadspaEffect/caps/dsp/SVF.h (+190/-0)
plugins/LadspaEffect/caps/dsp/Sine.h (+95/-0)
plugins/LadspaEffect/caps/dsp/TDFII.h (+80/-0)
plugins/LadspaEffect/caps/dsp/ToneStack.h (+266/-0)
plugins/LadspaEffect/caps/dsp/TwelveAX7.h (+240/-0)
plugins/LadspaEffect/caps/dsp/VCO.h (+225/-0)
plugins/LadspaEffect/caps/dsp/White.h (+82/-0)
plugins/LadspaEffect/caps/dsp/r12ax7.h (+459/-0)
plugins/LadspaEffect/caps/dsp/sinc.h (+58/-0)
plugins/LadspaEffect/caps/dsp/tonestack/ks_tab.h (+663/-0)
plugins/LadspaEffect/caps/dsp/tonestack/tables.h (+38/-0)
plugins/LadspaEffect/caps/dsp/tonestack/vs_tab.h (+15664/-0)
plugins/LadspaEffect/caps/dsp/util.h (+75/-0)
plugins/LadspaEffect/caps/dsp/windows.h (+162/-0)
plugins/LadspaEffect/caps/elev0.h (+344/-0)
plugins/LadspaEffect/caps/interface.cc (+145/-0)
plugins/LadspaEffect/caps/waves/click.h (+520/-0)
plugins/LadspaEffect/caps/waves/money.h (+2715/-0)
plugins/LadspaEffect/cmt/CMakeLists.txt (+18/-0)
plugins/LadspaEffect/cmt/README (+7/-0)
plugins/LadspaEffect/cmt/doc/COPYING (+340/-0)
plugins/LadspaEffect/cmt/doc/adding_plugins.html (+54/-0)
plugins/LadspaEffect/cmt/doc/bugs.html (+20/-0)
plugins/LadspaEffect/cmt/doc/changes.html (+149/-0)
plugins/LadspaEffect/cmt/doc/index.html (+26/-0)
plugins/LadspaEffect/cmt/doc/installation.html (+19/-0)
plugins/LadspaEffect/cmt/doc/license.html (+16/-0)
plugins/LadspaEffect/cmt/doc/overview.html (+14/-0)
plugins/LadspaEffect/cmt/doc/plugins.html (+477/-0)
plugins/LadspaEffect/cmt/doc/tasks.html (+36/-0)
plugins/LadspaEffect/cmt/src/am.cpp (+103/-0)
plugins/LadspaEffect/cmt/src/ambisonic.cpp (+1135/-0)
plugins/LadspaEffect/cmt/src/amp.cpp (+186/-0)
plugins/LadspaEffect/cmt/src/analogue.cpp (+504/-0)
plugins/LadspaEffect/cmt/src/canyondelay.cpp (+223/-0)
plugins/LadspaEffect/cmt/src/cmt.cpp (+184/-0)
plugins/LadspaEffect/cmt/src/cmt.h (+180/-0)
plugins/LadspaEffect/cmt/src/delay.cpp (+351/-0)
plugins/LadspaEffect/cmt/src/descriptor.cpp (+116/-0)
plugins/LadspaEffect/cmt/src/disintegrator.cpp (+151/-0)
plugins/LadspaEffect/cmt/src/dynamic.cpp (+800/-0)
plugins/LadspaEffect/cmt/src/filter.cpp (+250/-0)
plugins/LadspaEffect/cmt/src/freeverb/Components/allpass.cpp (+36/-0)
plugins/LadspaEffect/cmt/src/freeverb/Components/allpass.h (+48/-0)
plugins/LadspaEffect/cmt/src/freeverb/Components/comb.cpp (+48/-0)
plugins/LadspaEffect/cmt/src/freeverb/Components/comb.h (+55/-0)
plugins/LadspaEffect/cmt/src/freeverb/Components/denormals.h (+20/-0)
plugins/LadspaEffect/cmt/src/freeverb/Components/revmodel.cpp (+256/-0)
plugins/LadspaEffect/cmt/src/freeverb/Components/revmodel.h (+87/-0)
plugins/LadspaEffect/cmt/src/freeverb/Components/tuning.h (+60/-0)
plugins/LadspaEffect/cmt/src/freeverb/freeverb.cpp (+200/-0)
plugins/LadspaEffect/cmt/src/freeverb/readme.txt (+67/-0)
plugins/LadspaEffect/cmt/src/grain.cpp (+401/-0)
plugins/LadspaEffect/cmt/src/hardgate.cpp (+122/-0)
plugins/LadspaEffect/cmt/src/init.cpp (+133/-0)
plugins/LadspaEffect/cmt/src/ladspa_types.h (+80/-0)
plugins/LadspaEffect/cmt/src/lofi.cpp (+417/-0)
plugins/LadspaEffect/cmt/src/logistic.cpp (+156/-0)
plugins/LadspaEffect/cmt/src/mixer.cpp (+106/-0)
plugins/LadspaEffect/cmt/src/noise.cpp (+141/-0)
plugins/LadspaEffect/cmt/src/null.cpp (+260/-0)
plugins/LadspaEffect/cmt/src/organ.cpp (+375/-0)
plugins/LadspaEffect/cmt/src/peak.cpp (+371/-0)
plugins/LadspaEffect/cmt/src/phasemod.cpp (+465/-0)
plugins/LadspaEffect/cmt/src/pink.cpp (+245/-0)
plugins/LadspaEffect/cmt/src/pink_full.cpp (+115/-0)
plugins/LadspaEffect/cmt/src/pink_sh.cpp (+148/-0)
plugins/LadspaEffect/cmt/src/pinknoise.h (+111/-0)
plugins/LadspaEffect/cmt/src/run_adding.h (+159/-0)
plugins/LadspaEffect/cmt/src/sine.cpp (+296/-0)
plugins/LadspaEffect/cmt/src/sledgehammer.cpp (+186/-0)
plugins/LadspaEffect/cmt/src/syndrum.cpp (+175/-0)
plugins/LadspaEffect/cmt/src/utils.h (+103/-0)
plugins/LadspaEffect/cmt/src/vcf303.cpp (+219/-0)
plugins/LadspaEffect/cmt/src/wshape_sine.cpp (+110/-0)
plugins/LadspaEffect/swh/AUTHORS (+18/-0)
plugins/LadspaEffect/swh/CMakeLists.txt (+75/-0)
plugins/LadspaEffect/swh/COPYING (+340/-0)
plugins/LadspaEffect/swh/README (+29/-0)
plugins/LadspaEffect/swh/alias_1407.c (+251/-0)
plugins/LadspaEffect/swh/allpass_1895.c (+1369/-0)
plugins/LadspaEffect/swh/am_pitchshift_1433.c (+466/-0)
plugins/LadspaEffect/swh/amp_1181.c (+244/-0)
plugins/LadspaEffect/swh/bandpass_a_iir_1893.c (+288/-0)
plugins/LadspaEffect/swh/bandpass_iir_1892.c (+354/-0)
plugins/LadspaEffect/swh/bode_shifter_1431.c (+469/-0)
plugins/LadspaEffect/swh/bode_shifter_cv_1432.c (+534/-0)
plugins/LadspaEffect/swh/butterworth_1902.c (+764/-0)
plugins/LadspaEffect/swh/chebstortion_1430.c (+410/-0)
plugins/LadspaEffect/swh/comb_1190.c (+351/-0)
plugins/LadspaEffect/swh/comb_1887.c (+1375/-0)
plugins/LadspaEffect/swh/comb_splitter_1411.c (+352/-0)
plugins/LadspaEffect/swh/const_1909.c (+261/-0)
plugins/LadspaEffect/swh/crossover_dist_1404.c (+287/-0)
plugins/LadspaEffect/swh/dc_remove_1207.c (+246/-0)
plugins/LadspaEffect/swh/decay_1886.c (+336/-0)
plugins/LadspaEffect/swh/decimator_1202.c (+346/-0)
plugins/LadspaEffect/swh/declip_1195.c (+246/-0)
plugins/LadspaEffect/swh/delay_1898.c (+1116/-0)
plugins/LadspaEffect/swh/delayorama_1402.c (+858/-0)
plugins/LadspaEffect/swh/diode_1185.c (+275/-0)
plugins/LadspaEffect/swh/divider_1186.c (+342/-0)
plugins/LadspaEffect/swh/dj_eq_1901.c (+691/-0)
plugins/LadspaEffect/swh/dj_flanger_1438.c (+483/-0)
plugins/LadspaEffect/swh/dyson_compress_1403.c (+896/-0)
plugins/LadspaEffect/swh/fad_delay_1192.c (+399/-0)
plugins/LadspaEffect/swh/fast_lookahead_limiter_1913.c (+714/-0)
plugins/LadspaEffect/swh/flanger_1191.c (+555/-0)
plugins/LadspaEffect/swh/foldover_1213.c (+266/-0)
plugins/LadspaEffect/swh/foverdrive_1196.c (+245/-0)
plugins/LadspaEffect/swh/freq_tracker_1418.c (+330/-0)
plugins/LadspaEffect/swh/gate_1410.c (+593/-0)
plugins/LadspaEffect/swh/giant_flange_1437.c (+648/-0)
plugins/LadspaEffect/swh/gong_1424.c (+958/-0)
plugins/LadspaEffect/swh/gong_beater_1439.c (+411/-0)
plugins/LadspaEffect/swh/gsm/COPYRIGHT (+16/-0)
plugins/LadspaEffect/swh/gsm/README (+36/-0)
plugins/LadspaEffect/swh/gsm/add.c (+251/-0)
plugins/LadspaEffect/swh/gsm/code.c (+100/-0)
plugins/LadspaEffect/swh/gsm/config.h (+37/-0)
plugins/LadspaEffect/swh/gsm/decode.c (+63/-0)
plugins/LadspaEffect/swh/gsm/gsm.h (+71/-0)
plugins/LadspaEffect/swh/gsm/gsm_create.c (+45/-0)
plugins/LadspaEffect/swh/gsm/gsm_decode.c (+361/-0)
plugins/LadspaEffect/swh/gsm/gsm_destroy.c (+26/-0)
plugins/LadspaEffect/swh/gsm/gsm_encode.c (+451/-0)
plugins/LadspaEffect/swh/gsm/gsm_option.c (+69/-0)
plugins/LadspaEffect/swh/gsm/long_term.c (+949/-0)
plugins/LadspaEffect/swh/gsm/lpc.c (+341/-0)
plugins/LadspaEffect/swh/gsm/preprocess.c (+113/-0)
plugins/LadspaEffect/swh/gsm/private.h (+278/-0)
plugins/LadspaEffect/swh/gsm/proto.h (+65/-0)
plugins/LadspaEffect/swh/gsm/rpe.c (+488/-0)
plugins/LadspaEffect/swh/gsm/short_term.c (+429/-0)
plugins/LadspaEffect/swh/gsm/table.c (+63/-0)
plugins/LadspaEffect/swh/gsm/unproto.h (+23/-0)
plugins/LadspaEffect/swh/gsm_1215.c (+504/-0)
plugins/LadspaEffect/swh/gverb/gverb.c (+207/-0)
plugins/LadspaEffect/swh/gverb/gverb.h (+234/-0)
plugins/LadspaEffect/swh/gverb/gverbdsp.c (+130/-0)
plugins/LadspaEffect/swh/gverb/gverbdsp.h (+85/-0)
plugins/LadspaEffect/swh/gverb_1216.c (+440/-0)
plugins/LadspaEffect/swh/hard_limiter_1413.c (+297/-0)
plugins/LadspaEffect/swh/harmonic_gen_1220.c (+553/-0)
plugins/LadspaEffect/swh/hermes_filter_1200.c (+2009/-0)
plugins/LadspaEffect/swh/highpass_iir_1890.c (+289/-0)
plugins/LadspaEffect/swh/hilbert_1440.c (+327/-0)
plugins/LadspaEffect/swh/imp_1199.c (+637/-0)
plugins/LadspaEffect/swh/impulse_1885.c (+268/-0)
plugins/LadspaEffect/swh/impulses/01-unit.h (+1/-0)
plugins/LadspaEffect/swh/impulses/02-steves-flat.h (+452/-0)
plugins/LadspaEffect/swh/impulses/03-stk-m1.h (+302/-0)
plugins/LadspaEffect/swh/impulses/04-fender-68-vibrolux-sm57.h (+1154/-0)
plugins/LadspaEffect/swh/impulses/05-fender-68-vibrolux-sm57-off.h (+1300/-0)
plugins/LadspaEffect/swh/impulses/06-fender-68-vibrolux-at4050.h (+1156/-0)
plugins/LadspaEffect/swh/impulses/07-fender-68-vibrolux-ui87.h (+1226/-0)
plugins/LadspaEffect/swh/impulses/08-fender-bassman-sm57.h (+681/-0)
plugins/LadspaEffect/swh/impulses/09-fender-bassman-sm57-off.h (+636/-0)
plugins/LadspaEffect/swh/impulses/10-fender-bassman-at4050.h (+797/-0)
plugins/LadspaEffect/swh/impulses/11-fender-bassman-ui87.h (+822/-0)
plugins/LadspaEffect/swh/impulses/12-fender-superchamp-sm57.h (+679/-0)
plugins/LadspaEffect/swh/impulses/13-fender-superchamp-sm57-off.h (+676/-0)
plugins/LadspaEffect/swh/impulses/14-fender-superchamp-at4050.h (+825/-0)
plugins/LadspaEffect/swh/impulses/15-fender-superchamp-ui87.h (+790/-0)
plugins/LadspaEffect/swh/impulses/16-marshall-jcm2000-sm57.h (+1167/-0)
plugins/LadspaEffect/swh/impulses/17-marshall-jcm2000-sm57-off.h (+1315/-0)
plugins/LadspaEffect/swh/impulses/18-marshall-plexi-sm57.h (+1386/-0)
plugins/LadspaEffect/swh/impulses/19-marshall-plexi-sm57-off.h (+1360/-0)
plugins/LadspaEffect/swh/impulses/20-matchless-chieftain-sm57.h (+863/-0)
plugins/LadspaEffect/swh/impulses/21-matchless-chieftain-sm57-off.h (+937/-0)
plugins/LadspaEffect/swh/impulses/all.h (+51/-0)
plugins/LadspaEffect/swh/inv_1429.c (+218/-0)
plugins/LadspaEffect/swh/karaoke_1409.c (+285/-0)
plugins/LadspaEffect/swh/ladspa-util.c (+22/-0)
plugins/LadspaEffect/swh/ladspa-util.h (+233/-0)
plugins/LadspaEffect/swh/latency_1914.c (+270/-0)
plugins/LadspaEffect/swh/lcr_delay_1436.c (+744/-0)
plugins/LadspaEffect/swh/lowpass_iir_1891.c (+291/-0)
plugins/LadspaEffect/swh/ls_filter_1908.c (+319/-0)
plugins/LadspaEffect/swh/matrix_ms_st_1421.c (+277/-0)
plugins/LadspaEffect/swh/matrix_spatialiser_1422.c (+435/-0)
plugins/LadspaEffect/swh/matrix_st_ms_1420.c (+256/-0)
plugins/LadspaEffect/swh/mbeq_1197.c (+896/-0)
plugins/LadspaEffect/swh/mod_delay_1419.c (+329/-0)
plugins/LadspaEffect/swh/multivoice_chorus_1201.c (+667/-0)
plugins/LadspaEffect/swh/notch_iir_1894.c (+354/-0)
plugins/LadspaEffect/swh/phasers_1217.c (+1400/-0)
plugins/LadspaEffect/swh/pitch_scale_1193.c (+338/-0)
plugins/LadspaEffect/swh/pitch_scale_1194.c (+322/-0)
plugins/LadspaEffect/swh/plate_1423.c (+412/-0)
plugins/LadspaEffect/swh/pointer_cast_1910.c (+321/-0)
plugins/LadspaEffect/swh/rate_shifter_1417.c (+325/-0)
plugins/LadspaEffect/swh/retro_flange_1208.c (+592/-0)
plugins/LadspaEffect/swh/revdelay_1605.c (+551/-0)
plugins/LadspaEffect/swh/ringmod_1188.c (+649/-0)
plugins/LadspaEffect/swh/satan_maximiser_1408.c (+355/-0)
plugins/LadspaEffect/swh/sc1_1425.c (+484/-0)
plugins/LadspaEffect/swh/sc2_1426.c (+502/-0)
plugins/LadspaEffect/swh/sc3_1427.c (+573/-0)
plugins/LadspaEffect/swh/sc4_1882.c (+629/-0)
plugins/LadspaEffect/swh/sc4m_1916.c (+579/-0)
plugins/LadspaEffect/swh/se4_1883.c (+625/-0)
plugins/LadspaEffect/swh/shaper_1187.c (+271/-0)
plugins/LadspaEffect/swh/sifter_1210.c (+445/-0)
plugins/LadspaEffect/swh/sin_cos_1881.c (+307/-0)
plugins/LadspaEffect/swh/single_para_1203.c (+323/-0)
plugins/LadspaEffect/swh/sinus_wavewrapper_1198.c (+255/-0)
plugins/LadspaEffect/swh/smooth_decimate_1414.c (+340/-0)
plugins/LadspaEffect/swh/split_1406.c (+251/-0)
plugins/LadspaEffect/swh/step_muxer_1212.c (+543/-0)
plugins/LadspaEffect/swh/surround_encoder_1401.c (+425/-0)
plugins/LadspaEffect/swh/svf_1214.c (+419/-0)
plugins/LadspaEffect/swh/tape_delay_1211.c (+656/-0)
plugins/LadspaEffect/swh/transient_1206.c (+476/-0)
plugins/LadspaEffect/swh/triple_para_1204.c (+604/-0)
plugins/LadspaEffect/swh/util/biquad.h (+179/-0)
plugins/LadspaEffect/swh/util/blo.c (+277/-0)
plugins/LadspaEffect/swh/util/blo.h (+213/-0)
plugins/LadspaEffect/swh/util/buffer.h (+17/-0)
plugins/LadspaEffect/swh/util/db.c (+22/-0)
plugins/LadspaEffect/swh/util/db.h (+86/-0)
plugins/LadspaEffect/swh/util/iir.c (+236/-0)
plugins/LadspaEffect/swh/util/iir.h (+338/-0)
plugins/LadspaEffect/swh/util/ls_filter.h (+64/-0)
plugins/LadspaEffect/swh/util/pitchscale.c (+334/-0)
plugins/LadspaEffect/swh/util/pitchscale.h (+49/-0)
plugins/LadspaEffect/swh/util/rms.c (+25/-0)
plugins/LadspaEffect/swh/util/rms.h (+35/-0)
plugins/LadspaEffect/swh/util/waveguide_nl.h (+148/-0)
plugins/LadspaEffect/swh/valve_1209.c (+343/-0)
plugins/LadspaEffect/swh/valve_rect_1405.c (+412/-0)
plugins/LadspaEffect/swh/vocoder_1337.c (+463/-0)
plugins/LadspaEffect/swh/vynil_1905.c (+723/-0)
plugins/LadspaEffect/swh/wave_terrain_1412.c (+242/-0)
plugins/LadspaEffect/swh/xfade_1915.c (+615/-0)
plugins/LadspaEffect/swh/zm1_1428.c (+243/-0)
plugins/LadspaEffect/tap/CMakeLists.txt (+21/-0)
plugins/LadspaEffect/tap/COPYING (+340/-0)
plugins/LadspaEffect/tap/CREDITS (+66/-0)
plugins/LadspaEffect/tap/README (+44/-0)
plugins/LadspaEffect/tap/tap_autopan.c (+361/-0)
plugins/LadspaEffect/tap/tap_chorusflanger.c (+595/-0)
plugins/LadspaEffect/tap/tap_deesser.c (+491/-0)
plugins/LadspaEffect/tap/tap_doubler.c (+737/-0)
plugins/LadspaEffect/tap/tap_dynamics_m.c (+666/-0)
plugins/LadspaEffect/tap/tap_dynamics_presets.h (+204/-0)
plugins/LadspaEffect/tap/tap_dynamics_st.c (+877/-0)
plugins/LadspaEffect/tap/tap_echo.c (+629/-0)
plugins/LadspaEffect/tap/tap_eq.c (+777/-0)
plugins/LadspaEffect/tap/tap_eqbw.c (+967/-0)
plugins/LadspaEffect/tap/tap_limiter.c (+443/-0)
plugins/LadspaEffect/tap/tap_pinknoise.c (+345/-0)
plugins/LadspaEffect/tap/tap_pitch.c (+556/-0)
plugins/LadspaEffect/tap/tap_reflector.c (+500/-0)
plugins/LadspaEffect/tap/tap_reverb.c (+835/-0)
plugins/LadspaEffect/tap/tap_reverb.h (+295/-0)
plugins/LadspaEffect/tap/tap_reverb_presets.h (+914/-0)
plugins/LadspaEffect/tap/tap_rotspeak.c (+768/-0)
plugins/LadspaEffect/tap/tap_sigmoid.c (+338/-0)
plugins/LadspaEffect/tap/tap_tremolo.c (+343/-0)
plugins/LadspaEffect/tap/tap_tubewarmth.c (+491/-0)
plugins/LadspaEffect/tap/tap_utils.h (+267/-0)
plugins/LadspaEffect/tap/tap_vibrato.c (+445/-0)
plugins/SpectrumAnalyzer/CMakeLists.txt (+5/-0)
plugins/SpectrumAnalyzer/SpectrumAnalyzer.cpp (+172/-0)
plugins/SpectrumAnalyzer/SpectrumAnalyzer.h (+78/-0)
plugins/SpectrumAnalyzer/SpectrumAnalyzerControlDialog.cpp (+194/-0)
plugins/SpectrumAnalyzer/SpectrumAnalyzerControlDialog.h (+52/-0)
plugins/SpectrumAnalyzer/SpectrumAnalyzerControls.cpp (+61/-0)
plugins/SpectrumAnalyzer/SpectrumAnalyzerControls.h (+75/-0)
plugins/VstEffect/CMakeLists.txt (+10/-0)
plugins/VstEffect/VstEffect.cpp (+185/-0)
plugins/VstEffect/VstEffect.h (+76/-0)
plugins/VstEffect/VstEffectControlDialog.cpp (+267/-0)
plugins/VstEffect/VstEffectControlDialog.h (+66/-0)
plugins/VstEffect/VstEffectControls.cpp (+545/-0)
plugins/VstEffect/VstEffectControls.h (+140/-0)
plugins/VstEffect/VstSubPluginFeatures.cpp (+67/-0)
plugins/VstEffect/VstSubPluginFeatures.h (+47/-0)
plugins/audio_file_processor/CMakeLists.txt (+0/-3)
plugins/audio_file_processor/audio_file_processor.cpp (+0/-1038)
plugins/audio_file_processor/audio_file_processor.h (+0/-269)
plugins/bass_booster/CMakeLists.txt (+0/-3)
plugins/bass_booster/bass_booster.cpp (+0/-113)
plugins/bass_booster/bass_booster.h (+0/-63)
plugins/bass_booster/bassbooster_control_dialog.cpp (+0/-73)
plugins/bass_booster/bassbooster_control_dialog.h (+0/-44)
plugins/bass_booster/bassbooster_controls.cpp (+0/-109)
plugins/bass_booster/bassbooster_controls.h (+0/-79)
plugins/bit_invader/CMakeLists.txt (+0/-3)
plugins/bit_invader/bit_invader.cpp (+0/-589)
plugins/bit_invader/bit_invader.h (+0/-157)
plugins/dynamics_processor/CMakeLists.txt (+3/-0)
plugins/dynamics_processor/dynamics_processor.cpp (+245/-0)
plugins/dynamics_processor/dynamics_processor.h (+65/-0)
plugins/dynamics_processor/dynamics_processor_control_dialog.cpp (+154/-0)
plugins/dynamics_processor/dynamics_processor_control_dialog.h (+48/-0)
plugins/dynamics_processor/dynamics_processor_controls.cpp (+172/-0)
plugins/dynamics_processor/dynamics_processor_controls.h (+98/-0)
plugins/flp_import/CMakeLists.txt (+0/-5)
plugins/flp_import/FlpImport.cpp (+0/-1882)
plugins/flp_import/FlpImport.h (+0/-104)
plugins/flp_import/unrtf.cpp (+0/-71)
plugins/flp_import/unrtf/attr.c (+0/-677)
plugins/flp_import/unrtf/attr.h (+0/-104)
plugins/flp_import/unrtf/convert.c (+0/-3684)
plugins/flp_import/unrtf/convert.h (+0/-60)
plugins/flp_import/unrtf/defs.h (+0/-78)
plugins/flp_import/unrtf/error.c (+0/-106)
plugins/flp_import/unrtf/error.h (+0/-46)
plugins/flp_import/unrtf/hash.c (+0/-218)
plugins/flp_import/unrtf/hash.h (+0/-42)
plugins/flp_import/unrtf/html.c (+0/-1265)
plugins/flp_import/unrtf/html.h (+0/-43)
plugins/flp_import/unrtf/main.h (+0/-46)
plugins/flp_import/unrtf/output.c (+0/-478)
plugins/flp_import/unrtf/output.h (+0/-312)
plugins/flp_import/unrtf/parse.c (+0/-472)
plugins/flp_import/unrtf/parse.h (+0/-45)
plugins/flp_import/unrtf/ur_malloc.c (+0/-133)
plugins/flp_import/unrtf/ur_malloc.h (+0/-39)
plugins/flp_import/unrtf/util.c (+0/-72)
plugins/flp_import/unrtf/util.h (+0/-34)
plugins/flp_import/unrtf/word.c (+0/-217)
plugins/flp_import/unrtf/word.h (+0/-53)
plugins/kicker/CMakeLists.txt (+0/-3)
plugins/kicker/kicker.cpp (+0/-267)
plugins/kicker/kicker.h (+0/-96)
plugins/ladspa_browser/CMakeLists.txt (+0/-3)
plugins/ladspa_browser/ladspa_browser.cpp (+0/-238)
plugins/ladspa_browser/ladspa_browser.h (+0/-74)
plugins/ladspa_browser/ladspa_description.cpp (+0/-220)
plugins/ladspa_browser/ladspa_description.h (+0/-69)
plugins/ladspa_browser/ladspa_port_dialog.cpp (+0/-184)
plugins/ladspa_browser/ladspa_port_dialog.h (+0/-49)
plugins/ladspa_effect/CMakeLists.txt (+0/-26)
plugins/ladspa_effect/LadspaControlDialog.cpp (+0/-147)
plugins/ladspa_effect/LadspaControlDialog.h (+0/-56)
plugins/ladspa_effect/LadspaControls.cpp (+0/-197)
plugins/ladspa_effect/LadspaControls.h (+0/-86)
plugins/ladspa_effect/LadspaEffect.cpp (+0/-581)
plugins/ladspa_effect/LadspaEffect.h (+0/-88)
plugins/ladspa_effect/LadspaSubPluginFeatures.cpp (+0/-168)
plugins/ladspa_effect/LadspaSubPluginFeatures.h (+0/-50)
plugins/ladspa_effect/calf/AUTHORS (+0/-16)
plugins/ladspa_effect/calf/CMakeLists.txt (+0/-18)
plugins/ladspa_effect/calf/COPYING (+0/-504)
plugins/ladspa_effect/calf/COPYING.GPL (+0/-340)
plugins/ladspa_effect/calf/ChangeLog (+0/-220)
plugins/ladspa_effect/calf/INSTALL (+0/-254)
plugins/ladspa_effect/calf/README (+0/-49)
plugins/ladspa_effect/calf/TODO (+0/-40)
plugins/ladspa_effect/calf/src/audio_fx.cpp (+0/-829)
plugins/ladspa_effect/calf/src/calf/audio_fx.h (+0/-625)
plugins/ladspa_effect/calf/src/calf/biquad.h (+0/-653)
plugins/ladspa_effect/calf/src/calf/buffer.h (+0/-229)
plugins/ladspa_effect/calf/src/calf/delay.h (+0/-185)
plugins/ladspa_effect/calf/src/calf/envelope.h (+0/-282)
plugins/ladspa_effect/calf/src/calf/fft.h (+0/-113)
plugins/ladspa_effect/calf/src/calf/fixed_point.h (+0/-269)
plugins/ladspa_effect/calf/src/calf/giface.h (+0/-723)
plugins/ladspa_effect/calf/src/calf/inertia.h (+0/-258)
plugins/ladspa_effect/calf/src/calf/ladspa_wrap.h (+0/-130)
plugins/ladspa_effect/calf/src/calf/loudness.h (+0/-90)
plugins/ladspa_effect/calf/src/calf/lv2_external_ui.h (+0/-101)
plugins/ladspa_effect/calf/src/calf/lv2helpers.h (+0/-30)
plugins/ladspa_effect/calf/src/calf/lv2wrap.h (+0/-350)
plugins/ladspa_effect/calf/src/calf/metadata.h (+0/-595)
plugins/ladspa_effect/calf/src/calf/modmatrix.h (+0/-125)
plugins/ladspa_effect/calf/src/calf/modulelist.h (+0/-35)
plugins/ladspa_effect/calf/src/calf/modules.h (+0/-303)
plugins/ladspa_effect/calf/src/calf/modules_comp.h (+0/-334)
plugins/ladspa_effect/calf/src/calf/modules_dev.h (+0/-113)
plugins/ladspa_effect/calf/src/calf/modules_dist.h (+0/-101)
plugins/ladspa_effect/calf/src/calf/modules_eq.h (+0/-90)
plugins/ladspa_effect/calf/src/calf/modules_limit.h (+0/-98)
plugins/ladspa_effect/calf/src/calf/modules_mod.h (+0/-190)
plugins/ladspa_effect/calf/src/calf/modules_synths.h (+0/-193)
plugins/ladspa_effect/calf/src/calf/multichorus.h (+0/-213)
plugins/ladspa_effect/calf/src/calf/onepole.h (+0/-192)
plugins/ladspa_effect/calf/src/calf/organ.h (+0/-359)
plugins/ladspa_effect/calf/src/calf/osc.h (+0/-336)
plugins/ladspa_effect/calf/src/calf/osctl.h (+0/-561)
plugins/ladspa_effect/calf/src/calf/plugin_tools.h (+0/-133)
plugins/ladspa_effect/calf/src/calf/preset.h (+0/-167)
plugins/ladspa_effect/calf/src/calf/primitives.h (+0/-533)
plugins/ladspa_effect/calf/src/calf/synth.h (+0/-230)
plugins/ladspa_effect/calf/src/calf/utils.h (+0/-191)
plugins/ladspa_effect/calf/src/calf/vumeter.h (+0/-147)
plugins/ladspa_effect/calf/src/calf/waveshaping.h (+0/-37)
plugins/ladspa_effect/calf/src/calf/wavetable.h (+0/-167)
plugins/ladspa_effect/calf/src/config.h (+0/-1)
plugins/ladspa_effect/calf/src/giface.cpp (+0/-397)
plugins/ladspa_effect/calf/src/metadata.cpp (+0/-1446)
plugins/ladspa_effect/calf/src/modmatrix.cpp (+0/-153)
plugins/ladspa_effect/calf/src/modules.cpp (+0/-797)
plugins/ladspa_effect/calf/src/modules_comp.cpp (+0/-2577)
plugins/ladspa_effect/calf/src/modules_dist.cpp (+0/-644)
plugins/ladspa_effect/calf/src/modules_eq.cpp (+0/-343)
plugins/ladspa_effect/calf/src/modules_limit.cpp (+0/-695)
plugins/ladspa_effect/calf/src/modules_mod.cpp (+0/-753)
plugins/ladspa_effect/calf/src/monosynth.cpp (+0/-776)
plugins/ladspa_effect/calf/src/organ.cpp (+0/-1095)
plugins/ladspa_effect/calf/src/plugin.cpp (+0/-538)
plugins/ladspa_effect/calf/src/synth.cpp (+0/-220)
plugins/ladspa_effect/calf/src/utils.cpp (+0/-155)
plugins/ladspa_effect/calf/src/wavetable.cpp (+0/-552)
plugins/ladspa_effect/caps/Amp.cc (+0/-637)
plugins/ladspa_effect/caps/Amp.h (+0/-377)
plugins/ladspa_effect/caps/CHANGES (+0/-206)
plugins/ladspa_effect/caps/CMakeLists.txt (+0/-21)
plugins/ladspa_effect/caps/Cabinet-Models32.h (+0/-235)
plugins/ladspa_effect/caps/Cabinet.cc (+0/-304)
plugins/ladspa_effect/caps/Cabinet.h (+0/-135)
plugins/ladspa_effect/caps/Chorus.cc (+0/-506)
plugins/ladspa_effect/caps/Chorus.h (+0/-301)
plugins/ladspa_effect/caps/Click.cc (+0/-233)
plugins/ladspa_effect/caps/Click.h (+0/-98)
plugins/ladspa_effect/caps/Clip.cc (+0/-148)
plugins/ladspa_effect/caps/Clip.h (+0/-87)
plugins/ladspa_effect/caps/Compress.cc (+0/-153)
plugins/ladspa_effect/caps/Compress.h (+0/-78)
plugins/ladspa_effect/caps/Descriptor.h (+0/-222)
plugins/ladspa_effect/caps/Eq.cc (+0/-335)
plugins/ladspa_effect/caps/Eq.h (+0/-93)
plugins/ladspa_effect/caps/HRTF.cc (+0/-148)
plugins/ladspa_effect/caps/HRTF.h (+0/-72)
plugins/ladspa_effect/caps/Lorenz.cc (+0/-114)
plugins/ladspa_effect/caps/Lorenz.h (+0/-62)
plugins/ladspa_effect/caps/Pan.cc (+0/-251)
plugins/ladspa_effect/caps/Pan.h (+0/-114)
plugins/ladspa_effect/caps/Phaser.cc (+0/-231)
plugins/ladspa_effect/caps/Phaser.h (+0/-164)
plugins/ladspa_effect/caps/Preamp.cc (+0/-244)
plugins/ladspa_effect/caps/README (+0/-7)
plugins/ladspa_effect/caps/README.ardour (+0/-41)
plugins/ladspa_effect/caps/README.dist (+0/-18)
plugins/ladspa_effect/caps/Reverb.cc (+0/-495)
plugins/ladspa_effect/caps/Reverb.h (+0/-255)
plugins/ladspa_effect/caps/Roessler.cc (+0/-120)
plugins/ladspa_effect/caps/Roessler.h (+0/-64)
plugins/ladspa_effect/caps/Scape.cc (+0/-205)
plugins/ladspa_effect/caps/Scape.h (+0/-79)
plugins/ladspa_effect/caps/Sin.cc (+0/-95)
plugins/ladspa_effect/caps/Sin.h (+0/-62)
plugins/ladspa_effect/caps/SweepVF.cc (+0/-458)
plugins/ladspa_effect/caps/SweepVF.h (+0/-160)
plugins/ladspa_effect/caps/ToneControls.cc (+0/-73)
plugins/ladspa_effect/caps/ToneStack.cc (+0/-195)
plugins/ladspa_effect/caps/ToneStack.h (+0/-98)
plugins/ladspa_effect/caps/VCO.cc (+0/-242)
plugins/ladspa_effect/caps/VCO.h (+0/-134)
plugins/ladspa_effect/caps/White.cc (+0/-81)
plugins/ladspa_effect/caps/White.h (+0/-62)
plugins/ladspa_effect/caps/basics.h (+0/-199)
plugins/ladspa_effect/caps/caps.html (+0/-1715)
plugins/ladspa_effect/caps/caps.rdf (+0/-447)
plugins/ladspa_effect/caps/configure.py (+0/-30)
plugins/ladspa_effect/caps/dsp/BiQuad.h (+0/-165)
plugins/ladspa_effect/caps/dsp/Delay.h (+0/-171)
plugins/ladspa_effect/caps/dsp/Eq.h (+0/-158)
plugins/ladspa_effect/caps/dsp/FIR.h (+0/-252)
plugins/ladspa_effect/caps/dsp/FPTruncateMode.h (+0/-56)
plugins/ladspa_effect/caps/dsp/LatFilt.h (+0/-102)
plugins/ladspa_effect/caps/dsp/Lorenz.h (+0/-108)
plugins/ladspa_effect/caps/dsp/OnePole.h (+0/-124)
plugins/ladspa_effect/caps/dsp/RBJ.h (+0/-294)
plugins/ladspa_effect/caps/dsp/RMS.h (+0/-77)
plugins/ladspa_effect/caps/dsp/Roessler.h (+0/-100)
plugins/ladspa_effect/caps/dsp/SVF.h (+0/-190)
plugins/ladspa_effect/caps/dsp/Sine.h (+0/-95)
plugins/ladspa_effect/caps/dsp/TDFII.h (+0/-80)
plugins/ladspa_effect/caps/dsp/ToneStack.h (+0/-269)
plugins/ladspa_effect/caps/dsp/TwelveAX7.h (+0/-240)
plugins/ladspa_effect/caps/dsp/VCO.h (+0/-225)
plugins/ladspa_effect/caps/dsp/White.h (+0/-82)
plugins/ladspa_effect/caps/dsp/r12ax7.h (+0/-459)
plugins/ladspa_effect/caps/dsp/sinc.h (+0/-58)
plugins/ladspa_effect/caps/dsp/tonestack/ks_tab.h (+0/-663)
plugins/ladspa_effect/caps/dsp/tonestack/tables.h (+0/-38)
plugins/ladspa_effect/caps/dsp/tonestack/vs_tab.h (+0/-15664)
plugins/ladspa_effect/caps/dsp/util.h (+0/-75)
plugins/ladspa_effect/caps/dsp/windows.h (+0/-162)
plugins/ladspa_effect/caps/elev0.h (+0/-344)
plugins/ladspa_effect/caps/interface.cc (+0/-145)
plugins/ladspa_effect/caps/waves/click.h (+0/-520)
plugins/ladspa_effect/caps/waves/money.h (+0/-2715)
plugins/ladspa_effect/cmt/CMakeLists.txt (+0/-18)
plugins/ladspa_effect/cmt/README (+0/-7)
plugins/ladspa_effect/cmt/doc/COPYING (+0/-340)
plugins/ladspa_effect/cmt/doc/adding_plugins.html (+0/-54)
plugins/ladspa_effect/cmt/doc/bugs.html (+0/-20)
plugins/ladspa_effect/cmt/doc/changes.html (+0/-149)
plugins/ladspa_effect/cmt/doc/index.html (+0/-26)
plugins/ladspa_effect/cmt/doc/installation.html (+0/-19)
plugins/ladspa_effect/cmt/doc/license.html (+0/-16)
plugins/ladspa_effect/cmt/doc/overview.html (+0/-14)
plugins/ladspa_effect/cmt/doc/plugins.html (+0/-477)
plugins/ladspa_effect/cmt/doc/tasks.html (+0/-36)
plugins/ladspa_effect/cmt/src/am.cpp (+0/-103)
plugins/ladspa_effect/cmt/src/ambisonic.cpp (+0/-1135)
plugins/ladspa_effect/cmt/src/amp.cpp (+0/-186)
plugins/ladspa_effect/cmt/src/analogue.cpp (+0/-504)
plugins/ladspa_effect/cmt/src/canyondelay.cpp (+0/-223)
plugins/ladspa_effect/cmt/src/cmt.cpp (+0/-184)
plugins/ladspa_effect/cmt/src/cmt.h (+0/-180)
plugins/ladspa_effect/cmt/src/delay.cpp (+0/-351)
plugins/ladspa_effect/cmt/src/descriptor.cpp (+0/-116)
plugins/ladspa_effect/cmt/src/disintegrator.cpp (+0/-151)
plugins/ladspa_effect/cmt/src/dynamic.cpp (+0/-800)
plugins/ladspa_effect/cmt/src/filter.cpp (+0/-250)
plugins/ladspa_effect/cmt/src/freeverb/Components/allpass.cpp (+0/-36)
plugins/ladspa_effect/cmt/src/freeverb/Components/allpass.h (+0/-48)
plugins/ladspa_effect/cmt/src/freeverb/Components/comb.cpp (+0/-48)
plugins/ladspa_effect/cmt/src/freeverb/Components/comb.h (+0/-55)
plugins/ladspa_effect/cmt/src/freeverb/Components/denormals.h (+0/-20)
plugins/ladspa_effect/cmt/src/freeverb/Components/revmodel.cpp (+0/-256)
plugins/ladspa_effect/cmt/src/freeverb/Components/revmodel.h (+0/-87)
plugins/ladspa_effect/cmt/src/freeverb/Components/tuning.h (+0/-60)
plugins/ladspa_effect/cmt/src/freeverb/freeverb.cpp (+0/-200)
plugins/ladspa_effect/cmt/src/freeverb/readme.txt (+0/-67)
plugins/ladspa_effect/cmt/src/grain.cpp (+0/-401)
plugins/ladspa_effect/cmt/src/hardgate.cpp (+0/-122)
plugins/ladspa_effect/cmt/src/init.cpp (+0/-125)
plugins/ladspa_effect/cmt/src/ladspa_types.h (+0/-80)
plugins/ladspa_effect/cmt/src/lofi.cpp (+0/-417)
plugins/ladspa_effect/cmt/src/logistic.cpp (+0/-156)
plugins/ladspa_effect/cmt/src/mixer.cpp (+0/-106)
plugins/ladspa_effect/cmt/src/noise.cpp (+0/-141)
plugins/ladspa_effect/cmt/src/null.cpp (+0/-260)
plugins/ladspa_effect/cmt/src/organ.cpp (+0/-375)
plugins/ladspa_effect/cmt/src/peak.cpp (+0/-371)
plugins/ladspa_effect/cmt/src/phasemod.cpp (+0/-465)
plugins/ladspa_effect/cmt/src/pink.cpp (+0/-245)
plugins/ladspa_effect/cmt/src/pink_full.cpp (+0/-115)
plugins/ladspa_effect/cmt/src/pink_sh.cpp (+0/-148)
plugins/ladspa_effect/cmt/src/pinknoise.h (+0/-111)
plugins/ladspa_effect/cmt/src/run_adding.h (+0/-159)
plugins/ladspa_effect/cmt/src/sine.cpp (+0/-296)
plugins/ladspa_effect/cmt/src/sledgehammer.cpp (+0/-186)
plugins/ladspa_effect/cmt/src/syndrum.cpp (+0/-175)
plugins/ladspa_effect/cmt/src/utils.h (+0/-103)
plugins/ladspa_effect/cmt/src/vcf303.cpp (+0/-219)
plugins/ladspa_effect/cmt/src/wshape_sine.cpp (+0/-110)
plugins/ladspa_effect/swh/AUTHORS (+0/-18)
plugins/ladspa_effect/swh/CMakeLists.txt (+0/-68)
plugins/ladspa_effect/swh/COPYING (+0/-340)
plugins/ladspa_effect/swh/README (+0/-29)
plugins/ladspa_effect/swh/alias_1407.c (+0/-251)
plugins/ladspa_effect/swh/allpass_1895.c (+0/-1398)
plugins/ladspa_effect/swh/am_pitchshift_1433.c (+0/-466)
plugins/ladspa_effect/swh/amp_1181.c (+0/-244)
plugins/ladspa_effect/swh/bandpass_a_iir_1893.c (+0/-296)
plugins/ladspa_effect/swh/bandpass_iir_1892.c (+0/-361)
plugins/ladspa_effect/swh/bode_shifter_1431.c (+0/-469)
plugins/ladspa_effect/swh/bode_shifter_cv_1432.c (+0/-534)
plugins/ladspa_effect/swh/butterworth_1902.c (+0/-783)
plugins/ladspa_effect/swh/chebstortion_1430.c (+0/-410)
plugins/ladspa_effect/swh/comb_1190.c (+0/-351)
plugins/ladspa_effect/swh/comb_1887.c (+0/-1391)
plugins/ladspa_effect/swh/comb_splitter_1411.c (+0/-352)
plugins/ladspa_effect/swh/const_1909.c (+0/-261)
plugins/ladspa_effect/swh/crossover_dist_1404.c (+0/-287)
plugins/ladspa_effect/swh/dc_remove_1207.c (+0/-246)
plugins/ladspa_effect/swh/decay_1886.c (+0/-341)
plugins/ladspa_effect/swh/decimator_1202.c (+0/-346)
plugins/ladspa_effect/swh/declip_1195.c (+0/-246)
plugins/ladspa_effect/swh/delay_1898.c (+0/-1150)
plugins/ladspa_effect/swh/delayorama_1402.c (+0/-858)
plugins/ladspa_effect/swh/diode_1185.c (+0/-275)
plugins/ladspa_effect/swh/divider_1186.c (+0/-342)
plugins/ladspa_effect/swh/dj_eq_1901.c (+0/-691)
plugins/ladspa_effect/swh/dj_flanger_1438.c (+0/-483)
plugins/ladspa_effect/swh/dyson_compress_1403.c (+0/-896)
plugins/ladspa_effect/swh/fad_delay_1192.c (+0/-405)
plugins/ladspa_effect/swh/fast_lookahead_limiter_1913.c (+0/-714)
plugins/ladspa_effect/swh/flanger_1191.c (+0/-555)
plugins/ladspa_effect/swh/foldover_1213.c (+0/-266)
plugins/ladspa_effect/swh/foverdrive_1196.c (+0/-245)
plugins/ladspa_effect/swh/freq_tracker_1418.c (+0/-330)
plugins/ladspa_effect/swh/gate_1410.c (+0/-593)
plugins/ladspa_effect/swh/giant_flange_1437.c (+0/-648)
plugins/ladspa_effect/swh/gong_1424.c (+0/-958)
plugins/ladspa_effect/swh/gong_beater_1439.c (+0/-411)
plugins/ladspa_effect/swh/gsm/COPYRIGHT (+0/-16)
plugins/ladspa_effect/swh/gsm/README (+0/-36)
plugins/ladspa_effect/swh/gsm/add.c (+0/-251)
plugins/ladspa_effect/swh/gsm/code.c (+0/-100)
plugins/ladspa_effect/swh/gsm/config.h (+0/-37)
plugins/ladspa_effect/swh/gsm/decode.c (+0/-63)
plugins/ladspa_effect/swh/gsm/gsm.h (+0/-71)
plugins/ladspa_effect/swh/gsm/gsm_create.c (+0/-45)
plugins/ladspa_effect/swh/gsm/gsm_decode.c (+0/-361)
plugins/ladspa_effect/swh/gsm/gsm_destroy.c (+0/-26)
plugins/ladspa_effect/swh/gsm/gsm_encode.c (+0/-451)
plugins/ladspa_effect/swh/gsm/gsm_option.c (+0/-69)
plugins/ladspa_effect/swh/gsm/long_term.c (+0/-949)
plugins/ladspa_effect/swh/gsm/lpc.c (+0/-341)
plugins/ladspa_effect/swh/gsm/preprocess.c (+0/-113)
plugins/ladspa_effect/swh/gsm/private.h (+0/-278)
plugins/ladspa_effect/swh/gsm/proto.h (+0/-65)
plugins/ladspa_effect/swh/gsm/rpe.c (+0/-488)
plugins/ladspa_effect/swh/gsm/short_term.c (+0/-429)
plugins/ladspa_effect/swh/gsm/table.c (+0/-63)
plugins/ladspa_effect/swh/gsm/unproto.h (+0/-23)
plugins/ladspa_effect/swh/gsm_1215.c (+0/-504)
plugins/ladspa_effect/swh/gverb/gverb.c (+0/-207)
plugins/ladspa_effect/swh/gverb/gverb.h (+0/-234)
plugins/ladspa_effect/swh/gverb/gverbdsp.c (+0/-130)
plugins/ladspa_effect/swh/gverb/gverbdsp.h (+0/-85)
plugins/ladspa_effect/swh/gverb_1216.c (+0/-440)
plugins/ladspa_effect/swh/hard_limiter_1413.c (+0/-297)
plugins/ladspa_effect/swh/harmonic_gen_1220.c (+0/-553)
plugins/ladspa_effect/swh/hermes_filter_1200.c (+0/-2009)
plugins/ladspa_effect/swh/highpass_iir_1890.c (+0/-296)
plugins/ladspa_effect/swh/hilbert_1440.c (+0/-327)
plugins/ladspa_effect/swh/imp_1199.c (+0/-637)
plugins/ladspa_effect/swh/impulse_1885.c (+0/-268)
plugins/ladspa_effect/swh/impulses/01-unit.h (+0/-1)
plugins/ladspa_effect/swh/impulses/02-steves-flat.h (+0/-452)
plugins/ladspa_effect/swh/impulses/03-stk-m1.h (+0/-302)
plugins/ladspa_effect/swh/impulses/04-fender-68-vibrolux-sm57.h (+0/-1154)
plugins/ladspa_effect/swh/impulses/05-fender-68-vibrolux-sm57-off.h (+0/-1300)
plugins/ladspa_effect/swh/impulses/06-fender-68-vibrolux-at4050.h (+0/-1156)
plugins/ladspa_effect/swh/impulses/07-fender-68-vibrolux-ui87.h (+0/-1226)
plugins/ladspa_effect/swh/impulses/08-fender-bassman-sm57.h (+0/-681)
plugins/ladspa_effect/swh/impulses/09-fender-bassman-sm57-off.h (+0/-636)
plugins/ladspa_effect/swh/impulses/10-fender-bassman-at4050.h (+0/-797)
plugins/ladspa_effect/swh/impulses/11-fender-bassman-ui87.h (+0/-822)
plugins/ladspa_effect/swh/impulses/12-fender-superchamp-sm57.h (+0/-679)
plugins/ladspa_effect/swh/impulses/13-fender-superchamp-sm57-off.h (+0/-676)
plugins/ladspa_effect/swh/impulses/14-fender-superchamp-at4050.h (+0/-825)
plugins/ladspa_effect/swh/impulses/15-fender-superchamp-ui87.h (+0/-790)
plugins/ladspa_effect/swh/impulses/16-marshall-jcm2000-sm57.h (+0/-1167)
plugins/ladspa_effect/swh/impulses/17-marshall-jcm2000-sm57-off.h (+0/-1315)
plugins/ladspa_effect/swh/impulses/18-marshall-plexi-sm57.h (+0/-1386)
plugins/ladspa_effect/swh/impulses/19-marshall-plexi-sm57-off.h (+0/-1360)
plugins/ladspa_effect/swh/impulses/20-matchless-chieftain-sm57.h (+0/-863)
plugins/ladspa_effect/swh/impulses/21-matchless-chieftain-sm57-off.h (+0/-937)
plugins/ladspa_effect/swh/impulses/all.h (+0/-51)
plugins/ladspa_effect/swh/inv_1429.c (+0/-218)
plugins/ladspa_effect/swh/karaoke_1409.c (+0/-285)
plugins/ladspa_effect/swh/ladspa-util.c (+0/-22)
plugins/ladspa_effect/swh/ladspa-util.h (+0/-233)
plugins/ladspa_effect/swh/latency_1914.c (+0/-270)
plugins/ladspa_effect/swh/lcr_delay_1436.c (+0/-744)
plugins/ladspa_effect/swh/lowpass_iir_1891.c (+0/-298)
plugins/ladspa_effect/swh/ls_filter_1908.c (+0/-319)
plugins/ladspa_effect/swh/matrix_ms_st_1421.c (+0/-277)
plugins/ladspa_effect/swh/matrix_spatialiser_1422.c (+0/-435)
plugins/ladspa_effect/swh/matrix_st_ms_1420.c (+0/-256)
plugins/ladspa_effect/swh/mbeq_1197.c (+0/-896)
plugins/ladspa_effect/swh/mod_delay_1419.c (+0/-329)
plugins/ladspa_effect/swh/multivoice_chorus_1201.c (+0/-667)
plugins/ladspa_effect/swh/notch_iir_1894.c (+0/-361)
plugins/ladspa_effect/swh/phasers_1217.c (+0/-1400)
plugins/ladspa_effect/swh/pitch_scale_1193.c (+0/-338)
plugins/ladspa_effect/swh/pitch_scale_1194.c (+0/-322)
plugins/ladspa_effect/swh/plate_1423.c (+0/-412)
plugins/ladspa_effect/swh/pointer_cast_1910.c (+0/-321)
plugins/ladspa_effect/swh/rate_shifter_1417.c (+0/-325)
plugins/ladspa_effect/swh/retro_flange_1208.c (+0/-592)
plugins/ladspa_effect/swh/revdelay_1605.c (+0/-559)
plugins/ladspa_effect/swh/ringmod_1188.c (+0/-649)
plugins/ladspa_effect/swh/satan_maximiser_1408.c (+0/-355)
plugins/ladspa_effect/swh/sc1_1425.c (+0/-484)
plugins/ladspa_effect/swh/sc2_1426.c (+0/-502)
plugins/ladspa_effect/swh/sc3_1427.c (+0/-573)
plugins/ladspa_effect/swh/sc4_1882.c (+0/-629)
plugins/ladspa_effect/swh/sc4m_1916.c (+0/-579)
plugins/ladspa_effect/swh/se4_1883.c (+0/-625)
plugins/ladspa_effect/swh/shaper_1187.c (+0/-271)
plugins/ladspa_effect/swh/sifter_1210.c (+0/-445)
plugins/ladspa_effect/swh/sin_cos_1881.c (+0/-307)
plugins/ladspa_effect/swh/single_para_1203.c (+0/-323)
plugins/ladspa_effect/swh/sinus_wavewrapper_1198.c (+0/-255)
plugins/ladspa_effect/swh/smooth_decimate_1414.c (+0/-340)
plugins/ladspa_effect/swh/split_1406.c (+0/-251)
plugins/ladspa_effect/swh/step_muxer_1212.c (+0/-543)
plugins/ladspa_effect/swh/surround_encoder_1401.c (+0/-425)
plugins/ladspa_effect/swh/svf_1214.c (+0/-419)
plugins/ladspa_effect/swh/tape_delay_1211.c (+0/-656)
plugins/ladspa_effect/swh/transient_1206.c (+0/-476)
plugins/ladspa_effect/swh/triple_para_1204.c (+0/-604)
plugins/ladspa_effect/swh/util/biquad.h (+0/-179)
plugins/ladspa_effect/swh/util/blo.c (+0/-272)
plugins/ladspa_effect/swh/util/blo.h (+0/-213)
plugins/ladspa_effect/swh/util/buffer.h (+0/-17)
plugins/ladspa_effect/swh/util/db.c (+0/-22)
plugins/ladspa_effect/swh/util/db.h (+0/-86)
plugins/ladspa_effect/swh/util/iir.c (+0/-236)
plugins/ladspa_effect/swh/util/iir.h (+0/-338)
plugins/ladspa_effect/swh/util/ls_filter.h (+0/-64)
plugins/ladspa_effect/swh/util/pitchscale.c (+0/-335)
plugins/ladspa_effect/swh/util/pitchscale.h (+0/-49)
plugins/ladspa_effect/swh/util/rms.c (+0/-25)
plugins/ladspa_effect/swh/util/rms.h (+0/-35)
plugins/ladspa_effect/swh/util/waveguide_nl.h (+0/-148)
plugins/ladspa_effect/swh/valve_1209.c (+0/-343)
plugins/ladspa_effect/swh/valve_rect_1405.c (+0/-412)
plugins/ladspa_effect/swh/vynil_1905.c (+0/-723)
plugins/ladspa_effect/swh/wave_terrain_1412.c (+0/-242)
plugins/ladspa_effect/swh/xfade_1915.c (+0/-615)
plugins/ladspa_effect/swh/zm1_1428.c (+0/-243)
plugins/ladspa_effect/tap/CMakeLists.txt (+0/-21)
plugins/ladspa_effect/tap/COPYING (+0/-340)
plugins/ladspa_effect/tap/CREDITS (+0/-66)
plugins/ladspa_effect/tap/README (+0/-44)
plugins/ladspa_effect/tap/tap_autopan.c (+0/-361)
plugins/ladspa_effect/tap/tap_chorusflanger.c (+0/-595)
plugins/ladspa_effect/tap/tap_deesser.c (+0/-491)
plugins/ladspa_effect/tap/tap_doubler.c (+0/-737)
plugins/ladspa_effect/tap/tap_dynamics_m.c (+0/-666)
plugins/ladspa_effect/tap/tap_dynamics_presets.h (+0/-204)
plugins/ladspa_effect/tap/tap_dynamics_st.c (+0/-877)
plugins/ladspa_effect/tap/tap_echo.c (+0/-629)
plugins/ladspa_effect/tap/tap_eq.c (+0/-777)
plugins/ladspa_effect/tap/tap_eqbw.c (+0/-967)
plugins/ladspa_effect/tap/tap_limiter.c (+0/-443)
plugins/ladspa_effect/tap/tap_pinknoise.c (+0/-345)
plugins/ladspa_effect/tap/tap_pitch.c (+0/-556)
plugins/ladspa_effect/tap/tap_reflector.c (+0/-500)
plugins/ladspa_effect/tap/tap_reverb.c (+0/-835)
plugins/ladspa_effect/tap/tap_reverb.h (+0/-295)
plugins/ladspa_effect/tap/tap_reverb_presets.h (+0/-914)
plugins/ladspa_effect/tap/tap_rotspeak.c (+0/-720)
plugins/ladspa_effect/tap/tap_sigmoid.c (+0/-338)
plugins/ladspa_effect/tap/tap_tremolo.c (+0/-343)
plugins/ladspa_effect/tap/tap_tubewarmth.c (+0/-491)
plugins/ladspa_effect/tap/tap_utils.h (+0/-267)
plugins/ladspa_effect/tap/tap_vibrato.c (+0/-442)
plugins/lb302/CMakeLists.txt (+0/-3)
plugins/lb302/README (+0/-87)
plugins/lb302/lb302.cpp (+0/-991)
plugins/lb302/lb302.h (+0/-269)
plugins/lb303/CMakeLists.txt (+0/-3)
plugins/lb303/README (+0/-87)
plugins/lb303/lb303.cpp (+0/-843)
plugins/lb303/lb303.h (+0/-270)
plugins/midi_import/CMakeLists.txt (+0/-8)
plugins/midi_import/MidiImport.cpp (+0/-572)
plugins/midi_import/MidiImport.h (+0/-127)
plugins/midi_import/portsmf/README.txt (+0/-32)
plugins/midi_import/portsmf/algrd_internal.h (+0/-4)
plugins/midi_import/portsmf/algsmfrd_internal.h (+0/-3)
plugins/midi_import/portsmf/allegro.cpp (+0/-2865)
plugins/midi_import/portsmf/allegro.h (+0/-945)
plugins/midi_import/portsmf/allegrord.cpp (+0/-755)
plugins/midi_import/portsmf/allegroserial.cpp (+0/-2)
plugins/midi_import/portsmf/allegrosmfrd.cpp (+0/-445)
plugins/midi_import/portsmf/allegrosmfwr.cpp (+0/-649)
plugins/midi_import/portsmf/allegrowr.cpp (+0/-181)
plugins/midi_import/portsmf/license.txt (+0/-40)
plugins/midi_import/portsmf/mfmidi.cpp (+0/-485)
plugins/midi_import/portsmf/mfmidi.h (+0/-98)
plugins/midi_import/portsmf/strparse.cpp (+0/-87)
plugins/midi_import/portsmf/strparse.h (+0/-18)
plugins/midi_import/portsmf/trace.cpp (+0/-25)
plugins/midi_import/portsmf/trace.h (+0/-2)
plugins/opl2/CMakeLists.txt (+3/-0)
plugins/opl2/COPYING.LESSER (+502/-0)
plugins/opl2/README (+62/-0)
plugins/opl2/fmopl.c (+1390/-0)
plugins/opl2/fmopl.h (+174/-0)
plugins/opl2/mididata.h (+160/-0)
plugins/opl2/opl.h (+69/-0)
plugins/opl2/opl2instrument.cpp (+716/-0)
plugins/opl2/opl2instrument.h (+195/-0)
plugins/opl2/temuopl.cpp (+75/-0)
plugins/opl2/temuopl.h (+47/-0)
plugins/organic/CMakeLists.txt (+0/-3)
plugins/organic/organic.cpp (+0/-587)
plugins/organic/organic.h (+0/-179)
plugins/papu/Basic_Gb_Apu.cpp (+0/-83)
plugins/papu/Basic_Gb_Apu.h (+0/-53)
plugins/papu/CMakeLists.txt (+0/-3)
plugins/papu/gb_apu/Blip_Buffer.cpp (+0/-429)
plugins/papu/gb_apu/Blip_Buffer.h (+0/-259)
plugins/papu/gb_apu/Blip_Synth.h (+0/-208)
plugins/papu/gb_apu/Gb_Apu.cpp (+0/-261)
plugins/papu/gb_apu/Gb_Apu.h (+0/-84)
plugins/papu/gb_apu/Gb_Oscs.cpp (+0/-451)
plugins/papu/gb_apu/Gb_Oscs.h (+0/-100)
plugins/papu/gb_apu/LGPL.txt (+0/-504)
plugins/papu/gb_apu/Multi_Buffer.cpp (+0/-215)
plugins/papu/gb_apu/Multi_Buffer.h (+0/-174)
plugins/papu/gb_apu/blargg_common.h (+0/-178)
plugins/papu/gb_apu/blargg_source.h (+0/-66)
plugins/papu/gb_apu/boost/config.hpp (+0/-13)
plugins/papu/gb_apu/boost/cstdint.hpp (+0/-42)
plugins/papu/gb_apu/boost/static_assert.hpp (+0/-22)
plugins/papu/papu_instrument.cpp (+0/-745)
plugins/papu/papu_instrument.h (+0/-163)
plugins/patman/CMakeLists.txt (+0/-3)
plugins/patman/patman.cpp (+0/-656)
plugins/patman/patman.h (+0/-151)
plugins/peak_controller_effect/CMakeLists.txt (+0/-3)
plugins/peak_controller_effect/peak_controller_effect.cpp (+0/-158)
plugins/peak_controller_effect/peak_controller_effect.h (+0/-65)
plugins/peak_controller_effect/peak_controller_effect_control_dialog.cpp (+0/-88)
plugins/peak_controller_effect/peak_controller_effect_control_dialog.h (+0/-56)
plugins/peak_controller_effect/peak_controller_effect_controls.cpp (+0/-90)
plugins/peak_controller_effect/peak_controller_effect_controls.h (+0/-76)
plugins/sf2_player/CMakeLists.txt (+0/-8)
plugins/sf2_player/patches_dialog.cpp (+0/-370)
plugins/sf2_player/patches_dialog.h (+0/-95)
plugins/sf2_player/patches_dialog.ui (+0/-216)
plugins/sf2_player/sf2_player.cpp (+0/-1121)
plugins/sf2_player/sf2_player.h (+0/-227)
plugins/sfxr/CMakeLists.txt (+3/-0)
plugins/sfxr/readme.txt (+170/-0)
plugins/sfxr/sfxr.cpp (+1128/-0)
plugins/sfxr/sfxr.h (+302/-0)
plugins/sid/CMakeLists.txt (+0/-5)
plugins/sid/envelope.cc (+0/-227)
plugins/sid/envelope.h (+0/-305)
plugins/sid/extfilt.cc (+0/-79)
plugins/sid/extfilt.h (+0/-164)
plugins/sid/filter.cc (+0/-305)
plugins/sid/filter.h (+0/-531)
plugins/sid/pot.cc (+0/-26)
plugins/sid/pot.h (+0/-31)
plugins/sid/sid.cc (+0/-1019)
plugins/sid/sid.h (+0/-146)
plugins/sid/sid_instrument.cpp (+0/-833)
plugins/sid/sid_instrument.h (+0/-202)
plugins/sid/siddefs.h (+0/-69)
plugins/sid/spline.h (+0/-272)
plugins/sid/version.cc (+0/-21)
plugins/sid/voice.cc (+0/-132)
plugins/sid/voice.h (+0/-77)
plugins/sid/wave.cc (+0/-144)
plugins/sid/wave.h (+0/-503)
plugins/sid/wave6581_PST.cc (+0/-536)
plugins/sid/wave6581_PS_.cc (+0/-536)
plugins/sid/wave6581_P_T.cc (+0/-536)
plugins/sid/wave6581__ST.cc (+0/-536)
plugins/sid/wave8580_PST.cc (+0/-536)
plugins/sid/wave8580_PS_.cc (+0/-536)
plugins/sid/wave8580_P_T.cc (+0/-536)
plugins/sid/wave8580__ST.cc (+0/-536)
plugins/spectrum_analyzer/CMakeLists.txt (+0/-5)
plugins/spectrum_analyzer/spectrum_analyzer.cpp (+0/-182)
plugins/spectrum_analyzer/spectrum_analyzer.h (+0/-81)
plugins/spectrum_analyzer/spectrumanalyzer_control_dialog.cpp (+0/-198)
plugins/spectrum_analyzer/spectrumanalyzer_control_dialog.h (+0/-52)
plugins/spectrum_analyzer/spectrumanalyzer_controls.cpp (+0/-62)
plugins/spectrum_analyzer/spectrumanalyzer_controls.h (+0/-75)
plugins/stereo_enhancer/CMakeLists.txt (+0/-4)
plugins/stereo_enhancer/stereo_enhancer.cpp (+0/-175)
plugins/stereo_enhancer/stereo_enhancer.h (+0/-64)
plugins/stereo_enhancer/stereoenhancer_control_dialog.cpp (+0/-49)
plugins/stereo_enhancer/stereoenhancer_control_dialog.h (+0/-44)
plugins/stereo_enhancer/stereoenhancer_controls.cpp (+0/-69)
plugins/stereo_enhancer/stereoenhancer_controls.h (+0/-74)
plugins/stereo_matrix/CMakeLists.txt (+0/-4)
plugins/stereo_matrix/stereo_matrix.cpp (+0/-124)
plugins/stereo_matrix/stereo_matrix.h (+0/-55)
plugins/stereo_matrix/stereomatrix_control_dialog.cpp (+0/-70)
plugins/stereo_matrix/stereomatrix_control_dialog.h (+0/-44)
plugins/stereo_matrix/stereomatrix_controls.cpp (+0/-83)
plugins/stereo_matrix/stereomatrix_controls.h (+0/-79)
plugins/stk/CMakeLists.txt (+0/-4)
plugins/stk/mallets/CMakeLists.txt (+0/-5)
plugins/stk/mallets/mallets.cpp (+0/-670)
plugins/stk/mallets/mallets.h (+0/-230)
plugins/triple_oscillator/CMakeLists.txt (+0/-3)
plugins/triple_oscillator/TripleOscillator.cpp (+0/-803)
plugins/triple_oscillator/TripleOscillator.h (+0/-195)
plugins/vestige/CMakeLists.txt (+0/-12)
plugins/vestige/vestige.cpp (+0/-1162)
plugins/vestige/vestige.h (+0/-191)
plugins/vibed/CMakeLists.txt (+0/-3)
plugins/vibed/nine_button_selector.cpp (+0/-272)
plugins/vibed/nine_button_selector.h (+0/-96)
plugins/vibed/string_container.cpp (+0/-102)
plugins/vibed/string_container.h (+0/-79)
plugins/vibed/vibed.cpp (+0/-792)
plugins/vibed/vibed.h (+0/-142)
plugins/vibed/vibrating_string.cpp (+0/-159)
plugins/vibed/vibrating_string.h (+0/-271)
plugins/vst_base/CMakeLists.txt (+0/-44)
plugins/vst_base/RemoteVstPlugin.cpp (+0/-1908)
plugins/vst_base/VstPlugin.cpp (+0/-666)
plugins/vst_base/VstPlugin.h (+0/-157)
plugins/vst_base/Win64/CMakeLists.txt (+0/-16)
plugins/vst_base/basename.c (+0/-166)
plugins/vst_base/communication.h (+0/-94)
plugins/vst_base/vst_base.cpp (+0/-48)
plugins/vst_effect/CMakeLists.txt (+0/-13)
plugins/vst_effect/VstEffect.cpp (+0/-191)
plugins/vst_effect/VstEffect.h (+0/-76)
plugins/vst_effect/VstEffectControlDialog.cpp (+0/-267)
plugins/vst_effect/VstEffectControlDialog.h (+0/-67)
plugins/vst_effect/VstEffectControls.cpp (+0/-546)
plugins/vst_effect/VstEffectControls.h (+0/-140)
plugins/vst_effect/VstSubPluginFeatures.cpp (+0/-67)
plugins/vst_effect/VstSubPluginFeatures.h (+0/-47)
plugins/watsyn/CMakeLists.txt (+3/-0)
plugins/watsyn/Watsyn.cpp (+1242/-0)
plugins/watsyn/Watsyn.h (+351/-0)
plugins/waveshaper/CMakeLists.txt (+3/-0)
plugins/waveshaper/waveshaper.cpp (+161/-0)
plugins/waveshaper/waveshaper.h (+62/-0)
plugins/waveshaper/waveshaper_control_dialog.cpp (+118/-0)
plugins/waveshaper/waveshaper_control_dialog.h (+48/-0)
plugins/waveshaper/waveshaper_controls.cpp (+171/-0)
plugins/waveshaper/waveshaper_controls.h (+90/-0)
plugins/zynaddsubfx/AUTHORS.txt (+0/-18)
plugins/zynaddsubfx/CMakeLists.txt (+0/-130)
plugins/zynaddsubfx/COPYING (+0/-347)
plugins/zynaddsubfx/ChangeLog (+0/-976)
plugins/zynaddsubfx/FAQ.txt (+0/-27)
plugins/zynaddsubfx/HISTORY.txt (+0/-196)
plugins/zynaddsubfx/LocalZynAddSubFx.cpp (+0/-257)
plugins/zynaddsubfx/LocalZynAddSubFx.h (+0/-71)
plugins/zynaddsubfx/README.txt (+0/-95)
plugins/zynaddsubfx/RemoteZynAddSubFx.cpp (+0/-285)
plugins/zynaddsubfx/RemoteZynAddSubFx.h (+0/-36)
plugins/zynaddsubfx/ZynAddSubFx.cpp (+0/-647)
plugins/zynaddsubfx/ZynAddSubFx.h (+0/-167)
plugins/zynaddsubfx/bugs.txt (+0/-1)
plugins/zynaddsubfx/fltk/CHANGES (+0/-3562)
plugins/zynaddsubfx/fltk/CMake/FLTKConfig.cmake.in (+0/-38)
plugins/zynaddsubfx/fltk/CMake/UseFLTK.cmake.in (+0/-8)
plugins/zynaddsubfx/fltk/CMake/cmake_uninstall.cmake.in (+0/-19)
plugins/zynaddsubfx/fltk/CMake/posixScandir.cxx (+0/-10)
plugins/zynaddsubfx/fltk/CMakeLists.txt (+0/-698)
plugins/zynaddsubfx/fltk/COPYING (+0/-530)
plugins/zynaddsubfx/fltk/CREDITS (+0/-60)
plugins/zynaddsubfx/fltk/FL/Enumerations.H (+0/-959)
plugins/zynaddsubfx/fltk/FL/Fl.H (+0/-1174)
plugins/zynaddsubfx/fltk/FL/Fl_Adjuster.H (+0/-82)
plugins/zynaddsubfx/fltk/FL/Fl_Bitmap.H (+0/-85)
plugins/zynaddsubfx/fltk/FL/Fl_Box.H (+0/-69)
plugins/zynaddsubfx/fltk/FL/Fl_Browser.H (+0/-324)
plugins/zynaddsubfx/fltk/FL/Fl_Browser_.H (+0/-378)
plugins/zynaddsubfx/fltk/FL/Fl_Button.H (+0/-180)
plugins/zynaddsubfx/fltk/FL/Fl_Chart.H (+0/-160)
plugins/zynaddsubfx/fltk/FL/Fl_Check_Browser.H (+0/-122)
plugins/zynaddsubfx/fltk/FL/Fl_Check_Button.H (+0/-60)
plugins/zynaddsubfx/fltk/FL/Fl_Choice.H (+0/-108)
plugins/zynaddsubfx/fltk/FL/Fl_Clock.H (+0/-137)
plugins/zynaddsubfx/fltk/FL/Fl_Color_Chooser.H (+0/-199)
plugins/zynaddsubfx/fltk/FL/Fl_Counter.H (+0/-124)
plugins/zynaddsubfx/fltk/FL/Fl_Device.H (+0/-558)
plugins/zynaddsubfx/fltk/FL/Fl_Dial.H (+0/-97)
plugins/zynaddsubfx/fltk/FL/Fl_Double_Window.H (+0/-81)
plugins/zynaddsubfx/fltk/FL/Fl_Export.H (+0/-49)
plugins/zynaddsubfx/fltk/FL/Fl_File_Browser.H (+0/-120)
plugins/zynaddsubfx/fltk/FL/Fl_File_Chooser.H (+0/-247)
plugins/zynaddsubfx/fltk/FL/Fl_File_Icon.H (+0/-168)
plugins/zynaddsubfx/fltk/FL/Fl_File_Input.H (+0/-106)
plugins/zynaddsubfx/fltk/FL/Fl_Fill_Dial.H (+0/-48)
plugins/zynaddsubfx/fltk/FL/Fl_Fill_Slider.H (+0/-47)
plugins/zynaddsubfx/fltk/FL/Fl_Float_Input.H (+0/-62)
plugins/zynaddsubfx/fltk/FL/Fl_FormsBitmap.H (+0/-56)
plugins/zynaddsubfx/fltk/FL/Fl_FormsPixmap.H (+0/-63)
plugins/zynaddsubfx/fltk/FL/Fl_Free.H (+0/-89)
plugins/zynaddsubfx/fltk/FL/Fl_Group.H (+0/-230)
plugins/zynaddsubfx/fltk/FL/Fl_Help_Dialog.H (+0/-95)
plugins/zynaddsubfx/fltk/FL/Fl_Help_View.H (+0/-396)
plugins/zynaddsubfx/fltk/FL/Fl_Hold_Browser.H (+0/-65)
plugins/zynaddsubfx/fltk/FL/Fl_Hor_Fill_Slider.H (+0/-46)
plugins/zynaddsubfx/fltk/FL/Fl_Hor_Nice_Slider.H (+0/-46)
plugins/zynaddsubfx/fltk/FL/Fl_Hor_Slider.H (+0/-60)
plugins/zynaddsubfx/fltk/FL/Fl_Hor_Value_Slider.H (+0/-46)
plugins/zynaddsubfx/fltk/FL/Fl_Image.H (+0/-215)
plugins/zynaddsubfx/fltk/FL/Fl_Input.H (+0/-277)
plugins/zynaddsubfx/fltk/FL/Fl_Input_.H (+0/-497)
plugins/zynaddsubfx/fltk/FL/Fl_Input_Choice.H (+0/-222)
plugins/zynaddsubfx/fltk/FL/Fl_Int_Input.H (+0/-61)
plugins/zynaddsubfx/fltk/FL/Fl_Light_Button.H (+0/-59)
plugins/zynaddsubfx/fltk/FL/Fl_Line_Dial.H (+0/-46)
plugins/zynaddsubfx/fltk/FL/Fl_Menu.H (+0/-33)
plugins/zynaddsubfx/fltk/FL/Fl_Menu_.H (+0/-168)
plugins/zynaddsubfx/fltk/FL/Fl_Menu_Bar.H (+0/-89)
plugins/zynaddsubfx/fltk/FL/Fl_Menu_Button.H (+0/-86)
plugins/zynaddsubfx/fltk/FL/Fl_Menu_Item.H (+0/-443)
plugins/zynaddsubfx/fltk/FL/Fl_Menu_Window.H (+0/-68)
plugins/zynaddsubfx/fltk/FL/Fl_Multi_Browser.H (+0/-66)
plugins/zynaddsubfx/fltk/FL/Fl_Multi_Label.H (+0/-47)
plugins/zynaddsubfx/fltk/FL/Fl_Multiline_Input.H (+0/-75)
plugins/zynaddsubfx/fltk/FL/Fl_Multiline_Output.H (+0/-70)
plugins/zynaddsubfx/fltk/FL/Fl_Native_File_Chooser.H (+0/-305)
plugins/zynaddsubfx/fltk/FL/Fl_Nice_Slider.H (+0/-46)
plugins/zynaddsubfx/fltk/FL/Fl_Object.H (+0/-36)
plugins/zynaddsubfx/fltk/FL/Fl_Output.H (+0/-77)
plugins/zynaddsubfx/fltk/FL/Fl_Overlay_Window.H (+0/-79)
plugins/zynaddsubfx/fltk/FL/Fl_Pack.H (+0/-84)
plugins/zynaddsubfx/fltk/FL/Fl_Paged_Device.H (+0/-153)
plugins/zynaddsubfx/fltk/FL/Fl_Pixmap.H (+0/-99)
plugins/zynaddsubfx/fltk/FL/Fl_Plugin.H (+0/-104)
plugins/zynaddsubfx/fltk/FL/Fl_Positioner.H (+0/-103)
plugins/zynaddsubfx/fltk/FL/Fl_PostScript.H (+0/-253)
plugins/zynaddsubfx/fltk/FL/Fl_Preferences.H (+0/-276)
plugins/zynaddsubfx/fltk/FL/Fl_Printer.H (+0/-214)
plugins/zynaddsubfx/fltk/FL/Fl_Progress.H (+0/-81)
plugins/zynaddsubfx/fltk/FL/Fl_RGB_Image.H (+0/-35)
plugins/zynaddsubfx/fltk/FL/Fl_Radio_Button.H (+0/-46)
plugins/zynaddsubfx/fltk/FL/Fl_Radio_Light_Button.H (+0/-46)
plugins/zynaddsubfx/fltk/FL/Fl_Radio_Round_Button.H (+0/-46)
plugins/zynaddsubfx/fltk/FL/Fl_Repeat_Button.H (+0/-63)
plugins/zynaddsubfx/fltk/FL/Fl_Return_Button.H (+0/-60)
plugins/zynaddsubfx/fltk/FL/Fl_Roller.H (+0/-56)
plugins/zynaddsubfx/fltk/FL/Fl_Round_Button.H (+0/-57)
plugins/zynaddsubfx/fltk/FL/Fl_Round_Clock.H (+0/-48)
plugins/zynaddsubfx/fltk/FL/Fl_Scroll.H (+0/-199)
plugins/zynaddsubfx/fltk/FL/Fl_Scrollbar.H (+0/-120)
plugins/zynaddsubfx/fltk/FL/Fl_Secret_Input.H (+0/-64)
plugins/zynaddsubfx/fltk/FL/Fl_Select_Browser.H (+0/-64)
plugins/zynaddsubfx/fltk/FL/Fl_Shared_Image.H (+0/-114)
plugins/zynaddsubfx/fltk/FL/Fl_Simple_Counter.H (+0/-50)
plugins/zynaddsubfx/fltk/FL/Fl_Single_Window.H (+0/-67)
plugins/zynaddsubfx/fltk/FL/Fl_Slider.H (+0/-120)
plugins/zynaddsubfx/fltk/FL/Fl_Spinner.H (+0/-268)
plugins/zynaddsubfx/fltk/FL/Fl_Sys_Menu_Bar.H (+0/-80)
plugins/zynaddsubfx/fltk/FL/Fl_Table.H (+0/-1081)
plugins/zynaddsubfx/fltk/FL/Fl_Table_Row.H (+0/-211)
plugins/zynaddsubfx/fltk/FL/Fl_Tabs.H (+0/-92)
plugins/zynaddsubfx/fltk/FL/Fl_Text_Buffer.H (+0/-781)
plugins/zynaddsubfx/fltk/FL/Fl_Text_Display.H (+0/-480)
plugins/zynaddsubfx/fltk/FL/Fl_Text_Editor.H (+0/-141)
plugins/zynaddsubfx/fltk/FL/Fl_Tile.H (+0/-102)
plugins/zynaddsubfx/fltk/FL/Fl_Tiled_Image.H (+0/-70)
plugins/zynaddsubfx/fltk/FL/Fl_Timer.H (+0/-87)
plugins/zynaddsubfx/fltk/FL/Fl_Toggle_Button.H (+0/-60)
plugins/zynaddsubfx/fltk/FL/Fl_Toggle_Light_Button.H (+0/-37)
plugins/zynaddsubfx/fltk/FL/Fl_Toggle_Round_Button.H (+0/-37)
plugins/zynaddsubfx/fltk/FL/Fl_Tooltip.H (+0/-114)
plugins/zynaddsubfx/fltk/FL/Fl_Tree.H (+0/-1016)
plugins/zynaddsubfx/fltk/FL/Fl_Tree_Item.H (+0/-337)
plugins/zynaddsubfx/fltk/FL/Fl_Tree_Item_Array.H (+0/-90)
plugins/zynaddsubfx/fltk/FL/Fl_Tree_Prefs.H (+0/-343)
plugins/zynaddsubfx/fltk/FL/Fl_Valuator.H (+0/-144)
plugins/zynaddsubfx/fltk/FL/Fl_Value_Input.H (+0/-139)
plugins/zynaddsubfx/fltk/FL/Fl_Value_Output.H (+0/-95)
plugins/zynaddsubfx/fltk/FL/Fl_Value_Slider.H (+0/-69)
plugins/zynaddsubfx/fltk/FL/Fl_Widget.H (+0/-1006)
plugins/zynaddsubfx/fltk/FL/Fl_Window.H (+0/-465)
plugins/zynaddsubfx/fltk/FL/Fl_Wizard.H (+0/-70)
plugins/zynaddsubfx/fltk/FL/Fl_XBM_Image.H (+0/-50)
plugins/zynaddsubfx/fltk/FL/Fl_XPM_Image.H (+0/-51)
plugins/zynaddsubfx/fltk/FL/Xutf8.h (+0/-189)
plugins/zynaddsubfx/fltk/FL/dirent.h (+0/-34)
plugins/zynaddsubfx/fltk/FL/filename.H (+0/-180)
plugins/zynaddsubfx/fltk/FL/fl_ask.H (+0/-83)
plugins/zynaddsubfx/fltk/FL/fl_draw.H (+0/-784)
plugins/zynaddsubfx/fltk/FL/fl_message.H (+0/-32)
plugins/zynaddsubfx/fltk/FL/fl_show_colormap.H (+0/-58)
plugins/zynaddsubfx/fltk/FL/fl_show_input.H (+0/-32)
plugins/zynaddsubfx/fltk/FL/fl_types.h (+0/-66)
plugins/zynaddsubfx/fltk/FL/fl_utf8.h (+0/-263)
plugins/zynaddsubfx/fltk/FL/mac.H (+0/-237)
plugins/zynaddsubfx/fltk/FL/math.h (+0/-71)
plugins/zynaddsubfx/fltk/FL/names.h (+0/-123)
plugins/zynaddsubfx/fltk/FL/win32.H (+0/-165)
plugins/zynaddsubfx/fltk/FL/x.H (+0/-199)
plugins/zynaddsubfx/fltk/README (+0/-185)
plugins/zynaddsubfx/fltk/README.123 (+0/-697)
plugins/zynaddsubfx/fltk/README.mac (+0/-70)
plugins/zynaddsubfx/fltk/README.win32 (+0/-207)
plugins/zynaddsubfx/fltk/configh.cmake.in (+0/-328)
plugins/zynaddsubfx/fltk/fltk-config (+0/-388)
plugins/zynaddsubfx/fltk/fltk-config.cmake.in (+0/-388)
plugins/zynaddsubfx/fltk/fltk-config.in (+0/-388)
plugins/zynaddsubfx/fltk/fltk-diff.diff (+0/-126)
plugins/zynaddsubfx/fltk/fltk.list.in (+0/-421)
plugins/zynaddsubfx/fltk/fltk.spec.in (+0/-145)
plugins/zynaddsubfx/fltk/src/CMakeLists.txt (+0/-358)
plugins/zynaddsubfx/fltk/src/Fl.cxx (+0/-2024)
plugins/zynaddsubfx/fltk/src/Fl_Adjuster.cxx (+0/-182)
plugins/zynaddsubfx/fltk/src/Fl_Bitmap.cxx (+0/-482)
plugins/zynaddsubfx/fltk/src/Fl_Box.cxx (+0/-44)
plugins/zynaddsubfx/fltk/src/Fl_Browser.cxx (+0/-949)
plugins/zynaddsubfx/fltk/src/Fl_Browser_.cxx (+0/-1107)
plugins/zynaddsubfx/fltk/src/Fl_Browser_load.cxx (+0/-70)
plugins/zynaddsubfx/fltk/src/Fl_Button.cxx (+0/-218)
plugins/zynaddsubfx/fltk/src/Fl_Chart.cxx (+0/-436)
plugins/zynaddsubfx/fltk/src/Fl_Check_Browser.cxx (+0/-329)
plugins/zynaddsubfx/fltk/src/Fl_Check_Button.cxx (+0/-47)
plugins/zynaddsubfx/fltk/src/Fl_Choice.cxx (+0/-213)
plugins/zynaddsubfx/fltk/src/Fl_Clock.cxx (+0/-218)
plugins/zynaddsubfx/fltk/src/Fl_Color_Chooser.cxx (+0/-632)
plugins/zynaddsubfx/fltk/src/Fl_Counter.cxx (+0/-211)
plugins/zynaddsubfx/fltk/src/Fl_Device.cxx (+0/-90)
plugins/zynaddsubfx/fltk/src/Fl_Dial.cxx (+0/-166)
plugins/zynaddsubfx/fltk/src/Fl_Double_Window.cxx (+0/-462)
plugins/zynaddsubfx/fltk/src/Fl_File_Browser.cxx (+0/-643)
plugins/zynaddsubfx/fltk/src/Fl_File_Chooser.cxx (+0/-475)
plugins/zynaddsubfx/fltk/src/Fl_File_Chooser.fl (+0/-479)
plugins/zynaddsubfx/fltk/src/Fl_File_Chooser2.cxx (+0/-1696)
plugins/zynaddsubfx/fltk/src/Fl_File_Icon.cxx (+0/-492)
plugins/zynaddsubfx/fltk/src/Fl_File_Input.cxx (+0/-298)
plugins/zynaddsubfx/fltk/src/Fl_Font.H (+0/-118)
plugins/zynaddsubfx/fltk/src/Fl_GDI_Printer.cxx (+0/-285)
plugins/zynaddsubfx/fltk/src/Fl_Gl_Choice.H (+0/-124)
plugins/zynaddsubfx/fltk/src/Fl_Group.cxx (+0/-837)
plugins/zynaddsubfx/fltk/src/Fl_Help_Dialog.fl (+0/-265)
plugins/zynaddsubfx/fltk/src/Fl_Help_View.cxx (+0/-3519)
plugins/zynaddsubfx/fltk/src/Fl_Image.cxx (+0/-591)
plugins/zynaddsubfx/fltk/src/Fl_Input.cxx (+0/-822)
plugins/zynaddsubfx/fltk/src/Fl_Input_.cxx (+0/-1272)
plugins/zynaddsubfx/fltk/src/Fl_Light_Button.cxx (+0/-174)
plugins/zynaddsubfx/fltk/src/Fl_Menu.cxx (+0/-1060)
plugins/zynaddsubfx/fltk/src/Fl_Menu_.cxx (+0/-435)
plugins/zynaddsubfx/fltk/src/Fl_Menu_Bar.cxx (+0/-78)
plugins/zynaddsubfx/fltk/src/Fl_Menu_Button.cxx (+0/-122)
plugins/zynaddsubfx/fltk/src/Fl_Menu_Window.cxx (+0/-110)
plugins/zynaddsubfx/fltk/src/Fl_Menu_add.cxx (+0/-496)
plugins/zynaddsubfx/fltk/src/Fl_Menu_global.cxx (+0/-60)
plugins/zynaddsubfx/fltk/src/Fl_Multi_Label.cxx (+0/-80)
plugins/zynaddsubfx/fltk/src/Fl_Native_File_Chooser.cxx (+0/-47)
plugins/zynaddsubfx/fltk/src/Fl_Native_File_Chooser_FLTK.cxx (+0/-462)
plugins/zynaddsubfx/fltk/src/Fl_Native_File_Chooser_MAC.mm (+0/-632)
plugins/zynaddsubfx/fltk/src/Fl_Native_File_Chooser_WIN32.cxx (+0/-860)
plugins/zynaddsubfx/fltk/src/Fl_Native_File_Chooser_common.cxx (+0/-85)
plugins/zynaddsubfx/fltk/src/Fl_Overlay_Window.cxx (+0/-176)
plugins/zynaddsubfx/fltk/src/Fl_Pack.cxx (+0/-157)
plugins/zynaddsubfx/fltk/src/Fl_Paged_Device.cxx (+0/-297)
plugins/zynaddsubfx/fltk/src/Fl_Pixmap.cxx (+0/-563)
plugins/zynaddsubfx/fltk/src/Fl_Positioner.cxx (+0/-161)
plugins/zynaddsubfx/fltk/src/Fl_PostScript.cxx (+0/-1597)
plugins/zynaddsubfx/fltk/src/Fl_Preferences.cxx (+0/-1803)
plugins/zynaddsubfx/fltk/src/Fl_Printer.cxx (+0/-201)
plugins/zynaddsubfx/fltk/src/Fl_Progress.cxx (+0/-123)
plugins/zynaddsubfx/fltk/src/Fl_Repeat_Button.cxx (+0/-70)
plugins/zynaddsubfx/fltk/src/Fl_Return_Button.cxx (+0/-73)
plugins/zynaddsubfx/fltk/src/Fl_Roller.cxx (+0/-185)
plugins/zynaddsubfx/fltk/src/Fl_Round_Button.cxx (+0/-48)
plugins/zynaddsubfx/fltk/src/Fl_Scroll.cxx (+0/-420)
plugins/zynaddsubfx/fltk/src/Fl_Scrollbar.cxx (+0/-292)
plugins/zynaddsubfx/fltk/src/Fl_Shared_Image.cxx (+0/-476)
plugins/zynaddsubfx/fltk/src/Fl_Single_Window.cxx (+0/-41)
plugins/zynaddsubfx/fltk/src/Fl_Slider.cxx (+0/-392)
plugins/zynaddsubfx/fltk/src/Fl_Sys_Menu_Bar.cxx (+0/-288)
plugins/zynaddsubfx/fltk/src/Fl_Table.cxx (+0/-1253)
plugins/zynaddsubfx/fltk/src/Fl_Table_Row.cxx (+0/-316)
plugins/zynaddsubfx/fltk/src/Fl_Tabs.cxx (+0/-531)
plugins/zynaddsubfx/fltk/src/Fl_Text_Buffer.cxx (+0/-1794)
plugins/zynaddsubfx/fltk/src/Fl_Text_Display.cxx (+0/-3795)
plugins/zynaddsubfx/fltk/src/Fl_Text_Editor.cxx (+0/-652)
plugins/zynaddsubfx/fltk/src/Fl_Tile.cxx (+0/-214)
plugins/zynaddsubfx/fltk/src/Fl_Tiled_Image.cxx (+0/-135)
plugins/zynaddsubfx/fltk/src/Fl_Tooltip.cxx (+0/-351)
plugins/zynaddsubfx/fltk/src/Fl_Tree.cxx (+0/-976)
plugins/zynaddsubfx/fltk/src/Fl_Tree_Item.cxx (+0/-929)
plugins/zynaddsubfx/fltk/src/Fl_Tree_Item_Array.cxx (+0/-157)
plugins/zynaddsubfx/fltk/src/Fl_Tree_Prefs.cxx (+0/-168)
plugins/zynaddsubfx/fltk/src/Fl_Valuator.cxx (+0/-196)
plugins/zynaddsubfx/fltk/src/Fl_Value_Input.cxx (+0/-149)
plugins/zynaddsubfx/fltk/src/Fl_Value_Output.cxx (+0/-108)
plugins/zynaddsubfx/fltk/src/Fl_Value_Slider.cxx (+0/-86)
plugins/zynaddsubfx/fltk/src/Fl_Widget.cxx (+0/-345)
plugins/zynaddsubfx/fltk/src/Fl_Window.cxx (+0/-293)
plugins/zynaddsubfx/fltk/src/Fl_Window_fullscreen.cxx (+0/-98)
plugins/zynaddsubfx/fltk/src/Fl_Window_hotspot.cxx (+0/-100)
plugins/zynaddsubfx/fltk/src/Fl_Window_iconize.cxx (+0/-49)
plugins/zynaddsubfx/fltk/src/Fl_Wizard.cxx (+0/-195)
plugins/zynaddsubfx/fltk/src/Fl_XBM_Image.cxx (+0/-112)
plugins/zynaddsubfx/fltk/src/Fl_XColor.H (+0/-46)
plugins/zynaddsubfx/fltk/src/Fl_XPM_Image.cxx (+0/-136)
plugins/zynaddsubfx/fltk/src/Fl_abort.cxx (+0/-102)
plugins/zynaddsubfx/fltk/src/Fl_add_idle.cxx (+0/-123)
plugins/zynaddsubfx/fltk/src/Fl_arg.cxx (+0/-550)
plugins/zynaddsubfx/fltk/src/Fl_compose.cxx (+0/-102)
plugins/zynaddsubfx/fltk/src/Fl_display.cxx (+0/-60)
plugins/zynaddsubfx/fltk/src/Fl_get_key.cxx (+0/-69)
plugins/zynaddsubfx/fltk/src/Fl_get_key_mac.cxx (+0/-124)
plugins/zynaddsubfx/fltk/src/Fl_get_key_win32.cxx (+0/-138)
plugins/zynaddsubfx/fltk/src/Fl_get_system_colors.cxx (+0/-426)
plugins/zynaddsubfx/fltk/src/Fl_grab.cxx (+0/-104)
plugins/zynaddsubfx/fltk/src/Fl_lock.cxx (+0/-418)
plugins/zynaddsubfx/fltk/src/Fl_mac.cxx (+0/-2870)
plugins/zynaddsubfx/fltk/src/Fl_own_colormap.cxx (+0/-90)
plugins/zynaddsubfx/fltk/src/Fl_visual.cxx (+0/-155)
plugins/zynaddsubfx/fltk/src/Fl_win32.cxx (+0/-2080)
plugins/zynaddsubfx/fltk/src/Fl_x.cxx (+0/-2114)
plugins/zynaddsubfx/fltk/src/aimm.h (+0/-431)
plugins/zynaddsubfx/fltk/src/fastarrow.h (+0/-6)
plugins/zynaddsubfx/fltk/src/filename_absolute.cxx (+0/-272)
plugins/zynaddsubfx/fltk/src/filename_expand.cxx (+0/-134)
plugins/zynaddsubfx/fltk/src/filename_ext.cxx (+0/-58)
plugins/zynaddsubfx/fltk/src/filename_isdir.cxx (+0/-103)
plugins/zynaddsubfx/fltk/src/filename_list.cxx (+0/-206)
plugins/zynaddsubfx/fltk/src/filename_match.cxx (+0/-128)
plugins/zynaddsubfx/fltk/src/filename_setext.cxx (+0/-60)
plugins/zynaddsubfx/fltk/src/fl_arc.cxx (+0/-91)
plugins/zynaddsubfx/fltk/src/fl_arci.cxx (+0/-131)
plugins/zynaddsubfx/fltk/src/fl_ask.cxx (+0/-571)
plugins/zynaddsubfx/fltk/src/fl_boxtype.cxx (+0/-429)
plugins/zynaddsubfx/fltk/src/fl_call_main.c (+0/-143)
plugins/zynaddsubfx/fltk/src/fl_cmap.h (+0/-256)
plugins/zynaddsubfx/fltk/src/fl_color.cxx (+0/-471)
plugins/zynaddsubfx/fltk/src/fl_color_mac.cxx (+0/-92)
plugins/zynaddsubfx/fltk/src/fl_color_win32.cxx (+0/-252)
plugins/zynaddsubfx/fltk/src/fl_cursor.cxx (+0/-333)
plugins/zynaddsubfx/fltk/src/fl_curve.cxx (+0/-110)
plugins/zynaddsubfx/fltk/src/fl_diamond_box.cxx (+0/-80)
plugins/zynaddsubfx/fltk/src/fl_dnd.cxx (+0/-38)
plugins/zynaddsubfx/fltk/src/fl_dnd_win32.cxx (+0/-555)
plugins/zynaddsubfx/fltk/src/fl_dnd_x.cxx (+0/-202)
plugins/zynaddsubfx/fltk/src/fl_draw.cxx (+0/-486)
plugins/zynaddsubfx/fltk/src/fl_draw_image.cxx (+0/-578)
plugins/zynaddsubfx/fltk/src/fl_draw_image_mac.cxx (+0/-176)
plugins/zynaddsubfx/fltk/src/fl_draw_image_win32.cxx (+0/-345)
plugins/zynaddsubfx/fltk/src/fl_draw_pixmap.cxx (+0/-429)
plugins/zynaddsubfx/fltk/src/fl_encoding_latin1.cxx (+0/-137)
plugins/zynaddsubfx/fltk/src/fl_encoding_mac_roman.cxx (+0/-134)
plugins/zynaddsubfx/fltk/src/fl_engraved_label.cxx (+0/-93)
plugins/zynaddsubfx/fltk/src/fl_file_dir.cxx (+0/-200)
plugins/zynaddsubfx/fltk/src/fl_font.cxx (+0/-99)
plugins/zynaddsubfx/fltk/src/fl_font_mac.cxx (+0/-541)
plugins/zynaddsubfx/fltk/src/fl_font_win32.cxx (+0/-452)
plugins/zynaddsubfx/fltk/src/fl_font_x.cxx (+0/-344)
plugins/zynaddsubfx/fltk/src/fl_font_xft.cxx (+0/-706)
plugins/zynaddsubfx/fltk/src/fl_gtk.cxx (+0/-304)
plugins/zynaddsubfx/fltk/src/fl_labeltype.cxx (+0/-144)
plugins/zynaddsubfx/fltk/src/fl_line_style.cxx (+0/-174)
plugins/zynaddsubfx/fltk/src/fl_open_uri.cxx (+0/-383)
plugins/zynaddsubfx/fltk/src/fl_oval_box.cxx (+0/-66)
plugins/zynaddsubfx/fltk/src/fl_overlay.cxx (+0/-129)
plugins/zynaddsubfx/fltk/src/fl_overlay_visual.cxx (+0/-105)
plugins/zynaddsubfx/fltk/src/fl_plastic.cxx (+0/-381)
plugins/zynaddsubfx/fltk/src/fl_read_image.cxx (+0/-509)
plugins/zynaddsubfx/fltk/src/fl_read_image_mac.cxx (+0/-82)
plugins/zynaddsubfx/fltk/src/fl_read_image_win32.cxx (+0/-133)
plugins/zynaddsubfx/fltk/src/fl_rect.cxx (+0/-727)
plugins/zynaddsubfx/fltk/src/fl_round_box.cxx (+0/-124)
plugins/zynaddsubfx/fltk/src/fl_rounded_box.cxx (+0/-99)
plugins/zynaddsubfx/fltk/src/fl_scroll_area.cxx (+0/-169)
plugins/zynaddsubfx/fltk/src/fl_set_font.cxx (+0/-97)
plugins/zynaddsubfx/fltk/src/fl_set_fonts.cxx (+0/-46)
plugins/zynaddsubfx/fltk/src/fl_set_fonts_mac.cxx (+0/-164)
plugins/zynaddsubfx/fltk/src/fl_set_fonts_win32.cxx (+0/-173)
plugins/zynaddsubfx/fltk/src/fl_set_fonts_x.cxx (+0/-350)
plugins/zynaddsubfx/fltk/src/fl_set_fonts_xft.cxx (+0/-384)
plugins/zynaddsubfx/fltk/src/fl_shadow_box.cxx (+0/-56)
plugins/zynaddsubfx/fltk/src/fl_shortcut.cxx (+0/-386)
plugins/zynaddsubfx/fltk/src/fl_show_colormap.cxx (+0/-162)
plugins/zynaddsubfx/fltk/src/fl_symbols.cxx (+0/-714)
plugins/zynaddsubfx/fltk/src/fl_utf.c (+0/-995)
plugins/zynaddsubfx/fltk/src/fl_utf8.cxx (+0/-850)
plugins/zynaddsubfx/fltk/src/fl_vertex.cxx (+0/-286)
plugins/zynaddsubfx/fltk/src/flstring.c (+0/-105)
plugins/zynaddsubfx/fltk/src/flstring.h (+0/-104)
plugins/zynaddsubfx/fltk/src/mediumarrow.h (+0/-6)
plugins/zynaddsubfx/fltk/src/numericsort.c (+0/-111)
plugins/zynaddsubfx/fltk/src/print_panel.cxx (+0/-597)
plugins/zynaddsubfx/fltk/src/print_panel.h (+0/-55)
plugins/zynaddsubfx/fltk/src/ps_image.cxx (+0/-553)
plugins/zynaddsubfx/fltk/src/scandir.c (+0/-124)
plugins/zynaddsubfx/fltk/src/scandir_win32.c (+0/-135)
plugins/zynaddsubfx/fltk/src/screen_xywh.cxx (+0/-353)
plugins/zynaddsubfx/fltk/src/slowarrow.h (+0/-6)
plugins/zynaddsubfx/fltk/src/tile.xpm (+0/-91)
plugins/zynaddsubfx/fltk/src/vsnprintf.c (+0/-281)
plugins/zynaddsubfx/fltk/src/xutf8/COPYING (+0/-50)
plugins/zynaddsubfx/fltk/src/xutf8/README (+0/-67)
plugins/zynaddsubfx/fltk/src/xutf8/case.c (+0/-126)
plugins/zynaddsubfx/fltk/src/xutf8/headers/case.h (+0/-1770)
plugins/zynaddsubfx/fltk/src/xutf8/headers/case_tbl.txt (+0/-8)
plugins/zynaddsubfx/fltk/src/xutf8/headers/dingbats_.h (+0/-565)
plugins/zynaddsubfx/fltk/src/xutf8/headers/spacing.h (+0/-1978)
plugins/zynaddsubfx/fltk/src/xutf8/headers/spacing_tbl.txt (+0/-10)
plugins/zynaddsubfx/fltk/src/xutf8/headers/symbol_.h (+0/-1126)
plugins/zynaddsubfx/fltk/src/xutf8/headers/tbl.txt (+0/-122)
plugins/zynaddsubfx/fltk/src/xutf8/imKStoUCS.c (+0/-324)
plugins/zynaddsubfx/fltk/src/xutf8/is_right2left.c (+0/-84)
plugins/zynaddsubfx/fltk/src/xutf8/is_spacing.c (+0/-90)
plugins/zynaddsubfx/fltk/src/xutf8/keysym2Ucs.c (+0/-41)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/8bit_tab_to_h.c (+0/-536)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/COPYRIGHT (+0/-39)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/README (+0/-12)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/armscii_8.h (+0/-98)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/ascii.h (+0/-26)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/big5.h (+0/-4145)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/big5_emacs.h (+0/-164)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/cjk_tab_to_h.c (+0/-1025)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/cp1133.h (+0/-92)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/cp1251.h (+0/-117)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/cp1255.h (+0/-121)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/cp1256.h (+0/-135)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/cp936ext.h (+0/-6259)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/gb2312.h (+0/-2556)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/gbk_tab_to_h.c (+0/-1020)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/georgian_academy.h (+0/-88)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/georgian_ps.h (+0/-105)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_1.h (+0/-23)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_10.h (+0/-92)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_11.h (+0/-82)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_13.h (+0/-95)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_14.h (+0/-113)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_15.h (+0/-67)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_16.h (+0/-98)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_2.h (+0/-100)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_3.h (+0/-104)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_4.h (+0/-98)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_5.h (+0/-81)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_6.h (+0/-84)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_7.h (+0/-92)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_8.h (+0/-93)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_9.h (+0/-71)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/iso8859_9e.h (+0/-103)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/jisx0201.h (+0/-53)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/jisx0208.h (+0/-2401)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/jisx0212.h (+0/-2168)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/koi8_c.h (+0/-103)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/koi8_r.h (+0/-139)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/koi8_u.h (+0/-146)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/ksc5601.h (+0/-3006)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/mulelao.h (+0/-78)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/tatar_cyr.h (+0/-123)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/tcvn.h (+0/-134)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/tis620.h (+0/-78)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/ucs2be.h (+0/-32)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/utf8.h (+0/-110)
plugins/zynaddsubfx/fltk/src/xutf8/lcUniConv/viscii.h (+0/-123)
plugins/zynaddsubfx/fltk/src/xutf8/mk_wcwidth.c (+0/-353)
plugins/zynaddsubfx/fltk/src/xutf8/ucs2fontmap.c (+0/-380)
plugins/zynaddsubfx/fltk/src/xutf8/utf8Input.c (+0/-459)
plugins/zynaddsubfx/fltk/src/xutf8/utf8Utils.c (+0/-238)
plugins/zynaddsubfx/fltk/src/xutf8/utf8Wrap.c (+0/-1049)
plugins/zynaddsubfx/src/DSP/AnalogFilter.cpp (+0/-450)
plugins/zynaddsubfx/src/DSP/AnalogFilter.h (+0/-82)
plugins/zynaddsubfx/src/DSP/CMakeLists.txt (+0/-14)
plugins/zynaddsubfx/src/DSP/FFTwrapper.cpp (+0/-136)
plugins/zynaddsubfx/src/DSP/FFTwrapper.h (+0/-70)
plugins/zynaddsubfx/src/DSP/Filter.cpp (+0/-87)
plugins/zynaddsubfx/src/DSP/Filter.h (+0/-52)
plugins/zynaddsubfx/src/DSP/Filter_.h (+0/-43)
plugins/zynaddsubfx/src/DSP/FormantFilter.cpp (+0/-231)
plugins/zynaddsubfx/src/DSP/FormantFilter.h (+0/-69)
plugins/zynaddsubfx/src/DSP/SVFilter.cpp (+0/-186)
plugins/zynaddsubfx/src/DSP/SVFilter.h (+0/-71)
plugins/zynaddsubfx/src/DSP/Unison.cpp (+0/-192)
plugins/zynaddsubfx/src/DSP/Unison.h (+0/-69)
plugins/zynaddsubfx/src/Effects/Alienwah.cpp (+0/-281)
plugins/zynaddsubfx/src/Effects/Alienwah.h (+0/-85)
plugins/zynaddsubfx/src/Effects/CMakeLists.txt (+0/-19)
plugins/zynaddsubfx/src/Effects/Chorus.cpp (+0/-320)
plugins/zynaddsubfx/src/Effects/Chorus.h (+0/-114)
plugins/zynaddsubfx/src/Effects/Distorsion.cpp (+0/-481)
plugins/zynaddsubfx/src/Effects/Distorsion.h (+0/-75)
plugins/zynaddsubfx/src/Effects/DynamicFilter.cpp (+0/-352)
plugins/zynaddsubfx/src/Effects/DynamicFilter.h (+0/-72)
plugins/zynaddsubfx/src/Effects/EQ.cpp (+0/-212)
plugins/zynaddsubfx/src/Effects/EQ.h (+0/-58)
plugins/zynaddsubfx/src/Effects/Echo.cpp (+0/-270)
plugins/zynaddsubfx/src/Effects/Echo.h (+0/-140)
plugins/zynaddsubfx/src/Effects/Effect.cpp (+0/-36)
plugins/zynaddsubfx/src/Effects/Effect.h (+0/-105)
plugins/zynaddsubfx/src/Effects/EffectLFO.cpp (+0/-127)
plugins/zynaddsubfx/src/Effects/EffectLFO.h (+0/-53)
plugins/zynaddsubfx/src/Effects/EffectMgr.cpp (+0/-357)
plugins/zynaddsubfx/src/Effects/EffectMgr.h (+0/-102)
plugins/zynaddsubfx/src/Effects/Phaser.cpp (+0/-473)
plugins/zynaddsubfx/src/Effects/Phaser.h (+0/-103)
plugins/zynaddsubfx/src/Effects/Reverb.cpp (+0/-552)
plugins/zynaddsubfx/src/Effects/Reverb.h (+0/-135)
plugins/zynaddsubfx/src/Input/ALSAMidiIn.cpp (+0/-118)
plugins/zynaddsubfx/src/Input/ALSAMidiIn.h (+0/-51)
plugins/zynaddsubfx/src/Input/CMakeLists.txt (+0/-19)
plugins/zynaddsubfx/src/Input/MidiIn.cpp (+0/-96)
plugins/zynaddsubfx/src/Input/MidiIn.h (+0/-52)
plugins/zynaddsubfx/src/Input/NULLMidiIn.cpp (+0/-41)
plugins/zynaddsubfx/src/Input/NULLMidiIn.h (+0/-50)
plugins/zynaddsubfx/src/Input/OSSMidiIn.cpp (+0/-123)
plugins/zynaddsubfx/src/Input/OSSMidiIn.h (+0/-50)
plugins/zynaddsubfx/src/Input/WINMidiIn.cpp (+0/-94)
plugins/zynaddsubfx/src/Input/WINMidiIn.h (+0/-34)
plugins/zynaddsubfx/src/Misc/Bank.cpp (+0/-644)
plugins/zynaddsubfx/src/Misc/Bank.h (+0/-108)
plugins/zynaddsubfx/src/Misc/CMakeLists.txt (+0/-22)
plugins/zynaddsubfx/src/Misc/Config.cpp (+0/-409)
plugins/zynaddsubfx/src/Misc/Config.h (+0/-73)
plugins/zynaddsubfx/src/Misc/Control.h (+0/-100)
plugins/zynaddsubfx/src/Misc/Dump.cpp (+0/-124)
plugins/zynaddsubfx/src/Misc/Dump.h (+0/-64)
plugins/zynaddsubfx/src/Misc/LASHClient.cpp (+0/-104)
plugins/zynaddsubfx/src/Misc/LASHClient.h (+0/-66)
plugins/zynaddsubfx/src/Misc/Master.cpp (+0/-828)
plugins/zynaddsubfx/src/Misc/Master.h (+0/-177)
plugins/zynaddsubfx/src/Misc/Microtonal.cpp (+0/-687)
plugins/zynaddsubfx/src/Misc/Microtonal.h (+0/-135)
plugins/zynaddsubfx/src/Misc/Part.cpp (+0/-1370)
plugins/zynaddsubfx/src/Misc/Part.h (+0/-206)
plugins/zynaddsubfx/src/Misc/QtXmlWrapper.cpp (+0/-550)
plugins/zynaddsubfx/src/Misc/QtXmlWrapper.h (+0/-125)
plugins/zynaddsubfx/src/Misc/Stereo.cpp (+0/-39)
plugins/zynaddsubfx/src/Misc/Stereo.h (+0/-42)
plugins/zynaddsubfx/src/Misc/Util.cpp (+0/-130)
plugins/zynaddsubfx/src/Misc/Util.h (+0/-84)
plugins/zynaddsubfx/src/Misc/XMLwrapper.cpp (+0/-617)
plugins/zynaddsubfx/src/Misc/XMLwrapper.h (+0/-275)
plugins/zynaddsubfx/src/Output/CMakeLists.txt (+0/-33)
plugins/zynaddsubfx/src/Output/DSSIaudiooutput.cpp (+0/-685)
plugins/zynaddsubfx/src/Output/DSSIaudiooutput.h (+0/-111)
plugins/zynaddsubfx/src/Output/JACK_RTaudiooutput.cpp (+0/-229)
plugins/zynaddsubfx/src/Output/JACKaudiooutput.cpp (+0/-185)
plugins/zynaddsubfx/src/Output/JACKaudiooutput.h (+0/-48)
plugins/zynaddsubfx/src/Output/OSSaudiooutput.cpp (+0/-128)
plugins/zynaddsubfx/src/Output/OSSaudiooutput.h (+0/-50)
plugins/zynaddsubfx/src/Output/PAaudiooutput.cpp (+0/-80)
plugins/zynaddsubfx/src/Output/PAaudiooutput.h (+0/-34)
plugins/zynaddsubfx/src/Output/Recorder.cpp (+0/-113)
plugins/zynaddsubfx/src/Output/Recorder.h (+0/-57)
plugins/zynaddsubfx/src/Output/VSTaudiooutput.cpp (+0/-68)
plugins/zynaddsubfx/src/Output/VSTaudiooutput.h (+0/-60)
plugins/zynaddsubfx/src/Output/WAVaudiooutput.cpp (+0/-101)
plugins/zynaddsubfx/src/Output/WAVaudiooutput.h (+0/-43)
plugins/zynaddsubfx/src/Params/ADnoteParameters.cpp (+0/-840)
plugins/zynaddsubfx/src/Params/ADnoteParameters.h (+0/-307)
plugins/zynaddsubfx/src/Params/CMakeLists.txt (+0/-19)
plugins/zynaddsubfx/src/Params/Controller.cpp (+0/-415)
plugins/zynaddsubfx/src/Params/Controller.h (+0/-221)
plugins/zynaddsubfx/src/Params/EnvelopeParams.cpp (+0/-298)
plugins/zynaddsubfx/src/Params/EnvelopeParams.h (+0/-90)
plugins/zynaddsubfx/src/Params/FilterParams.cpp (+0/-392)
plugins/zynaddsubfx/src/Params/FilterParams.h (+0/-103)
plugins/zynaddsubfx/src/Params/LFOParams.cpp (+0/-105)
plugins/zynaddsubfx/src/Params/LFOParams.h (+0/-72)
plugins/zynaddsubfx/src/Params/PADnoteParameters.cpp (+0/-909)
plugins/zynaddsubfx/src/Params/PADnoteParameters.h (+0/-183)
plugins/zynaddsubfx/src/Params/Presets.cpp (+0/-122)
plugins/zynaddsubfx/src/Params/Presets.h (+0/-57)
plugins/zynaddsubfx/src/Params/PresetsArray.cpp (+0/-138)
plugins/zynaddsubfx/src/Params/PresetsArray.h (+0/-60)
plugins/zynaddsubfx/src/Params/PresetsStore.cpp (+0/-189)
plugins/zynaddsubfx/src/Params/PresetsStore.h (+0/-67)
plugins/zynaddsubfx/src/Params/SUBnoteParameters.cpp (+0/-251)
plugins/zynaddsubfx/src/Params/SUBnoteParameters.h (+0/-104)
plugins/zynaddsubfx/src/Samples/CMakeLists.txt (+0/-11)
plugins/zynaddsubfx/src/Samples/Sample.cpp (+0/-194)
plugins/zynaddsubfx/src/Samples/Sample.h (+0/-74)
plugins/zynaddsubfx/src/Seq/CMakeLists.txt (+0/-11)
plugins/zynaddsubfx/src/Seq/MIDIEvents.cpp (+0/-93)
plugins/zynaddsubfx/src/Seq/MIDIEvents.h (+0/-69)
plugins/zynaddsubfx/src/Seq/MIDIFile.cpp (+0/-419)
plugins/zynaddsubfx/src/Seq/MIDIFile.h (+0/-89)
plugins/zynaddsubfx/src/Seq/Sequencer.cpp (+0/-190)
plugins/zynaddsubfx/src/Seq/Sequencer.h (+0/-90)
plugins/zynaddsubfx/src/Synth/ADnote.cpp (+0/-1993)
plugins/zynaddsubfx/src/Synth/ADnote.h (+0/-349)
plugins/zynaddsubfx/src/Synth/CMakeLists.txt (+0/-16)
plugins/zynaddsubfx/src/Synth/Envelope.cpp (+0/-199)
plugins/zynaddsubfx/src/Synth/Envelope.h (+0/-65)
plugins/zynaddsubfx/src/Synth/LFO.cpp (+0/-184)
plugins/zynaddsubfx/src/Synth/LFO.h (+0/-59)
plugins/zynaddsubfx/src/Synth/OscilGen.cpp (+0/-1475)
plugins/zynaddsubfx/src/Synth/OscilGen.h (+0/-183)
plugins/zynaddsubfx/src/Synth/PADnote.cpp (+0/-614)
plugins/zynaddsubfx/src/Synth/PADnote.h (+0/-143)
plugins/zynaddsubfx/src/Synth/Resonance.cpp (+0/-282)
plugins/zynaddsubfx/src/Synth/Resonance.h (+0/-70)
plugins/zynaddsubfx/src/Synth/SUBnote.cpp (+0/-790)
plugins/zynaddsubfx/src/Synth/SUBnote.h (+0/-135)
plugins/zynaddsubfx/src/UI/ADnoteUI.cc (+0/-2202)
plugins/zynaddsubfx/src/UI/ADnoteUI.fl (+0/-1161)
plugins/zynaddsubfx/src/UI/ADnoteUI.h (+0/-387)
plugins/zynaddsubfx/src/UI/BankUI.cc (+0/-421)
plugins/zynaddsubfx/src/UI/BankUI.fl (+0/-355)
plugins/zynaddsubfx/src/UI/BankUI.h (+0/-101)
plugins/zynaddsubfx/src/UI/CMakeLists.txt (+0/-32)
plugins/zynaddsubfx/src/UI/ConfigUI.cc (+0/-562)
plugins/zynaddsubfx/src/UI/ConfigUI.fl (+0/-451)
plugins/zynaddsubfx/src/UI/ConfigUI.h (+0/-120)
plugins/zynaddsubfx/src/UI/EffUI.cc (+0/-4113)
plugins/zynaddsubfx/src/UI/EffUI.fl (+0/-2361)
plugins/zynaddsubfx/src/UI/EffUI.h (+0/-820)
plugins/zynaddsubfx/src/UI/EnvelopeUI.cc (+0/-1525)
plugins/zynaddsubfx/src/UI/EnvelopeUI.fl (+0/-851)
plugins/zynaddsubfx/src/UI/EnvelopeUI.h (+0/-280)
plugins/zynaddsubfx/src/UI/FilterUI.cc (+0/-987)
plugins/zynaddsubfx/src/UI/FilterUI.fl (+0/-624)
plugins/zynaddsubfx/src/UI/FilterUI.h (+0/-198)
plugins/zynaddsubfx/src/UI/LFOUI.cc (+0/-289)
plugins/zynaddsubfx/src/UI/LFOUI.fl (+0/-176)
plugins/zynaddsubfx/src/UI/LFOUI.h (+0/-83)
plugins/zynaddsubfx/src/UI/MasterUI.cc (+0/-2504)
plugins/zynaddsubfx/src/UI/MasterUI.fl (+0/-1815)
plugins/zynaddsubfx/src/UI/MasterUI.h (+0/-448)
plugins/zynaddsubfx/src/UI/MicrotonalUI.cc (+0/-463)
plugins/zynaddsubfx/src/UI/MicrotonalUI.fl (+0/-270)
plugins/zynaddsubfx/src/UI/MicrotonalUI.h (+0/-112)
plugins/zynaddsubfx/src/UI/OscilGenUI.cc (+0/-1410)
plugins/zynaddsubfx/src/UI/OscilGenUI.fl (+0/-1133)
plugins/zynaddsubfx/src/UI/OscilGenUI.h (+0/-281)
plugins/zynaddsubfx/src/UI/PADnoteUI.cc (+0/-1504)
plugins/zynaddsubfx/src/UI/PADnoteUI.fl (+0/-1101)
plugins/zynaddsubfx/src/UI/PADnoteUI.h (+0/-305)
plugins/zynaddsubfx/src/UI/PartUI.cc (+0/-1880)
plugins/zynaddsubfx/src/UI/PartUI.fl (+0/-1125)
plugins/zynaddsubfx/src/UI/PartUI.h (+0/-338)
plugins/zynaddsubfx/src/UI/PresetsUI.cc (+0/-274)
plugins/zynaddsubfx/src/UI/PresetsUI.fl (+0/-208)
plugins/zynaddsubfx/src/UI/PresetsUI.h (+0/-84)
plugins/zynaddsubfx/src/UI/ResonanceUI.cc (+0/-553)
plugins/zynaddsubfx/src/UI/ResonanceUI.fl (+0/-392)
plugins/zynaddsubfx/src/UI/ResonanceUI.h (+0/-120)
plugins/zynaddsubfx/src/UI/SUBnoteUI.cc (+0/-735)
plugins/zynaddsubfx/src/UI/SUBnoteUI.fl (+0/-449)
plugins/zynaddsubfx/src/UI/SUBnoteUI.h (+0/-179)
plugins/zynaddsubfx/src/UI/SeqUI.cc (+0/-98)
plugins/zynaddsubfx/src/UI/SeqUI.fl (+0/-73)
plugins/zynaddsubfx/src/UI/SeqUI.h (+0/-39)
plugins/zynaddsubfx/src/UI/VirKeyboard.cc (+0/-499)
plugins/zynaddsubfx/src/UI/VirKeyboard.fl (+0/-424)
plugins/zynaddsubfx/src/UI/VirKeyboard.h (+0/-90)
plugins/zynaddsubfx/src/UI/WidgetPDial.cc (+0/-215)
plugins/zynaddsubfx/src/UI/WidgetPDial.fl (+0/-253)
plugins/zynaddsubfx/src/UI/WidgetPDial.h (+0/-46)
plugins/zynaddsubfx/src/UI/filechooser.h (+0/-27)
plugins/zynaddsubfx/src/globals.h (+0/-235)
plugins/zynaddsubfx/zynaddsubfx.rc (+0/-26)
plugins/zynaddsubfx/zynaddsubfx.rc.in (+0/-26)
src/3rdparty/samplerate/common.h (+0/-169)
src/3rdparty/samplerate/fastest_coeffs.h (+0/-2505)
src/3rdparty/samplerate/float_cast.h (+0/-281)
src/3rdparty/samplerate/high_qual_coeffs.h (+0/-340281)
src/3rdparty/samplerate/mid_qual_coeffs.h (+0/-22480)
src/3rdparty/samplerate/samplerate.c (+0/-545)
src/3rdparty/samplerate/samplerate.h (+0/-199)
src/3rdparty/samplerate/src_config.h (+0/-8)
src/3rdparty/samplerate/src_linear.c (+0/-220)
src/3rdparty/samplerate/src_sinc.c (+0/-1207)
src/3rdparty/samplerate/src_zoh.c (+0/-211)
src/core/AutomatableModel.cpp (+0/-512)
src/core/AutomationPattern.cpp (+0/-496)
src/core/Clipboard.cpp (+0/-53)
src/core/ComboBoxModel.cpp (+0/-69)
src/core/Controller.cpp (+0/-259)
src/core/ControllerConnection.cpp (+0/-214)
src/core/DataFile.cpp (+756/-0)
src/core/Effect.cpp (+0/-206)
src/core/EffectChain.cpp (+0/-268)
src/core/EnvelopeAndLfoParameters.cpp (+0/-516)
src/core/FxMixer.cpp (+0/-255)
src/core/ImportFilter.cpp (+0/-127)
src/core/InlineAutomation.cpp (+0/-60)
src/core/Instrument.cpp (+0/-137)
src/core/InstrumentFunctions.cpp (+0/-549)
src/core/InstrumentSoundShaping.cpp (+0/-400)
src/core/JournallingObject.cpp (+0/-236)
src/core/LadspaControl.cpp (+0/-298)
src/core/LfoController.cpp (+0/-249)
src/core/MeterModel.cpp (+0/-83)
src/core/MixHelpers.cpp (+171/-0)
src/core/Mixer.cpp (+991/-0)
src/core/MixerWorkerThread.cpp (+165/-0)
src/core/Model.cpp (+0/-50)
src/core/NotePlayHandle.cpp (+510/-0)
src/core/Oscillator.cpp (+0/-551)
src/core/PeakController.cpp (+0/-132)
src/core/Piano.cpp (+0/-117)
src/core/Plugin.cpp (+0/-230)
src/core/PresetPreviewPlayHandle.cpp (+261/-0)
src/core/ProjectJournal.cpp (+0/-170)
src/core/ProjectRenderer.cpp (+0/-232)
src/core/RemotePlugin.cpp (+0/-398)
src/core/SampleBuffer.cpp (+1357/-0)
src/core/SamplePlayHandle.cpp (+149/-0)
src/core/SampleRecordHandle.cpp (+154/-0)
src/core/SerializingObject.cpp (+0/-106)
src/core/TempoSyncKnobModel.cpp (+0/-186)
src/core/ToolPlugin.cpp (+0/-58)
src/core/TrackContainer.cpp (+247/-0)
src/core/VstSyncController.cpp (+200/-0)
src/core/audio/AudioAlsa.cpp (+0/-539)
src/core/audio/AudioDevice.cpp (+0/-257)
src/core/audio/AudioFileDevice.cpp (+0/-89)
src/core/audio/AudioFileOgg.cpp (+0/-268)
src/core/audio/AudioFileWave.cpp (+0/-125)
src/core/audio/AudioJack.cpp (+0/-486)
src/core/audio/AudioOss.cpp (+0/-375)
src/core/audio/AudioPort.cpp (+0/-123)
src/core/audio/AudioPortAudio.cpp (+0/-491)
src/core/audio/AudioPulseAudio.cpp (+0/-326)
src/core/audio/AudioSampleRecorder.cpp (+0/-114)
src/core/audio/AudioSdl.cpp (+0/-236)
src/core/base64.cpp (+0/-76)
src/core/bb_track_container.cpp (+0/-280)
src/core/config_mgr.cpp (+0/-458)
src/core/drumsynth.cpp (+0/-735)
src/core/engine.cpp (+0/-184)
src/core/fft_helpers.cpp (+0/-243)
src/core/ladspa_2_lmms.cpp (+0/-128)
src/core/ladspa_manager.cpp (+0/-994)
src/core/main.cpp (+0/-515)
src/core/midi/MidiAlsaRaw.cpp (+0/-208)
src/core/midi/MidiAlsaSeq.cpp (+0/-700)
src/core/midi/MidiClient.cpp (+0/-332)
src/core/midi/MidiController.cpp (+0/-153)
src/core/midi/MidiOss.cpp (+0/-148)
src/core/midi/MidiPort.cpp (+0/-431)
src/core/midi/MidiWinMM.cpp (+0/-361)
src/core/mixer.cpp (+0/-1221)
src/core/mmp.cpp (+0/-717)
src/core/note.cpp (+0/-287)
src/core/note_play_handle.cpp (+0/-537)
src/core/preset_preview_play_handle.cpp (+0/-244)
src/core/project_version.cpp (+0/-82)
src/core/sample_buffer.cpp (+0/-1229)
src/core/sample_play_handle.cpp (+0/-168)
src/core/sample_record_handle.cpp (+0/-154)
src/core/song.cpp (+0/-1420)
src/core/surround_area.cpp (+0/-118)
src/core/timeline.cpp (+0/-380)
src/core/track.cpp (+0/-2492)
src/core/track_container.cpp (+0/-239)
src/gui/AutomatableModelView.cpp (+0/-257)
src/gui/AutomationEditor.cpp (+0/-2179)
src/gui/AutomationPatternView.cpp (+0/-336)
src/gui/ControllerConnectionDialog.cpp (+0/-450)
src/gui/ControllerDialog.cpp (+0/-55)
src/gui/EffectControlDialog.cpp (+0/-61)
src/gui/EffectSelectDialog.cpp (+0/-210)
src/gui/Forms/EffectSelectDialog.ui (+0/-111)
src/gui/FxMixerView.cpp (+0/-347)
src/gui/InstrumentView.cpp (+0/-74)
src/gui/LfoControllerDialog.cpp (+0/-293)
src/gui/LmmsStyle.cpp (+823/-0)
src/gui/MainWindow.cpp (+0/-1073)
src/gui/ModelView.cpp (+0/-88)
src/gui/PeakControllerDialog.cpp (+0/-109)
src/gui/PianoRoll.cpp (+3960/-0)
src/gui/PianoView.cpp (+0/-939)
src/gui/SongEditor.cpp (+801/-0)
src/gui/ToolPluginView.cpp (+0/-47)
src/gui/TrackContainerView.cpp (+455/-0)
src/gui/about_dialog.cpp (+0/-85)
src/gui/bb_editor.cpp (+0/-260)
src/gui/dialogs/FileDialog.cpp (+68/-0)
src/gui/dialogs/VersionedSaveDialog.cpp (+139/-0)
src/gui/dialogs/about_dialog.ui (+0/-272)
src/gui/dialogs/export_project.ui (+0/-376)
src/gui/embed.cpp (+0/-100)
src/gui/export_project_dialog.cpp (+0/-341)
src/gui/file_browser.cpp (+0/-1037)
src/gui/lmms_style.cpp (+0/-238)
src/gui/piano_roll.cpp (+0/-3858)
src/gui/plugin_browser.cpp (+0/-221)
src/gui/setup_dialog.cpp (+0/-1283)
src/gui/song_editor.cpp (+0/-783)
src/gui/string_pair_drag.cpp (+0/-111)
src/gui/track_container_view.cpp (+0/-518)
src/gui/widgets/ControllerRackView.cpp (+0/-182)
src/gui/widgets/ControllerView.cpp (+0/-201)
src/gui/widgets/EffectRackView.cpp (+0/-262)
src/gui/widgets/EffectView.cpp (+0/-287)
src/gui/widgets/EnvelopeAndLfoView.cpp (+0/-578)
src/gui/widgets/FxLine.cpp (+163/-0)
src/gui/widgets/InstrumentFunctionViews.cpp (+0/-205)
src/gui/widgets/InstrumentMidiIOView.cpp (+0/-156)
src/gui/widgets/InstrumentSoundShapingView.cpp (+0/-148)
src/gui/widgets/LadspaControlView.cpp (+0/-128)
src/gui/widgets/LcdSpinBox.cpp (+194/-0)
src/gui/widgets/LcdWidget.cpp (+246/-0)
src/gui/widgets/MeterDialog.cpp (+0/-116)
src/gui/widgets/MidiPortMenu.cpp (+0/-104)
src/gui/widgets/SendButtonIndicator.cpp (+53/-0)
src/gui/widgets/SideBar.cpp (+0/-160)
src/gui/widgets/SideBarWidget.cpp (+0/-89)
src/gui/widgets/TimeDisplayWidget.cpp (+143/-0)
src/gui/widgets/automatable_button.cpp (+0/-257)
src/gui/widgets/automatable_slider.cpp (+0/-148)
src/gui/widgets/caption_menu.cpp (+0/-50)
src/gui/widgets/combobox.cpp (+0/-246)
src/gui/widgets/cpuload_widget.cpp (+0/-106)
src/gui/widgets/fade_button.cpp (+0/-123)
src/gui/widgets/fader.cpp (+0/-313)
src/gui/widgets/graph.cpp (+0/-528)
src/gui/widgets/group_box.cpp (+0/-144)
src/gui/widgets/knob.cpp (+0/-691)
src/gui/widgets/lcd_spinbox.cpp (+0/-341)
src/gui/widgets/led_checkbox.cpp (+0/-97)
src/gui/widgets/nstate_button.cpp (+0/-105)
src/gui/widgets/pixmap_button.cpp (+0/-138)
src/gui/widgets/project_notes.cpp (+0/-399)
src/gui/widgets/rename_dialog.cpp (+0/-80)
src/gui/widgets/rubberband.cpp (+0/-107)
src/gui/widgets/tab_bar.cpp (+0/-248)
src/gui/widgets/tab_widget.cpp (+0/-234)
src/gui/widgets/tempo_sync_knob.cpp (+0/-309)
src/gui/widgets/text_float.cpp (+0/-197)
src/gui/widgets/tool_button.cpp (+0/-107)
src/gui/widgets/tooltip.cpp (+0/-40)
src/gui/widgets/track_label_button.cpp (+0/-167)
src/gui/widgets/visualization_widget.cpp (+0/-194)
src/tracks/AutomationTrack.cpp (+0/-196)
src/tracks/InstrumentTrack.cpp (+0/-1638)
src/tracks/SampleTrack.cpp (+598/-0)
src/tracks/bb_track.cpp (+0/-598)
src/tracks/pattern.cpp (+0/-1337)
src/tracks/sample_track.cpp (+0/-588)
tests/README (+5/-0)
tests/emptyproject.mmp (+279/-0)
To merge this branch: bzr merge lp:~timo-jyrinki/ubuntu/trusty/lmms/1.0.0_packaging
Reviewer Review Type Date Requested Status
Ubuntu branches Pending
Review via email: mp+215131@code.launchpad.net

Commit message

[ Israel Dahl (God Loves You) ]
  * fix-crash-on-close: (Filipe Coelho)
  * debian/rules: tiny version (Rodney Dawes)
  * debian/compat: 9
  * debian/menu: name * LMMS
  * debian/control: removed obsolete builddeps, added fltk libs... suggest
    fluid-soundfont-gm
  * Completely redesigned default theme and UI style
  * New splash screen and logo
  * New plugins:
    - DynamicsProcessor
    - sfxr
    - OpulenZ, an FM synth for LMMS
    - Waveshaper
    - Dual Filter
    - vocoder LADSPA plugin
  * AudioFileProcessor: added stutter playback mode
  * Added time display widget
  * Added support for vector-based automations with various interpolation
    methods
  * Added config option to enable waveform display by default
  * Added more controls to Peak Controller
  * Added standard paths to file open/save dialog
  * LFO controller: added support for custom waveforms
  * New file dialogs allowing for project versioning
  * Added pitch range support for instruments
  * Vestige: Path to VST plugins stored as relative, if opened from
    default VST plugin path
  * Song, SongEditor, BB-Editor, Piano-Roll: correction of play button problems
  * Display key presses in Piano Roll
  * Save solo states for tracks
  * Fixed envelope sustain response
  * Add support for upgrading presets
  * Added optional drawing of note names in Piano Roll
  * Improved overall performance by switching of FX processing if input
    is silent - you might need to tweak the FX decay knobs
  * Use Kicker as default instrument in B+B-Editor
  * Added option for unlinking all controls to context menu of controls
  * Fixed various build issues related to ZynAddSubFX, VST support etc.
  * Atomically write project files via overwrite-by-rename to prevent
    data loss upon disk failures
  * Timeline: allow right click + shift to move left loop point
  * Fixed various MIDI-related issues
  * Default MIDI velocity to 63 for volume=100%
  * CLANG compatibility
  * Hide contents of envelope/LFO tab and display info about
    single-streamed instruments instead
  * Knob code improvement: make the acceleration curve smoother
    and less "sudden" (exponential response curve for smoothing operation)
  * File dialog: Common places added to left pane
  * New mime-type icons
  * Native Amplifier plugin
  * Added support for loading 32-bit samples
  * Fixed oversampling and other problems in export

  [ Timo Jyrinki ]
  * Rework to be according to (LP: #1291675)
  * Sync sources to match the bzr snapshot tarball.
  * Refresh fix-crash-on-close.patch to apply.
  * Apply and remove upstream_fixes patch, already included in the upstream
    snapshot.
  * Fix-broken-command-line-rendering.-Should-always-che.patch:
    - Add from git as suggested
  * AutomatableModel-always-fit-value-from-linked-model.patch:
    - Replace the old patch with a format-patch version from git, but
      unapplied as already included in the bzr snapshot
  * Drop lib64-builddir.patch, seems obsolete
  * debian/lmms.lintian-overrides:
    - Override pkg-has-shlibs-control-file-but-no-actual-shared-libs as
      the libraries are private plugins. Also ignore the
      useless-call-to-ldconfig:s.
  * Restore debian/lmms.xpm from the png to clean a lintian error
  * Clean changelog of lintian warnings
  * Remove unneeded postrm/postinst scripts with 'update-menu'

Description of the change

To post a comment you must log in.
Revision history for this message
Timo Jyrinki (timo-jyrinki) wrote :

Testable with:
sudo apt-add-repository ppa:timo-jyrinki/ppa
sudo apt-get update
sudo apt-get install lmms-common lmms

See bug #1291675 for the approved FFe, test reports and other info.

Revision history for this message
Timo Jyrinki (timo-jyrinki) wrote :

A positive test report also using this new build with my changes was received.

The negative part is that there are still two lintian errors:
E: lmms: menu-icon-not-in-xpm-format usr/share/pixmaps/lmms.png
E: lmms: pkg-has-shlibs-control-file-but-no-actual-shared-libs

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file '.gitattributes'
2--- .gitattributes 1970-01-01 00:00:00 +0000
3+++ .gitattributes 2014-04-11 06:58:04 +0000
4@@ -0,0 +1,2 @@
5+.gitattributes export-ignore
6+.gitignore export-ignore
7
8=== added file '.gitignore'
9--- .gitignore 1970-01-01 00:00:00 +0000
10+++ .gitignore 2014-04-11 06:58:04 +0000
11@@ -0,0 +1,5 @@
12+/build
13+/target
14+.*.sw?
15+*~
16+/CMakeLists.txt.user
17
18=== added file '.mailmap'
19--- .mailmap 1970-01-01 00:00:00 +0000
20+++ .mailmap 2014-04-11 06:58:04 +0000
21@@ -0,0 +1,11 @@
22+Tobias Doerffel <tobias.doerffel@gmail.com>
23+Paul Giblock <drfaygo@gmail.com> <pgib@users.sf.net>
24+Paul Giblock <drfaygo@gmail.com> <p@pgiblock.net>
25+Andrew Kelley <superjoe30@gmail.com> <andrew.r.kelley@gmail.com>
26+Andrew Kelley <superjoe30@gmail.com> <andy@debian.superjoesoftware>
27+Janne Sinisalo <janne.m.sinisalo@gmail.com> <janne@janne-desktop.(none)>
28+Raine M. Ekman <raine@iki.fi> <raine@raine.(none)>
29+Raine M. Ekman <raine@iki.fi> <raine@raine.damex.fi>
30+Lukas W <lukaswhl@googlemail.com> <lukaswhl@gmail.com>
31+Vesa <contact.diizy@nbl.fi> <vesa@isokone.(none)>
32+Jonathan Aquilina <eagles051387@gmail.com>
33
34=== added file '.pc/applied-patches'
35--- .pc/applied-patches 1970-01-01 00:00:00 +0000
36+++ .pc/applied-patches 2014-04-11 06:58:04 +0000
37@@ -0,0 +1,2 @@
38+upstream-fixes
39+fix-crash-on-close.patch
40
41=== removed file '.pc/applied-patches'
42--- .pc/applied-patches 2013-03-06 13:01:25 +0000
43+++ .pc/applied-patches 1970-01-01 00:00:00 +0000
44@@ -1,1 +0,0 @@
45-lib64-builddir.patch
46
47=== added directory '.pc/fix-crash-on-close.patch'
48=== added file '.pc/fix-crash-on-close.patch/.timestamp'
49=== added directory '.pc/fix-crash-on-close.patch/plugins'
50=== added directory '.pc/fix-crash-on-close.patch/plugins/LadspaEffect'
51=== added directory '.pc/fix-crash-on-close.patch/plugins/LadspaEffect/caps'
52=== added file '.pc/fix-crash-on-close.patch/plugins/LadspaEffect/caps/interface.cc'
53--- .pc/fix-crash-on-close.patch/plugins/LadspaEffect/caps/interface.cc 1970-01-01 00:00:00 +0000
54+++ .pc/fix-crash-on-close.patch/plugins/LadspaEffect/caps/interface.cc 2014-04-11 06:58:04 +0000
55@@ -0,0 +1,145 @@
56+/*
57+ interface.cc
58+
59+ Copyright 2004-11 Tim Goetze <tim@quitte.de>
60+
61+ http://quitte.de/dsp/
62+
63+ LADSPA descriptor factory, host interface.
64+
65+*/
66+/*
67+ This program is free software; you can redistribute it and/or
68+ modify it under the terms of the GNU General Public License
69+ as published by the Free Software Foundation; either version 2
70+ of the License, or (at your option) any later version.
71+
72+ This program is distributed in the hope that it will be useful,
73+ but WITHOUT ANY WARRANTY; without even the implied warranty of
74+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
75+ GNU General Public License for more details.
76+
77+ You should have received a copy of the GNU General Public License
78+ along with this program; if not, write to the Free Software
79+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
80+ 02111-1307, USA or point your web browser to http://www.gnu.org.
81+*/
82+/*
83+ LADSPA ID ranges 1761 - 1800 and 2581 - 2660
84+ (2541 - 2580 donated to artemio@kdemail.net)
85+*/
86+
87+#include <sys/time.h>
88+
89+#include "basics.h"
90+
91+#include "Cabinet.h"
92+#include "Chorus.h"
93+#include "Phaser.h"
94+#include "Sin.h"
95+#include "Lorenz.h"
96+#include "Roessler.h"
97+#include "Reverb.h"
98+#include "Compress.h"
99+#include "Click.h"
100+#include "Eq.h"
101+#include "Clip.h"
102+#include "White.h"
103+#include "SweepVF.h"
104+#include "VCO.h"
105+#include "Amp.h"
106+#include "HRTF.h"
107+#include "Pan.h"
108+#include "Scape.h"
109+#include "ToneStack.h"
110+
111+#include "Descriptor.h"
112+
113+#define N 39
114+static DescriptorStub * descriptors [N];
115+
116+/*static inline void
117+seed()
118+{
119+ static struct timeval tv;
120+ gettimeofday (&tv, 0);
121+
122+ srand (tv.tv_sec ^ tv.tv_usec);
123+}*/
124+
125+extern "C" {
126+
127+__attribute__ ((constructor))
128+void _init()
129+{
130+ DescriptorStub ** d = descriptors;
131+
132+ *d++ = new Descriptor<Eq>();
133+ *d++ = new Descriptor<Eq2x2>();
134+ *d++ = new Descriptor<Compress>();
135+ *d++ = new Descriptor<Pan>();
136+ *d++ = new Descriptor<Narrower>();
137+
138+ *d++ = new Descriptor<PreampIII>();
139+ *d++ = new Descriptor<PreampIV>();
140+ *d++ = new Descriptor<ToneStack>();
141+ *d++ = new Descriptor<ToneStackLT>();
142+ *d++ = new Descriptor<AmpIII>();
143+ *d++ = new Descriptor<AmpIV>();
144+ *d++ = new Descriptor<AmpV>();
145+ *d++ = new Descriptor<AmpVTS>();
146+ *d++ = new Descriptor<CabinetI>();
147+ *d++ = new Descriptor<CabinetII>();
148+ *d++ = new Descriptor<Clip>();
149+
150+ *d++ = new Descriptor<ChorusI>();
151+ *d++ = new Descriptor<StereoChorusI>();
152+ *d++ = new Descriptor<ChorusII>();
153+ *d++ = new Descriptor<StereoChorusII>();
154+ *d++ = new Descriptor<PhaserI>();
155+ *d++ = new Descriptor<PhaserII>();
156+ *d++ = new Descriptor<SweepVFI>();
157+ *d++ = new Descriptor<SweepVFII>();
158+ *d++ = new Descriptor<AutoWah>();
159+ *d++ = new Descriptor<Scape>();
160+
161+ *d++ = new Descriptor<VCOs>();
162+ *d++ = new Descriptor<VCOd>();
163+ *d++ = new Descriptor<CEO>();
164+ *d++ = new Descriptor<Sin>();
165+ *d++ = new Descriptor<White>();
166+ *d++ = new Descriptor<Lorenz>();
167+ *d++ = new Descriptor<Roessler>();
168+
169+ *d++ = new Descriptor<JVRev>();
170+ *d++ = new Descriptor<Plate>();
171+ *d++ = new Descriptor<Plate2x2>();
172+
173+ *d++ = new Descriptor<Click>();
174+ *d++ = new Descriptor<Dirac>();
175+ *d++ = new Descriptor<HRTF>();
176+
177+ /* make sure N is correct */
178+ assert (d - descriptors == N);
179+
180+ //seed();
181+}
182+
183+__attribute__ ((destructor))
184+void _fini()
185+{
186+ for (ulong i = 0; i < N; ++i)
187+ delete descriptors[i];
188+}
189+
190+/* /////////////////////////////////////////////////////////////////////// */
191+
192+const LADSPA_Descriptor *
193+ladspa_descriptor (unsigned long i)
194+{
195+ if (i < N)
196+ return descriptors[i];
197+ return 0;
198+}
199+
200+}; /* extern "C" */
201
202=== added directory '.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap'
203=== added file '.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_autopan.c'
204--- .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_autopan.c 1970-01-01 00:00:00 +0000
205+++ .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_autopan.c 2014-04-11 06:58:04 +0000
206@@ -0,0 +1,361 @@
207+/* -*- linux-c -*-
208+ Copyright (C) 2004 Tom Szilagyi
209+
210+ Patches were received from:
211+ Alexander Koenig <alex@lisas.de>
212+
213+ This program is free software; you can redistribute it and/or modify
214+ it under the terms of the GNU General Public License as published by
215+ the Free Software Foundation; either version 2 of the License, or
216+ (at your option) any later version.
217+
218+ This program is distributed in the hope that it will be useful,
219+ but WITHOUT ANY WARRANTY; without even the implied warranty of
220+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
221+ GNU General Public License for more details.
222+
223+ You should have received a copy of the GNU General Public License
224+ along with this program; if not, write to the Free Software
225+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
226+
227+ $Id: tap_autopan.c,v 1.6 2004/02/21 17:33:36 tszilagyi Exp $
228+*/
229+
230+
231+#include <stdio.h>
232+#include <stdlib.h>
233+#include <string.h>
234+#include <math.h>
235+
236+#include <ladspa.h>
237+#include "tap_utils.h"
238+
239+/* The Unique ID of the plugin: */
240+
241+#define ID_STEREO 2146
242+
243+/* The port numbers for the plugin: */
244+
245+#define CONTROL_FREQ 0
246+#define CONTROL_DEPTH 1
247+#define CONTROL_GAIN 2
248+#define INPUT_L 3
249+#define INPUT_R 4
250+#define OUTPUT_L 5
251+#define OUTPUT_R 6
252+
253+
254+/* Total number of ports */
255+
256+#define PORTCOUNT_STEREO 7
257+
258+
259+/* cosine table for fast computations */
260+LADSPA_Data cos_table[1024];
261+
262+
263+/* The structure used to hold port connection information and state */
264+
265+typedef struct {
266+ LADSPA_Data * freq;
267+ LADSPA_Data * depth;
268+ LADSPA_Data * gain;
269+ LADSPA_Data * input_L;
270+ LADSPA_Data * input_R;
271+ LADSPA_Data * output_L;
272+ LADSPA_Data * output_R;
273+ unsigned long SampleRate;
274+ LADSPA_Data Phase;
275+ LADSPA_Data run_adding_gain;
276+} AutoPan;
277+
278+
279+
280+/* Construct a new plugin instance. */
281+LADSPA_Handle
282+instantiate_AutoPan(const LADSPA_Descriptor * Descriptor,
283+ unsigned long SampleRate) {
284+
285+ LADSPA_Handle * ptr;
286+
287+ if ((ptr = malloc(sizeof(AutoPan))) != NULL) {
288+ ((AutoPan *)ptr)->SampleRate = SampleRate;
289+ ((AutoPan *)ptr)->run_adding_gain = 1.0;
290+ return ptr;
291+ }
292+
293+ return NULL;
294+}
295+
296+void
297+activate_AutoPan(LADSPA_Handle Instance) {
298+
299+ AutoPan * ptr;
300+
301+ ptr = (AutoPan *)Instance;
302+ ptr->Phase = 0.0f;
303+}
304+
305+
306+
307+/* Connect a port to a data location. */
308+void
309+connect_port_AutoPan(LADSPA_Handle Instance,
310+ unsigned long Port,
311+ LADSPA_Data * DataLocation) {
312+
313+ AutoPan * ptr;
314+
315+ ptr = (AutoPan *)Instance;
316+ switch (Port) {
317+ case CONTROL_FREQ:
318+ ptr->freq = DataLocation;
319+ break;
320+ case CONTROL_DEPTH:
321+ ptr->depth = DataLocation;
322+ break;
323+ case CONTROL_GAIN:
324+ ptr->gain = DataLocation;
325+ break;
326+ case INPUT_L:
327+ ptr->input_L = DataLocation;
328+ break;
329+ case INPUT_R:
330+ ptr->input_R = DataLocation;
331+ break;
332+ case OUTPUT_L:
333+ ptr->output_L = DataLocation;
334+ break;
335+ case OUTPUT_R:
336+ ptr->output_R = DataLocation;
337+ break;
338+ }
339+}
340+
341+
342+
343+void
344+run_AutoPan(LADSPA_Handle Instance,
345+ unsigned long SampleCount) {
346+
347+ AutoPan * ptr = (AutoPan *)Instance;
348+
349+ LADSPA_Data * input_L = ptr->input_L;
350+ LADSPA_Data * input_R = ptr->input_R;
351+ LADSPA_Data * output_L = ptr->output_L;
352+ LADSPA_Data * output_R = ptr->output_R;
353+ LADSPA_Data freq = LIMIT(*(ptr->freq),0.0f,20.0f);
354+ LADSPA_Data depth = LIMIT(*(ptr->depth),0.0f,100.0f);
355+ LADSPA_Data gain = db2lin(LIMIT(*(ptr->gain),-70.0f,20.0f));
356+ unsigned long sample_index;
357+ LADSPA_Data phase_L = 0;
358+ LADSPA_Data phase_R = 0;
359+
360+ for (sample_index = 0; sample_index < SampleCount; sample_index++) {
361+ phase_L = 1024.0f * freq * sample_index / ptr->SampleRate + ptr->Phase;
362+ while (phase_L >= 1024.0f)
363+ phase_L -= 1024.0f;
364+ phase_R = phase_L + 512.0f;
365+ while (phase_R >= 1024.0f)
366+ phase_R -= 1024.0f;
367+
368+ *(output_L++) = *(input_L++) * gain *
369+ (1 - 0.5*depth/100 + 0.5 * depth/100 * cos_table[(unsigned long) phase_L]);
370+ *(output_R++) = *(input_R++) * gain *
371+ (1 - 0.5*depth/100 + 0.5 * depth/100 * cos_table[(unsigned long) phase_R]);
372+ }
373+ ptr->Phase = phase_L;
374+ while (ptr->Phase >= 1024.0f)
375+ ptr->Phase -= 1024.0f;
376+}
377+
378+
379+
380+void
381+set_run_adding_gain_AutoPan(LADSPA_Handle Instance, LADSPA_Data gain) {
382+
383+ AutoPan * ptr;
384+
385+ ptr = (AutoPan *)Instance;
386+
387+ ptr->run_adding_gain = gain;
388+}
389+
390+
391+
392+void
393+run_adding_AutoPan(LADSPA_Handle Instance,
394+ unsigned long SampleCount) {
395+
396+ AutoPan * ptr = (AutoPan *)Instance;
397+
398+ LADSPA_Data * input_L = ptr->input_L;
399+ LADSPA_Data * input_R = ptr->input_R;
400+ LADSPA_Data * output_L = ptr->output_L;
401+ LADSPA_Data * output_R = ptr->output_R;
402+ LADSPA_Data freq = LIMIT(*(ptr->freq),0.0f,20.0f);
403+ LADSPA_Data depth = LIMIT(*(ptr->depth),0.0f,100.0f);
404+ LADSPA_Data gain = db2lin(LIMIT(*(ptr->gain),-70.0f,20.0f));
405+ unsigned long sample_index;
406+ LADSPA_Data phase_L = 0;
407+ LADSPA_Data phase_R = 0;
408+
409+ for (sample_index = 0; sample_index < SampleCount; sample_index++) {
410+ phase_L = 1024.0f * freq * sample_index / ptr->SampleRate + ptr->Phase;
411+ while (phase_L >= 1024.0f)
412+ phase_L -= 1024.0f;
413+ phase_R = phase_L + 512.0f;
414+ while (phase_R >= 1024.0f)
415+ phase_R -= 1024.0f;
416+
417+ *(output_L++) += *(input_L++) * gain * ptr->run_adding_gain *
418+ (1 - 0.5*depth/100 + 0.5 * depth/100 * cos_table[(unsigned long) phase_L]);
419+ *(output_R++) += *(input_R++) * gain * ptr->run_adding_gain *
420+ (1 - 0.5*depth/100 + 0.5 * depth/100 * cos_table[(unsigned long) phase_R]);
421+ }
422+ ptr->Phase = phase_L;
423+ while (ptr->Phase >= 1024.0f)
424+ ptr->Phase -= 1024.0f;
425+}
426+
427+
428+
429+
430+/* Throw away an AutoPan effect instance. */
431+void
432+cleanup_AutoPan(LADSPA_Handle Instance) {
433+ free(Instance);
434+}
435+
436+
437+
438+LADSPA_Descriptor * mono_descriptor = NULL;
439+
440+
441+
442+/* __attribute__((constructor)) _init() is called automatically when the plugin library is first
443+ loaded. */
444+void
445+__attribute__((constructor)) _init() {
446+
447+ int i;
448+ char ** port_names;
449+ LADSPA_PortDescriptor * port_descriptors;
450+ LADSPA_PortRangeHint * port_range_hints;
451+
452+ if ((mono_descriptor =
453+ (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor))) == NULL)
454+ exit(1);
455+
456+ for (i = 0; i < 1024; i++)
457+ cos_table[i] = cosf(i * M_PI / 512.0f);
458+
459+
460+ mono_descriptor->UniqueID = ID_STEREO;
461+ mono_descriptor->Label = strdup("tap_autopan");
462+ mono_descriptor->Properties = LADSPA_PROPERTY_HARD_RT_CAPABLE;
463+ mono_descriptor->Name = strdup("TAP AutoPanner");
464+ mono_descriptor->Maker = strdup("Tom Szilagyi");
465+ mono_descriptor->Copyright = strdup("GPL");
466+ mono_descriptor->PortCount = PORTCOUNT_STEREO;
467+
468+ if ((port_descriptors =
469+ (LADSPA_PortDescriptor *)calloc(PORTCOUNT_STEREO, sizeof(LADSPA_PortDescriptor))) == NULL)
470+ exit(1);
471+
472+ mono_descriptor->PortDescriptors = (const LADSPA_PortDescriptor *)port_descriptors;
473+ port_descriptors[CONTROL_FREQ] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
474+ port_descriptors[CONTROL_DEPTH] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
475+ port_descriptors[CONTROL_GAIN] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
476+ port_descriptors[INPUT_L] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
477+ port_descriptors[INPUT_R] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
478+ port_descriptors[OUTPUT_L] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
479+ port_descriptors[OUTPUT_R] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
480+
481+ if ((port_names =
482+ (char **)calloc(PORTCOUNT_STEREO, sizeof(char *))) == NULL)
483+ exit(1);
484+
485+ mono_descriptor->PortNames = (const char **)port_names;
486+ port_names[CONTROL_FREQ] = strdup("Frequency [Hz]");
487+ port_names[CONTROL_DEPTH] = strdup("Depth [%]");
488+ port_names[CONTROL_GAIN] = strdup("Gain [dB]");
489+ port_names[INPUT_L] = strdup("Input L");
490+ port_names[INPUT_R] = strdup("Input R");
491+ port_names[OUTPUT_L] = strdup("Output L");
492+ port_names[OUTPUT_R] = strdup("Output R");
493+
494+ if ((port_range_hints =
495+ ((LADSPA_PortRangeHint *)calloc(PORTCOUNT_STEREO, sizeof(LADSPA_PortRangeHint)))) == NULL)
496+ exit(1);
497+
498+ mono_descriptor->PortRangeHints = (const LADSPA_PortRangeHint *)port_range_hints;
499+ port_range_hints[CONTROL_FREQ].HintDescriptor =
500+ (LADSPA_HINT_BOUNDED_BELOW |
501+ LADSPA_HINT_BOUNDED_ABOVE |
502+ LADSPA_HINT_DEFAULT_0);
503+ port_range_hints[CONTROL_DEPTH].HintDescriptor =
504+ (LADSPA_HINT_BOUNDED_BELOW |
505+ LADSPA_HINT_BOUNDED_ABOVE |
506+ LADSPA_HINT_DEFAULT_0);
507+ port_range_hints[CONTROL_GAIN].HintDescriptor =
508+ (LADSPA_HINT_BOUNDED_BELOW |
509+ LADSPA_HINT_BOUNDED_ABOVE |
510+ LADSPA_HINT_DEFAULT_0);
511+ port_range_hints[CONTROL_FREQ].LowerBound = 0;
512+ port_range_hints[CONTROL_FREQ].UpperBound = 20;
513+ port_range_hints[CONTROL_DEPTH].LowerBound = 0;
514+ port_range_hints[CONTROL_DEPTH].UpperBound = 100;
515+ port_range_hints[CONTROL_GAIN].LowerBound = -70;
516+ port_range_hints[CONTROL_GAIN].UpperBound = 20;
517+ port_range_hints[INPUT_L].HintDescriptor = 0;
518+ port_range_hints[INPUT_R].HintDescriptor = 0;
519+ port_range_hints[OUTPUT_L].HintDescriptor = 0;
520+ port_range_hints[OUTPUT_R].HintDescriptor = 0;
521+ mono_descriptor->instantiate = instantiate_AutoPan;
522+ mono_descriptor->connect_port = connect_port_AutoPan;
523+ mono_descriptor->activate = activate_AutoPan;
524+ mono_descriptor->run = run_AutoPan;
525+ mono_descriptor->run_adding = run_adding_AutoPan;
526+ mono_descriptor->set_run_adding_gain = set_run_adding_gain_AutoPan;
527+ mono_descriptor->deactivate = NULL;
528+ mono_descriptor->cleanup = cleanup_AutoPan;
529+}
530+
531+
532+void
533+delete_descriptor(LADSPA_Descriptor * descriptor) {
534+ unsigned long index;
535+ if (descriptor) {
536+ free((char *)descriptor->Label);
537+ free((char *)descriptor->Name);
538+ free((char *)descriptor->Maker);
539+ free((char *)descriptor->Copyright);
540+ free((LADSPA_PortDescriptor *)descriptor->PortDescriptors);
541+ for (index = 0; index < descriptor->PortCount; index++)
542+ free((char *)(descriptor->PortNames[index]));
543+ free((char **)descriptor->PortNames);
544+ free((LADSPA_PortRangeHint *)descriptor->PortRangeHints);
545+ free(descriptor);
546+ }
547+}
548+
549+
550+/* __attribute__((destructor)) _fini() is called automatically when the library is unloaded. */
551+void
552+__attribute__((destructor)) _fini() {
553+ delete_descriptor(mono_descriptor);
554+}
555+
556+
557+/* Return a descriptor of the requested plugin type. */
558+const LADSPA_Descriptor *
559+ladspa_descriptor(unsigned long Index) {
560+
561+ switch (Index) {
562+ case 0:
563+ return mono_descriptor;
564+ default:
565+ return NULL;
566+ }
567+}
568
569=== added file '.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_chorusflanger.c'
570--- .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_chorusflanger.c 1970-01-01 00:00:00 +0000
571+++ .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_chorusflanger.c 2014-04-11 06:58:04 +0000
572@@ -0,0 +1,595 @@
573+/* -*- linux-c -*-
574+ Copyright (C) 2004 Tom Szilagyi
575+
576+ This program is free software; you can redistribute it and/or modify
577+ it under the terms of the GNU General Public License as published by
578+ the Free Software Foundation; either version 2 of the License, or
579+ (at your option) any later version.
580+
581+ This program is distributed in the hope that it will be useful,
582+ but WITHOUT ANY WARRANTY; without even the implied warranty of
583+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
584+ GNU General Public License for more details.
585+
586+ You should have received a copy of the GNU General Public License
587+ along with this program; if not, write to the Free Software
588+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
589+
590+ $Id: tap_chorusflanger.c,v 1.3 2004/08/17 09:15:21 tszilagyi Exp $
591+*/
592+
593+
594+#include <stdio.h>
595+#include <stdlib.h>
596+#include <string.h>
597+#include <math.h>
598+#include <time.h>
599+
600+#include <ladspa.h>
601+#include "tap_utils.h"
602+
603+
604+/* The Unique ID of the plugin: */
605+
606+#define ID_STEREO 2159
607+
608+/* The port numbers for the plugin: */
609+
610+#define FREQ 0
611+#define PHASE 1
612+#define DEPTH 2
613+#define DELAY 3
614+#define CONTOUR 4
615+#define DRYLEVEL 5
616+#define WETLEVEL 6
617+#define INPUT_L 7
618+#define INPUT_R 8
619+#define OUTPUT_L 9
620+#define OUTPUT_R 10
621+
622+/* Total number of ports */
623+#define PORTCOUNT_STEREO 11
624+
625+
626+/*
627+ * Largest buffer lengths needed (at 192 kHz).
628+ * These are summed up to determine the size of *one* buffer per channel.
629+ */
630+#define DEPTH_BUFLEN 450
631+#define DELAY_BUFLEN 19200
632+
633+/* Max. frequency setting */
634+#define MAX_FREQ 5.0f
635+
636+/* bandwidth of highpass filters (in octaves) */
637+#define HP_BW 1
638+
639+/* cosine table for fast computations */
640+#define COS_TABLE_SIZE 1024
641+LADSPA_Data cos_table[COS_TABLE_SIZE];
642+
643+
644+/* The structure used to hold port connection information and state */
645+typedef struct {
646+ LADSPA_Data * freq;
647+ LADSPA_Data * phase;
648+ LADSPA_Data * depth;
649+ LADSPA_Data * delay;
650+ LADSPA_Data * contour;
651+ LADSPA_Data * drylevel;
652+ LADSPA_Data * wetlevel;
653+ LADSPA_Data * input_L;
654+ LADSPA_Data * input_R;
655+ LADSPA_Data * output_L;
656+ LADSPA_Data * output_R;
657+
658+ LADSPA_Data * ring_L;
659+ unsigned long buflen_L;
660+ unsigned long pos_L;
661+ LADSPA_Data * ring_R;
662+ unsigned long buflen_R;
663+ unsigned long pos_R;
664+
665+ biquad highpass_L;
666+ biquad highpass_R;
667+
668+ float cm_phase;
669+ float dm_phase;
670+
671+ unsigned long sample_rate;
672+ LADSPA_Data run_adding_gain;
673+} ChorusFlanger;
674+
675+
676+/* Construct a new plugin instance. */
677+LADSPA_Handle
678+instantiate_ChorusFlanger(const LADSPA_Descriptor * Descriptor,
679+ unsigned long sample_rate) {
680+
681+ LADSPA_Handle * ptr;
682+
683+ if ((ptr = malloc(sizeof(ChorusFlanger))) != NULL) {
684+ ((ChorusFlanger *)ptr)->sample_rate = sample_rate;
685+ ((ChorusFlanger *)ptr)->run_adding_gain = 1.0f;
686+
687+
688+ if ((((ChorusFlanger *)ptr)->ring_L =
689+ calloc((DEPTH_BUFLEN + DELAY_BUFLEN) * sample_rate / 192000,
690+ sizeof(LADSPA_Data))) == NULL)
691+ return NULL;
692+ ((ChorusFlanger *)ptr)->buflen_L = (DEPTH_BUFLEN + DELAY_BUFLEN) * sample_rate / 192000;
693+ ((ChorusFlanger *)ptr)->pos_L = 0;
694+
695+ if ((((ChorusFlanger *)ptr)->ring_R =
696+ calloc((DEPTH_BUFLEN + DELAY_BUFLEN) * sample_rate / 192000,
697+ sizeof(LADSPA_Data))) == NULL)
698+ return NULL;
699+ ((ChorusFlanger *)ptr)->buflen_R = (DEPTH_BUFLEN + DELAY_BUFLEN) * sample_rate / 192000;
700+ ((ChorusFlanger *)ptr)->pos_R = 0;
701+
702+
703+ ((ChorusFlanger *)ptr)->cm_phase = 0.0f;
704+ ((ChorusFlanger *)ptr)->dm_phase = 0.0f;
705+
706+ return ptr;
707+ }
708+ return NULL;
709+}
710+
711+
712+void
713+activate_ChorusFlanger(LADSPA_Handle Instance) {
714+
715+ ChorusFlanger * ptr = (ChorusFlanger *)Instance;
716+ unsigned long i;
717+
718+ for (i = 0; i < (DEPTH_BUFLEN + DELAY_BUFLEN) * ptr->sample_rate / 192000; i++) {
719+ ptr->ring_L[i] = 0.0f;
720+ ptr->ring_R[i] = 0.0f;
721+ }
722+
723+ biquad_init(&ptr->highpass_L);
724+ biquad_init(&ptr->highpass_R);
725+}
726+
727+
728+
729+
730+/* Connect a port to a data location. */
731+void
732+connect_port_ChorusFlanger(LADSPA_Handle Instance,
733+ unsigned long Port,
734+ LADSPA_Data * data) {
735+
736+ ChorusFlanger * ptr = (ChorusFlanger *)Instance;
737+
738+ switch (Port) {
739+ case FREQ:
740+ ptr->freq = data;
741+ break;
742+ case PHASE:
743+ ptr->phase = data;
744+ break;
745+ case DEPTH:
746+ ptr->depth = data;
747+ break;
748+ case DELAY:
749+ ptr->delay = data;
750+ break;
751+ case CONTOUR:
752+ ptr->contour = data;
753+ break;
754+ case DRYLEVEL:
755+ ptr->drylevel = data;
756+ break;
757+ case WETLEVEL:
758+ ptr->wetlevel = data;
759+ break;
760+ case INPUT_L:
761+ ptr->input_L = data;
762+ break;
763+ case INPUT_R:
764+ ptr->input_R = data;
765+ break;
766+ case OUTPUT_L:
767+ ptr->output_L = data;
768+ break;
769+ case OUTPUT_R:
770+ ptr->output_R = data;
771+ break;
772+ }
773+}
774+
775+
776+void
777+run_ChorusFlanger(LADSPA_Handle Instance,
778+ unsigned long SampleCount) {
779+
780+ ChorusFlanger * ptr = (ChorusFlanger *)Instance;
781+
782+ LADSPA_Data freq = LIMIT(*(ptr->freq), 0.0f, MAX_FREQ);
783+ LADSPA_Data phase = LIMIT(*(ptr->phase), 0.0f, 180.0f) / 180.0f;
784+ LADSPA_Data depth = 100.0f * ptr->sample_rate / 44100.0f
785+ * LIMIT(*(ptr->depth),0.0f,100.0f) / 100.0f;
786+ LADSPA_Data delay = LIMIT(*(ptr->delay),0.0f,100.0f);
787+ LADSPA_Data contour = LIMIT(*(ptr->contour), 20.0f, 20000.0f);
788+ LADSPA_Data drylevel = db2lin(LIMIT(*(ptr->drylevel),-90.0f,20.0f));
789+ LADSPA_Data wetlevel = db2lin(LIMIT(*(ptr->wetlevel),-90.0f,20.0f));
790+ LADSPA_Data * input_L = ptr->input_L;
791+ LADSPA_Data * input_R = ptr->input_R;
792+ LADSPA_Data * output_L = ptr->output_L;
793+ LADSPA_Data * output_R = ptr->output_R;
794+
795+ unsigned long sample_index;
796+ unsigned long sample_count = SampleCount;
797+
798+ LADSPA_Data in_L = 0.0f;
799+ LADSPA_Data in_R = 0.0f;
800+ LADSPA_Data d_L = 0.0f;
801+ LADSPA_Data d_R = 0.0f;
802+ LADSPA_Data f_L = 0.0f;
803+ LADSPA_Data f_R = 0.0f;
804+ LADSPA_Data out_L = 0.0f;
805+ LADSPA_Data out_R = 0.0f;
806+
807+ float phase_L = 0.0f;
808+ float phase_R = 0.0f;
809+ float fpos_L = 0.0f;
810+ float fpos_R = 0.0f;
811+ float n_L = 0.0f;
812+ float n_R = 0.0f;
813+ float rem_L = 0.0f;
814+ float rem_R = 0.0f;
815+ float s_a_L, s_a_R, s_b_L, s_b_R;
816+
817+ float d_pos = 0.0f;
818+
819+ if (delay < 1.0f)
820+ delay = 1.0f;
821+ delay = 100.0f - delay;
822+
823+ hp_set_params(&ptr->highpass_L, contour, HP_BW, ptr->sample_rate);
824+ hp_set_params(&ptr->highpass_R, contour, HP_BW, ptr->sample_rate);
825+
826+ for (sample_index = 0; sample_index < sample_count; sample_index++) {
827+
828+ in_L = *(input_L++);
829+ in_R = *(input_R++);
830+
831+ push_buffer(in_L, ptr->ring_L, ptr->buflen_L, &(ptr->pos_L));
832+ push_buffer(in_R, ptr->ring_R, ptr->buflen_R, &(ptr->pos_R));
833+
834+ ptr->cm_phase += freq / ptr->sample_rate * COS_TABLE_SIZE;
835+
836+ while (ptr->cm_phase >= COS_TABLE_SIZE)
837+ ptr->cm_phase -= COS_TABLE_SIZE;
838+
839+ ptr->dm_phase = phase * COS_TABLE_SIZE / 2.0f;
840+
841+ phase_L = ptr->cm_phase;
842+ phase_R = ptr->cm_phase + ptr->dm_phase;
843+ while (phase_R >= COS_TABLE_SIZE)
844+ phase_R -= COS_TABLE_SIZE;
845+
846+ d_pos = delay * ptr->sample_rate / 1000.0f;
847+ fpos_L = d_pos + depth * (0.5f + 0.5f * cos_table[(unsigned long)phase_L]);
848+ fpos_R = d_pos + depth * (0.5f + 0.5f * cos_table[(unsigned long)phase_R]);
849+
850+ n_L = floorf(fpos_L);
851+ n_R = floorf(fpos_R);
852+ rem_L = fpos_L - n_L;
853+ rem_R = fpos_R - n_R;
854+
855+ s_a_L = read_buffer(ptr->ring_L, ptr->buflen_L,
856+ ptr->pos_L, (unsigned long) n_L);
857+ s_b_L = read_buffer(ptr->ring_L, ptr->buflen_L,
858+ ptr->pos_L, (unsigned long) n_L + 1);
859+
860+ s_a_R = read_buffer(ptr->ring_R, ptr->buflen_R,
861+ ptr->pos_R, (unsigned long) n_R);
862+ s_b_R = read_buffer(ptr->ring_R, ptr->buflen_R,
863+ ptr->pos_R, (unsigned long) n_R + 1);
864+
865+ d_L = ((1 - rem_L) * s_a_L + rem_L * s_b_L);
866+ d_R = ((1 - rem_R) * s_a_R + rem_R * s_b_R);
867+
868+ f_L = biquad_run(&ptr->highpass_L, d_L);
869+ f_R = biquad_run(&ptr->highpass_R, d_R);
870+
871+ out_L = drylevel * in_L + wetlevel * f_L;
872+ out_R = drylevel * in_R + wetlevel * f_R;
873+
874+ *(output_L++) = out_L;
875+ *(output_R++) = out_R;
876+ }
877+}
878+
879+
880+void
881+set_run_adding_gain_ChorusFlanger(LADSPA_Handle Instance, LADSPA_Data gain) {
882+
883+ ChorusFlanger * ptr = (ChorusFlanger *)Instance;
884+
885+ ptr->run_adding_gain = gain;
886+}
887+
888+
889+
890+void
891+run_adding_ChorusFlanger(LADSPA_Handle Instance,
892+ unsigned long SampleCount) {
893+
894+ ChorusFlanger * ptr = (ChorusFlanger *)Instance;
895+
896+ LADSPA_Data freq = LIMIT(*(ptr->freq), 0.0f, MAX_FREQ);
897+ LADSPA_Data phase = LIMIT(*(ptr->phase), 0.0f, 180.0f) / 180.0f;
898+ LADSPA_Data depth = 100.0f * ptr->sample_rate / 44100.0f
899+ * LIMIT(*(ptr->depth),0.0f,100.0f) / 100.0f;
900+ LADSPA_Data delay = LIMIT(*(ptr->delay),0.0f,100.0f);
901+ LADSPA_Data contour = LIMIT(*(ptr->contour), 20.0f, 20000.0f);
902+ LADSPA_Data drylevel = db2lin(LIMIT(*(ptr->drylevel),-90.0f,20.0f));
903+ LADSPA_Data wetlevel = db2lin(LIMIT(*(ptr->wetlevel),-90.0f,20.0f));
904+ LADSPA_Data * input_L = ptr->input_L;
905+ LADSPA_Data * input_R = ptr->input_R;
906+ LADSPA_Data * output_L = ptr->output_L;
907+ LADSPA_Data * output_R = ptr->output_R;
908+
909+ unsigned long sample_index;
910+ unsigned long sample_count = SampleCount;
911+
912+ LADSPA_Data in_L = 0.0f;
913+ LADSPA_Data in_R = 0.0f;
914+ LADSPA_Data d_L = 0.0f;
915+ LADSPA_Data d_R = 0.0f;
916+ LADSPA_Data f_L = 0.0f;
917+ LADSPA_Data f_R = 0.0f;
918+ LADSPA_Data out_L = 0.0f;
919+ LADSPA_Data out_R = 0.0f;
920+
921+ float phase_L = 0.0f;
922+ float phase_R = 0.0f;
923+ float fpos_L = 0.0f;
924+ float fpos_R = 0.0f;
925+ float n_L = 0.0f;
926+ float n_R = 0.0f;
927+ float rem_L = 0.0f;
928+ float rem_R = 0.0f;
929+ float s_a_L, s_a_R, s_b_L, s_b_R;
930+
931+ float d_pos = 0.0f;
932+
933+ if (delay < 1.0f)
934+ delay = 1.0f;
935+ delay = 100.0f - delay;
936+
937+ hp_set_params(&ptr->highpass_L, contour, HP_BW, ptr->sample_rate);
938+ hp_set_params(&ptr->highpass_R, contour, HP_BW, ptr->sample_rate);
939+
940+ for (sample_index = 0; sample_index < sample_count; sample_index++) {
941+
942+ in_L = *(input_L++);
943+ in_R = *(input_R++);
944+
945+ push_buffer(in_L, ptr->ring_L, ptr->buflen_L, &(ptr->pos_L));
946+ push_buffer(in_R, ptr->ring_R, ptr->buflen_R, &(ptr->pos_R));
947+
948+ ptr->cm_phase += freq / ptr->sample_rate * COS_TABLE_SIZE;
949+
950+ while (ptr->cm_phase >= COS_TABLE_SIZE)
951+ ptr->cm_phase -= COS_TABLE_SIZE;
952+
953+ ptr->dm_phase = phase * COS_TABLE_SIZE / 2.0f;
954+
955+ phase_L = ptr->cm_phase;
956+ phase_R = ptr->cm_phase + ptr->dm_phase;
957+ while (phase_R >= COS_TABLE_SIZE)
958+ phase_R -= COS_TABLE_SIZE;
959+
960+ d_pos = delay * ptr->sample_rate / 1000.0f;
961+ fpos_L = d_pos + depth * (0.5f + 0.5f * cos_table[(unsigned long)phase_L]);
962+ fpos_R = d_pos + depth * (0.5f + 0.5f * cos_table[(unsigned long)phase_R]);
963+
964+ n_L = floorf(fpos_L);
965+ n_R = floorf(fpos_R);
966+ rem_L = fpos_L - n_L;
967+ rem_R = fpos_R - n_R;
968+
969+ s_a_L = read_buffer(ptr->ring_L, ptr->buflen_L,
970+ ptr->pos_L, (unsigned long) n_L);
971+ s_b_L = read_buffer(ptr->ring_L, ptr->buflen_L,
972+ ptr->pos_L, (unsigned long) n_L + 1);
973+
974+ s_a_R = read_buffer(ptr->ring_R, ptr->buflen_R,
975+ ptr->pos_R, (unsigned long) n_R);
976+ s_b_R = read_buffer(ptr->ring_R, ptr->buflen_R,
977+ ptr->pos_R, (unsigned long) n_R + 1);
978+
979+ d_L = ((1 - rem_L) * s_a_L + rem_L * s_b_L);
980+ d_R = ((1 - rem_R) * s_a_R + rem_R * s_b_R);
981+
982+ f_L = biquad_run(&ptr->highpass_L, d_L);
983+ f_R = biquad_run(&ptr->highpass_R, d_R);
984+
985+ out_L = drylevel * in_L + wetlevel * f_L;
986+ out_R = drylevel * in_R + wetlevel * f_R;
987+
988+ *(output_L++) += ptr->run_adding_gain * out_L;
989+ *(output_R++) += ptr->run_adding_gain * out_R;
990+ }
991+}
992+
993+
994+
995+/* Throw away a ChorusFlanger effect instance. */
996+void
997+cleanup_ChorusFlanger(LADSPA_Handle Instance) {
998+
999+ ChorusFlanger * ptr = (ChorusFlanger *)Instance;
1000+ free(ptr->ring_L);
1001+ free(ptr->ring_R);
1002+ free(Instance);
1003+}
1004+
1005+
1006+
1007+LADSPA_Descriptor * stereo_descriptor = NULL;
1008+
1009+
1010+
1011+/* __attribute__((constructor)) _init() is called automatically when the plugin library is first
1012+ loaded. */
1013+void
1014+__attribute__((constructor)) _init() {
1015+
1016+ char ** port_names;
1017+ LADSPA_PortDescriptor * port_descriptors;
1018+ LADSPA_PortRangeHint * port_range_hints;
1019+ int i;
1020+
1021+ if ((stereo_descriptor =
1022+ (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor))) == NULL)
1023+ exit(1);
1024+
1025+ for (i = 0; i < COS_TABLE_SIZE; i++)
1026+ cos_table[i] = cosf(i * 2.0f * M_PI / COS_TABLE_SIZE);
1027+
1028+ stereo_descriptor->UniqueID = ID_STEREO;
1029+ stereo_descriptor->Label = strdup("tap_chorusflanger");
1030+ stereo_descriptor->Properties = LADSPA_PROPERTY_HARD_RT_CAPABLE;
1031+ stereo_descriptor->Name = strdup("TAP Chorus/Flanger");
1032+ stereo_descriptor->Maker = strdup("Tom Szilagyi");
1033+ stereo_descriptor->Copyright = strdup("GPL");
1034+ stereo_descriptor->PortCount = PORTCOUNT_STEREO;
1035+
1036+ if ((port_descriptors =
1037+ (LADSPA_PortDescriptor *)calloc(PORTCOUNT_STEREO, sizeof(LADSPA_PortDescriptor))) == NULL)
1038+ exit(1);
1039+
1040+ stereo_descriptor->PortDescriptors = (const LADSPA_PortDescriptor *)port_descriptors;
1041+ port_descriptors[FREQ] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
1042+ port_descriptors[PHASE] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
1043+ port_descriptors[DEPTH] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
1044+ port_descriptors[DELAY] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
1045+ port_descriptors[CONTOUR] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
1046+ port_descriptors[DRYLEVEL] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
1047+ port_descriptors[WETLEVEL] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
1048+ port_descriptors[INPUT_L] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
1049+ port_descriptors[INPUT_R] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
1050+ port_descriptors[OUTPUT_L] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
1051+ port_descriptors[OUTPUT_R] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
1052+
1053+ if ((port_names =
1054+ (char **)calloc(PORTCOUNT_STEREO, sizeof(char *))) == NULL)
1055+ exit(1);
1056+
1057+ stereo_descriptor->PortNames = (const char **)port_names;
1058+ port_names[FREQ] = strdup("Frequency [Hz]");
1059+ port_names[PHASE] = strdup("L/R Phase Shift [deg]");
1060+ port_names[DEPTH] = strdup("Depth [%]");
1061+ port_names[DELAY] = strdup("Delay [ms]");
1062+ port_names[CONTOUR] = strdup("Contour [Hz]");
1063+ port_names[DRYLEVEL] = strdup("Dry Level [dB]");
1064+ port_names[WETLEVEL] = strdup("Wet Level [dB]");
1065+ port_names[INPUT_L] = strdup("Input_L");
1066+ port_names[INPUT_R] = strdup("Input_R");
1067+ port_names[OUTPUT_L] = strdup("Output_L");
1068+ port_names[OUTPUT_R] = strdup("Output_R");
1069+
1070+ if ((port_range_hints =
1071+ ((LADSPA_PortRangeHint *)calloc(PORTCOUNT_STEREO, sizeof(LADSPA_PortRangeHint)))) == NULL)
1072+ exit(1);
1073+
1074+ stereo_descriptor->PortRangeHints = (const LADSPA_PortRangeHint *)port_range_hints;
1075+ port_range_hints[FREQ].HintDescriptor =
1076+ (LADSPA_HINT_BOUNDED_BELOW |
1077+ LADSPA_HINT_BOUNDED_ABOVE |
1078+ LADSPA_HINT_DEFAULT_LOW);
1079+ port_range_hints[PHASE].HintDescriptor =
1080+ (LADSPA_HINT_BOUNDED_BELOW |
1081+ LADSPA_HINT_BOUNDED_ABOVE |
1082+ LADSPA_HINT_DEFAULT_MIDDLE);
1083+ port_range_hints[DEPTH].HintDescriptor =
1084+ (LADSPA_HINT_BOUNDED_BELOW |
1085+ LADSPA_HINT_BOUNDED_ABOVE |
1086+ LADSPA_HINT_DEFAULT_HIGH);
1087+ port_range_hints[DELAY].HintDescriptor =
1088+ (LADSPA_HINT_BOUNDED_BELOW |
1089+ LADSPA_HINT_BOUNDED_ABOVE |
1090+ LADSPA_HINT_DEFAULT_LOW);
1091+ port_range_hints[CONTOUR].HintDescriptor =
1092+ (LADSPA_HINT_BOUNDED_BELOW |
1093+ LADSPA_HINT_BOUNDED_ABOVE |
1094+ LADSPA_HINT_DEFAULT_100);
1095+ port_range_hints[DRYLEVEL].HintDescriptor =
1096+ (LADSPA_HINT_BOUNDED_BELOW |
1097+ LADSPA_HINT_BOUNDED_ABOVE |
1098+ LADSPA_HINT_DEFAULT_0);
1099+ port_range_hints[WETLEVEL].HintDescriptor =
1100+ (LADSPA_HINT_BOUNDED_BELOW |
1101+ LADSPA_HINT_BOUNDED_ABOVE |
1102+ LADSPA_HINT_DEFAULT_0);
1103+ port_range_hints[FREQ].LowerBound = 0.0f;
1104+ port_range_hints[FREQ].UpperBound = MAX_FREQ;
1105+ port_range_hints[PHASE].LowerBound = 0.0f;
1106+ port_range_hints[PHASE].UpperBound = 180.0f;
1107+ port_range_hints[DEPTH].LowerBound = 0.0f;
1108+ port_range_hints[DEPTH].UpperBound = 100.0f;
1109+ port_range_hints[DELAY].LowerBound = 0.0f;
1110+ port_range_hints[DELAY].UpperBound = 100.0f;
1111+ port_range_hints[CONTOUR].LowerBound = 20.0f;
1112+ port_range_hints[CONTOUR].UpperBound = 20000.0f;
1113+ port_range_hints[DRYLEVEL].LowerBound = -90.0f;
1114+ port_range_hints[DRYLEVEL].UpperBound = +20.0f;
1115+ port_range_hints[WETLEVEL].LowerBound = -90.0f;
1116+ port_range_hints[WETLEVEL].UpperBound = +20.0f;
1117+ port_range_hints[INPUT_L].HintDescriptor = 0;
1118+ port_range_hints[INPUT_R].HintDescriptor = 0;
1119+ port_range_hints[OUTPUT_L].HintDescriptor = 0;
1120+ port_range_hints[OUTPUT_R].HintDescriptor = 0;
1121+ stereo_descriptor->instantiate = instantiate_ChorusFlanger;
1122+ stereo_descriptor->connect_port = connect_port_ChorusFlanger;
1123+ stereo_descriptor->activate = activate_ChorusFlanger;
1124+ stereo_descriptor->run = run_ChorusFlanger;
1125+ stereo_descriptor->run_adding = run_adding_ChorusFlanger;
1126+ stereo_descriptor->set_run_adding_gain = set_run_adding_gain_ChorusFlanger;
1127+ stereo_descriptor->deactivate = NULL;
1128+ stereo_descriptor->cleanup = cleanup_ChorusFlanger;
1129+}
1130+
1131+
1132+void
1133+delete_descriptor(LADSPA_Descriptor * descriptor) {
1134+ unsigned long index;
1135+ if (descriptor) {
1136+ free((char *)descriptor->Label);
1137+ free((char *)descriptor->Name);
1138+ free((char *)descriptor->Maker);
1139+ free((char *)descriptor->Copyright);
1140+ free((LADSPA_PortDescriptor *)descriptor->PortDescriptors);
1141+ for (index = 0; index < descriptor->PortCount; index++)
1142+ free((char *)(descriptor->PortNames[index]));
1143+ free((char **)descriptor->PortNames);
1144+ free((LADSPA_PortRangeHint *)descriptor->PortRangeHints);
1145+ free(descriptor);
1146+ }
1147+}
1148+
1149+
1150+/* __attribute__((destructor)) _fini() is called automatically when the library is unloaded. */
1151+void
1152+__attribute__((destructor)) _fini() {
1153+ delete_descriptor(stereo_descriptor);
1154+}
1155+
1156+
1157+/* Return a descriptor of the requested plugin type. */
1158+const LADSPA_Descriptor *
1159+ladspa_descriptor(unsigned long Index) {
1160+
1161+ switch (Index) {
1162+ case 0:
1163+ return stereo_descriptor;
1164+ default:
1165+ return NULL;
1166+ }
1167+}
1168
1169=== added file '.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_deesser.c'
1170--- .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_deesser.c 1970-01-01 00:00:00 +0000
1171+++ .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_deesser.c 2014-04-11 06:58:04 +0000
1172@@ -0,0 +1,491 @@
1173+/* -*- linux-c -*-
1174+ Copyright (C) 2004 Tom Szilagyi
1175+
1176+ This program is free software; you can redistribute it and/or modify
1177+ it under the terms of the GNU General Public License as published by
1178+ the Free Software Foundation; either version 2 of the License, or
1179+ (at your option) any later version.
1180+
1181+ This program is distributed in the hope that it will be useful,
1182+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1183+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1184+ GNU General Public License for more details.
1185+
1186+ You should have received a copy of the GNU General Public License
1187+ along with this program; if not, write to the Free Software
1188+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
1189+
1190+ $Id: tap_deesser.c,v 1.7 2004/05/01 16:15:06 tszilagyi Exp $
1191+*/
1192+
1193+
1194+#include <stdio.h>
1195+#include <stdlib.h>
1196+#include <string.h>
1197+#include <math.h>
1198+
1199+#include <ladspa.h>
1200+#include "tap_utils.h"
1201+
1202+/* The Unique ID of the plugin: */
1203+
1204+#define ID_MONO 2147
1205+
1206+/* The port numbers for the plugin: */
1207+
1208+#define THRESHOLD 0
1209+#define FREQ 1
1210+#define SIDECHAIN 2
1211+#define MONITOR 3
1212+#define ATTENUAT 4
1213+#define INPUT 5
1214+#define OUTPUT 6
1215+
1216+
1217+/* Total number of ports */
1218+
1219+#define PORTCOUNT_MONO 7
1220+
1221+
1222+/* Bandwidth of sidechain lowpass/highpass filters */
1223+#define SIDECH_BW 0.3f
1224+
1225+/* Used to hold 10 ms gain data, enough for sample rates up to 192 kHz */
1226+#define RINGBUF_SIZE 2000
1227+
1228+
1229+
1230+/* 4 digits precision from 1.000 to 9.999 */
1231+LADSPA_Data log10_table[9000];
1232+
1233+
1234+/* The structure used to hold port connection information and state */
1235+
1236+typedef struct {
1237+ LADSPA_Data * threshold;
1238+ LADSPA_Data * audiomode;
1239+ LADSPA_Data * freq;
1240+ LADSPA_Data * sidechain;
1241+ LADSPA_Data * monitor;
1242+ LADSPA_Data * attenuat;
1243+ LADSPA_Data * input;
1244+ LADSPA_Data * output;
1245+
1246+ biquad sidech_lo_filter;
1247+ biquad sidech_hi_filter;
1248+ LADSPA_Data * ringbuffer;
1249+ unsigned long buflen;
1250+ unsigned long pos;
1251+ LADSPA_Data sum;
1252+ LADSPA_Data old_freq;
1253+
1254+ unsigned long sample_rate;
1255+ LADSPA_Data run_adding_gain;
1256+} DeEsser;
1257+
1258+
1259+/* fast linear to decibel conversion using log10_table[] */
1260+LADSPA_Data fast_lin2db(LADSPA_Data lin) {
1261+
1262+ unsigned long k;
1263+ int exp = 0;
1264+ LADSPA_Data mant = ABS(lin);
1265+
1266+ /* sanity checks */
1267+ if (mant == 0.0f)
1268+ return(-1.0f/0.0f); /* -inf */
1269+ if (mant == 1.0f/0.0f) /* +inf */
1270+ return(mant);
1271+
1272+ while (mant < 1.0f) {
1273+ mant *= 10;
1274+ exp --;
1275+ }
1276+ while (mant >= 10.0f) {
1277+ mant /= 10;
1278+ exp ++;
1279+ }
1280+
1281+ k = (mant - 0.999999f) * 1000.0f;
1282+ return 20.0f * (log10_table[k] + exp);
1283+}
1284+
1285+
1286+
1287+/* Construct a new plugin instance. */
1288+LADSPA_Handle
1289+instantiate_DeEsser(const LADSPA_Descriptor * Descriptor,
1290+ unsigned long SampleRate) {
1291+
1292+ LADSPA_Handle * ptr;
1293+
1294+ if ((ptr = malloc(sizeof(DeEsser))) != NULL) {
1295+ ((DeEsser *)ptr)->sample_rate = SampleRate;
1296+ ((DeEsser *)ptr)->run_adding_gain = 1.0f;
1297+
1298+ /* init filters */
1299+ biquad_init(&((DeEsser *)ptr)->sidech_lo_filter);
1300+ biquad_init(&((DeEsser *)ptr)->sidech_hi_filter);
1301+
1302+ /* alloc mem for ringbuffer */
1303+ if ((((DeEsser *)ptr)->ringbuffer =
1304+ calloc(RINGBUF_SIZE, sizeof(LADSPA_Data))) == NULL)
1305+ return NULL;
1306+
1307+ /* 10 ms attenuation data is stored */
1308+ ((DeEsser *)ptr)->buflen = ((DeEsser *)ptr)->sample_rate / 100;
1309+
1310+ ((DeEsser *)ptr)->pos = 0;
1311+ ((DeEsser *)ptr)->sum = 0.0f;
1312+ ((DeEsser *)ptr)->old_freq = 0;
1313+
1314+ return ptr;
1315+ }
1316+ return NULL;
1317+}
1318+
1319+
1320+void
1321+activate_DeEsser(LADSPA_Handle Instance) {
1322+
1323+ DeEsser * ptr = (DeEsser *)Instance;
1324+ unsigned long i;
1325+
1326+ for (i = 0; i < RINGBUF_SIZE; i++)
1327+ ptr->ringbuffer[i] = 0.0f;
1328+}
1329+
1330+
1331+
1332+
1333+/* Connect a port to a data location. */
1334+void
1335+connect_port_DeEsser(LADSPA_Handle Instance,
1336+ unsigned long Port,
1337+ LADSPA_Data * DataLocation) {
1338+
1339+ DeEsser * ptr;
1340+
1341+ ptr = (DeEsser *)Instance;
1342+ switch (Port) {
1343+ case THRESHOLD:
1344+ ptr->threshold = DataLocation;
1345+ break;
1346+ case FREQ:
1347+ ptr->freq = DataLocation;
1348+ break;
1349+ case SIDECHAIN:
1350+ ptr->sidechain = DataLocation;
1351+ break;
1352+ case MONITOR:
1353+ ptr->monitor = DataLocation;
1354+ break;
1355+ case ATTENUAT:
1356+ ptr->attenuat = DataLocation;
1357+ *(ptr->attenuat) = 0.0f;
1358+ break;
1359+ case INPUT:
1360+ ptr->input = DataLocation;
1361+ break;
1362+ case OUTPUT:
1363+ ptr->output = DataLocation;
1364+ break;
1365+ }
1366+}
1367+
1368+
1369+
1370+void
1371+run_DeEsser(LADSPA_Handle Instance,
1372+ unsigned long SampleCount) {
1373+
1374+ DeEsser * ptr = (DeEsser *)Instance;
1375+
1376+ LADSPA_Data * input = ptr->input;
1377+ LADSPA_Data * output = ptr->output;
1378+ LADSPA_Data threshold = LIMIT(*(ptr->threshold),-50.0f,10.0f);
1379+ LADSPA_Data freq = LIMIT(*(ptr->freq),2000.0f,16000.0f);
1380+ LADSPA_Data sidechain = LIMIT(*(ptr->sidechain),0.0f,1.0f);
1381+ LADSPA_Data monitor = LIMIT(*(ptr->monitor),0.0f,1.0f);
1382+ unsigned long sample_index;
1383+
1384+ LADSPA_Data in = 0;
1385+ LADSPA_Data out = 0;
1386+ LADSPA_Data sidech = 0;
1387+ LADSPA_Data ampl_db = 0.0f;
1388+ LADSPA_Data attn = 0.0f;
1389+ LADSPA_Data max_attn = 0.0f;
1390+
1391+
1392+ if (ptr->old_freq != freq) {
1393+ lp_set_params(&ptr->sidech_lo_filter, freq, SIDECH_BW, ptr->sample_rate);
1394+ hp_set_params(&ptr->sidech_hi_filter, freq, SIDECH_BW, ptr->sample_rate);
1395+ ptr->old_freq = freq;
1396+ }
1397+
1398+ for (sample_index = 0; sample_index < SampleCount; sample_index++) {
1399+
1400+ in = *(input++);
1401+
1402+ /* process sidechain filters */
1403+ sidech = biquad_run(&ptr->sidech_hi_filter, in);
1404+ if (sidechain > 0.1f)
1405+ sidech = biquad_run(&ptr->sidech_lo_filter, sidech);
1406+
1407+ ampl_db = fast_lin2db(sidech);
1408+ if (ampl_db <= threshold)
1409+ attn = 0.0f;
1410+ else
1411+ attn = -0.5f * (ampl_db - threshold);
1412+
1413+ ptr->sum += attn;
1414+ ptr->sum -= push_buffer(attn, ptr->ringbuffer, ptr->buflen, &ptr->pos);
1415+
1416+ if (-1.0f * ptr->sum > max_attn)
1417+ max_attn = -0.01f * ptr->sum;
1418+
1419+ in *= db2lin(ptr->sum / 100.0f);
1420+
1421+
1422+ /* output selector */
1423+ if (monitor > 0.1f)
1424+ out = sidech;
1425+ else
1426+ out = in;
1427+
1428+ *(output++) = out;
1429+ *(ptr->attenuat) = LIMIT(max_attn,0,10);
1430+ }
1431+}
1432+
1433+
1434+void
1435+set_run_adding_gain_DeEsser(LADSPA_Handle Instance, LADSPA_Data gain) {
1436+
1437+ DeEsser * ptr = (DeEsser *)Instance;
1438+
1439+ ptr->run_adding_gain = gain;
1440+}
1441+
1442+
1443+
1444+void
1445+run_adding_DeEsser(LADSPA_Handle Instance,
1446+ unsigned long SampleCount) {
1447+
1448+ DeEsser * ptr = (DeEsser *)Instance;
1449+
1450+ LADSPA_Data * input = ptr->input;
1451+ LADSPA_Data * output = ptr->output;
1452+ LADSPA_Data threshold = LIMIT(*(ptr->threshold),-50.0f,10.0f);
1453+ LADSPA_Data freq = LIMIT(*(ptr->freq),2000.0f,16000.0f);
1454+ LADSPA_Data sidechain = LIMIT(*(ptr->sidechain),0.0f,1.0f);
1455+ LADSPA_Data monitor = LIMIT(*(ptr->monitor),0.0f,1.0f);
1456+ unsigned long sample_index;
1457+
1458+ LADSPA_Data in = 0;
1459+ LADSPA_Data out = 0;
1460+ LADSPA_Data sidech = 0;
1461+ LADSPA_Data ampl_db = 0.0f;
1462+ LADSPA_Data attn = 0.0f;
1463+ LADSPA_Data max_attn = 0.0f;
1464+
1465+
1466+ if (ptr->old_freq != freq) {
1467+ lp_set_params(&ptr->sidech_lo_filter, freq, SIDECH_BW, ptr->sample_rate);
1468+ hp_set_params(&ptr->sidech_hi_filter, freq, SIDECH_BW, ptr->sample_rate);
1469+ ptr->old_freq = freq;
1470+ }
1471+
1472+ for (sample_index = 0; sample_index < SampleCount; sample_index++) {
1473+
1474+ in = *(input++);
1475+
1476+ /* process sidechain filters */
1477+ sidech = biquad_run(&ptr->sidech_hi_filter, in);
1478+ if (sidechain > 0.1f)
1479+ sidech = biquad_run(&ptr->sidech_lo_filter, sidech);
1480+
1481+ ampl_db = 20.0f * log10f(sidech);
1482+ if (ampl_db <= threshold)
1483+ attn = 0.0f;
1484+ else
1485+ attn = -0.5f * (ampl_db - threshold);
1486+
1487+ ptr->sum += attn;
1488+ ptr->sum -= push_buffer(attn, ptr->ringbuffer, ptr->buflen, &ptr->pos);
1489+
1490+ if (-1.0f * ptr->sum > max_attn)
1491+ max_attn = -0.01f * ptr->sum;
1492+
1493+ in *= db2lin(ptr->sum / 100.0f);
1494+
1495+
1496+ /* output selector */
1497+ if (monitor > 0.1f)
1498+ out = sidech;
1499+ else
1500+ out = in;
1501+
1502+ *(output++) += ptr->run_adding_gain * out;
1503+ *(ptr->attenuat) = LIMIT(max_attn,0,10);
1504+ }
1505+}
1506+
1507+
1508+
1509+/* Throw away a DeEsser effect instance. */
1510+void
1511+cleanup_DeEsser(LADSPA_Handle Instance) {
1512+
1513+ DeEsser * ptr = (DeEsser *)Instance;
1514+ free(ptr->ringbuffer);
1515+ free(Instance);
1516+}
1517+
1518+
1519+
1520+LADSPA_Descriptor * mono_descriptor = NULL;
1521+
1522+
1523+
1524+/* __attribute__((constructor)) _init() is called automatically when the plugin library is first
1525+ loaded. */
1526+void
1527+__attribute__((constructor)) _init() {
1528+
1529+ int i;
1530+ char ** port_names;
1531+ LADSPA_PortDescriptor * port_descriptors;
1532+ LADSPA_PortRangeHint * port_range_hints;
1533+
1534+ if ((mono_descriptor =
1535+ (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor))) == NULL)
1536+ exit(1);
1537+
1538+
1539+ /* compute the log10 table */
1540+ for (i = 0; i < 9000; i++)
1541+ log10_table[i] = log10f(1.0f + i / 1000.0f);
1542+
1543+
1544+ mono_descriptor->UniqueID = ID_MONO;
1545+ mono_descriptor->Label = strdup("tap_deesser");
1546+ mono_descriptor->Properties = 0;
1547+ mono_descriptor->Name = strdup("TAP DeEsser");
1548+ mono_descriptor->Maker = strdup("Tom Szilagyi");
1549+ mono_descriptor->Copyright = strdup("GPL");
1550+ mono_descriptor->PortCount = PORTCOUNT_MONO;
1551+
1552+ if ((port_descriptors =
1553+ (LADSPA_PortDescriptor *)calloc(PORTCOUNT_MONO, sizeof(LADSPA_PortDescriptor))) == NULL)
1554+ exit(1);
1555+
1556+ mono_descriptor->PortDescriptors = (const LADSPA_PortDescriptor *)port_descriptors;
1557+ port_descriptors[THRESHOLD] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
1558+ port_descriptors[FREQ] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
1559+ port_descriptors[SIDECHAIN] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
1560+ port_descriptors[MONITOR] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
1561+ port_descriptors[ATTENUAT] = LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL;
1562+ port_descriptors[INPUT] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
1563+ port_descriptors[OUTPUT] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
1564+
1565+ if ((port_names =
1566+ (char **)calloc(PORTCOUNT_MONO, sizeof(char *))) == NULL)
1567+ exit(1);
1568+
1569+ mono_descriptor->PortNames = (const char **)port_names;
1570+ port_names[THRESHOLD] = strdup("Threshold Level [dB]");
1571+ port_names[FREQ] = strdup("Frequency [Hz]");
1572+ port_names[SIDECHAIN] = strdup("Sidechain Filter");
1573+ port_names[MONITOR] = strdup("Monitor");
1574+ port_names[ATTENUAT] = strdup("Attenuation [dB]");
1575+ port_names[INPUT] = strdup("Input");
1576+ port_names[OUTPUT] = strdup("Output");
1577+
1578+ if ((port_range_hints =
1579+ ((LADSPA_PortRangeHint *)calloc(PORTCOUNT_MONO, sizeof(LADSPA_PortRangeHint)))) == NULL)
1580+ exit(1);
1581+
1582+ mono_descriptor->PortRangeHints = (const LADSPA_PortRangeHint *)port_range_hints;
1583+ port_range_hints[THRESHOLD].HintDescriptor =
1584+ (LADSPA_HINT_BOUNDED_BELOW |
1585+ LADSPA_HINT_BOUNDED_ABOVE |
1586+ LADSPA_HINT_DEFAULT_0);
1587+ port_range_hints[FREQ].HintDescriptor =
1588+ (LADSPA_HINT_BOUNDED_BELOW |
1589+ LADSPA_HINT_BOUNDED_ABOVE |
1590+ LADSPA_HINT_DEFAULT_LOW);
1591+ port_range_hints[SIDECHAIN].HintDescriptor =
1592+ (LADSPA_HINT_BOUNDED_BELOW |
1593+ LADSPA_HINT_BOUNDED_ABOVE |
1594+ LADSPA_HINT_INTEGER |
1595+ LADSPA_HINT_DEFAULT_0);
1596+ port_range_hints[MONITOR].HintDescriptor =
1597+ (LADSPA_HINT_BOUNDED_BELOW |
1598+ LADSPA_HINT_BOUNDED_ABOVE |
1599+ LADSPA_HINT_INTEGER |
1600+ LADSPA_HINT_DEFAULT_0);
1601+ port_range_hints[ATTENUAT].HintDescriptor =
1602+ (LADSPA_HINT_BOUNDED_BELOW |
1603+ LADSPA_HINT_BOUNDED_ABOVE |
1604+ LADSPA_HINT_DEFAULT_0);
1605+ port_range_hints[THRESHOLD].LowerBound = -50;
1606+ port_range_hints[THRESHOLD].UpperBound = 10;
1607+ port_range_hints[FREQ].LowerBound = 2000;
1608+ port_range_hints[FREQ].UpperBound = 16000;
1609+ port_range_hints[SIDECHAIN].LowerBound = 0.0f;
1610+ port_range_hints[SIDECHAIN].UpperBound = 1.01f;
1611+ port_range_hints[MONITOR].LowerBound = 0.0f;
1612+ port_range_hints[MONITOR].UpperBound = 1.01f;
1613+ port_range_hints[ATTENUAT].LowerBound = 0.0f;
1614+ port_range_hints[ATTENUAT].UpperBound = 10.0f;
1615+ port_range_hints[INPUT].HintDescriptor = 0;
1616+ port_range_hints[OUTPUT].HintDescriptor = 0;
1617+ mono_descriptor->instantiate = instantiate_DeEsser;
1618+ mono_descriptor->connect_port = connect_port_DeEsser;
1619+ mono_descriptor->activate = activate_DeEsser;
1620+ mono_descriptor->run = run_DeEsser;
1621+ mono_descriptor->run_adding = run_adding_DeEsser;
1622+ mono_descriptor->set_run_adding_gain = set_run_adding_gain_DeEsser;
1623+ mono_descriptor->deactivate = NULL;
1624+ mono_descriptor->cleanup = cleanup_DeEsser;
1625+}
1626+
1627+
1628+void
1629+delete_descriptor(LADSPA_Descriptor * descriptor) {
1630+ unsigned long index;
1631+ if (descriptor) {
1632+ free((char *)descriptor->Label);
1633+ free((char *)descriptor->Name);
1634+ free((char *)descriptor->Maker);
1635+ free((char *)descriptor->Copyright);
1636+ free((LADSPA_PortDescriptor *)descriptor->PortDescriptors);
1637+ for (index = 0; index < descriptor->PortCount; index++)
1638+ free((char *)(descriptor->PortNames[index]));
1639+ free((char **)descriptor->PortNames);
1640+ free((LADSPA_PortRangeHint *)descriptor->PortRangeHints);
1641+ free(descriptor);
1642+ }
1643+}
1644+
1645+
1646+/* __attribute__((destructor)) _fini() is called automatically when the library is unloaded. */
1647+void
1648+__attribute__((destructor)) _fini() {
1649+ delete_descriptor(mono_descriptor);
1650+}
1651+
1652+
1653+/* Return a descriptor of the requested plugin type. */
1654+const LADSPA_Descriptor *
1655+ladspa_descriptor(unsigned long Index) {
1656+
1657+ switch (Index) {
1658+ case 0:
1659+ return mono_descriptor;
1660+ default:
1661+ return NULL;
1662+ }
1663+}
1664
1665=== added file '.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_doubler.c'
1666--- .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_doubler.c 1970-01-01 00:00:00 +0000
1667+++ .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_doubler.c 2014-04-11 06:58:04 +0000
1668@@ -0,0 +1,737 @@
1669+/* -*- linux-c -*-
1670+ Copyright (C) 2004 Tom Szilagyi
1671+
1672+ This program is free software; you can redistribute it and/or modify
1673+ it under the terms of the GNU General Public License as published by
1674+ the Free Software Foundation; either version 2 of the License, or
1675+ (at your option) any later version.
1676+
1677+ This program is distributed in the hope that it will be useful,
1678+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1679+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1680+ GNU General Public License for more details.
1681+
1682+ You should have received a copy of the GNU General Public License
1683+ along with this program; if not, write to the Free Software
1684+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
1685+
1686+ $Id: tap_doubler.c,v 1.4 2004/08/13 18:34:31 tszilagyi Exp $
1687+*/
1688+
1689+
1690+#include <stdio.h>
1691+#include <stdlib.h>
1692+#include <string.h>
1693+#include <math.h>
1694+#include <time.h>
1695+
1696+#include <ladspa.h>
1697+#include "tap_utils.h"
1698+
1699+
1700+/* The Unique ID of the plugin: */
1701+
1702+#define ID_STEREO 2156
1703+
1704+/* The port numbers for the plugin: */
1705+
1706+#define TIME 0
1707+#define PITCH 1
1708+#define DRYLEVEL 2
1709+#define DRYPOSL 3
1710+#define DRYPOSR 4
1711+#define WETLEVEL 5
1712+#define WETPOSL 6
1713+#define WETPOSR 7
1714+#define INPUT_L 8
1715+#define INPUT_R 9
1716+#define OUTPUT_L 10
1717+#define OUTPUT_R 11
1718+
1719+/* Total number of ports */
1720+
1721+
1722+#define PORTCOUNT_STEREO 12
1723+
1724+
1725+/* Number of pink noise samples to be generated at once */
1726+#define NOISE_LEN 1024
1727+
1728+/*
1729+ * Largest buffer length needed (at 192 kHz).
1730+ */
1731+#define BUFLEN 11520
1732+
1733+
1734+
1735+/* The structure used to hold port connection information and state */
1736+
1737+typedef struct {
1738+ LADSPA_Data * time;
1739+ LADSPA_Data * pitch;
1740+ LADSPA_Data * drylevel;
1741+ LADSPA_Data * dryposl;
1742+ LADSPA_Data * dryposr;
1743+ LADSPA_Data * wetlevel;
1744+ LADSPA_Data * wetposl;
1745+ LADSPA_Data * wetposr;
1746+ LADSPA_Data * input_L;
1747+ LADSPA_Data * input_R;
1748+ LADSPA_Data * output_L;
1749+ LADSPA_Data * output_R;
1750+
1751+ LADSPA_Data old_time;
1752+ LADSPA_Data old_pitch;
1753+
1754+ LADSPA_Data * ring_L;
1755+ unsigned long buflen_L;
1756+ unsigned long pos_L;
1757+
1758+ LADSPA_Data * ring_R;
1759+ unsigned long buflen_R;
1760+ unsigned long pos_R;
1761+
1762+ LADSPA_Data * ring_pnoise;
1763+ unsigned long buflen_pnoise;
1764+ unsigned long pos_pnoise;
1765+
1766+ LADSPA_Data * ring_dnoise;
1767+ unsigned long buflen_dnoise;
1768+ unsigned long pos_dnoise;
1769+
1770+ float delay;
1771+ float d_delay;
1772+ float p_delay;
1773+ unsigned long n_delay;
1774+
1775+ float pitchmod;
1776+ float d_pitch;
1777+ float p_pitch;
1778+ unsigned long n_pitch;
1779+
1780+ unsigned long p_stretch;
1781+ unsigned long d_stretch;
1782+
1783+ unsigned long sample_rate;
1784+ LADSPA_Data run_adding_gain;
1785+} Doubler;
1786+
1787+
1788+/* generate fractal pattern using Midpoint Displacement Method
1789+ * v: buffer of floats to output fractal pattern to
1790+ * N: length of v, MUST be integer power of 2 (ie 128, 256, ...)
1791+ * H: Hurst constant, between 0 and 0.9999 (fractal dimension)
1792+ */
1793+void
1794+fractal(LADSPA_Data * v, int N, float H) {
1795+
1796+ int l = N;
1797+ int k;
1798+ float r = 1.0f;
1799+ int c;
1800+
1801+ v[0] = 0;
1802+ while (l > 1) {
1803+ k = N / l;
1804+ for (c = 0; c < k; c++) {
1805+ v[c*l + l/2] = (v[c*l] + v[((c+1) * l) % N]) / 2.0f +
1806+ 2.0f * r * (rand() - (float)RAND_MAX/2.0f) / (float)RAND_MAX;
1807+ v[c*l + l/2] = LIMIT(v[c*l + l/2], -1.0f, 1.0f);
1808+ }
1809+ l /= 2;
1810+ r /= powf(2, H);
1811+ }
1812+}
1813+
1814+
1815+
1816+/* Construct a new plugin instance. */
1817+LADSPA_Handle
1818+instantiate_Doubler(const LADSPA_Descriptor * Descriptor,
1819+ unsigned long sample_rate) {
1820+
1821+ LADSPA_Handle * ptr;
1822+
1823+ if ((ptr = malloc(sizeof(Doubler))) != NULL) {
1824+ ((Doubler *)ptr)->sample_rate = sample_rate;
1825+ ((Doubler *)ptr)->run_adding_gain = 1.0f;
1826+
1827+ if ((((Doubler *)ptr)->ring_L =
1828+ calloc(BUFLEN * sample_rate / 192000, sizeof(LADSPA_Data))) == NULL)
1829+ return NULL;
1830+ ((Doubler *)ptr)->buflen_L = BUFLEN * sample_rate / 192000;
1831+ ((Doubler *)ptr)->pos_L = 0;
1832+
1833+ if ((((Doubler *)ptr)->ring_R =
1834+ calloc(BUFLEN * sample_rate / 192000, sizeof(LADSPA_Data))) == NULL)
1835+ return NULL;
1836+ ((Doubler *)ptr)->buflen_R = BUFLEN * sample_rate / 192000;
1837+ ((Doubler *)ptr)->pos_R = 0;
1838+
1839+ if ((((Doubler *)ptr)->ring_pnoise =
1840+ calloc(NOISE_LEN, sizeof(LADSPA_Data))) == NULL)
1841+ return NULL;
1842+ ((Doubler *)ptr)->buflen_pnoise = NOISE_LEN;
1843+ ((Doubler *)ptr)->pos_pnoise = 0;
1844+
1845+ if ((((Doubler *)ptr)->ring_dnoise =
1846+ calloc(NOISE_LEN, sizeof(LADSPA_Data))) == NULL)
1847+ return NULL;
1848+ ((Doubler *)ptr)->buflen_dnoise = NOISE_LEN;
1849+ ((Doubler *)ptr)->pos_dnoise = 0;
1850+
1851+ ((Doubler *)ptr)->d_stretch = sample_rate / 10;
1852+ ((Doubler *)ptr)->p_stretch = sample_rate / 1000;
1853+
1854+ ((Doubler *)ptr)->delay = 0.0f;
1855+ ((Doubler *)ptr)->d_delay = 0.0f;
1856+ ((Doubler *)ptr)->p_delay = 0.0f;
1857+ ((Doubler *)ptr)->n_delay = ((Doubler *)ptr)->d_stretch;
1858+
1859+ ((Doubler *)ptr)->pitchmod = 0.0f;
1860+ ((Doubler *)ptr)->d_pitch = 0.0f;
1861+ ((Doubler *)ptr)->p_pitch = 0.0f;
1862+ ((Doubler *)ptr)->n_pitch = ((Doubler *)ptr)->p_stretch;
1863+
1864+ return ptr;
1865+ }
1866+ return NULL;
1867+}
1868+
1869+
1870+void
1871+activate_Doubler(LADSPA_Handle Instance) {
1872+
1873+ Doubler * ptr = (Doubler *)Instance;
1874+ unsigned long i;
1875+
1876+ for (i = 0; i < BUFLEN * ptr->sample_rate / 192000; i++) {
1877+ ptr->ring_L[i] = 0.0f;
1878+ ptr->ring_R[i] = 0.0f;
1879+ }
1880+
1881+ ptr->old_time = -1.0f;
1882+ ptr->old_pitch = -1.0f;
1883+}
1884+
1885+
1886+
1887+
1888+/* Connect a port to a data location. */
1889+void
1890+connect_port_Doubler(LADSPA_Handle Instance,
1891+ unsigned long Port,
1892+ LADSPA_Data * data) {
1893+
1894+ Doubler * ptr = (Doubler *)Instance;
1895+
1896+ switch (Port) {
1897+ case TIME:
1898+ ptr->time = data;
1899+ break;
1900+ case PITCH:
1901+ ptr->pitch = data;
1902+ break;
1903+ case DRYLEVEL:
1904+ ptr->drylevel = data;
1905+ break;
1906+ case DRYPOSL:
1907+ ptr->dryposl = data;
1908+ break;
1909+ case DRYPOSR:
1910+ ptr->dryposr = data;
1911+ break;
1912+ case WETLEVEL:
1913+ ptr->wetlevel = data;
1914+ break;
1915+ case WETPOSL:
1916+ ptr->wetposl = data;
1917+ break;
1918+ case WETPOSR:
1919+ ptr->wetposr = data;
1920+ break;
1921+ case INPUT_L:
1922+ ptr->input_L = data;
1923+ break;
1924+ case INPUT_R:
1925+ ptr->input_R = data;
1926+ break;
1927+ case OUTPUT_L:
1928+ ptr->output_L = data;
1929+ break;
1930+ case OUTPUT_R:
1931+ ptr->output_R = data;
1932+ break;
1933+ }
1934+}
1935+
1936+
1937+
1938+void
1939+run_Doubler(LADSPA_Handle Instance,
1940+ unsigned long SampleCount) {
1941+
1942+ Doubler * ptr = (Doubler *)Instance;
1943+
1944+ LADSPA_Data pitch = LIMIT(*(ptr->pitch),0.0f,1.0f) + 0.75f;
1945+ LADSPA_Data depth = LIMIT(((1.0f - LIMIT(*(ptr->pitch),0.0f,1.0f)) * 1.75f + 0.25f) *
1946+ ptr->sample_rate / 6000.0f / M_PI,
1947+ 0, ptr->buflen_L / 2);
1948+ LADSPA_Data time = LIMIT(*(ptr->time), 0.0f, 1.0f) + 0.5f;
1949+ LADSPA_Data drylevel = db2lin(LIMIT(*(ptr->drylevel),-90.0f,20.0f));
1950+ LADSPA_Data wetlevel = db2lin(LIMIT(*(ptr->wetlevel),-90.0f,20.0f));
1951+ LADSPA_Data dryposl = 1.0f - LIMIT(*(ptr->dryposl), 0.0f, 1.0f);
1952+ LADSPA_Data dryposr = LIMIT(*(ptr->dryposr), 0.0f, 1.0f);
1953+ LADSPA_Data wetposl = 1.0f - LIMIT(*(ptr->wetposl), 0.0f, 1.0f);
1954+ LADSPA_Data wetposr = LIMIT(*(ptr->wetposr), 0.0f, 1.0f);
1955+ LADSPA_Data * input_L = ptr->input_L;
1956+ LADSPA_Data * input_R = ptr->input_R;
1957+ LADSPA_Data * output_L = ptr->output_L;
1958+ LADSPA_Data * output_R = ptr->output_R;
1959+
1960+ unsigned long sample_index;
1961+ unsigned long sample_count = SampleCount;
1962+
1963+ LADSPA_Data in_L = 0.0f;
1964+ LADSPA_Data in_R = 0.0f;
1965+ LADSPA_Data out_L = 0.0f;
1966+ LADSPA_Data out_R = 0.0f;
1967+
1968+ LADSPA_Data fpos = 0.0f;
1969+ LADSPA_Data n = 0.0f;
1970+ LADSPA_Data rem = 0.0f;
1971+ LADSPA_Data s_a_L, s_a_R, s_b_L, s_b_R;
1972+ LADSPA_Data prev_p_pitch = 0.0f;
1973+ LADSPA_Data prev_p_delay = 0.0f;
1974+ LADSPA_Data delay;
1975+
1976+ LADSPA_Data drystream_L = 0.0f;
1977+ LADSPA_Data drystream_R = 0.0f;
1978+ LADSPA_Data wetstream_L = 0.0f;
1979+ LADSPA_Data wetstream_R = 0.0f;
1980+
1981+ if (ptr->old_pitch != pitch) {
1982+ ptr->pitchmod = ptr->p_pitch;
1983+ prev_p_pitch = ptr->p_pitch;
1984+ fractal(ptr->ring_pnoise, NOISE_LEN, pitch);
1985+ ptr->pos_pnoise = 0;
1986+ ptr->p_pitch = push_buffer(0.0f, ptr->ring_pnoise,
1987+ ptr->buflen_pnoise, &(ptr->pos_pnoise));
1988+ ptr->d_pitch = (ptr->p_pitch - prev_p_pitch) / (float)(ptr->p_stretch);
1989+ ptr->n_pitch = 0;
1990+
1991+ ptr->old_pitch = pitch;
1992+ }
1993+
1994+ if (ptr->old_time != time) {
1995+ ptr->delay = ptr->p_delay;
1996+ prev_p_delay = ptr->p_delay;
1997+ fractal(ptr->ring_dnoise, NOISE_LEN, time);
1998+ ptr->pos_dnoise = 0;
1999+ ptr->p_delay = push_buffer(0.0f, ptr->ring_dnoise,
2000+ ptr->buflen_dnoise, &(ptr->pos_dnoise));
2001+ ptr->d_delay = (ptr->p_delay - prev_p_delay) / (float)(ptr->d_stretch);
2002+ ptr->n_delay = 0;
2003+
2004+ ptr->old_time = time;
2005+ }
2006+
2007+
2008+ for (sample_index = 0; sample_index < sample_count; sample_index++) {
2009+
2010+ in_L = *(input_L++);
2011+ in_R = *(input_R++);
2012+
2013+ push_buffer(in_L, ptr->ring_L, ptr->buflen_L, &(ptr->pos_L));
2014+ push_buffer(in_R, ptr->ring_R, ptr->buflen_R, &(ptr->pos_R));
2015+
2016+ if (ptr->n_pitch < ptr->p_stretch) {
2017+ ptr->pitchmod += ptr->d_pitch;
2018+ ptr->n_pitch++;
2019+ } else {
2020+ ptr->pitchmod = ptr->p_pitch;
2021+ prev_p_pitch = ptr->p_pitch;
2022+ if (!ptr->pos_pnoise) {
2023+ fractal(ptr->ring_pnoise, NOISE_LEN, pitch);
2024+ }
2025+ ptr->p_pitch = push_buffer(0.0f, ptr->ring_pnoise,
2026+ ptr->buflen_pnoise, &(ptr->pos_pnoise));
2027+ ptr->d_pitch = (ptr->p_pitch - prev_p_pitch) / (float)(ptr->p_stretch);
2028+ ptr->n_pitch = 0;
2029+ }
2030+
2031+ if (ptr->n_delay < ptr->d_stretch) {
2032+ ptr->delay += ptr->d_delay;
2033+ ptr->n_delay++;
2034+ } else {
2035+ ptr->delay = ptr->p_delay;
2036+ prev_p_delay = ptr->p_delay;
2037+ if (!ptr->pos_dnoise) {
2038+ fractal(ptr->ring_dnoise, NOISE_LEN, time);
2039+ }
2040+ ptr->p_delay = push_buffer(0.0f, ptr->ring_dnoise,
2041+ ptr->buflen_dnoise, &(ptr->pos_dnoise));
2042+ ptr->d_delay = (ptr->p_delay - prev_p_delay) / (float)(ptr->d_stretch);
2043+ ptr->n_delay = 0;
2044+ }
2045+
2046+ delay = (12.5f * ptr->delay + 37.5f) * ptr->sample_rate / 1000.0f;
2047+ fpos = ptr->buflen_L - depth * (1.0f - ptr->pitchmod) - delay - 1.0f;
2048+ n = floorf(fpos);
2049+ rem = fpos - n;
2050+
2051+ s_a_L = read_buffer(ptr->ring_L, ptr->buflen_L,
2052+ ptr->pos_L, (unsigned long) n);
2053+ s_b_L = read_buffer(ptr->ring_L, ptr->buflen_L,
2054+ ptr->pos_L, (unsigned long) n + 1);
2055+
2056+ s_a_R = read_buffer(ptr->ring_R, ptr->buflen_R,
2057+ ptr->pos_R, (unsigned long) n);
2058+ s_b_R = read_buffer(ptr->ring_R, ptr->buflen_R,
2059+ ptr->pos_R, (unsigned long) n + 1);
2060+
2061+ drystream_L = drylevel * in_L;
2062+ drystream_R = drylevel * in_R;
2063+ wetstream_L = wetlevel * ((1 - rem) * s_a_L + rem * s_b_L);
2064+ wetstream_R = wetlevel * ((1 - rem) * s_a_R + rem * s_b_R);
2065+
2066+ out_L = dryposl * drystream_L + (1.0f - dryposr) * drystream_R +
2067+ wetposl * wetstream_L + (1.0f - wetposr) * wetstream_R;
2068+ out_R = (1.0f - dryposl) * drystream_L + dryposr * drystream_R +
2069+ (1.0f - wetposl) * wetstream_L + wetposr * wetstream_R;
2070+
2071+ *(output_L++) = out_L;
2072+ *(output_R++) = out_R;
2073+ }
2074+}
2075+
2076+
2077+void
2078+set_run_adding_gain_Doubler(LADSPA_Handle Instance, LADSPA_Data gain) {
2079+
2080+ Doubler * ptr = (Doubler *)Instance;
2081+
2082+ ptr->run_adding_gain = gain;
2083+}
2084+
2085+
2086+
2087+void
2088+run_adding_Doubler(LADSPA_Handle Instance,
2089+ unsigned long SampleCount) {
2090+
2091+ Doubler * ptr = (Doubler *)Instance;
2092+
2093+ LADSPA_Data pitch = LIMIT(*(ptr->pitch),0.0f,1.0f) + 0.75f;
2094+ LADSPA_Data depth = LIMIT(((1.0f - LIMIT(*(ptr->pitch),0.0f,1.0f)) * 1.75f + 0.25f) *
2095+ ptr->sample_rate / 6000.0f / M_PI,
2096+ 0, ptr->buflen_L / 2);
2097+ LADSPA_Data time = LIMIT(*(ptr->time), 0.0f, 1.0f) + 0.5f;
2098+ LADSPA_Data drylevel = db2lin(LIMIT(*(ptr->drylevel),-90.0f,20.0f));
2099+ LADSPA_Data wetlevel = db2lin(LIMIT(*(ptr->wetlevel),-90.0f,20.0f));
2100+ LADSPA_Data dryposl = 1.0f - LIMIT(*(ptr->dryposl), 0.0f, 1.0f);
2101+ LADSPA_Data dryposr = LIMIT(*(ptr->dryposr), 0.0f, 1.0f);
2102+ LADSPA_Data wetposl = 1.0f - LIMIT(*(ptr->wetposl), 0.0f, 1.0f);
2103+ LADSPA_Data wetposr = LIMIT(*(ptr->wetposr), 0.0f, 1.0f);
2104+ LADSPA_Data * input_L = ptr->input_L;
2105+ LADSPA_Data * input_R = ptr->input_R;
2106+ LADSPA_Data * output_L = ptr->output_L;
2107+ LADSPA_Data * output_R = ptr->output_R;
2108+
2109+ unsigned long sample_index;
2110+ unsigned long sample_count = SampleCount;
2111+
2112+ LADSPA_Data in_L = 0.0f;
2113+ LADSPA_Data in_R = 0.0f;
2114+ LADSPA_Data out_L = 0.0f;
2115+ LADSPA_Data out_R = 0.0f;
2116+
2117+ LADSPA_Data fpos = 0.0f;
2118+ LADSPA_Data n = 0.0f;
2119+ LADSPA_Data rem = 0.0f;
2120+ LADSPA_Data s_a_L, s_a_R, s_b_L, s_b_R;
2121+ LADSPA_Data prev_p_pitch = 0.0f;
2122+ LADSPA_Data prev_p_delay = 0.0f;
2123+ LADSPA_Data delay;
2124+
2125+ LADSPA_Data drystream_L = 0.0f;
2126+ LADSPA_Data drystream_R = 0.0f;
2127+ LADSPA_Data wetstream_L = 0.0f;
2128+ LADSPA_Data wetstream_R = 0.0f;
2129+
2130+ if (ptr->old_pitch != pitch) {
2131+ ptr->pitchmod = ptr->p_pitch;
2132+ prev_p_pitch = ptr->p_pitch;
2133+ fractal(ptr->ring_pnoise, NOISE_LEN, pitch);
2134+ ptr->pos_pnoise = 0;
2135+ ptr->p_pitch = push_buffer(0.0f, ptr->ring_pnoise,
2136+ ptr->buflen_pnoise, &(ptr->pos_pnoise));
2137+ ptr->d_pitch = (ptr->p_pitch - prev_p_pitch) / (float)(ptr->p_stretch);
2138+ ptr->n_pitch = 0;
2139+
2140+ ptr->old_pitch = pitch;
2141+ }
2142+
2143+ if (ptr->old_time != time) {
2144+ ptr->delay = ptr->p_delay;
2145+ prev_p_delay = ptr->p_delay;
2146+ fractal(ptr->ring_dnoise, NOISE_LEN, time);
2147+ ptr->pos_dnoise = 0;
2148+ ptr->p_delay = push_buffer(0.0f, ptr->ring_dnoise,
2149+ ptr->buflen_dnoise, &(ptr->pos_dnoise));
2150+ ptr->d_delay = (ptr->p_delay - prev_p_delay) / (float)(ptr->d_stretch);
2151+ ptr->n_delay = 0;
2152+
2153+ ptr->old_time = time;
2154+ }
2155+
2156+
2157+ for (sample_index = 0; sample_index < sample_count; sample_index++) {
2158+
2159+ in_L = *(input_L++);
2160+ in_R = *(input_R++);
2161+
2162+ push_buffer(in_L, ptr->ring_L, ptr->buflen_L, &(ptr->pos_L));
2163+ push_buffer(in_R, ptr->ring_R, ptr->buflen_R, &(ptr->pos_R));
2164+
2165+ if (ptr->n_pitch < ptr->p_stretch) {
2166+ ptr->pitchmod += ptr->d_pitch;
2167+ ptr->n_pitch++;
2168+ } else {
2169+ ptr->pitchmod = ptr->p_pitch;
2170+ prev_p_pitch = ptr->p_pitch;
2171+ if (!ptr->pos_pnoise) {
2172+ fractal(ptr->ring_pnoise, NOISE_LEN, pitch);
2173+ }
2174+ ptr->p_pitch = push_buffer(0.0f, ptr->ring_pnoise,
2175+ ptr->buflen_pnoise, &(ptr->pos_pnoise));
2176+ ptr->d_pitch = (ptr->p_pitch - prev_p_pitch) / (float)(ptr->p_stretch);
2177+ ptr->n_pitch = 0;
2178+ }
2179+
2180+ if (ptr->n_delay < ptr->d_stretch) {
2181+ ptr->delay += ptr->d_delay;
2182+ ptr->n_delay++;
2183+ } else {
2184+ ptr->delay = ptr->p_delay;
2185+ prev_p_delay = ptr->p_delay;
2186+ if (!ptr->pos_dnoise) {
2187+ fractal(ptr->ring_dnoise, NOISE_LEN, time);
2188+ }
2189+ ptr->p_delay = push_buffer(0.0f, ptr->ring_dnoise,
2190+ ptr->buflen_dnoise, &(ptr->pos_dnoise));
2191+ ptr->d_delay = (ptr->p_delay - prev_p_delay) / (float)(ptr->d_stretch);
2192+ ptr->n_delay = 0;
2193+ }
2194+
2195+ delay = (12.5f * ptr->delay + 37.5f) * ptr->sample_rate / 1000.0f;
2196+ fpos = ptr->buflen_L - depth * (1.0f - ptr->pitchmod) - delay - 1.0f;
2197+ n = floorf(fpos);
2198+ rem = fpos - n;
2199+
2200+ s_a_L = read_buffer(ptr->ring_L, ptr->buflen_L,
2201+ ptr->pos_L, (unsigned long) n);
2202+ s_b_L = read_buffer(ptr->ring_L, ptr->buflen_L,
2203+ ptr->pos_L, (unsigned long) n + 1);
2204+
2205+ s_a_R = read_buffer(ptr->ring_R, ptr->buflen_R,
2206+ ptr->pos_R, (unsigned long) n);
2207+ s_b_R = read_buffer(ptr->ring_R, ptr->buflen_R,
2208+ ptr->pos_R, (unsigned long) n + 1);
2209+
2210+ drystream_L = drylevel * in_L;
2211+ drystream_R = drylevel * in_R;
2212+ wetstream_L = wetlevel * ((1 - rem) * s_a_L + rem * s_b_L);
2213+ wetstream_R = wetlevel * ((1 - rem) * s_a_R + rem * s_b_R);
2214+
2215+ out_L = dryposl * drystream_L + (1.0f - dryposr) * drystream_R +
2216+ wetposl * wetstream_L + (1.0f - wetposr) * wetstream_R;
2217+ out_R = (1.0f - dryposl) * drystream_L + dryposr * drystream_R +
2218+ (1.0f - wetposl) * wetstream_L + wetposr * wetstream_R;
2219+
2220+ *(output_L++) += ptr->run_adding_gain * out_L;
2221+ *(output_R++) += ptr->run_adding_gain * out_R;
2222+ }
2223+}
2224+
2225+
2226+
2227+/* Throw away a Doubler effect instance. */
2228+void
2229+cleanup_Doubler(LADSPA_Handle Instance) {
2230+
2231+ Doubler * ptr = (Doubler *)Instance;
2232+ free(ptr->ring_L);
2233+ free(ptr->ring_R);
2234+ free(ptr->ring_pnoise);
2235+ free(ptr->ring_dnoise);
2236+ free(Instance);
2237+}
2238+
2239+
2240+
2241+LADSPA_Descriptor * stereo_descriptor = NULL;
2242+
2243+
2244+
2245+/* __attribute__((constructor)) _init() is called automatically when the plugin library is first
2246+ loaded. */
2247+void
2248+__attribute__((constructor)) _init() {
2249+
2250+ char ** port_names;
2251+ LADSPA_PortDescriptor * port_descriptors;
2252+ LADSPA_PortRangeHint * port_range_hints;
2253+
2254+ if ((stereo_descriptor =
2255+ (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor))) == NULL)
2256+ exit(1);
2257+
2258+ stereo_descriptor->UniqueID = ID_STEREO;
2259+ stereo_descriptor->Label = strdup("tap_doubler");
2260+ stereo_descriptor->Properties = 0;
2261+ stereo_descriptor->Name = strdup("TAP Fractal Doubler");
2262+ stereo_descriptor->Maker = strdup("Tom Szilagyi");
2263+ stereo_descriptor->Copyright = strdup("GPL");
2264+ stereo_descriptor->PortCount = PORTCOUNT_STEREO;
2265+
2266+ if ((port_descriptors =
2267+ (LADSPA_PortDescriptor *)calloc(PORTCOUNT_STEREO, sizeof(LADSPA_PortDescriptor))) == NULL)
2268+ exit(1);
2269+
2270+ stereo_descriptor->PortDescriptors = (const LADSPA_PortDescriptor *)port_descriptors;
2271+ port_descriptors[TIME] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2272+ port_descriptors[PITCH] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2273+ port_descriptors[DRYLEVEL] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2274+ port_descriptors[DRYPOSL] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2275+ port_descriptors[DRYPOSR] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2276+ port_descriptors[WETLEVEL] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2277+ port_descriptors[WETPOSL] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2278+ port_descriptors[WETPOSR] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2279+ port_descriptors[INPUT_L] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
2280+ port_descriptors[INPUT_R] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
2281+ port_descriptors[OUTPUT_L] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
2282+ port_descriptors[OUTPUT_R] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
2283+
2284+ if ((port_names =
2285+ (char **)calloc(PORTCOUNT_STEREO, sizeof(char *))) == NULL)
2286+ exit(1);
2287+
2288+ stereo_descriptor->PortNames = (const char **)port_names;
2289+ port_names[TIME] = strdup("Time Tracking");
2290+ port_names[PITCH] = strdup("Pitch Tracking");
2291+ port_names[DRYLEVEL] = strdup("Dry Level [dB]");
2292+ port_names[DRYPOSL] = strdup("Dry Left Position");
2293+ port_names[DRYPOSR] = strdup("Dry Right Position");
2294+ port_names[WETLEVEL] = strdup("Wet Level [dB]");
2295+ port_names[WETPOSL] = strdup("Wet Left Position");
2296+ port_names[WETPOSR] = strdup("Wet Right Position");
2297+ port_names[INPUT_L] = strdup("Input_L");
2298+ port_names[INPUT_R] = strdup("Input_R");
2299+ port_names[OUTPUT_L] = strdup("Output_L");
2300+ port_names[OUTPUT_R] = strdup("Output_R");
2301+
2302+ if ((port_range_hints =
2303+ ((LADSPA_PortRangeHint *)calloc(PORTCOUNT_STEREO, sizeof(LADSPA_PortRangeHint)))) == NULL)
2304+ exit(1);
2305+
2306+ stereo_descriptor->PortRangeHints = (const LADSPA_PortRangeHint *)port_range_hints;
2307+ port_range_hints[TIME].HintDescriptor =
2308+ (LADSPA_HINT_BOUNDED_BELOW |
2309+ LADSPA_HINT_BOUNDED_ABOVE |
2310+ LADSPA_HINT_DEFAULT_MIDDLE);
2311+ port_range_hints[PITCH].HintDescriptor =
2312+ (LADSPA_HINT_BOUNDED_BELOW |
2313+ LADSPA_HINT_BOUNDED_ABOVE |
2314+ LADSPA_HINT_DEFAULT_MIDDLE);
2315+ port_range_hints[DRYLEVEL].HintDescriptor =
2316+ (LADSPA_HINT_BOUNDED_BELOW |
2317+ LADSPA_HINT_BOUNDED_ABOVE |
2318+ LADSPA_HINT_DEFAULT_0);
2319+ port_range_hints[DRYPOSL].HintDescriptor =
2320+ (LADSPA_HINT_BOUNDED_BELOW |
2321+ LADSPA_HINT_BOUNDED_ABOVE |
2322+ LADSPA_HINT_DEFAULT_MINIMUM);
2323+ port_range_hints[DRYPOSR].HintDescriptor =
2324+ (LADSPA_HINT_BOUNDED_BELOW |
2325+ LADSPA_HINT_BOUNDED_ABOVE |
2326+ LADSPA_HINT_DEFAULT_MAXIMUM);
2327+ port_range_hints[WETLEVEL].HintDescriptor =
2328+ (LADSPA_HINT_BOUNDED_BELOW |
2329+ LADSPA_HINT_BOUNDED_ABOVE |
2330+ LADSPA_HINT_DEFAULT_0);
2331+ port_range_hints[WETPOSL].HintDescriptor =
2332+ (LADSPA_HINT_BOUNDED_BELOW |
2333+ LADSPA_HINT_BOUNDED_ABOVE |
2334+ LADSPA_HINT_DEFAULT_MINIMUM);
2335+ port_range_hints[WETPOSR].HintDescriptor =
2336+ (LADSPA_HINT_BOUNDED_BELOW |
2337+ LADSPA_HINT_BOUNDED_ABOVE |
2338+ LADSPA_HINT_DEFAULT_MAXIMUM);
2339+ port_range_hints[TIME].LowerBound = 0.0f;
2340+ port_range_hints[TIME].UpperBound = 1.0f;
2341+ port_range_hints[PITCH].LowerBound = 0.0f;
2342+ port_range_hints[PITCH].UpperBound = 1.0f;
2343+ port_range_hints[DRYLEVEL].LowerBound = -90.0f;
2344+ port_range_hints[DRYLEVEL].UpperBound = +20.0f;
2345+ port_range_hints[DRYPOSL].LowerBound = 0.0f;
2346+ port_range_hints[DRYPOSL].UpperBound = 1.0f;
2347+ port_range_hints[DRYPOSR].LowerBound = 0.0f;
2348+ port_range_hints[DRYPOSR].UpperBound = 1.0f;
2349+ port_range_hints[WETLEVEL].LowerBound = -90.0f;
2350+ port_range_hints[WETLEVEL].UpperBound = +20.0f;
2351+ port_range_hints[WETPOSL].LowerBound = 0.0f;
2352+ port_range_hints[WETPOSL].UpperBound = 1.0f;
2353+ port_range_hints[WETPOSR].LowerBound = 0.0f;
2354+ port_range_hints[WETPOSR].UpperBound = 1.0f;
2355+ port_range_hints[INPUT_L].HintDescriptor = 0;
2356+ port_range_hints[INPUT_R].HintDescriptor = 0;
2357+ port_range_hints[OUTPUT_L].HintDescriptor = 0;
2358+ port_range_hints[OUTPUT_R].HintDescriptor = 0;
2359+ stereo_descriptor->instantiate = instantiate_Doubler;
2360+ stereo_descriptor->connect_port = connect_port_Doubler;
2361+ stereo_descriptor->activate = activate_Doubler;
2362+ stereo_descriptor->run = run_Doubler;
2363+ stereo_descriptor->run_adding = run_adding_Doubler;
2364+ stereo_descriptor->set_run_adding_gain = set_run_adding_gain_Doubler;
2365+ stereo_descriptor->deactivate = NULL;
2366+ stereo_descriptor->cleanup = cleanup_Doubler;
2367+}
2368+
2369+
2370+void
2371+delete_descriptor(LADSPA_Descriptor * descriptor) {
2372+ unsigned long index;
2373+ if (descriptor) {
2374+ free((char *)descriptor->Label);
2375+ free((char *)descriptor->Name);
2376+ free((char *)descriptor->Maker);
2377+ free((char *)descriptor->Copyright);
2378+ free((LADSPA_PortDescriptor *)descriptor->PortDescriptors);
2379+ for (index = 0; index < descriptor->PortCount; index++)
2380+ free((char *)(descriptor->PortNames[index]));
2381+ free((char **)descriptor->PortNames);
2382+ free((LADSPA_PortRangeHint *)descriptor->PortRangeHints);
2383+ free(descriptor);
2384+ }
2385+}
2386+
2387+
2388+/* __attribute__((destructor)) _fini() is called automatically when the library is unloaded. */
2389+void
2390+__attribute__((destructor)) _fini() {
2391+ delete_descriptor(stereo_descriptor);
2392+}
2393+
2394+
2395+/* Return a descriptor of the requested plugin type. */
2396+const LADSPA_Descriptor *
2397+ladspa_descriptor(unsigned long Index) {
2398+
2399+ switch (Index) {
2400+ case 0:
2401+ return stereo_descriptor;
2402+ default:
2403+ return NULL;
2404+ }
2405+}
2406
2407=== added file '.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_dynamics_m.c'
2408--- .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_dynamics_m.c 1970-01-01 00:00:00 +0000
2409+++ .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_dynamics_m.c 2014-04-11 06:58:04 +0000
2410@@ -0,0 +1,666 @@
2411+/* -*- linux-c -*-
2412+ Copyright (C) 2004 Tom Szilagyi
2413+
2414+ This program is free software; you can redistribute it and/or modify
2415+ it under the terms of the GNU General Public License as published by
2416+ the Free Software Foundation; either version 2 of the License, or
2417+ (at your option) any later version.
2418+
2419+ This program is distributed in the hope that it will be useful,
2420+ but WITHOUT ANY WARRANTY; without even the implied warranty of
2421+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2422+ GNU General Public License for more details.
2423+
2424+ You should have received a copy of the GNU General Public License
2425+ along with this program; if not, write to the Free Software
2426+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
2427+
2428+ $Id: tap_dynamics_m.c,v 1.2 2004/06/15 14:50:55 tszilagyi Exp $
2429+*/
2430+
2431+
2432+#include <stdio.h>
2433+#include <stdlib.h>
2434+#include <stdint.h>
2435+#include <string.h>
2436+#include <math.h>
2437+
2438+#include <ladspa.h>
2439+#include "tap_utils.h"
2440+
2441+
2442+/* ***** VERY IMPORTANT! *****
2443+ *
2444+ * If you enable this, the plugin will use float arithmetics in DSP
2445+ * calculations. This usually yields lower average CPU usage, but
2446+ * occasionaly may result in high CPU peaks which cause trouble to you
2447+ * and your JACK server. The default is to use fixpoint arithmetics
2448+ * (with the following #define commented out). But (depending on the
2449+ * processor on which you run the code) you may find floating point
2450+ * mode usable.
2451+ */
2452+/*#define DYN_CALC_FLOAT*/
2453+
2454+
2455+typedef signed int sample;
2456+
2457+/* coefficient for float to sample (signed int) conversion */
2458+#define F2S 2147483
2459+
2460+
2461+#ifdef DYN_CALC_FLOAT
2462+typedef LADSPA_Data dyn_t;
2463+typedef float rms_t;
2464+#else
2465+typedef sample dyn_t;
2466+typedef int64_t rms_t;
2467+#endif
2468+
2469+
2470+
2471+/* The Unique ID of the plugin: */
2472+
2473+#define ID_MONO 2152
2474+
2475+/* The port numbers for the plugin: */
2476+
2477+#define ATTACK 0
2478+#define RELEASE 1
2479+#define OFFSGAIN 2
2480+#define MUGAIN 3
2481+#define RMSENV 4
2482+#define MODGAIN 5
2483+#define MODE 6
2484+#define INPUT 7
2485+#define OUTPUT 8
2486+
2487+
2488+/* Total number of ports */
2489+
2490+#define PORTCOUNT_MONO 9
2491+
2492+
2493+#define TABSIZE 256
2494+#define RMSSIZE 64
2495+
2496+
2497+typedef struct {
2498+ rms_t buffer[RMSSIZE];
2499+ unsigned int pos;
2500+ rms_t sum;
2501+} rms_env;
2502+
2503+
2504+/* max. number of breakpoints on in/out dB graph */
2505+#define MAX_POINTS 20
2506+
2507+typedef struct {
2508+ LADSPA_Data x;
2509+ LADSPA_Data y;
2510+} GRAPH_POINT;
2511+
2512+typedef struct {
2513+ unsigned long num_points;
2514+ GRAPH_POINT points[MAX_POINTS];
2515+} DYNAMICS_DATA;
2516+
2517+#include "tap_dynamics_presets.h"
2518+
2519+
2520+/* The structure used to hold port connection information and state */
2521+
2522+typedef struct {
2523+ LADSPA_Data * attack;
2524+ LADSPA_Data * release;
2525+ LADSPA_Data * offsgain;
2526+ LADSPA_Data * mugain;
2527+ LADSPA_Data * rmsenv;
2528+ LADSPA_Data * modgain;
2529+ LADSPA_Data * mode;
2530+ LADSPA_Data * input;
2531+ LADSPA_Data * output;
2532+ unsigned long sample_rate;
2533+
2534+ float * as;
2535+ unsigned long count;
2536+ dyn_t amp;
2537+ dyn_t env;
2538+ float gain;
2539+ float gain_out;
2540+ rms_env * rms;
2541+ rms_t sum;
2542+
2543+ DYNAMICS_DATA graph;
2544+
2545+ LADSPA_Data run_adding_gain;
2546+} Dynamics;
2547+
2548+
2549+
2550+/* RMS envelope stuff, grabbed without a second thought from Steve Harris's swh-plugins, util/rms.c */
2551+/* Adapted, though, to be able to use fixed-point arithmetics as well. */
2552+
2553+rms_env *
2554+rms_env_new(void) {
2555+
2556+ rms_env * new = (rms_env *)calloc(1, sizeof(rms_env));
2557+
2558+ return new;
2559+}
2560+
2561+void
2562+rms_env_reset(rms_env *r) {
2563+
2564+ unsigned int i;
2565+
2566+ for (i = 0; i < RMSSIZE; i++) {
2567+ r->buffer[i] = 0.0f;
2568+ }
2569+ r->pos = 0;
2570+ r->sum = 0.0f;
2571+}
2572+
2573+inline static
2574+dyn_t
2575+rms_env_process(rms_env *r, const rms_t x) {
2576+
2577+ r->sum -= r->buffer[r->pos];
2578+ r->sum += x;
2579+ r->buffer[r->pos] = x;
2580+ r->pos = (r->pos + 1) & (RMSSIZE - 1);
2581+
2582+#ifdef DYN_CALC_FLOAT
2583+ return sqrt(r->sum / (float)RMSSIZE);
2584+#else
2585+ return sqrt(r->sum / RMSSIZE);
2586+#endif
2587+}
2588+
2589+
2590+
2591+inline
2592+LADSPA_Data
2593+get_table_gain(int mode, LADSPA_Data level) {
2594+
2595+ LADSPA_Data x1 = -80.0f;
2596+ LADSPA_Data y1 = -80.0f;
2597+ LADSPA_Data x2 = 0.0f;
2598+ LADSPA_Data y2 = 0.0f;
2599+ unsigned int i = 0;
2600+
2601+ if (level <= -80.0f)
2602+ return get_table_gain(mode, -79.9f);
2603+
2604+ while (i < dyn_data[mode].num_points && dyn_data[mode].points[i].x < level) {
2605+ x1 = dyn_data[mode].points[i].x;
2606+ y1 = dyn_data[mode].points[i].y;
2607+ i++;
2608+ }
2609+ if (i < dyn_data[mode].num_points) {
2610+ x2 = dyn_data[mode].points[i].x;
2611+ y2 = dyn_data[mode].points[i].y;
2612+ } else
2613+ return 0.0f;
2614+
2615+ return y1 + ((level - x1) * (y2 - y1) / (x2 - x1)) - level;
2616+}
2617+
2618+
2619+/* Construct a new plugin instance. */
2620+LADSPA_Handle
2621+instantiate_Dynamics(const LADSPA_Descriptor * Descriptor, unsigned long sample_rate) {
2622+
2623+ LADSPA_Handle * ptr;
2624+
2625+ float * as = NULL;
2626+ unsigned int count = 0;
2627+ dyn_t amp = 0.0f;
2628+ dyn_t env = 0.0f;
2629+ float gain = 0.0f;
2630+ float gain_out = 0.0f;
2631+ rms_env * rms = NULL;
2632+ rms_t sum = 0;
2633+ int i;
2634+
2635+ if ((ptr = malloc(sizeof(Dynamics))) == NULL)
2636+ return NULL;
2637+
2638+ ((Dynamics *)ptr)->sample_rate = sample_rate;
2639+ ((Dynamics *)ptr)->run_adding_gain = 1.0;
2640+
2641+ if ((rms = rms_env_new()) == NULL)
2642+ return NULL;
2643+
2644+ if ((as = malloc(TABSIZE * sizeof(float))) == NULL)
2645+ return NULL;
2646+
2647+ as[0] = 1.0f;
2648+ for (i = 1; i < TABSIZE; i++) {
2649+ as[i] = expf(-1.0f / (sample_rate * (float)i / (float)TABSIZE));
2650+ }
2651+
2652+ ((Dynamics *)ptr)->as = as;
2653+ ((Dynamics *)ptr)->count = count;
2654+ ((Dynamics *)ptr)->amp = amp;
2655+ ((Dynamics *)ptr)->env = env;
2656+ ((Dynamics *)ptr)->gain = gain;
2657+ ((Dynamics *)ptr)->gain_out = gain_out;
2658+ ((Dynamics *)ptr)->rms = rms;
2659+ ((Dynamics *)ptr)->sum = sum;
2660+
2661+ return ptr;
2662+}
2663+
2664+
2665+
2666+/* Connect a port to a data location. */
2667+void
2668+connect_port_Dynamics(LADSPA_Handle Instance,
2669+ unsigned long Port,
2670+ LADSPA_Data * DataLocation) {
2671+
2672+ Dynamics * ptr = (Dynamics *)Instance;
2673+
2674+ switch (Port) {
2675+ case ATTACK:
2676+ ptr->attack = DataLocation;
2677+ break;
2678+ case RELEASE:
2679+ ptr->release = DataLocation;
2680+ break;
2681+ case OFFSGAIN:
2682+ ptr->offsgain = DataLocation;
2683+ break;
2684+ case MUGAIN:
2685+ ptr->mugain = DataLocation;
2686+ break;
2687+ case RMSENV:
2688+ ptr->rmsenv = DataLocation;
2689+ *(ptr->rmsenv) = -60.0f;
2690+ break;
2691+ case MODGAIN:
2692+ ptr->modgain = DataLocation;
2693+ *(ptr->modgain) = 0.0f;
2694+ break;
2695+ case MODE:
2696+ ptr->mode = DataLocation;
2697+ break;
2698+ case INPUT:
2699+ ptr->input = DataLocation;
2700+ break;
2701+ case OUTPUT:
2702+ ptr->output = DataLocation;
2703+ break;
2704+ }
2705+}
2706+
2707+
2708+
2709+void
2710+run_Dynamics(LADSPA_Handle Instance,
2711+ unsigned long sample_count) {
2712+
2713+ Dynamics * ptr = (Dynamics *)Instance;
2714+ LADSPA_Data * input = ptr->input;
2715+ LADSPA_Data * output = ptr->output;
2716+ const float attack = LIMIT(*(ptr->attack), 4.0f, 500.0f);
2717+ const float release = LIMIT(*(ptr->release), 4.0f, 1000.0f);
2718+ const float offsgain = LIMIT(*(ptr->offsgain), -20.0f, 20.0f);
2719+ const float mugain = db2lin(LIMIT(*(ptr->mugain), -20.0f, 20.0f));
2720+ const int mode = LIMIT(*(ptr->mode), 0, NUM_MODES-1);
2721+ unsigned long sample_index;
2722+
2723+ dyn_t amp = ptr->amp;
2724+ dyn_t env = ptr->env;
2725+ float * as = ptr->as;
2726+ unsigned int count = ptr->count;
2727+ float gain = ptr->gain;
2728+ float gain_out = ptr->gain_out;
2729+ rms_env * rms = ptr->rms;
2730+ rms_t sum = ptr->sum;
2731+
2732+ const float ga = as[(unsigned int)(attack * 0.001f * (float)(TABSIZE-1))];
2733+ const float gr = as[(unsigned int)(release * 0.001f * (float)(TABSIZE-1))];
2734+ const float ef_a = ga * 0.25f;
2735+ const float ef_ai = 1.0f - ef_a;
2736+
2737+ float level = 0.0f;
2738+ float adjust = 0.0f;
2739+
2740+ for (sample_index = 0; sample_index < sample_count; sample_index++) {
2741+
2742+#ifdef DYN_CALC_FLOAT
2743+ sum += input[sample_index] * input[sample_index];
2744+ if (amp > env) {
2745+ env = env * ga + amp * (1.0f - ga);
2746+ } else {
2747+ env = env * gr + amp * (1.0f - gr);
2748+ }
2749+#else
2750+ sum += (rms_t)(input[sample_index] * F2S * input[sample_index] * F2S);
2751+ if (amp) {
2752+ if (amp > env) {
2753+ env = (double)env * ga + (double)amp * (1.0f - ga);
2754+ } else {
2755+ env = (double)env * gr + (double)amp * (1.0f - gr);
2756+ }
2757+ } else
2758+ env = 0;
2759+#endif
2760+
2761+ if (count++ % 4 == 3) {
2762+#ifdef DYN_CALC_FLOAT
2763+ amp = rms_env_process(rms, sum / 4);
2764+#else
2765+ if (sum)
2766+ amp = rms_env_process(rms, sum / 4);
2767+ else
2768+ amp = 0;
2769+#endif
2770+
2771+#ifdef DYN_CALC_FLOAT
2772+ if (isnan(amp))
2773+ amp = 0.0f;
2774+#endif
2775+ sum = 0;
2776+
2777+ /* set gain_out according to the difference between
2778+ the envelope volume level (env) and the corresponding
2779+ output level (from graph) */
2780+#ifdef DYN_CALC_FLOAT
2781+ level = 20 * log10f(2 * env);
2782+#else
2783+ level = 20 * log10f(2 * (double)env / (double)F2S);
2784+#endif
2785+ adjust = get_table_gain(mode, level + offsgain);
2786+ gain_out = db2lin(adjust);
2787+
2788+ }
2789+ gain = gain * ef_a + gain_out * ef_ai;
2790+ output[sample_index] = input[sample_index] * gain * mugain;
2791+ }
2792+ ptr->sum = sum;
2793+ ptr->amp = amp;
2794+ ptr->gain = gain;
2795+ ptr->gain_out = gain_out;
2796+ ptr->env = env;
2797+ ptr->count = count;
2798+
2799+ *(ptr->rmsenv) = LIMIT(level, -60.0f, 20.0f);
2800+ *(ptr->modgain) = LIMIT(adjust, -60.0f, 20.0f);
2801+}
2802+
2803+
2804+
2805+void
2806+set_run_adding_gain_Dynamics(LADSPA_Handle Instance, LADSPA_Data gain) {
2807+
2808+ Dynamics * ptr = (Dynamics *)Instance;
2809+
2810+ ptr->run_adding_gain = gain;
2811+}
2812+
2813+
2814+
2815+void
2816+run_adding_Dynamics(LADSPA_Handle Instance,
2817+ unsigned long sample_count) {
2818+
2819+ Dynamics * ptr = (Dynamics *)Instance;
2820+ LADSPA_Data * input = ptr->input;
2821+ LADSPA_Data * output = ptr->output;
2822+ const float attack = LIMIT(*(ptr->attack), 4.0f, 500.0f);
2823+ const float release = LIMIT(*(ptr->release), 4.0f, 1000.0f);
2824+ const float offsgain = LIMIT(*(ptr->offsgain), -20.0f, 20.0f);
2825+ const float mugain = db2lin(LIMIT(*(ptr->mugain), -20.0f, 20.0f));
2826+ const int mode = LIMIT(*(ptr->mode), 0, NUM_MODES-1);
2827+ unsigned long sample_index;
2828+
2829+ dyn_t amp = ptr->amp;
2830+ dyn_t env = ptr->env;
2831+ float * as = ptr->as;
2832+ unsigned int count = ptr->count;
2833+ float gain = ptr->gain;
2834+ float gain_out = ptr->gain_out;
2835+ rms_env * rms = ptr->rms;
2836+ rms_t sum = ptr->sum;
2837+
2838+ const float ga = as[(unsigned int)(attack * 0.001f * (float)(TABSIZE-1))];
2839+ const float gr = as[(unsigned int)(release * 0.001f * (float)(TABSIZE-1))];
2840+ const float ef_a = ga * 0.25f;
2841+ const float ef_ai = 1.0f - ef_a;
2842+
2843+ float level = 0.0f;
2844+ float adjust = 0.0f;
2845+
2846+ for (sample_index = 0; sample_index < sample_count; sample_index++) {
2847+
2848+#ifdef DYN_CALC_FLOAT
2849+ sum += input[sample_index] * input[sample_index];
2850+ if (amp > env) {
2851+ env = env * ga + amp * (1.0f - ga);
2852+ } else {
2853+ env = env * gr + amp * (1.0f - gr);
2854+ }
2855+#else
2856+ sum += (rms_t)(input[sample_index] * F2S * input[sample_index] * F2S);
2857+ if (amp) {
2858+ if (amp > env) {
2859+ env = (double)env * ga + (double)amp * (1.0f - ga);
2860+ } else {
2861+ env = (double)env * gr + (double)amp * (1.0f - gr);
2862+ }
2863+ } else
2864+ env = 0;
2865+#endif
2866+
2867+ if (count++ % 4 == 3) {
2868+#ifdef DYN_CALC_FLOAT
2869+ amp = rms_env_process(rms, sum / 4);
2870+#else
2871+ if (sum)
2872+ amp = rms_env_process(rms, sum / 4);
2873+ else
2874+ amp = 0;
2875+#endif
2876+
2877+#ifdef DYN_CALC_FLOAT
2878+ if (isnan(amp))
2879+ amp = 0.0f;
2880+#endif
2881+ sum = 0;
2882+
2883+ /* set gain_out according to the difference between
2884+ the envelope volume level (env) and the corresponding
2885+ output level (from graph) */
2886+#ifdef DYN_CALC_FLOAT
2887+ level = 20 * log10f(2 * env);
2888+#else
2889+ level = 20 * log10f(2 * (double)env / (double)F2S);
2890+#endif
2891+ adjust = get_table_gain(mode, level + offsgain);
2892+ gain_out = db2lin(adjust);
2893+
2894+ }
2895+ gain = gain * ef_a + gain_out * ef_ai;
2896+ output[sample_index] += ptr->run_adding_gain * input[sample_index] * gain * mugain;
2897+ }
2898+ ptr->sum = sum;
2899+ ptr->amp = amp;
2900+ ptr->gain = gain;
2901+ ptr->gain_out = gain_out;
2902+ ptr->env = env;
2903+ ptr->count = count;
2904+
2905+ *(ptr->rmsenv) = LIMIT(level, -60.0f, 20.0f);
2906+ *(ptr->modgain) = LIMIT(adjust, -60.0f, 20.0f);
2907+}
2908+
2909+
2910+
2911+
2912+/* Throw away a Dynamics effect instance. */
2913+void
2914+cleanup_Dynamics(LADSPA_Handle Instance) {
2915+
2916+ Dynamics * ptr = (Dynamics *)Instance;
2917+
2918+ free(ptr->rms);
2919+ free(ptr->as);
2920+ free(Instance);
2921+}
2922+
2923+
2924+
2925+LADSPA_Descriptor * mono_descriptor = NULL;
2926+
2927+
2928+
2929+/* __attribute__((constructor)) _init() is called automatically when the plugin library is first
2930+ loaded. */
2931+void
2932+__attribute__((constructor)) _init() {
2933+
2934+ char ** port_names;
2935+ LADSPA_PortDescriptor * port_descriptors;
2936+ LADSPA_PortRangeHint * port_range_hints;
2937+
2938+ if ((mono_descriptor =
2939+ (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor))) == NULL)
2940+ exit(1);
2941+
2942+ mono_descriptor->UniqueID = ID_MONO;
2943+ mono_descriptor->Label = strdup("tap_dynamics_m");
2944+ mono_descriptor->Properties = 0;
2945+ mono_descriptor->Name = strdup("TAP Dynamics (M)");
2946+ mono_descriptor->Maker = strdup("Tom Szilagyi");
2947+ mono_descriptor->Copyright = strdup("GPL");
2948+ mono_descriptor->PortCount = PORTCOUNT_MONO;
2949+
2950+ if ((port_descriptors =
2951+ (LADSPA_PortDescriptor *)calloc(PORTCOUNT_MONO, sizeof(LADSPA_PortDescriptor))) == NULL)
2952+ exit(1);
2953+
2954+ mono_descriptor->PortDescriptors = (const LADSPA_PortDescriptor *)port_descriptors;
2955+ port_descriptors[ATTACK] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2956+ port_descriptors[RELEASE] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2957+ port_descriptors[OFFSGAIN] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2958+ port_descriptors[MUGAIN] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2959+ port_descriptors[MODE] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
2960+ port_descriptors[RMSENV] = LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL;
2961+ port_descriptors[MODGAIN] = LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL;
2962+ port_descriptors[INPUT] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
2963+ port_descriptors[OUTPUT] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
2964+
2965+ if ((port_names =
2966+ (char **)calloc(PORTCOUNT_MONO, sizeof(char *))) == NULL)
2967+ exit(1);
2968+
2969+ mono_descriptor->PortNames = (const char **)port_names;
2970+ port_names[ATTACK] = strdup("Attack [ms]");
2971+ port_names[RELEASE] = strdup("Release [ms]");
2972+ port_names[OFFSGAIN] = strdup("Offset Gain [dB]");
2973+ port_names[MUGAIN] = strdup("Makeup Gain [dB]");
2974+ port_names[MODE] = strdup("Function");
2975+ port_names[RMSENV] = strdup("Envelope Volume [dB]");
2976+ port_names[MODGAIN] = strdup("Gain Adjustment [dB]");
2977+ port_names[INPUT] = strdup("Input");
2978+ port_names[OUTPUT] = strdup("Output");
2979+
2980+ if ((port_range_hints =
2981+ ((LADSPA_PortRangeHint *)calloc(PORTCOUNT_MONO, sizeof(LADSPA_PortRangeHint)))) == NULL)
2982+ exit(1);
2983+
2984+ mono_descriptor->PortRangeHints = (const LADSPA_PortRangeHint *)port_range_hints;
2985+ port_range_hints[ATTACK].HintDescriptor =
2986+ (LADSPA_HINT_BOUNDED_BELOW |
2987+ LADSPA_HINT_BOUNDED_ABOVE |
2988+ LADSPA_HINT_DEFAULT_LOW);
2989+ port_range_hints[RELEASE].HintDescriptor =
2990+ (LADSPA_HINT_BOUNDED_BELOW |
2991+ LADSPA_HINT_BOUNDED_ABOVE |
2992+ LADSPA_HINT_DEFAULT_MIDDLE);
2993+ port_range_hints[OFFSGAIN].HintDescriptor =
2994+ (LADSPA_HINT_BOUNDED_BELOW |
2995+ LADSPA_HINT_BOUNDED_ABOVE |
2996+ LADSPA_HINT_DEFAULT_0);
2997+ port_range_hints[MUGAIN].HintDescriptor =
2998+ (LADSPA_HINT_BOUNDED_BELOW |
2999+ LADSPA_HINT_BOUNDED_ABOVE |
3000+ LADSPA_HINT_DEFAULT_0);
3001+ port_range_hints[RMSENV].HintDescriptor =
3002+ (LADSPA_HINT_BOUNDED_BELOW |
3003+ LADSPA_HINT_BOUNDED_ABOVE |
3004+ LADSPA_HINT_DEFAULT_0);
3005+ port_range_hints[MODGAIN].HintDescriptor =
3006+ (LADSPA_HINT_BOUNDED_BELOW |
3007+ LADSPA_HINT_BOUNDED_ABOVE |
3008+ LADSPA_HINT_DEFAULT_0);
3009+ port_range_hints[MODE].HintDescriptor =
3010+ (LADSPA_HINT_BOUNDED_BELOW |
3011+ LADSPA_HINT_BOUNDED_ABOVE |
3012+ LADSPA_HINT_INTEGER |
3013+ LADSPA_HINT_DEFAULT_0);
3014+ port_range_hints[ATTACK].LowerBound = 4.0f;
3015+ port_range_hints[ATTACK].UpperBound = 500.0f;
3016+ port_range_hints[RELEASE].LowerBound = 4.0f;
3017+ port_range_hints[RELEASE].UpperBound = 1000.0f;
3018+ port_range_hints[OFFSGAIN].LowerBound = -20.0f;
3019+ port_range_hints[OFFSGAIN].UpperBound = 20.0f;
3020+ port_range_hints[MUGAIN].LowerBound = -20.0f;
3021+ port_range_hints[MUGAIN].UpperBound = 20.0f;
3022+ port_range_hints[RMSENV].LowerBound = -60.0f;
3023+ port_range_hints[RMSENV].UpperBound = 20.0f;
3024+ port_range_hints[MODGAIN].LowerBound = -60.0f;
3025+ port_range_hints[MODGAIN].UpperBound = 20.0f;
3026+ port_range_hints[MODE].LowerBound = 0;
3027+ port_range_hints[MODE].UpperBound = NUM_MODES - 0.9f;
3028+ port_range_hints[INPUT].HintDescriptor = 0;
3029+ port_range_hints[OUTPUT].HintDescriptor = 0;
3030+ mono_descriptor->instantiate = instantiate_Dynamics;
3031+ mono_descriptor->connect_port = connect_port_Dynamics;
3032+ mono_descriptor->activate = NULL;
3033+ mono_descriptor->run = run_Dynamics;
3034+ mono_descriptor->run_adding = run_adding_Dynamics;
3035+ mono_descriptor->set_run_adding_gain = set_run_adding_gain_Dynamics;
3036+ mono_descriptor->deactivate = NULL;
3037+ mono_descriptor->cleanup = cleanup_Dynamics;
3038+}
3039+
3040+
3041+void
3042+delete_descriptor(LADSPA_Descriptor * descriptor) {
3043+ unsigned long index;
3044+ if (descriptor) {
3045+ free((char *)descriptor->Label);
3046+ free((char *)descriptor->Name);
3047+ free((char *)descriptor->Maker);
3048+ free((char *)descriptor->Copyright);
3049+ free((LADSPA_PortDescriptor *)descriptor->PortDescriptors);
3050+ for (index = 0; index < descriptor->PortCount; index++)
3051+ free((char *)(descriptor->PortNames[index]));
3052+ free((char **)descriptor->PortNames);
3053+ free((LADSPA_PortRangeHint *)descriptor->PortRangeHints);
3054+ free(descriptor);
3055+ }
3056+}
3057+
3058+
3059+/* __attribute__((destructor)) _fini() is called automatically when the library is unloaded. */
3060+void
3061+__attribute__((destructor)) _fini() {
3062+ delete_descriptor(mono_descriptor);
3063+}
3064+
3065+
3066+/* Return a descriptor of the requested plugin type. */
3067+const LADSPA_Descriptor *
3068+ladspa_descriptor(unsigned long Index) {
3069+
3070+ switch (Index) {
3071+ case 0:
3072+ return mono_descriptor;
3073+ default:
3074+ return NULL;
3075+ }
3076+}
3077
3078=== added file '.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_dynamics_st.c'
3079--- .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_dynamics_st.c 1970-01-01 00:00:00 +0000
3080+++ .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_dynamics_st.c 2014-04-11 06:58:04 +0000
3081@@ -0,0 +1,877 @@
3082+/* -*- linux-c -*-
3083+ Copyright (C) 2004 Tom Szilagyi
3084+
3085+ This program is free software; you can redistribute it and/or modify
3086+ it under the terms of the GNU General Public License as published by
3087+ the Free Software Foundation; either version 2 of the License, or
3088+ (at your option) any later version.
3089+
3090+ This program is distributed in the hope that it will be useful,
3091+ but WITHOUT ANY WARRANTY; without even the implied warranty of
3092+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3093+ GNU General Public License for more details.
3094+
3095+ You should have received a copy of the GNU General Public License
3096+ along with this program; if not, write to the Free Software
3097+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
3098+
3099+ $Id: tap_dynamics_st.c,v 1.2 2004/06/15 14:50:55 tszilagyi Exp $
3100+*/
3101+
3102+
3103+#include <stdio.h>
3104+#include <stdlib.h>
3105+#include <stdint.h>
3106+#include <string.h>
3107+#include <math.h>
3108+
3109+#include <ladspa.h>
3110+#include "tap_utils.h"
3111+
3112+
3113+/* ***** VERY IMPORTANT! *****
3114+ *
3115+ * If you enable this, the plugin will use float arithmetics in DSP
3116+ * calculations. This usually yields lower average CPU usage, but
3117+ * occasionaly may result in high CPU peaks which cause trouble to you
3118+ * and your JACK server. The default is to use fixpoint arithmetics
3119+ * (with the following #define commented out). But (depending on the
3120+ * processor on which you run the code) you may find floating point
3121+ * mode usable.
3122+ */
3123+/*#define DYN_CALC_FLOAT*/
3124+
3125+
3126+typedef signed int sample;
3127+
3128+/* coefficient for float to sample (signed int) conversion */
3129+/* this allows for about 60 dB headroom above 0dB, if 0 dB is equivalent to 1.0f */
3130+/* As 2^31 equals more than 180 dB, about 120 dB dynamics remains below 0 dB */
3131+#define F2S 2147483
3132+
3133+
3134+#ifdef DYN_CALC_FLOAT
3135+typedef LADSPA_Data dyn_t;
3136+typedef float rms_t;
3137+#else
3138+typedef sample dyn_t;
3139+typedef int64_t rms_t;
3140+#endif
3141+
3142+
3143+
3144+/* The Unique ID of the plugin: */
3145+
3146+#define ID_STEREO 2153
3147+
3148+/* The port numbers for the plugin: */
3149+
3150+#define ATTACK 0
3151+#define RELEASE 1
3152+#define OFFSGAIN 2
3153+#define MUGAIN 3
3154+#define RMSENV_L 4
3155+#define RMSENV_R 5
3156+#define MODGAIN_L 6
3157+#define MODGAIN_R 7
3158+#define STEREO 8
3159+#define MODE 9
3160+#define INPUT_L 10
3161+#define INPUT_R 11
3162+#define OUTPUT_L 12
3163+#define OUTPUT_R 13
3164+
3165+
3166+/* Total number of ports */
3167+
3168+#define PORTCOUNT_STEREO 14
3169+
3170+
3171+#define TABSIZE 256
3172+#define RMSSIZE 64
3173+
3174+
3175+typedef struct {
3176+ rms_t buffer[RMSSIZE];
3177+ unsigned int pos;
3178+ rms_t sum;
3179+} rms_env;
3180+
3181+
3182+/* max. number of breakpoints on in/out dB graph */
3183+#define MAX_POINTS 20
3184+
3185+typedef struct {
3186+ LADSPA_Data x;
3187+ LADSPA_Data y;
3188+} GRAPH_POINT;
3189+
3190+typedef struct {
3191+ unsigned long num_points;
3192+ GRAPH_POINT points[MAX_POINTS];
3193+} DYNAMICS_DATA;
3194+
3195+#include "tap_dynamics_presets.h"
3196+
3197+
3198+/* The structure used to hold port connection information and state */
3199+
3200+typedef struct {
3201+ LADSPA_Data * attack;
3202+ LADSPA_Data * release;
3203+ LADSPA_Data * offsgain;
3204+ LADSPA_Data * mugain;
3205+ LADSPA_Data * rmsenv_L;
3206+ LADSPA_Data * rmsenv_R;
3207+ LADSPA_Data * modgain_L;
3208+ LADSPA_Data * modgain_R;
3209+ LADSPA_Data * stereo;
3210+ LADSPA_Data * mode;
3211+ LADSPA_Data * input_L;
3212+ LADSPA_Data * output_L;
3213+ LADSPA_Data * input_R;
3214+ LADSPA_Data * output_R;
3215+ unsigned long sample_rate;
3216+
3217+ float * as;
3218+ unsigned long count;
3219+ dyn_t amp_L;
3220+ dyn_t amp_R;
3221+ dyn_t env_L;
3222+ dyn_t env_R;
3223+ float gain_L;
3224+ float gain_R;
3225+ float gain_out_L;
3226+ float gain_out_R;
3227+ rms_env * rms_L;
3228+ rms_env * rms_R;
3229+ rms_t sum_L;
3230+ rms_t sum_R;
3231+
3232+ DYNAMICS_DATA graph;
3233+
3234+ LADSPA_Data run_adding_gain;
3235+} Dynamics;
3236+
3237+
3238+
3239+/* RMS envelope stuff, grabbed without a second thought from Steve Harris's swh-plugins, util/rms.c */
3240+/* Adapted, though, to be able to use fixed-point arithmetics as well. */
3241+
3242+rms_env *
3243+rms_env_new(void) {
3244+
3245+ rms_env * new = (rms_env *)calloc(1, sizeof(rms_env));
3246+
3247+ return new;
3248+}
3249+
3250+void
3251+rms_env_reset(rms_env *r) {
3252+
3253+ unsigned int i;
3254+
3255+ for (i = 0; i < RMSSIZE; i++) {
3256+ r->buffer[i] = 0.0f;
3257+ }
3258+ r->pos = 0;
3259+ r->sum = 0.0f;
3260+}
3261+
3262+inline static
3263+dyn_t
3264+rms_env_process(rms_env *r, const rms_t x) {
3265+
3266+ r->sum -= r->buffer[r->pos];
3267+ r->sum += x;
3268+ r->buffer[r->pos] = x;
3269+ r->pos = (r->pos + 1) & (RMSSIZE - 1);
3270+
3271+#ifdef DYN_CALC_FLOAT
3272+ return sqrt(r->sum / (float)RMSSIZE);
3273+#else
3274+ return sqrt(r->sum / RMSSIZE);
3275+#endif
3276+}
3277+
3278+
3279+
3280+inline
3281+LADSPA_Data
3282+get_table_gain(int mode, LADSPA_Data level) {
3283+
3284+ LADSPA_Data x1 = -80.0f;
3285+ LADSPA_Data y1 = -80.0f;
3286+ LADSPA_Data x2 = 0.0f;
3287+ LADSPA_Data y2 = 0.0f;
3288+ unsigned int i = 0;
3289+
3290+ if (level <= -80.0f)
3291+ return get_table_gain(mode, -79.9f);
3292+
3293+ while (i < dyn_data[mode].num_points && dyn_data[mode].points[i].x < level) {
3294+ x1 = dyn_data[mode].points[i].x;
3295+ y1 = dyn_data[mode].points[i].y;
3296+ i++;
3297+ }
3298+ if (i < dyn_data[mode].num_points) {
3299+ x2 = dyn_data[mode].points[i].x;
3300+ y2 = dyn_data[mode].points[i].y;
3301+ } else
3302+ return 0.0f;
3303+
3304+ return y1 + ((level - x1) * (y2 - y1) / (x2 - x1)) - level;
3305+}
3306+
3307+
3308+/* Construct a new plugin instance. */
3309+LADSPA_Handle
3310+instantiate_Dynamics(const LADSPA_Descriptor * Descriptor, unsigned long sample_rate) {
3311+
3312+ LADSPA_Handle * ptr;
3313+
3314+ float * as = NULL;
3315+ unsigned int count = 0;
3316+ dyn_t amp_L = 0.0f;
3317+ dyn_t amp_R = 0.0f;
3318+ dyn_t env_L = 0.0f;
3319+ dyn_t env_R = 0.0f;
3320+ float gain_L = 0.0f;
3321+ float gain_R = 0.0f;
3322+ float gain_out_L = 0.0f;
3323+ float gain_out_R = 0.0f;
3324+ rms_env * rms_L = NULL;
3325+ rms_env * rms_R = NULL;
3326+ rms_t sum_L = 0.0f;
3327+ rms_t sum_R = 0.0f;
3328+ int i;
3329+
3330+ if ((ptr = malloc(sizeof(Dynamics))) == NULL)
3331+ return NULL;
3332+
3333+ ((Dynamics *)ptr)->sample_rate = sample_rate;
3334+ ((Dynamics *)ptr)->run_adding_gain = 1.0;
3335+
3336+ if ((rms_L = rms_env_new()) == NULL)
3337+ return NULL;
3338+ if ((rms_R = rms_env_new()) == NULL)
3339+ return NULL;
3340+
3341+ if ((as = malloc(TABSIZE * sizeof(float))) == NULL)
3342+ return NULL;
3343+
3344+ as[0] = 1.0f;
3345+ for (i = 1; i < TABSIZE; i++) {
3346+ as[i] = expf(-1.0f / (sample_rate * (float)i / (float)TABSIZE));
3347+ }
3348+
3349+ ((Dynamics *)ptr)->as = as;
3350+ ((Dynamics *)ptr)->count = count;
3351+ ((Dynamics *)ptr)->amp_L = amp_L;
3352+ ((Dynamics *)ptr)->amp_R = amp_R;
3353+ ((Dynamics *)ptr)->env_L = env_L;
3354+ ((Dynamics *)ptr)->env_R = env_R;
3355+ ((Dynamics *)ptr)->gain_L = gain_L;
3356+ ((Dynamics *)ptr)->gain_R = gain_R;
3357+ ((Dynamics *)ptr)->gain_out_L = gain_out_L;
3358+ ((Dynamics *)ptr)->gain_out_R = gain_out_R;
3359+ ((Dynamics *)ptr)->rms_L = rms_L;
3360+ ((Dynamics *)ptr)->rms_R = rms_R;
3361+ ((Dynamics *)ptr)->sum_L = sum_L;
3362+ ((Dynamics *)ptr)->sum_R = sum_R;
3363+
3364+ return ptr;
3365+}
3366+
3367+
3368+
3369+/* Connect a port to a data location. */
3370+void
3371+connect_port_Dynamics(LADSPA_Handle Instance,
3372+ unsigned long Port,
3373+ LADSPA_Data * DataLocation) {
3374+
3375+ Dynamics * ptr = (Dynamics *)Instance;
3376+
3377+ switch (Port) {
3378+ case ATTACK:
3379+ ptr->attack = DataLocation;
3380+ break;
3381+ case RELEASE:
3382+ ptr->release = DataLocation;
3383+ break;
3384+ case OFFSGAIN:
3385+ ptr->offsgain = DataLocation;
3386+ break;
3387+ case MUGAIN:
3388+ ptr->mugain = DataLocation;
3389+ break;
3390+ case RMSENV_L:
3391+ ptr->rmsenv_L = DataLocation;
3392+ *(ptr->rmsenv_L) = -60.0f;
3393+ break;
3394+ case RMSENV_R:
3395+ ptr->rmsenv_R = DataLocation;
3396+ *(ptr->rmsenv_R) = -60.0f;
3397+ break;
3398+ case MODGAIN_L:
3399+ ptr->modgain_L = DataLocation;
3400+ *(ptr->modgain_L) = 0.0f;
3401+ break;
3402+ case MODGAIN_R:
3403+ ptr->modgain_R = DataLocation;
3404+ *(ptr->modgain_R) = 0.0f;
3405+ break;
3406+ case STEREO:
3407+ ptr->stereo = DataLocation;
3408+ break;
3409+ case MODE:
3410+ ptr->mode = DataLocation;
3411+ break;
3412+ case INPUT_L:
3413+ ptr->input_L = DataLocation;
3414+ break;
3415+ case OUTPUT_L:
3416+ ptr->output_L = DataLocation;
3417+ break;
3418+ case INPUT_R:
3419+ ptr->input_R = DataLocation;
3420+ break;
3421+ case OUTPUT_R:
3422+ ptr->output_R = DataLocation;
3423+ break;
3424+ }
3425+}
3426+
3427+
3428+
3429+void
3430+run_Dynamics(LADSPA_Handle Instance,
3431+ unsigned long sample_count) {
3432+
3433+ Dynamics * ptr = (Dynamics *)Instance;
3434+ LADSPA_Data * input_L = ptr->input_L;
3435+ LADSPA_Data * output_L = ptr->output_L;
3436+ LADSPA_Data * input_R = ptr->input_R;
3437+ LADSPA_Data * output_R = ptr->output_R;
3438+ const float attack = LIMIT(*(ptr->attack), 4.0f, 500.0f);
3439+ const float release = LIMIT(*(ptr->release), 4.0f, 1000.0f);
3440+ const float offsgain = LIMIT(*(ptr->offsgain), -20.0f, 20.0f);
3441+ const float mugain = db2lin(LIMIT(*(ptr->mugain), -20.0f, 20.0f));
3442+ const int stereo = LIMIT(*(ptr->stereo), 0, 2);
3443+ const int mode = LIMIT(*(ptr->mode), 0, NUM_MODES-1);
3444+ unsigned long sample_index;
3445+
3446+ dyn_t amp_L = ptr->amp_L;
3447+ dyn_t amp_R = ptr->amp_R;
3448+ dyn_t env_L = ptr->env_L;
3449+ dyn_t env_R = ptr->env_R;
3450+ float * as = ptr->as;
3451+ unsigned int count = ptr->count;
3452+ float gain_L = ptr->gain_L;
3453+ float gain_R = ptr->gain_R;
3454+ float gain_out_L = ptr->gain_out_L;
3455+ float gain_out_R = ptr->gain_out_R;
3456+ rms_env * rms_L = ptr->rms_L;
3457+ rms_env * rms_R = ptr->rms_R;
3458+ rms_t sum_L = ptr->sum_L;
3459+ rms_t sum_R = ptr->sum_R;
3460+
3461+ const float ga = as[(unsigned int)(attack * 0.001f * (LADSPA_Data)(TABSIZE-1))];
3462+ const float gr = as[(unsigned int)(release * 0.001f * (LADSPA_Data)(TABSIZE-1))];
3463+ const float ef_a = ga * 0.25f;
3464+ const float ef_ai = 1.0f - ef_a;
3465+
3466+ float level_L = 0.0f;
3467+ float level_R = 0.0f;
3468+ float adjust_L = 0.0f;
3469+ float adjust_R = 0.0f;
3470+
3471+ for (sample_index = 0; sample_index < sample_count; sample_index++) {
3472+
3473+#ifdef DYN_CALC_FLOAT
3474+ sum_L += input_L[sample_index] * input_L[sample_index];
3475+ sum_R += input_R[sample_index] * input_R[sample_index];
3476+
3477+ if (amp_L > env_L) {
3478+ env_L = env_L * ga + amp_L * (1.0f - ga);
3479+ } else {
3480+ env_L = env_L * gr + amp_L * (1.0f - gr);
3481+ }
3482+ if (amp_R > env_R) {
3483+ env_R = env_R * ga + amp_R * (1.0f - ga);
3484+ } else {
3485+ env_R = env_R * gr + amp_R * (1.0f - gr);
3486+ }
3487+#else
3488+ sum_L += (rms_t)(input_L[sample_index] * F2S) * (rms_t)(input_L[sample_index] * F2S);
3489+ sum_R += (rms_t)(input_R[sample_index] * F2S) * (rms_t)(input_R[sample_index] * F2S);
3490+
3491+ if (amp_L) {
3492+ if (amp_L > env_L) {
3493+ env_L = (double)env_L * ga + (double)amp_L * (1.0f - ga);
3494+ } else {
3495+ env_L = (double)env_L * gr + (double)amp_L * (1.0f - gr);
3496+ }
3497+ } else
3498+ env_L = 0;
3499+
3500+ if (amp_R) {
3501+ if (amp_R > env_R) {
3502+ env_R = (double)env_R * ga + (double)amp_R * (1.0f - ga);
3503+ } else {
3504+ env_R = (double)env_R * gr + (double)amp_R * (1.0f - gr);
3505+ }
3506+ } else
3507+ env_R = 0;
3508+#endif
3509+
3510+ if (count++ % 4 == 3) {
3511+#ifdef DYN_CALC_FLOAT
3512+ amp_L = rms_env_process(rms_L, sum_L * 0.25f);
3513+ amp_R = rms_env_process(rms_R, sum_R * 0.25f);
3514+#else
3515+ if (sum_L)
3516+ amp_L = rms_env_process(rms_L, sum_L * 0.25f);
3517+ else
3518+ amp_L = 0;
3519+
3520+ if (sum_R)
3521+ amp_R = rms_env_process(rms_R, sum_R * 0.25f);
3522+ else
3523+ amp_R = 0;
3524+#endif
3525+
3526+
3527+#ifdef DYN_CALC_FLOAT
3528+ if (isnan(amp_L))
3529+ amp_L = 0.0f;
3530+ if (isnan(amp_R))
3531+ amp_R = 0.0f;
3532+#endif
3533+ sum_L = sum_R = 0;
3534+
3535+ /* set gain_out according to the difference between
3536+ the envelope volume level (env) and the corresponding
3537+ output level (from graph) */
3538+#ifdef DYN_CALC_FLOAT
3539+ level_L = 20 * log10f(2 * env_L);
3540+ level_R = 20 * log10f(2 * env_R);
3541+#else
3542+ level_L = 20 * log10f(2 * (double)env_L / (double)F2S);
3543+ level_R = 20 * log10f(2 * (double)env_R / (double)F2S);
3544+#endif
3545+ adjust_L = get_table_gain(mode, level_L + offsgain);
3546+ adjust_R = get_table_gain(mode, level_R + offsgain);
3547+
3548+ /* set gains according to stereo mode */
3549+ switch (stereo) {
3550+ case 0:
3551+ gain_out_L = db2lin(adjust_L);
3552+ gain_out_R = db2lin(adjust_R);
3553+ break;
3554+ case 1:
3555+ adjust_L = adjust_R = (adjust_L + adjust_R) / 2.0f;
3556+ gain_out_L = gain_out_R = db2lin(adjust_L);
3557+ break;
3558+ case 2:
3559+ adjust_L = adjust_R = (adjust_L > adjust_R) ? adjust_L : adjust_R;
3560+ gain_out_L = gain_out_R = db2lin(adjust_L);
3561+ break;
3562+ }
3563+
3564+ }
3565+ gain_L = gain_L * ef_a + gain_out_L * ef_ai;
3566+ gain_R = gain_R * ef_a + gain_out_R * ef_ai;
3567+ output_L[sample_index] = input_L[sample_index] * gain_L * mugain;
3568+ output_R[sample_index] = input_R[sample_index] * gain_R * mugain;
3569+ }
3570+ ptr->sum_L = sum_L;
3571+ ptr->sum_R = sum_R;
3572+ ptr->amp_L = amp_L;
3573+ ptr->amp_R = amp_R;
3574+ ptr->gain_L = gain_L;
3575+ ptr->gain_R = gain_R;
3576+ ptr->gain_out_L = gain_out_L;
3577+ ptr->gain_out_R = gain_out_R;
3578+ ptr->env_L = env_L;
3579+ ptr->env_R = env_R;
3580+ ptr->count = count;
3581+
3582+ *(ptr->rmsenv_L) = LIMIT(level_L, -60.0f, 20.0f);
3583+ *(ptr->rmsenv_R) = LIMIT(level_R, -60.0f, 20.0f);
3584+ *(ptr->modgain_L) = LIMIT(adjust_L, -60.0f, 20.0f);
3585+ *(ptr->modgain_R) = LIMIT(adjust_R, -60.0f, 20.0f);
3586+}
3587+
3588+
3589+
3590+void
3591+set_run_adding_gain_Dynamics(LADSPA_Handle Instance, LADSPA_Data gain) {
3592+
3593+ Dynamics * ptr = (Dynamics *)Instance;
3594+
3595+ ptr->run_adding_gain = gain;
3596+}
3597+
3598+
3599+
3600+void
3601+run_adding_Dynamics(LADSPA_Handle Instance,
3602+ unsigned long sample_count) {
3603+
3604+ Dynamics * ptr = (Dynamics *)Instance;
3605+ LADSPA_Data * input_L = ptr->input_L;
3606+ LADSPA_Data * output_L = ptr->output_L;
3607+ LADSPA_Data * input_R = ptr->input_R;
3608+ LADSPA_Data * output_R = ptr->output_R;
3609+ const float attack = LIMIT(*(ptr->attack), 4.0f, 500.0f);
3610+ const float release = LIMIT(*(ptr->release), 4.0f, 1000.0f);
3611+ const float offsgain = LIMIT(*(ptr->offsgain), -20.0f, 20.0f);
3612+ const float mugain = db2lin(LIMIT(*(ptr->mugain), -20.0f, 20.0f));
3613+ const int stereo = LIMIT(*(ptr->stereo), 0, 2);
3614+ const int mode = LIMIT(*(ptr->mode), 0, NUM_MODES-1);
3615+ unsigned long sample_index;
3616+
3617+ dyn_t amp_L = ptr->amp_L;
3618+ dyn_t amp_R = ptr->amp_R;
3619+ dyn_t env_L = ptr->env_L;
3620+ dyn_t env_R = ptr->env_R;
3621+ float * as = ptr->as;
3622+ unsigned int count = ptr->count;
3623+ float gain_L = ptr->gain_L;
3624+ float gain_R = ptr->gain_R;
3625+ float gain_out_L = ptr->gain_out_L;
3626+ float gain_out_R = ptr->gain_out_R;
3627+ rms_env * rms_L = ptr->rms_L;
3628+ rms_env * rms_R = ptr->rms_R;
3629+ rms_t sum_L = ptr->sum_L;
3630+ rms_t sum_R = ptr->sum_R;
3631+
3632+ const float ga = as[(unsigned int)(attack * 0.001f * (LADSPA_Data)(TABSIZE-1))];
3633+ const float gr = as[(unsigned int)(release * 0.001f * (LADSPA_Data)(TABSIZE-1))];
3634+ const float ef_a = ga * 0.25f;
3635+ const float ef_ai = 1.0f - ef_a;
3636+
3637+ float level_L = 0.0f;
3638+ float level_R = 0.0f;
3639+ float adjust_L = 0.0f;
3640+ float adjust_R = 0.0f;
3641+
3642+ for (sample_index = 0; sample_index < sample_count; sample_index++) {
3643+
3644+#ifdef DYN_CALC_FLOAT
3645+ sum_L += input_L[sample_index] * input_L[sample_index];
3646+ sum_R += input_R[sample_index] * input_R[sample_index];
3647+
3648+ if (amp_L > env_L) {
3649+ env_L = env_L * ga + amp_L * (1.0f - ga);
3650+ } else {
3651+ env_L = env_L * gr + amp_L * (1.0f - gr);
3652+ }
3653+ if (amp_R > env_R) {
3654+ env_R = env_R * ga + amp_R * (1.0f - ga);
3655+ } else {
3656+ env_R = env_R * gr + amp_R * (1.0f - gr);
3657+ }
3658+#else
3659+ sum_L += (rms_t)(input_L[sample_index] * F2S) * (rms_t)(input_L[sample_index] * F2S);
3660+ sum_R += (rms_t)(input_R[sample_index] * F2S) * (rms_t)(input_R[sample_index] * F2S);
3661+
3662+ if (amp_L) {
3663+ if (amp_L > env_L) {
3664+ env_L = (double)env_L * ga + (double)amp_L * (1.0f - ga);
3665+ } else {
3666+ env_L = (double)env_L * gr + (double)amp_L * (1.0f - gr);
3667+ }
3668+ } else
3669+ env_L = 0;
3670+
3671+ if (amp_R) {
3672+ if (amp_R > env_R) {
3673+ env_R = (double)env_R * ga + (double)amp_R * (1.0f - ga);
3674+ } else {
3675+ env_R = (double)env_R * gr + (double)amp_R * (1.0f - gr);
3676+ }
3677+ } else
3678+ env_R = 0;
3679+#endif
3680+
3681+ if (count++ % 4 == 3) {
3682+#ifdef DYN_CALC_FLOAT
3683+ amp_L = rms_env_process(rms_L, sum_L * 0.25f);
3684+ amp_R = rms_env_process(rms_R, sum_R * 0.25f);
3685+#else
3686+ if (sum_L)
3687+ amp_L = rms_env_process(rms_L, sum_L * 0.25f);
3688+ else
3689+ amp_L = 0;
3690+
3691+ if (sum_R)
3692+ amp_R = rms_env_process(rms_R, sum_R * 0.25f);
3693+ else
3694+ amp_R = 0;
3695+#endif
3696+
3697+
3698+#ifdef DYN_CALC_FLOAT
3699+ if (isnan(amp_L))
3700+ amp_L = 0.0f;
3701+ if (isnan(amp_R))
3702+ amp_R = 0.0f;
3703+#endif
3704+ sum_L = sum_R = 0;
3705+
3706+ /* set gain_out according to the difference between
3707+ the envelope volume level (env) and the corresponding
3708+ output level (from graph) */
3709+#ifdef DYN_CALC_FLOAT
3710+ level_L = 20 * log10f(2 * env_L);
3711+ level_R = 20 * log10f(2 * env_R);
3712+#else
3713+ level_L = 20 * log10f(2 * (double)env_L / (double)F2S);
3714+ level_R = 20 * log10f(2 * (double)env_R / (double)F2S);
3715+#endif
3716+ adjust_L = get_table_gain(mode, level_L + offsgain);
3717+ adjust_R = get_table_gain(mode, level_R + offsgain);
3718+
3719+ /* set gains according to stereo mode */
3720+ switch (stereo) {
3721+ case 0:
3722+ gain_out_L = db2lin(adjust_L);
3723+ gain_out_R = db2lin(adjust_R);
3724+ break;
3725+ case 1:
3726+ adjust_L = adjust_R = (adjust_L + adjust_R) / 2.0f;
3727+ gain_out_L = gain_out_R = db2lin(adjust_L);
3728+ break;
3729+ case 2:
3730+ adjust_L = adjust_R = (adjust_L > adjust_R) ? adjust_L : adjust_R;
3731+ gain_out_L = gain_out_R = db2lin(adjust_L);
3732+ break;
3733+ }
3734+
3735+ }
3736+ gain_L = gain_L * ef_a + gain_out_L * ef_ai;
3737+ gain_R = gain_R * ef_a + gain_out_R * ef_ai;
3738+ output_L[sample_index] += ptr->run_adding_gain * input_L[sample_index] * gain_L * mugain;
3739+ output_R[sample_index] += ptr->run_adding_gain * input_R[sample_index] * gain_R * mugain;
3740+ }
3741+ ptr->sum_L = sum_L;
3742+ ptr->sum_R = sum_R;
3743+ ptr->amp_L = amp_L;
3744+ ptr->amp_R = amp_R;
3745+ ptr->gain_L = gain_L;
3746+ ptr->gain_R = gain_R;
3747+ ptr->gain_out_L = gain_out_L;
3748+ ptr->gain_out_R = gain_out_R;
3749+ ptr->env_L = env_L;
3750+ ptr->env_R = env_R;
3751+ ptr->count = count;
3752+
3753+ *(ptr->rmsenv_L) = LIMIT(level_L, -60.0f, 20.0f);
3754+ *(ptr->rmsenv_R) = LIMIT(level_R, -60.0f, 20.0f);
3755+ *(ptr->modgain_L) = LIMIT(adjust_L, -60.0f, 20.0f);
3756+ *(ptr->modgain_R) = LIMIT(adjust_R, -60.0f, 20.0f);
3757+}
3758+
3759+
3760+
3761+
3762+/* Throw away a Dynamics effect instance. */
3763+void
3764+cleanup_Dynamics(LADSPA_Handle Instance) {
3765+
3766+ Dynamics * ptr = (Dynamics *)Instance;
3767+
3768+ free(ptr->rms_L);
3769+ free(ptr->rms_R);
3770+ free(ptr->as);
3771+ free(Instance);
3772+}
3773+
3774+
3775+
3776+LADSPA_Descriptor * stereo_descriptor = NULL;
3777+
3778+
3779+
3780+/* __attribute__((constructor)) _init() is called automatically when the plugin library is first
3781+ loaded. */
3782+void
3783+__attribute__((constructor)) _init() {
3784+
3785+ char ** port_names;
3786+ LADSPA_PortDescriptor * port_descriptors;
3787+ LADSPA_PortRangeHint * port_range_hints;
3788+
3789+ if ((stereo_descriptor =
3790+ (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor))) == NULL)
3791+ exit(1);
3792+
3793+ stereo_descriptor->UniqueID = ID_STEREO;
3794+ stereo_descriptor->Label = strdup("tap_dynamics_st");
3795+ stereo_descriptor->Properties = 0;
3796+ stereo_descriptor->Name = strdup("TAP Dynamics (St)");
3797+ stereo_descriptor->Maker = strdup("Tom Szilagyi");
3798+ stereo_descriptor->Copyright = strdup("GPL");
3799+ stereo_descriptor->PortCount = PORTCOUNT_STEREO;
3800+
3801+ if ((port_descriptors =
3802+ (LADSPA_PortDescriptor *)calloc(PORTCOUNT_STEREO, sizeof(LADSPA_PortDescriptor))) == NULL)
3803+ exit(1);
3804+
3805+ stereo_descriptor->PortDescriptors = (const LADSPA_PortDescriptor *)port_descriptors;
3806+ port_descriptors[ATTACK] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
3807+ port_descriptors[RELEASE] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
3808+ port_descriptors[OFFSGAIN] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
3809+ port_descriptors[MUGAIN] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
3810+ port_descriptors[STEREO] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
3811+ port_descriptors[MODE] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
3812+ port_descriptors[RMSENV_L] = LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL;
3813+ port_descriptors[RMSENV_R] = LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL;
3814+ port_descriptors[MODGAIN_L] = LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL;
3815+ port_descriptors[MODGAIN_R] = LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL;
3816+ port_descriptors[INPUT_L] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
3817+ port_descriptors[INPUT_R] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
3818+ port_descriptors[OUTPUT_L] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
3819+ port_descriptors[OUTPUT_R] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
3820+
3821+ if ((port_names =
3822+ (char **)calloc(PORTCOUNT_STEREO, sizeof(char *))) == NULL)
3823+ exit(1);
3824+
3825+ stereo_descriptor->PortNames = (const char **)port_names;
3826+ port_names[ATTACK] = strdup("Attack [ms]");
3827+ port_names[RELEASE] = strdup("Release [ms]");
3828+ port_names[OFFSGAIN] = strdup("Offset Gain [dB]");
3829+ port_names[MUGAIN] = strdup("Makeup Gain [dB]");
3830+ port_names[STEREO] = strdup("Stereo Mode");
3831+ port_names[MODE] = strdup("Function");
3832+ port_names[RMSENV_L] = strdup("Envelope Volume (L) [dB]");
3833+ port_names[RMSENV_R] = strdup("Envelope Volume (R) [dB]");
3834+ port_names[MODGAIN_L] = strdup("Gain Adjustment (L) [dB]");
3835+ port_names[MODGAIN_R] = strdup("Gain Adjustment (R) [dB]");
3836+ port_names[INPUT_L] = strdup("Input Left");
3837+ port_names[INPUT_R] = strdup("Input Right");
3838+ port_names[OUTPUT_L] = strdup("Output Left");
3839+ port_names[OUTPUT_R] = strdup("Output Right");
3840+
3841+ if ((port_range_hints =
3842+ ((LADSPA_PortRangeHint *)calloc(PORTCOUNT_STEREO, sizeof(LADSPA_PortRangeHint)))) == NULL)
3843+ exit(1);
3844+
3845+ stereo_descriptor->PortRangeHints = (const LADSPA_PortRangeHint *)port_range_hints;
3846+ port_range_hints[ATTACK].HintDescriptor =
3847+ (LADSPA_HINT_BOUNDED_BELOW |
3848+ LADSPA_HINT_BOUNDED_ABOVE |
3849+ LADSPA_HINT_DEFAULT_LOW);
3850+ port_range_hints[RELEASE].HintDescriptor =
3851+ (LADSPA_HINT_BOUNDED_BELOW |
3852+ LADSPA_HINT_BOUNDED_ABOVE |
3853+ LADSPA_HINT_DEFAULT_MIDDLE);
3854+ port_range_hints[OFFSGAIN].HintDescriptor =
3855+ (LADSPA_HINT_BOUNDED_BELOW |
3856+ LADSPA_HINT_BOUNDED_ABOVE |
3857+ LADSPA_HINT_DEFAULT_0);
3858+ port_range_hints[MUGAIN].HintDescriptor =
3859+ (LADSPA_HINT_BOUNDED_BELOW |
3860+ LADSPA_HINT_BOUNDED_ABOVE |
3861+ LADSPA_HINT_DEFAULT_0);
3862+ port_range_hints[RMSENV_L].HintDescriptor =
3863+ (LADSPA_HINT_BOUNDED_BELOW |
3864+ LADSPA_HINT_BOUNDED_ABOVE |
3865+ LADSPA_HINT_DEFAULT_0);
3866+ port_range_hints[RMSENV_R].HintDescriptor =
3867+ (LADSPA_HINT_BOUNDED_BELOW |
3868+ LADSPA_HINT_BOUNDED_ABOVE |
3869+ LADSPA_HINT_DEFAULT_0);
3870+ port_range_hints[MODGAIN_L].HintDescriptor =
3871+ (LADSPA_HINT_BOUNDED_BELOW |
3872+ LADSPA_HINT_BOUNDED_ABOVE |
3873+ LADSPA_HINT_DEFAULT_0);
3874+ port_range_hints[MODGAIN_R].HintDescriptor =
3875+ (LADSPA_HINT_BOUNDED_BELOW |
3876+ LADSPA_HINT_BOUNDED_ABOVE |
3877+ LADSPA_HINT_DEFAULT_0);
3878+ port_range_hints[STEREO].HintDescriptor =
3879+ (LADSPA_HINT_BOUNDED_BELOW |
3880+ LADSPA_HINT_BOUNDED_ABOVE |
3881+ LADSPA_HINT_INTEGER |
3882+ LADSPA_HINT_DEFAULT_0);
3883+ port_range_hints[MODE].HintDescriptor =
3884+ (LADSPA_HINT_BOUNDED_BELOW |
3885+ LADSPA_HINT_BOUNDED_ABOVE |
3886+ LADSPA_HINT_INTEGER |
3887+ LADSPA_HINT_DEFAULT_0);
3888+ port_range_hints[ATTACK].LowerBound = 4.0f;
3889+ port_range_hints[ATTACK].UpperBound = 500.0f;
3890+ port_range_hints[RELEASE].LowerBound = 4.0f;
3891+ port_range_hints[RELEASE].UpperBound = 1000.0f;
3892+ port_range_hints[OFFSGAIN].LowerBound = -20.0f;
3893+ port_range_hints[OFFSGAIN].UpperBound = 20.0f;
3894+ port_range_hints[MUGAIN].LowerBound = -20.0f;
3895+ port_range_hints[MUGAIN].UpperBound = 20.0f;
3896+ port_range_hints[RMSENV_L].LowerBound = -60.0f;
3897+ port_range_hints[RMSENV_L].UpperBound = 20.0f;
3898+ port_range_hints[RMSENV_R].LowerBound = -60.0f;
3899+ port_range_hints[RMSENV_R].UpperBound = 20.0f;
3900+ port_range_hints[MODGAIN_L].LowerBound = -60.0f;
3901+ port_range_hints[MODGAIN_L].UpperBound = 20.0f;
3902+ port_range_hints[MODGAIN_R].LowerBound = -60.0f;
3903+ port_range_hints[MODGAIN_R].UpperBound = 20.0f;
3904+ port_range_hints[STEREO].LowerBound = 0;
3905+ port_range_hints[STEREO].UpperBound = 2.1f;
3906+ port_range_hints[MODE].LowerBound = 0;
3907+ port_range_hints[MODE].UpperBound = NUM_MODES - 0.9f;
3908+ port_range_hints[INPUT_L].HintDescriptor = 0;
3909+ port_range_hints[INPUT_R].HintDescriptor = 0;
3910+ port_range_hints[OUTPUT_L].HintDescriptor = 0;
3911+ port_range_hints[OUTPUT_R].HintDescriptor = 0;
3912+ stereo_descriptor->instantiate = instantiate_Dynamics;
3913+ stereo_descriptor->connect_port = connect_port_Dynamics;
3914+ stereo_descriptor->activate = NULL;
3915+ stereo_descriptor->run = run_Dynamics;
3916+ stereo_descriptor->run_adding = run_adding_Dynamics;
3917+ stereo_descriptor->set_run_adding_gain = set_run_adding_gain_Dynamics;
3918+ stereo_descriptor->deactivate = NULL;
3919+ stereo_descriptor->cleanup = cleanup_Dynamics;
3920+}
3921+
3922+
3923+void
3924+delete_descriptor(LADSPA_Descriptor * descriptor) {
3925+ unsigned long index;
3926+ if (descriptor) {
3927+ free((char *)descriptor->Label);
3928+ free((char *)descriptor->Name);
3929+ free((char *)descriptor->Maker);
3930+ free((char *)descriptor->Copyright);
3931+ free((LADSPA_PortDescriptor *)descriptor->PortDescriptors);
3932+ for (index = 0; index < descriptor->PortCount; index++)
3933+ free((char *)(descriptor->PortNames[index]));
3934+ free((char **)descriptor->PortNames);
3935+ free((LADSPA_PortRangeHint *)descriptor->PortRangeHints);
3936+ free(descriptor);
3937+ }
3938+}
3939+
3940+
3941+/* __attribute__((destructor)) _fini() is called automatically when the library is unloaded. */
3942+void
3943+__attribute__((destructor)) _fini() {
3944+ delete_descriptor(stereo_descriptor);
3945+}
3946+
3947+
3948+/* Return a descriptor of the requested plugin type. */
3949+const LADSPA_Descriptor *
3950+ladspa_descriptor(unsigned long Index) {
3951+
3952+ switch (Index) {
3953+ case 0:
3954+ return stereo_descriptor;
3955+ default:
3956+ return NULL;
3957+ }
3958+}
3959
3960=== added file '.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_echo.c'
3961--- .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_echo.c 1970-01-01 00:00:00 +0000
3962+++ .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_echo.c 2014-04-11 06:58:04 +0000
3963@@ -0,0 +1,629 @@
3964+/* -*- linux-c -*-
3965+ Copyright (C) 2004 Tom Szilagyi
3966+
3967+ This program is free software; you can redistribute it and/or modify
3968+ it under the terms of the GNU General Public License as published by
3969+ the Free Software Foundation; either version 2 of the License, or
3970+ (at your option) any later version.
3971+
3972+ This program is distributed in the hope that it will be useful,
3973+ but WITHOUT ANY WARRANTY; without even the implied warranty of
3974+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3975+ GNU General Public License for more details.
3976+
3977+ You should have received a copy of the GNU General Public License
3978+ along with this program; if not, write to the Free Software
3979+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
3980+
3981+ $Id: tap_echo.c,v 1.7 2004/12/06 09:32:41 tszilagyi Exp $
3982+*/
3983+
3984+
3985+#include <stdio.h>
3986+#include <stdlib.h>
3987+#include <string.h>
3988+#include <math.h>
3989+
3990+#include <ladspa.h>
3991+#include "tap_utils.h"
3992+
3993+/* The Unique ID of the plugin: */
3994+
3995+#define ID_STEREO 2143
3996+
3997+/* The port numbers for the plugin: */
3998+
3999+#define DELAYTIME_L 0
4000+#define FEEDBACK_L 1
4001+#define DELAYTIME_R 2
4002+#define FEEDBACK_R 3
4003+#define STRENGTH_L 4
4004+#define STRENGTH_R 5
4005+#define DRYLEVEL 6
4006+#define MODE 7
4007+#define HAAS 8
4008+#define REV_OUTCH 9
4009+
4010+#define INPUT_L 10
4011+#define OUTPUT_L 11
4012+#define INPUT_R 12
4013+#define OUTPUT_R 13
4014+
4015+/* Total number of ports */
4016+
4017+#define PORTCOUNT_STEREO 14
4018+
4019+
4020+/* Maximum delay (ms) */
4021+
4022+#define MAX_DELAY 2000
4023+
4024+
4025+/* The structure used to hold port connection information and state */
4026+
4027+typedef struct {
4028+ LADSPA_Data * delaytime_L;
4029+ LADSPA_Data * delaytime_R;
4030+ LADSPA_Data * feedback_L;
4031+ LADSPA_Data * feedback_R;
4032+ LADSPA_Data * strength_L;
4033+ LADSPA_Data * strength_R;
4034+ LADSPA_Data * drylevel;
4035+ LADSPA_Data * mode;
4036+ LADSPA_Data * haas;
4037+ LADSPA_Data * rev_outch;
4038+
4039+ LADSPA_Data * input_L;
4040+ LADSPA_Data * output_L;
4041+ LADSPA_Data * input_R;
4042+ LADSPA_Data * output_R;
4043+
4044+ unsigned long sample_rate;
4045+ LADSPA_Data mpx_out_L;
4046+ LADSPA_Data mpx_out_R;
4047+
4048+ LADSPA_Data * ringbuffer_L;
4049+ LADSPA_Data * ringbuffer_R;
4050+ unsigned long * buffer_pos_L;
4051+ unsigned long * buffer_pos_R;
4052+
4053+ LADSPA_Data run_adding_gain;
4054+} Echo;
4055+
4056+
4057+
4058+
4059+/* Construct a new plugin instance. */
4060+LADSPA_Handle
4061+instantiate_Echo(const LADSPA_Descriptor * Descriptor,
4062+ unsigned long SampleRate) {
4063+
4064+ LADSPA_Handle * ptr;
4065+
4066+ if ((ptr = malloc(sizeof(Echo))) != NULL) {
4067+ ((Echo *)ptr)->sample_rate = SampleRate;
4068+ ((Echo *)ptr)->run_adding_gain = 1.0f;
4069+
4070+ /* allocate memory for ringbuffers and related dynamic vars */
4071+ if ((((Echo *)ptr)->ringbuffer_L =
4072+ calloc(MAX_DELAY * ((Echo *)ptr)->sample_rate / 1000,
4073+ sizeof(LADSPA_Data))) == NULL)
4074+ exit(1);
4075+ if ((((Echo *)ptr)->ringbuffer_R =
4076+ calloc(MAX_DELAY * ((Echo *)ptr)->sample_rate / 1000,
4077+ sizeof(LADSPA_Data))) == NULL)
4078+ exit(1);
4079+ if ((((Echo *)ptr)->buffer_pos_L = calloc(1, sizeof(unsigned long))) == NULL)
4080+ exit(1);
4081+ if ((((Echo *)ptr)->buffer_pos_R = calloc(1, sizeof(unsigned long))) == NULL)
4082+ exit(1);
4083+
4084+ *(((Echo *)ptr)->buffer_pos_L) = 0;
4085+ *(((Echo *)ptr)->buffer_pos_R) = 0;
4086+
4087+ return ptr;
4088+ }
4089+
4090+ return NULL;
4091+}
4092+
4093+
4094+/* activate a plugin instance */
4095+void
4096+activate_Echo(LADSPA_Handle Instance) {
4097+
4098+ Echo * ptr = (Echo *)Instance;
4099+ unsigned int i;
4100+
4101+ ptr->mpx_out_L = 0;
4102+ ptr->mpx_out_R = 0;
4103+
4104+ *(ptr->buffer_pos_L) = 0;
4105+ *(ptr->buffer_pos_R) = 0;
4106+
4107+ for (i = 0; i < MAX_DELAY * ptr->sample_rate / 1000; i++) {
4108+ ptr->ringbuffer_L[i] = 0.0f;
4109+ ptr->ringbuffer_R[i] = 0.0f;
4110+ }
4111+}
4112+
4113+
4114+/* Connect a port to a data location. */
4115+void
4116+connect_port_Echo(LADSPA_Handle Instance,
4117+ unsigned long Port,
4118+ LADSPA_Data * DataLocation) {
4119+
4120+ Echo * ptr;
4121+
4122+ ptr = (Echo *)Instance;
4123+ switch (Port) {
4124+ case DELAYTIME_L:
4125+ ptr->delaytime_L = DataLocation;
4126+ break;
4127+ case DELAYTIME_R:
4128+ ptr->delaytime_R = DataLocation;
4129+ break;
4130+ case FEEDBACK_L:
4131+ ptr->feedback_L = DataLocation;
4132+ break;
4133+ case FEEDBACK_R:
4134+ ptr->feedback_R = DataLocation;
4135+ break;
4136+ case STRENGTH_L:
4137+ ptr->strength_L = DataLocation;
4138+ break;
4139+ case STRENGTH_R:
4140+ ptr->strength_R = DataLocation;
4141+ break;
4142+ case MODE:
4143+ ptr->mode = DataLocation;
4144+ break;
4145+ case HAAS:
4146+ ptr->haas = DataLocation;
4147+ break;
4148+ case REV_OUTCH:
4149+ ptr->rev_outch = DataLocation;
4150+ break;
4151+ case DRYLEVEL:
4152+ ptr->drylevel = DataLocation;
4153+ break;
4154+ case INPUT_L:
4155+ ptr->input_L = DataLocation;
4156+ break;
4157+ case OUTPUT_L:
4158+ ptr->output_L = DataLocation;
4159+ break;
4160+ case INPUT_R:
4161+ ptr->input_R = DataLocation;
4162+ break;
4163+ case OUTPUT_R:
4164+ ptr->output_R = DataLocation;
4165+ break;
4166+ }
4167+}
4168+
4169+
4170+#define EPS 0.00000001f
4171+
4172+static inline float
4173+M(float x) {
4174+
4175+ if ((x > EPS) || (x < -EPS))
4176+ return x;
4177+ else
4178+ return 0.0f;
4179+}
4180+
4181+void
4182+run_Echo(LADSPA_Handle Instance,
4183+ unsigned long SampleCount) {
4184+
4185+ Echo * ptr;
4186+ unsigned long sample_index;
4187+
4188+ LADSPA_Data delaytime_L;
4189+ LADSPA_Data delaytime_R;
4190+ LADSPA_Data feedback_L;
4191+ LADSPA_Data feedback_R;
4192+ LADSPA_Data strength_L;
4193+ LADSPA_Data strength_R;
4194+ LADSPA_Data drylevel;
4195+ LADSPA_Data mode;
4196+ LADSPA_Data haas;
4197+ LADSPA_Data rev_outch;
4198+
4199+ LADSPA_Data * input_L;
4200+ LADSPA_Data * output_L;
4201+ LADSPA_Data * input_R;
4202+ LADSPA_Data * output_R;
4203+
4204+ unsigned long sample_rate;
4205+ unsigned long buflen_L;
4206+ unsigned long buflen_R;
4207+
4208+ LADSPA_Data out_L = 0;
4209+ LADSPA_Data out_R = 0;
4210+ LADSPA_Data in_L = 0;
4211+ LADSPA_Data in_R = 0;
4212+
4213+ ptr = (Echo *)Instance;
4214+
4215+ delaytime_L = LIMIT(*(ptr->delaytime_L),0.0f,2000.0f);
4216+ delaytime_R = LIMIT(*(ptr->delaytime_R),0.0f,2000.0f);
4217+ feedback_L = LIMIT(*(ptr->feedback_L) / 100.0, 0.0f, 100.0f);
4218+ feedback_R = LIMIT(*(ptr->feedback_R) / 100.0, 0.0f, 100.0f);
4219+ strength_L = db2lin(LIMIT(*(ptr->strength_L),-70.0f,10.0f));
4220+ strength_R = db2lin(LIMIT(*(ptr->strength_R),-70.0f,10.0f));
4221+ drylevel = db2lin(LIMIT(*(ptr->drylevel),-70.0f,10.0f));
4222+ mode = LIMIT(*(ptr->mode),-2.0f,2.0f);
4223+ haas = LIMIT(*(ptr->haas),-2.0f,2.0f);
4224+ rev_outch = LIMIT(*(ptr->rev_outch),-2.0f,2.0f);
4225+
4226+ input_L = ptr->input_L;
4227+ output_L = ptr->output_L;
4228+ input_R = ptr->input_R;
4229+ output_R = ptr->output_R;
4230+
4231+ sample_rate = ptr->sample_rate;
4232+ buflen_L = delaytime_L * sample_rate / 1000;
4233+ buflen_R = delaytime_R * sample_rate / 1000;
4234+
4235+
4236+ for (sample_index = 0; sample_index < SampleCount; sample_index++) {
4237+
4238+ in_L = *(input_L++);
4239+ in_R = *(input_R++);
4240+
4241+ out_L = in_L * drylevel + ptr->mpx_out_L * strength_L;
4242+ out_R = in_R * drylevel + ptr->mpx_out_R * strength_R;
4243+
4244+ if (haas > 0.0f)
4245+ in_R = 0.0f;
4246+
4247+ if (mode <= 0.0f) {
4248+ ptr->mpx_out_L =
4249+ M(push_buffer(in_L + ptr->mpx_out_L * feedback_L,
4250+ ptr->ringbuffer_L, buflen_L, ptr->buffer_pos_L));
4251+ ptr->mpx_out_R =
4252+ M(push_buffer(in_R + ptr->mpx_out_R * feedback_R,
4253+ ptr->ringbuffer_R, buflen_R, ptr->buffer_pos_R));
4254+ } else {
4255+ ptr->mpx_out_R =
4256+ M(push_buffer(in_L + ptr->mpx_out_L * feedback_L,
4257+ ptr->ringbuffer_L, buflen_L, ptr->buffer_pos_L));
4258+ ptr->mpx_out_L =
4259+ M(push_buffer(in_R + ptr->mpx_out_R * feedback_R,
4260+ ptr->ringbuffer_R, buflen_R, ptr->buffer_pos_R));
4261+ }
4262+
4263+ if (rev_outch <= 0.0f) {
4264+ *(output_L++) = out_L;
4265+ *(output_R++) = out_R;
4266+ } else {
4267+ *(output_L++) = out_R;
4268+ *(output_R++) = out_L;
4269+ }
4270+ }
4271+}
4272+
4273+
4274+
4275+
4276+
4277+void
4278+set_run_adding_gain(LADSPA_Handle Instance, LADSPA_Data gain){
4279+
4280+ Echo * ptr;
4281+
4282+ ptr = (Echo *)Instance;
4283+
4284+ ptr->run_adding_gain = gain;
4285+}
4286+
4287+
4288+void
4289+run_adding_gain_Echo(LADSPA_Handle Instance,
4290+ unsigned long SampleCount) {
4291+
4292+ Echo * ptr;
4293+ unsigned long sample_index;
4294+
4295+ LADSPA_Data delaytime_L;
4296+ LADSPA_Data delaytime_R;
4297+ LADSPA_Data feedback_L;
4298+ LADSPA_Data feedback_R;
4299+ LADSPA_Data strength_L;
4300+ LADSPA_Data strength_R;
4301+ LADSPA_Data drylevel;
4302+ LADSPA_Data mode;
4303+ LADSPA_Data haas;
4304+ LADSPA_Data rev_outch;
4305+
4306+ LADSPA_Data * input_L;
4307+ LADSPA_Data * output_L;
4308+ LADSPA_Data * input_R;
4309+ LADSPA_Data * output_R;
4310+
4311+ unsigned long sample_rate;
4312+ unsigned long buflen_L;
4313+ unsigned long buflen_R;
4314+
4315+ LADSPA_Data out_L = 0;
4316+ LADSPA_Data out_R = 0;
4317+ LADSPA_Data in_L = 0;
4318+ LADSPA_Data in_R = 0;
4319+
4320+ ptr = (Echo *)Instance;
4321+
4322+ delaytime_L = LIMIT(*(ptr->delaytime_L),0.0f,2000.0f);
4323+ delaytime_R = LIMIT(*(ptr->delaytime_R),0.0f,2000.0f);
4324+ feedback_L = LIMIT(*(ptr->feedback_L) / 100.0, 0.0f, 100.0f);
4325+ feedback_R = LIMIT(*(ptr->feedback_R) / 100.0, 0.0f, 100.0f);
4326+ strength_L = db2lin(LIMIT(*(ptr->strength_L),-70.0f,10.0f));
4327+ strength_R = db2lin(LIMIT(*(ptr->strength_R),-70.0f,10.0f));
4328+ drylevel = db2lin(LIMIT(*(ptr->drylevel),-70.0f,10.0f));
4329+ mode = LIMIT(*(ptr->mode),-2.0f,2.0f);
4330+ haas = LIMIT(*(ptr->haas),-2.0f,2.0f);
4331+ rev_outch = LIMIT(*(ptr->rev_outch),-2.0f,2.0f);
4332+
4333+ input_L = ptr->input_L;
4334+ output_L = ptr->output_L;
4335+ input_R = ptr->input_R;
4336+ output_R = ptr->output_R;
4337+
4338+ sample_rate = ptr->sample_rate;
4339+ buflen_L = delaytime_L * sample_rate / 1000;
4340+ buflen_R = delaytime_R * sample_rate / 1000;
4341+
4342+
4343+ for (sample_index = 0; sample_index < SampleCount; sample_index++) {
4344+
4345+ in_L = *(input_L++);
4346+ in_R = *(input_R++);
4347+
4348+ out_L = in_L * drylevel + ptr->mpx_out_L * strength_L;
4349+ out_R = in_R * drylevel + ptr->mpx_out_R * strength_R;
4350+
4351+ if (haas > 0.0f)
4352+ in_R = 0.0f;
4353+
4354+ if (mode <= 0.0f) {
4355+ ptr->mpx_out_L =
4356+ M(push_buffer(in_L + ptr->mpx_out_L * feedback_L,
4357+ ptr->ringbuffer_L, buflen_L, ptr->buffer_pos_L));
4358+ ptr->mpx_out_R =
4359+ M(push_buffer(in_R + ptr->mpx_out_R * feedback_R,
4360+ ptr->ringbuffer_R, buflen_R, ptr->buffer_pos_R));
4361+ } else {
4362+ ptr->mpx_out_R =
4363+ M(push_buffer(in_L + ptr->mpx_out_L * feedback_L,
4364+ ptr->ringbuffer_L, buflen_L, ptr->buffer_pos_L));
4365+ ptr->mpx_out_L =
4366+ M(push_buffer(in_R + ptr->mpx_out_R * feedback_R,
4367+ ptr->ringbuffer_R, buflen_R, ptr->buffer_pos_R));
4368+ }
4369+
4370+ if (rev_outch <= 0.0f) {
4371+ *(output_L++) += out_L * ptr->run_adding_gain;
4372+ *(output_R++) += out_R * ptr->run_adding_gain;
4373+ } else {
4374+ *(output_L++) += out_R * ptr->run_adding_gain;
4375+ *(output_R++) += out_L * ptr->run_adding_gain;
4376+ }
4377+ }
4378+}
4379+
4380+
4381+
4382+/* Throw away an Echo effect instance. */
4383+void
4384+cleanup_Echo(LADSPA_Handle Instance) {
4385+
4386+ Echo * ptr = (Echo *)Instance;
4387+
4388+ free(ptr->ringbuffer_L);
4389+ free(ptr->ringbuffer_R);
4390+ free(ptr->buffer_pos_L);
4391+ free(ptr->buffer_pos_R);
4392+
4393+ free(Instance);
4394+}
4395+
4396+
4397+
4398+LADSPA_Descriptor * stereo_descriptor = NULL;
4399+
4400+
4401+
4402+/* __attribute__((constructor)) _init() is called automatically when the plugin library is first
4403+ loaded. */
4404+void
4405+__attribute__((constructor)) _init() {
4406+
4407+ char ** port_names;
4408+ LADSPA_PortDescriptor * port_descriptors;
4409+ LADSPA_PortRangeHint * port_range_hints;
4410+
4411+ if ((stereo_descriptor =
4412+ (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor))) == NULL)
4413+ exit(1);
4414+
4415+
4416+ /* init the stereo Echo */
4417+
4418+ stereo_descriptor->UniqueID = ID_STEREO;
4419+ stereo_descriptor->Label = strdup("tap_stereo_echo");
4420+ stereo_descriptor->Properties = LADSPA_PROPERTY_HARD_RT_CAPABLE;
4421+ stereo_descriptor->Name = strdup("TAP Stereo Echo");
4422+ stereo_descriptor->Maker = strdup("Tom Szilagyi");
4423+ stereo_descriptor->Copyright = strdup("GPL");
4424+ stereo_descriptor->PortCount = PORTCOUNT_STEREO;
4425+
4426+ if ((port_descriptors =
4427+ (LADSPA_PortDescriptor *)calloc(PORTCOUNT_STEREO, sizeof(LADSPA_PortDescriptor))) == NULL)
4428+ exit(1);
4429+
4430+ stereo_descriptor->PortDescriptors = (const LADSPA_PortDescriptor *)port_descriptors;
4431+ port_descriptors[DELAYTIME_L] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
4432+ port_descriptors[DELAYTIME_R] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
4433+ port_descriptors[FEEDBACK_L] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
4434+ port_descriptors[FEEDBACK_R] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
4435+ port_descriptors[STRENGTH_L] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
4436+ port_descriptors[STRENGTH_R] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
4437+ port_descriptors[DRYLEVEL] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
4438+ port_descriptors[MODE] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
4439+ port_descriptors[HAAS] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
4440+ port_descriptors[REV_OUTCH] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
4441+
4442+ port_descriptors[INPUT_L] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
4443+ port_descriptors[OUTPUT_L] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
4444+ port_descriptors[INPUT_R] = LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO;
4445+ port_descriptors[OUTPUT_R] = LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO;
4446+
4447+ if ((port_names =
4448+ (char **)calloc(PORTCOUNT_STEREO, sizeof(char *))) == NULL)
4449+ exit(1);
4450+
4451+ stereo_descriptor->PortNames = (const char **)port_names;
4452+
4453+ port_names[DELAYTIME_L] = strdup("L Delay [ms]");
4454+ port_names[DELAYTIME_R] = strdup("R/Haas Delay [ms]");
4455+ port_names[FEEDBACK_L] = strdup("L Feedback [%]");
4456+ port_names[FEEDBACK_R] = strdup("R/Haas Feedback [%]");
4457+ port_names[STRENGTH_L] = strdup("L Echo Level [dB]");
4458+ port_names[STRENGTH_R] = strdup("R Echo Level [dB]");
4459+ port_names[DRYLEVEL] = strdup("Dry Level [dB]");
4460+ port_names[MODE] = strdup("Cross Mode");
4461+ port_names[HAAS] = strdup("Haas Effect");
4462+ port_names[REV_OUTCH] = strdup("Swap Outputs");
4463+
4464+ port_names[INPUT_L] = strdup("Input Left");
4465+ port_names[OUTPUT_L] = strdup("Output Left");
4466+ port_names[INPUT_R] = strdup("Input Right");
4467+ port_names[OUTPUT_R] = strdup("Output Right");
4468+
4469+ if ((port_range_hints =
4470+ ((LADSPA_PortRangeHint *)calloc(PORTCOUNT_STEREO, sizeof(LADSPA_PortRangeHint)))) == NULL)
4471+ exit(1);
4472+
4473+ stereo_descriptor->PortRangeHints = (const LADSPA_PortRangeHint *)port_range_hints;
4474+
4475+ port_range_hints[DELAYTIME_L].HintDescriptor =
4476+ (LADSPA_HINT_BOUNDED_BELOW |
4477+ LADSPA_HINT_BOUNDED_ABOVE |
4478+ LADSPA_HINT_DEFAULT_100);
4479+ port_range_hints[DELAYTIME_L].LowerBound = 0;
4480+ port_range_hints[DELAYTIME_L].UpperBound = MAX_DELAY;
4481+
4482+ port_range_hints[DELAYTIME_R].HintDescriptor =
4483+ (LADSPA_HINT_BOUNDED_BELOW |
4484+ LADSPA_HINT_BOUNDED_ABOVE |
4485+ LADSPA_HINT_DEFAULT_100);
4486+ port_range_hints[DELAYTIME_R].LowerBound = 0;
4487+ port_range_hints[DELAYTIME_R].UpperBound = MAX_DELAY;
4488+
4489+ port_range_hints[FEEDBACK_L].HintDescriptor =
4490+ (LADSPA_HINT_BOUNDED_BELOW |
4491+ LADSPA_HINT_BOUNDED_ABOVE |
4492+ LADSPA_HINT_DEFAULT_0);
4493+ port_range_hints[FEEDBACK_L].LowerBound = 0;
4494+ port_range_hints[FEEDBACK_L].UpperBound = 100;
4495+
4496+ port_range_hints[FEEDBACK_R].HintDescriptor =
4497+ (LADSPA_HINT_BOUNDED_BELOW |
4498+ LADSPA_HINT_BOUNDED_ABOVE |
4499+ LADSPA_HINT_DEFAULT_0);
4500+ port_range_hints[FEEDBACK_R].LowerBound = 0;
4501+ port_range_hints[FEEDBACK_R].UpperBound = 100;
4502+
4503+ port_range_hints[STRENGTH_L].HintDescriptor =
4504+ (LADSPA_HINT_BOUNDED_BELOW |
4505+ LADSPA_HINT_BOUNDED_ABOVE |
4506+ LADSPA_HINT_DEFAULT_0);
4507+ port_range_hints[STRENGTH_L].LowerBound = -70;
4508+ port_range_hints[STRENGTH_L].UpperBound = 10;
4509+
4510+ port_range_hints[STRENGTH_R].HintDescriptor =
4511+ (LADSPA_HINT_BOUNDED_BELOW |
4512+ LADSPA_HINT_BOUNDED_ABOVE |
4513+ LADSPA_HINT_DEFAULT_0);
4514+ port_range_hints[STRENGTH_R].LowerBound = -70;
4515+ port_range_hints[STRENGTH_R].UpperBound = 10;
4516+
4517+ port_range_hints[MODE].HintDescriptor =
4518+ (LADSPA_HINT_TOGGLED |
4519+ LADSPA_HINT_DEFAULT_0);
4520+
4521+ port_range_hints[HAAS].HintDescriptor =
4522+ (LADSPA_HINT_TOGGLED |
4523+ LADSPA_HINT_DEFAULT_0);
4524+
4525+ port_range_hints[REV_OUTCH].HintDescriptor =
4526+ (LADSPA_HINT_TOGGLED |
4527+ LADSPA_HINT_DEFAULT_0);
4528+
4529+ port_range_hints[DRYLEVEL].HintDescriptor =
4530+ (LADSPA_HINT_BOUNDED_BELOW |
4531+ LADSPA_HINT_BOUNDED_ABOVE |
4532+ LADSPA_HINT_DEFAULT_0);
4533+ port_range_hints[DRYLEVEL].LowerBound = -70;
4534+ port_range_hints[DRYLEVEL].UpperBound = 10;
4535+
4536+
4537+ port_range_hints[INPUT_L].HintDescriptor = 0;
4538+ port_range_hints[OUTPUT_L].HintDescriptor = 0;
4539+ port_range_hints[INPUT_R].HintDescriptor = 0;
4540+ port_range_hints[OUTPUT_R].HintDescriptor = 0;
4541+
4542+
4543+ stereo_descriptor->instantiate = instantiate_Echo;
4544+ stereo_descriptor->connect_port = connect_port_Echo;
4545+ stereo_descriptor->activate = activate_Echo;
4546+ stereo_descriptor->run = run_Echo;
4547+ stereo_descriptor->run_adding = run_adding_gain_Echo;
4548+ stereo_descriptor->set_run_adding_gain = set_run_adding_gain;
4549+ stereo_descriptor->deactivate = NULL;
4550+ stereo_descriptor->cleanup = cleanup_Echo;
4551+
4552+}
4553+
4554+
4555+void
4556+delete_descriptor(LADSPA_Descriptor * descriptor) {
4557+ unsigned long index;
4558+ if (descriptor) {
4559+ free((char *)descriptor->Label);
4560+ free((char *)descriptor->Name);
4561+ free((char *)descriptor->Maker);
4562+ free((char *)descriptor->Copyright);
4563+ free((LADSPA_PortDescriptor *)descriptor->PortDescriptors);
4564+ for (index = 0; index < descriptor->PortCount; index++)
4565+ free((char *)(descriptor->PortNames[index]));
4566+ free((char **)descriptor->PortNames);
4567+ free((LADSPA_PortRangeHint *)descriptor->PortRangeHints);
4568+ free(descriptor);
4569+ }
4570+}
4571+
4572+
4573+/* __attribute__((destructor)) _fini() is called automatically when the library is unloaded. */
4574+void
4575+__attribute__((destructor)) _fini() {
4576+ delete_descriptor(stereo_descriptor);
4577+}
4578+
4579+
4580+/* Return a descriptor of the requested plugin type. */
4581+
4582+const
4583+LADSPA_Descriptor *
4584+ladspa_descriptor(unsigned long Index) {
4585+
4586+ switch (Index) {
4587+ case 0:
4588+ return stereo_descriptor;
4589+ default:
4590+ return NULL;
4591+ }
4592+}
4593
4594=== added file '.pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_eq.c'
4595--- .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_eq.c 1970-01-01 00:00:00 +0000
4596+++ .pc/fix-crash-on-close.patch/plugins/LadspaEffect/tap/tap_eq.c 2014-04-11 06:58:04 +0000
4597@@ -0,0 +1,777 @@
4598+/* -*- linux-c -*-
4599+ Copyright (C) 2004 Tom Szilagyi
4600+
4601+ This program is free software; you can redistribute it and/or modify
4602+ it under the terms of the GNU General Public License as published by
4603+ the Free Software Foundation; either version 2 of the License, or
4604+ (at your option) any later version.
4605+
4606+ This program is distributed in the hope that it will be useful,
4607+ but WITHOUT ANY WARRANTY; without even the implied warranty of
4608+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4609+ GNU General Public License for more details.
4610+
4611+ You should have received a copy of the GNU General Public License
4612+ along with this program; if not, write to the Free Software
4613+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
4614+
4615+ $Id: tap_eq.c,v 1.7 2006/08/09 12:03:24 tszilagyi Exp $
4616+*/
4617+
4618+
4619+/* Please note that this plugin was inspired by and its code based
4620+upon Steve Harris's "DJ EQ" plugin (no. 1901). While I give him
4621+credit for his excellent work, I reserve myself to be blamed for any
4622+bugs or malfunction. */
4623+
4624+
4625+#include <stdlib.h>
4626+#include <string.h>
4627+#include <math.h>
4628+
4629+#include <ladspa.h>
4630+#include "tap_utils.h"
4631+
4632+/* The Unique ID of the plugin */
4633+#define ID_MONO 2141
4634+
4635+
4636+/* Bandwidth of EQ filters in octaves */
4637+#define BWIDTH 1.0f
4638+
4639+
4640+/* Port numbers */
4641+
4642+#define EQ_CH0G 0
4643+#define EQ_CH1G 1
4644+#define EQ_CH2G 2
4645+#define EQ_CH3G 3
4646+#define EQ_CH4G 4
4647+#define EQ_CH5G 5
4648+#define EQ_CH6G 6
4649+#define EQ_CH7G 7
4650+
4651+#define EQ_CH0F 8
4652+#define EQ_CH1F 9
4653+#define EQ_CH2F 10
4654+#define EQ_CH3F 11
4655+#define EQ_CH4F 12
4656+#define EQ_CH5F 13
4657+#define EQ_CH6F 14
4658+#define EQ_CH7F 15
4659+
4660+#define EQ_INPUT 16
4661+#define EQ_OUTPUT 17
4662+
4663+
4664+/* Total number of ports */
4665+#define PORTCOUNT_MONO 18
4666+
4667+
4668+static LADSPA_Descriptor *eqDescriptor = NULL;
4669+
4670+typedef struct {
4671+ LADSPA_Data *ch0f;
4672+ LADSPA_Data *ch0g;
4673+ LADSPA_Data *ch1f;
4674+ LADSPA_Data *ch1g;
4675+ LADSPA_Data *ch2f;
4676+ LADSPA_Data *ch2g;
4677+ LADSPA_Data *ch3f;
4678+ LADSPA_Data *ch3g;
4679+ LADSPA_Data *ch4f;
4680+ LADSPA_Data *ch4g;
4681+ LADSPA_Data *ch5f;
4682+ LADSPA_Data *ch5g;
4683+ LADSPA_Data *ch6f;
4684+ LADSPA_Data *ch6g;
4685+ LADSPA_Data *ch7f;
4686+ LADSPA_Data *ch7g;
4687+ LADSPA_Data *input;
4688+ LADSPA_Data *output;
4689+ biquad * filters;
4690+ float fs;
4691+ LADSPA_Data old_ch0f;
4692+ LADSPA_Data old_ch0g;
4693+ LADSPA_Data old_ch1f;
4694+ LADSPA_Data old_ch1g;
4695+ LADSPA_Data old_ch2f;
4696+ LADSPA_Data old_ch2g;
4697+ LADSPA_Data old_ch3f;
4698+ LADSPA_Data old_ch3g;
4699+ LADSPA_Data old_ch4f;
4700+ LADSPA_Data old_ch4g;
4701+ LADSPA_Data old_ch5f;
4702+ LADSPA_Data old_ch5g;
4703+ LADSPA_Data old_ch6f;
4704+ LADSPA_Data old_ch6g;
4705+ LADSPA_Data old_ch7f;
4706+ LADSPA_Data old_ch7g;
4707+
4708+ LADSPA_Data run_adding_gain;
4709+} eq;
4710+
4711+const
4712+LADSPA_Descriptor *
4713+ladspa_descriptor(unsigned long index) {
4714+
4715+ switch (index) {
4716+ case 0:
4717+ return eqDescriptor;
4718+ default:
4719+ return NULL;
4720+ }
4721+}
4722+
4723+static
4724+void
4725+activate_eq(LADSPA_Handle instance) {
4726+
4727+ eq *ptr = (eq *)instance;
4728+ biquad *filters = ptr->filters;
4729+
4730+ biquad_init(&filters[0]);
4731+ biquad_init(&filters[1]);
4732+ biquad_init(&filters[2]);
4733+ biquad_init(&filters[3]);
4734+ biquad_init(&filters[4]);
4735+ biquad_init(&filters[5]);
4736+ biquad_init(&filters[6]);
4737+ biquad_init(&filters[7]);
4738+}
4739+
4740+
4741+
4742+static
4743+void
4744+cleanup_eq(LADSPA_Handle instance) {
4745+
4746+ free(instance);
4747+}
4748+
4749+
4750+static
4751+void
4752+connectPort_eq(LADSPA_Handle instance, unsigned long port, LADSPA_Data *data) {
4753+
4754+ eq *plugin;
4755+
4756+ plugin = (eq *)instance;
4757+ switch (port) {
4758+ case EQ_CH0F:
4759+ plugin->ch0f = data;
4760+ break;
4761+ case EQ_CH0G:
4762+ plugin->ch0g = data;
4763+ break;
4764+ case EQ_CH1F:
4765+ plugin->ch1f = data;
4766+ break;
4767+ case EQ_CH1G:
4768+ plugin->ch1g = data;
4769+ break;
4770+ case EQ_CH2F:
4771+ plugin->ch2f = data;
4772+ break;
4773+ case EQ_CH2G:
4774+ plugin->ch2g = data;
4775+ break;
4776+ case EQ_CH3F:
4777+ plugin->ch3f = data;
4778+ break;
4779+ case EQ_CH3G:
4780+ plugin->ch3g = data;
4781+ break;
4782+ case EQ_CH4F:
4783+ plugin->ch4f = data;
4784+ break;
4785+ case EQ_CH4G:
4786+ plugin->ch4g = data;
4787+ break;
4788+ case EQ_CH5F:
4789+ plugin->ch5f = data;
4790+ break;
4791+ case EQ_CH5G:
4792+ plugin->ch5g = data;
4793+ break;
4794+ case EQ_CH6F:
4795+ plugin->ch6f = data;
4796+ break;
4797+ case EQ_CH6G:
4798+ plugin->ch6g = data;
4799+ break;
4800+ case EQ_CH7F:
4801+ plugin->ch7f = data;
4802+ break;
4803+ case EQ_CH7G:
4804+ plugin->ch7g = data;
4805+ break;
4806+ case EQ_INPUT:
4807+ plugin->input = data;
4808+ break;
4809+ case EQ_OUTPUT:
4810+ plugin->output = data;
4811+ break;
4812+ }
4813+}
4814+
4815+static
4816+LADSPA_Handle
4817+instantiate_eq(const LADSPA_Descriptor *descriptor, unsigned long s_rate) {
4818+
4819+ eq *ptr = (eq *)malloc(sizeof(eq));
4820+ biquad *filters = NULL;
4821+ float fs;
4822+
4823+ fs = s_rate;
4824+
4825+ memset(ptr, 0, sizeof(eq));
4826+
4827+ filters = calloc(8, sizeof(biquad));
4828+
4829+ ptr->filters = filters;
4830+ ptr->fs = fs;
4831+ ptr->run_adding_gain = 1.0f;
4832+
4833+ ptr->old_ch0f = 100.0f;
4834+ ptr->old_ch0g = 0;
4835+
4836+ ptr->old_ch1f = 200.0f;
4837+ ptr->old_ch1g = 0;
4838+
4839+ ptr->old_ch2f = 400.0f;
4840+ ptr->old_ch2g = 0;
4841+
4842+ ptr->old_ch3f = 1000.0f;
4843+ ptr->old_ch3g = 0;
4844+
4845+ ptr->old_ch4f = 3000.0f;
4846+ ptr->old_ch4g = 0;
4847+
4848+ ptr->old_ch5f = 6000.0f;
4849+ ptr->old_ch5g = 0;
4850+
4851+ ptr->old_ch6f = 12000.0f;
4852+ ptr->old_ch6g = 0;
4853+
4854+ ptr->old_ch7f = 15000.0f;
4855+ ptr->old_ch7g = 0;
4856+
4857+ eq_set_params(&filters[0], 100.0f, 0.0f, BWIDTH, fs);
4858+ eq_set_params(&filters[1], 200.0f, 0.0f, BWIDTH, fs);
4859+ eq_set_params(&filters[2], 400.0f, 0.0f, BWIDTH, fs);
4860+ eq_set_params(&filters[3], 1000.0f, 0.0f, BWIDTH, fs);
4861+ eq_set_params(&filters[4], 3000.0f, 0.0f, BWIDTH, fs);
4862+ eq_set_params(&filters[5], 6000.0f, 0.0f, BWIDTH, fs);
4863+ eq_set_params(&filters[6], 12000.0f, 0.0f, BWIDTH, fs);
4864+ eq_set_params(&filters[7], 15000.0f, 0.0f, BWIDTH, fs);
4865+
4866+ return (LADSPA_Handle)ptr;
4867+}
4868+
4869+
4870+static
4871+void
4872+run_eq(LADSPA_Handle instance, unsigned long sample_count) {
4873+
4874+ eq * ptr = (eq *)instance;
4875+
4876+ const LADSPA_Data ch0f = LIMIT(*(ptr->ch0f),40.0f,280.0f);
4877+ const LADSPA_Data ch0g = LIMIT(*(ptr->ch0g),-50.0f,20.0f);
4878+ const LADSPA_Data ch1f = LIMIT(*(ptr->ch1f),100.0f,500.0f);
4879+ const LADSPA_Data ch1g = LIMIT(*(ptr->ch1g),-50.0f,20.0f);
4880+ const LADSPA_Data ch2f = LIMIT(*(ptr->ch2f),200.0f,1000.0f);
4881+ const LADSPA_Data ch2g = LIMIT(*(ptr->ch2g),-50.0f,20.0f);
4882+ const LADSPA_Data ch3f = LIMIT(*(ptr->ch3f),400.0f,2800.0f);
4883+ const LADSPA_Data ch3g = LIMIT(*(ptr->ch3g),-50.0f,20.0f);
4884+ const LADSPA_Data ch4f = LIMIT(*(ptr->ch4f),1000.0f,5000.0f);
4885+ const LADSPA_Data ch4g = LIMIT(*(ptr->ch4g),-50.0f,20.0f);
4886+ const LADSPA_Data ch5f = LIMIT(*(ptr->ch5f),3000.0f,9000.0f);
4887+ const LADSPA_Data ch5g = LIMIT(*(ptr->ch5g),-50.0f,20.0f);
4888+ const LADSPA_Data ch6f = LIMIT(*(ptr->ch6f),6000.0f,18000.0f);
4889+ const LADSPA_Data ch6g = LIMIT(*(ptr->ch6g),-50.0f,20.0f);
4890+ const LADSPA_Data ch7f = LIMIT(*(ptr->ch7f),10000.0f,20000.0f);
4891+ const LADSPA_Data ch7g = LIMIT(*(ptr->ch7g),-50.0f,20.0f);
4892+
4893+ const LADSPA_Data * input = ptr->input;
4894+ LADSPA_Data * output = ptr->output;
4895+
4896+ biquad * filters = ptr->filters;
4897+ float fs = ptr->fs;
4898+
4899+ unsigned long pos;
4900+ float samp;
4901+
4902+
4903+ if ((ch0f != ptr->old_ch0f) ||
4904+ (ch0g != ptr->old_ch0g)) {
4905+ ptr->old_ch0f = ch0f;
4906+ ptr->old_ch0g = ch0g;
4907+ eq_set_params(&filters[0], ch0f, ch0g, BWIDTH, fs);
4908+ }
4909+ if ((ch1f != ptr->old_ch1f) ||
4910+ (ch1g != ptr->old_ch1g)) {
4911+ ptr->old_ch1f = ch1f;
4912+ ptr->old_ch1g = ch1g;
4913+ eq_set_params(&filters[1], ch1f, ch1g, BWIDTH, fs);
4914+ }
4915+ if ((ch2f != ptr->old_ch2f) ||
4916+ (ch2g != ptr->old_ch2g)) {
4917+ ptr->old_ch2f = ch2f;
4918+ ptr->old_ch2g = ch2g;
4919+ eq_set_params(&filters[2], ch2f, ch2g, BWIDTH, fs);
4920+ }
4921+ if ((ch3f != ptr->old_ch3f) ||
4922+ (ch3g != ptr->old_ch3g)) {
4923+ ptr->old_ch3f = ch3f;
4924+ ptr->old_ch3g = ch3g;
4925+ eq_set_params(&filters[3], ch3f, ch3g, BWIDTH, fs);
4926+ }
4927+ if ((ch4f != ptr->old_ch4f) ||
4928+ (ch4g != ptr->old_ch4g)) {
4929+ ptr->old_ch4f = ch4f;
4930+ ptr->old_ch4g = ch4g;
4931+ eq_set_params(&filters[4], ch4f, ch4g, BWIDTH, fs);
4932+ }
4933+ if ((ch5f != ptr->old_ch5f) ||
4934+ (ch5g != ptr->old_ch5g)) {
4935+ ptr->old_ch5f = ch5f;
4936+ ptr->old_ch5g = ch5g;
4937+ eq_set_params(&filters[5], ch5f, ch5g, BWIDTH, fs);
4938+ }
4939+ if ((ch6f != ptr->old_ch6f) ||
4940+ (ch6g != ptr->old_ch6g)) {
4941+ ptr->old_ch6f = ch6f;
4942+ ptr->old_ch6g = ch6g;
4943+ eq_set_params(&filters[6], ch6f, ch6g, BWIDTH, fs);
4944+ }
4945+ if ((ch7f != ptr->old_ch7f) ||
4946+ (ch7g != ptr->old_ch7g)) {
4947+ ptr->old_ch7f = ch7f;
4948+ ptr->old_ch7g = ch7g;
4949+ eq_set_params(&filters[7], ch7f, ch7g, BWIDTH, fs);
4950+ }
4951+
4952+ for (pos = 0; pos < sample_count; pos++) {
4953+ samp = input[pos];
4954+ if (ch0g != 0.0f)
4955+ samp = biquad_run(&filters[0], samp);
4956+ if (ch1g != 0.0f)
4957+ samp = biquad_run(&filters[1], samp);
4958+ if (ch2g != 0.0f)
4959+ samp = biquad_run(&filters[2], samp);
4960+ if (ch3g != 0.0f)
4961+ samp = biquad_run(&filters[3], samp);
4962+ if (ch4g != 0.0f)
4963+ samp = biquad_run(&filters[4], samp);
4964+ if (ch5g != 0.0f)
4965+ samp = biquad_run(&filters[5], samp);
4966+ if (ch6g != 0.0f)
4967+ samp = biquad_run(&filters[6], samp);
4968+ if (ch7g != 0.0f)
4969+ samp = biquad_run(&filters[7], samp);
4970+ output[pos] = samp;
4971+ }
4972+}
4973+
4974+
4975+
4976+void
4977+set_run_adding_gain(LADSPA_Handle instance, LADSPA_Data gain) {
4978+
4979+ eq * ptr = (eq *)instance;
4980+
4981+ ptr->run_adding_gain = gain;
4982+}
4983+
4984+
4985+
4986+static
4987+void
4988+run_adding_eq(LADSPA_Handle instance, unsigned long sample_count) {
4989+
4990+ eq * ptr = (eq *)instance;
4991+
4992+ const LADSPA_Data ch0f = LIMIT(*(ptr->ch0f),40.0f,280.0f);
4993+ const LADSPA_Data ch0g = LIMIT(*(ptr->ch0g),-50.0f,20.0f);
4994+ const LADSPA_Data ch1f = LIMIT(*(ptr->ch1f),100.0f,500.0f);
4995+ const LADSPA_Data ch1g = LIMIT(*(ptr->ch1g),-50.0f,20.0f);
4996+ const LADSPA_Data ch2f = LIMIT(*(ptr->ch2f),200.0f,1000.0f);
4997+ const LADSPA_Data ch2g = LIMIT(*(ptr->ch2g),-50.0f,20.0f);
4998+ const LADSPA_Data ch3f = LIMIT(*(ptr->ch3f),400.0f,2800.0f);
4999+ const LADSPA_Data ch3g = LIMIT(*(ptr->ch3g),-50.0f,20.0f);
5000+ const LADSPA_Data ch4f = LIMIT(*(ptr->ch4f),1000.0f,5000.0f);
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: