diff --git a/data/presets/LB302/AcidLead.xpf b/data/presets/LB302/AcidLead.xpf new file mode 100644 index 000000000..e264f9573 --- /dev/null +++ b/data/presets/LB302/AcidLead.xpf @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/LB302/AngryLead.xpf b/data/presets/LB302/AngryLead.xpf new file mode 100644 index 000000000..9d9955895 --- /dev/null +++ b/data/presets/LB302/AngryLead.xpf @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/LB302/DroneArp.xpf b/data/presets/LB302/DroneArp.xpf new file mode 100644 index 000000000..93b65595b --- /dev/null +++ b/data/presets/LB302/DroneArp.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/Monstro/Phat.xpf b/data/presets/Monstro/Phat.xpf new file mode 100644 index 000000000..5615f0229 --- /dev/null +++ b/data/presets/Monstro/Phat.xpf @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/Organic/Pwnage.xpf b/data/presets/Organic/Pwnage.xpf new file mode 100644 index 000000000..51401f5d6 --- /dev/null +++ b/data/presets/Organic/Pwnage.xpf @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/Organic/Rubberband.xpf b/data/presets/Organic/Rubberband.xpf new file mode 100644 index 000000000..1dd0a1941 --- /dev/null +++ b/data/presets/Organic/Rubberband.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/SID/Bass.xpf b/data/presets/SID/Bass.xpf new file mode 100644 index 000000000..c5f605c8f --- /dev/null +++ b/data/presets/SID/Bass.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/SID/CheesyGuitar.xpf b/data/presets/SID/CheesyGuitar.xpf new file mode 100644 index 000000000..756e14afc --- /dev/null +++ b/data/presets/SID/CheesyGuitar.xpf @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/SID/Lead.xpf b/data/presets/SID/Lead.xpf new file mode 100644 index 000000000..be81b2948 --- /dev/null +++ b/data/presets/SID/Lead.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/SID/MadMind.xpf b/data/presets/SID/MadMind.xpf new file mode 100644 index 000000000..5375d5b00 --- /dev/null +++ b/data/presets/SID/MadMind.xpf @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/SID/Overdrive.xpf b/data/presets/SID/Overdrive.xpf new file mode 100644 index 000000000..ef4b51a90 --- /dev/null +++ b/data/presets/SID/Overdrive.xpf @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/SID/Pad.xpf b/data/presets/SID/Pad.xpf new file mode 100644 index 000000000..2a03b3f43 --- /dev/null +++ b/data/presets/SID/Pad.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/AmazingBubbles.xpf b/data/presets/TripleOscillator/AmazingBubbles.xpf index b0dad2024..d06bd61ca 100644 --- a/data/presets/TripleOscillator/AmazingBubbles.xpf +++ b/data/presets/TripleOscillator/AmazingBubbles.xpf @@ -1,19 +1,21 @@ - - - + + + - - - - - - - - - + + + + + + + + + - - + + + + - + diff --git a/data/presets/TripleOscillator/AnalogBell.xpf b/data/presets/TripleOscillator/AnalogBell.xpf new file mode 100644 index 000000000..18f4d2baa --- /dev/null +++ b/data/presets/TripleOscillator/AnalogBell.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/AnalogDreamz.xpf b/data/presets/TripleOscillator/AnalogDreamz.xpf index 84d4e0af5..0af114cb9 100644 --- a/data/presets/TripleOscillator/AnalogDreamz.xpf +++ b/data/presets/TripleOscillator/AnalogDreamz.xpf @@ -1,19 +1,21 @@ - - - + + + - - - - - - - - - + + + + + + + + + - - + + + + - + diff --git a/data/presets/TripleOscillator/AnalogTimes.xpf b/data/presets/TripleOscillator/AnalogTimes.xpf index f2a59e0d6..0717947ed 100644 --- a/data/presets/TripleOscillator/AnalogTimes.xpf +++ b/data/presets/TripleOscillator/AnalogTimes.xpf @@ -1,19 +1,21 @@ - - - + + + - - - - - - - - - + + + + + + + + + - - + + + + - + diff --git a/data/presets/TripleOscillator/AnalogTimes2.xpf b/data/presets/TripleOscillator/AnalogTimes2.xpf deleted file mode 100644 index 6c8b73910..000000000 --- a/data/presets/TripleOscillator/AnalogTimes2.xpf +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/Analogous.xpf b/data/presets/TripleOscillator/Analogous.xpf index 200820acc..ec5c61a60 100644 --- a/data/presets/TripleOscillator/Analogous.xpf +++ b/data/presets/TripleOscillator/Analogous.xpf @@ -1,19 +1,21 @@ - - - + + + - - - + + + + + - - - - - + + + - - + + + + - + diff --git a/data/presets/TripleOscillator/ArpKing.xpf b/data/presets/TripleOscillator/ArpKing.xpf deleted file mode 100644 index af1b28958..000000000 --- a/data/presets/TripleOscillator/ArpKing.xpf +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/Arpeggio_2.xpf b/data/presets/TripleOscillator/Arpeggio.xpf similarity index 100% rename from data/presets/TripleOscillator/Arpeggio_2.xpf rename to data/presets/TripleOscillator/Arpeggio.xpf diff --git a/data/presets/TripleOscillator/ArpeggioPing.xpf b/data/presets/TripleOscillator/ArpeggioPing.xpf new file mode 100644 index 000000000..5da4c30d8 --- /dev/null +++ b/data/presets/TripleOscillator/ArpeggioPing.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Arpeggio_1.xpf b/data/presets/TripleOscillator/Arpeggio_1.xpf deleted file mode 100644 index 0b5f888be..000000000 --- a/data/presets/TripleOscillator/Arpeggio_1.xpf +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/Bell.xpf b/data/presets/TripleOscillator/Bell.xpf index e3d7d7bbe..1d7044980 100644 --- a/data/presets/TripleOscillator/Bell.xpf +++ b/data/presets/TripleOscillator/Bell.xpf @@ -1,19 +1,34 @@ - - - + + + - - - + + + + + - - - - - + + + - - + + + + + + + + + + + + + + + + + - + diff --git a/data/presets/TripleOscillator/BellArp.xpf b/data/presets/TripleOscillator/BellArp.xpf new file mode 100644 index 000000000..63f4edb06 --- /dev/null +++ b/data/presets/TripleOscillator/BellArp.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Bell_2.xpf b/data/presets/TripleOscillator/Bell_2.xpf deleted file mode 100644 index 22d326648..000000000 --- a/data/presets/TripleOscillator/Bell_2.xpf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/BlandModBass.xpf b/data/presets/TripleOscillator/BlandModBass.xpf new file mode 100644 index 000000000..3160bd097 --- /dev/null +++ b/data/presets/TripleOscillator/BlandModBass.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/BrokenToy.xpf b/data/presets/TripleOscillator/BrokenToy.xpf new file mode 100644 index 000000000..ed0ac370e --- /dev/null +++ b/data/presets/TripleOscillator/BrokenToy.xpf @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/CryingPads.xpf b/data/presets/TripleOscillator/CryingPads.xpf new file mode 100644 index 000000000..441dce3c7 --- /dev/null +++ b/data/presets/TripleOscillator/CryingPads.xpf @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/DeathBass.xpf b/data/presets/TripleOscillator/DeathBass.xpf deleted file mode 100644 index 1315983a0..000000000 --- a/data/presets/TripleOscillator/DeathBass.xpf +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/DetunedGhost.xpf b/data/presets/TripleOscillator/DetunedGhost.xpf new file mode 100644 index 000000000..4f180b6e3 --- /dev/null +++ b/data/presets/TripleOscillator/DetunedGhost.xpf @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/DirtyReece.xpf b/data/presets/TripleOscillator/DirtyReece.xpf new file mode 100644 index 000000000..d574c7299 --- /dev/null +++ b/data/presets/TripleOscillator/DirtyReece.xpf @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Distorted-FM-Bass.xpf b/data/presets/TripleOscillator/Distorted-FM-Bass.xpf deleted file mode 100644 index 36260145e..000000000 --- a/data/presets/TripleOscillator/Distorted-FM-Bass.xpf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/DistortedPMBass.xpf b/data/presets/TripleOscillator/DistortedPMBass.xpf new file mode 100644 index 000000000..970235507 --- /dev/null +++ b/data/presets/TripleOscillator/DistortedPMBass.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Drums_HardKick.xpf b/data/presets/TripleOscillator/Drums_HardKick.xpf new file mode 100644 index 000000000..64bd31949 --- /dev/null +++ b/data/presets/TripleOscillator/Drums_HardKick.xpf @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Drums_HihatC.xpf b/data/presets/TripleOscillator/Drums_HihatC.xpf new file mode 100644 index 000000000..3b4dd5735 --- /dev/null +++ b/data/presets/TripleOscillator/Drums_HihatC.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Drums_HihatO.xpf b/data/presets/TripleOscillator/Drums_HihatO.xpf new file mode 100644 index 000000000..19258c57a --- /dev/null +++ b/data/presets/TripleOscillator/Drums_HihatO.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Drums_Kick.xpf b/data/presets/TripleOscillator/Drums_Kick.xpf new file mode 100644 index 000000000..d18e0ed17 --- /dev/null +++ b/data/presets/TripleOscillator/Drums_Kick.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Drums_Snare.xpf b/data/presets/TripleOscillator/Drums_Snare.xpf new file mode 100644 index 000000000..50731bf56 --- /dev/null +++ b/data/presets/TripleOscillator/Drums_Snare.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Dull-Bell-Arp.xpf b/data/presets/TripleOscillator/Dull-Bell-Arp.xpf deleted file mode 100644 index bf9593286..000000000 --- a/data/presets/TripleOscillator/Dull-Bell-Arp.xpf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/DullBell.xpf b/data/presets/TripleOscillator/DullBell.xpf new file mode 100644 index 000000000..549689e4e --- /dev/null +++ b/data/presets/TripleOscillator/DullBell.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/ElectricOboe.xpf b/data/presets/TripleOscillator/ElectricOboe.xpf new file mode 100644 index 000000000..a68b66bbb --- /dev/null +++ b/data/presets/TripleOscillator/ElectricOboe.xpf @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Fat-FMish-Bells.xpf b/data/presets/TripleOscillator/Fat-FMish-Bells.xpf deleted file mode 100644 index 5d0797c6f..000000000 --- a/data/presets/TripleOscillator/Fat-FMish-Bells.xpf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/Fat-TB303-Arp.xpf b/data/presets/TripleOscillator/Fat-TB303-Arp.xpf deleted file mode 100644 index 0ed09990b..000000000 --- a/data/presets/TripleOscillator/Fat-TB303-Arp.xpf +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/Fat.xpf b/data/presets/TripleOscillator/Fat.xpf deleted file mode 100644 index af22b06dc..000000000 --- a/data/presets/TripleOscillator/Fat.xpf +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/FatCheese.xpf b/data/presets/TripleOscillator/FatCheese.xpf index 4f3d12a68..748b4dfe3 100644 --- a/data/presets/TripleOscillator/FatCheese.xpf +++ b/data/presets/TripleOscillator/FatCheese.xpf @@ -1,17 +1,21 @@ - - - + + + - - - + + + + + - - - + + + - - + + + + - + diff --git a/data/presets/TripleOscillator/FatPMArp.xpf b/data/presets/TripleOscillator/FatPMArp.xpf new file mode 100644 index 000000000..ad11a8952 --- /dev/null +++ b/data/presets/TripleOscillator/FatPMArp.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/FatTB303Arp.xpf b/data/presets/TripleOscillator/FatTB303Arp.xpf new file mode 100644 index 000000000..33bb2d8f6 --- /dev/null +++ b/data/presets/TripleOscillator/FatTB303Arp.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Freaky-Bass.xpf b/data/presets/TripleOscillator/Freaky-Bass.xpf index 9930927f1..9368fcad5 100644 --- a/data/presets/TripleOscillator/Freaky-Bass.xpf +++ b/data/presets/TripleOscillator/Freaky-Bass.xpf @@ -1,19 +1,18 @@ - + - + - - - - - - - - - + + + + + + + + + - - - - + + + diff --git a/data/presets/TripleOscillator/FutureBass.xpf b/data/presets/TripleOscillator/FutureBass.xpf index ca61efc6e..84f4541e0 100644 --- a/data/presets/TripleOscillator/FutureBass.xpf +++ b/data/presets/TripleOscillator/FutureBass.xpf @@ -1,18 +1,21 @@ - - - + + + - - - + + + + + - - - + + + - - - + + + + - + diff --git a/data/presets/TripleOscillator/FuzzyAnalogBass.xpf b/data/presets/TripleOscillator/FuzzyAnalogBass.xpf new file mode 100644 index 000000000..78b176dfd --- /dev/null +++ b/data/presets/TripleOscillator/FuzzyAnalogBass.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Garfunkel.xpf b/data/presets/TripleOscillator/Garfunkel.xpf new file mode 100644 index 000000000..d2f66d1fe --- /dev/null +++ b/data/presets/TripleOscillator/Garfunkel.xpf @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/GhostBoy.xpf b/data/presets/TripleOscillator/GhostBoy.xpf new file mode 100644 index 000000000..32f33964c --- /dev/null +++ b/data/presets/TripleOscillator/GhostBoy.xpf @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Gong.xpf b/data/presets/TripleOscillator/Gong.xpf deleted file mode 100644 index 813d40ead..000000000 --- a/data/presets/TripleOscillator/Gong.xpf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/Harmonium.xpf b/data/presets/TripleOscillator/Harmonium.xpf index 0db49b42d..a90325093 100644 --- a/data/presets/TripleOscillator/Harmonium.xpf +++ b/data/presets/TripleOscillator/Harmonium.xpf @@ -1,21 +1,21 @@ - - - + + + - - + + - + - - - + + + - + - + diff --git a/data/presets/TripleOscillator/Harpsichord.xpf b/data/presets/TripleOscillator/Harpsichord.xpf deleted file mode 100644 index 6e1093ee0..000000000 --- a/data/presets/TripleOscillator/Harpsichord.xpf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/HugeGrittyBass.xpf b/data/presets/TripleOscillator/HugeGrittyBass.xpf new file mode 100644 index 000000000..ab752fbff --- /dev/null +++ b/data/presets/TripleOscillator/HugeGrittyBass.xpf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Jupiter.xpf b/data/presets/TripleOscillator/Jupiter.xpf index e836c638e..86b59aac5 100644 --- a/data/presets/TripleOscillator/Jupiter.xpf +++ b/data/presets/TripleOscillator/Jupiter.xpf @@ -1,21 +1,21 @@ - - - + + + - - + + - + - - - + + + - - + + - + diff --git a/data/presets/TripleOscillator/Kick.xpf b/data/presets/TripleOscillator/Kick.xpf deleted file mode 100644 index 8dbac12d0..000000000 --- a/data/presets/TripleOscillator/Kick.xpf +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/Kick2.xpf b/data/presets/TripleOscillator/Kick2.xpf deleted file mode 100644 index 4dcd87b08..000000000 --- a/data/presets/TripleOscillator/Kick2.xpf +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/MoveYourBody.xpf b/data/presets/TripleOscillator/MoveYourBody.xpf index 1d2b63d2c..fb67237bd 100644 --- a/data/presets/TripleOscillator/MoveYourBody.xpf +++ b/data/presets/TripleOscillator/MoveYourBody.xpf @@ -1,18 +1,21 @@ - - - + + + - - - - - - - + + + + + + + + + - - - + + + + - + diff --git a/data/presets/TripleOscillator/OldComputerGames.xpf b/data/presets/TripleOscillator/OldComputerGames.xpf index dd01e4992..674bef674 100644 --- a/data/presets/TripleOscillator/OldComputerGames.xpf +++ b/data/presets/TripleOscillator/OldComputerGames.xpf @@ -1,21 +1,21 @@ - + - + - + - + - - - - + + + + - - + + - + @@ -63,16 +63,34 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/PM-FMstring.xpf b/data/presets/TripleOscillator/PM-FMstring.xpf new file mode 100644 index 000000000..1433f3c47 --- /dev/null +++ b/data/presets/TripleOscillator/PM-FMstring.xpf @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/PMFMFTWbass.xpf b/data/presets/TripleOscillator/PMFMFTWbass.xpf new file mode 100644 index 000000000..d81b55601 --- /dev/null +++ b/data/presets/TripleOscillator/PMFMFTWbass.xpf @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/SBass.xpf b/data/presets/TripleOscillator/PMbass.xpf similarity index 84% rename from data/presets/TripleOscillator/SBass.xpf rename to data/presets/TripleOscillator/PMbass.xpf index e1b4be4e1..2e63d7136 100644 --- a/data/presets/TripleOscillator/SBass.xpf +++ b/data/presets/TripleOscillator/PMbass.xpf @@ -1,16 +1,16 @@ - + - + - + - - - + + + diff --git a/data/presets/TripleOscillator/PercussiveBass.xpf b/data/presets/TripleOscillator/PercussiveBass.xpf new file mode 100644 index 000000000..4afb1d0de --- /dev/null +++ b/data/presets/TripleOscillator/PercussiveBass.xpf @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Play-some-rock.xpf b/data/presets/TripleOscillator/Play-some-rock.xpf index 29cd3de28..2ee19a7b2 100644 --- a/data/presets/TripleOscillator/Play-some-rock.xpf +++ b/data/presets/TripleOscillator/Play-some-rock.xpf @@ -1,18 +1,36 @@ - - - + + + - - - - - - - + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + - + diff --git a/data/presets/TripleOscillator/PluckBass.xpf b/data/presets/TripleOscillator/PluckBass.xpf new file mode 100644 index 000000000..51c5de329 --- /dev/null +++ b/data/presets/TripleOscillator/PluckBass.xpf @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Plucked.xpf b/data/presets/TripleOscillator/Plucked.xpf deleted file mode 100644 index 2db750a48..000000000 --- a/data/presets/TripleOscillator/Plucked.xpf +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/PowerStrings.xpf b/data/presets/TripleOscillator/PowerStrings.xpf index f62af8e42..0ef375097 100644 --- a/data/presets/TripleOscillator/PowerStrings.xpf +++ b/data/presets/TripleOscillator/PowerStrings.xpf @@ -1,21 +1,21 @@ - + - + - + - - - + + + - + @@ -32,6 +32,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Ravemania.xpf b/data/presets/TripleOscillator/Ravemania.xpf index 4e0f779e4..cab609fc5 100644 --- a/data/presets/TripleOscillator/Ravemania.xpf +++ b/data/presets/TripleOscillator/Ravemania.xpf @@ -1,18 +1,21 @@ - - - + + + - - - - - - - + + + + + + + + + - - - + + + + - + diff --git a/data/presets/TripleOscillator/ResoBass.xpf b/data/presets/TripleOscillator/ResoBass.xpf index e5b82bc75..85a785c6e 100644 --- a/data/presets/TripleOscillator/ResoBass.xpf +++ b/data/presets/TripleOscillator/ResoBass.xpf @@ -1,19 +1,21 @@ - - - + + + - - - - - - - - - + + + + + + + + + - - + + + + - + diff --git a/data/presets/TripleOscillator/ResonantPad.xpf b/data/presets/TripleOscillator/ResonantPad.xpf index 9189dc074..0e375c846 100644 --- a/data/presets/TripleOscillator/ResonantPad.xpf +++ b/data/presets/TripleOscillator/ResonantPad.xpf @@ -1,19 +1,21 @@ - - - + + + - - - - - - - - - + + + + + + + + + - - + + + + - + diff --git a/data/presets/TripleOscillator/RockOrgan.xpf b/data/presets/TripleOscillator/RockOrgan.xpf deleted file mode 100644 index 84e397782..000000000 --- a/data/presets/TripleOscillator/RockOrgan.xpf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/Rough!.xpf b/data/presets/TripleOscillator/Rough!.xpf index 462a1fbf3..38e5d364a 100644 --- a/data/presets/TripleOscillator/Rough!.xpf +++ b/data/presets/TripleOscillator/Rough!.xpf @@ -1,19 +1,21 @@ - - - + + + - - - - - - - - - + + + + + + + + + - - + + + + - + diff --git a/data/presets/TripleOscillator/SBass2.xpf b/data/presets/TripleOscillator/SBass2.xpf deleted file mode 100644 index 251b8069a..000000000 --- a/data/presets/TripleOscillator/SBass2.xpf +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/SawLead.xpf b/data/presets/TripleOscillator/SawLead.xpf deleted file mode 100644 index fb1ca7c2c..000000000 --- a/data/presets/TripleOscillator/SawLead.xpf +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/SawReso.xpf b/data/presets/TripleOscillator/SawReso.xpf index ee419bb38..2c631d663 100644 --- a/data/presets/TripleOscillator/SawReso.xpf +++ b/data/presets/TripleOscillator/SawReso.xpf @@ -1,18 +1,21 @@ - - - + + + - - - + + + + + - - - + + + - - - + + + + - + diff --git a/data/presets/TripleOscillator/Short1.xpf b/data/presets/TripleOscillator/Short1.xpf deleted file mode 100644 index 8e4bf3051..000000000 --- a/data/presets/TripleOscillator/Short1.xpf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/Short2.xpf b/data/presets/TripleOscillator/Short2.xpf deleted file mode 100644 index e544bf306..000000000 --- a/data/presets/TripleOscillator/Short2.xpf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/Short3.xpf b/data/presets/TripleOscillator/Short3.xpf deleted file mode 100644 index 8e6152755..000000000 --- a/data/presets/TripleOscillator/Short3.xpf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/Short4.xpf b/data/presets/TripleOscillator/Short4.xpf deleted file mode 100644 index 22ec192ef..000000000 --- a/data/presets/TripleOscillator/Short4.xpf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/Snare.xpf b/data/presets/TripleOscillator/Snare.xpf deleted file mode 100644 index 9d5d3e834..000000000 --- a/data/presets/TripleOscillator/Snare.xpf +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/SoftBass.xpf b/data/presets/TripleOscillator/SoftBass.xpf deleted file mode 100644 index 7596bd14b..000000000 --- a/data/presets/TripleOscillator/SoftBass.xpf +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/SoftStrings.xpf b/data/presets/TripleOscillator/SoftStrings.xpf deleted file mode 100644 index a47c0b68c..000000000 --- a/data/presets/TripleOscillator/SoftStrings.xpf +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/SquarePing.xpf b/data/presets/TripleOscillator/SquarePing.xpf new file mode 100644 index 000000000..c4a1999dd --- /dev/null +++ b/data/presets/TripleOscillator/SquarePing.xpf @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/SuperSawLead.xpf b/data/presets/TripleOscillator/SuperSawLead.xpf new file mode 100644 index 000000000..916bde548 --- /dev/null +++ b/data/presets/TripleOscillator/SuperSawLead.xpf @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/Supernova.xpf b/data/presets/TripleOscillator/Supernova.xpf index 750415f9a..01837983b 100644 --- a/data/presets/TripleOscillator/Supernova.xpf +++ b/data/presets/TripleOscillator/Supernova.xpf @@ -1,40 +1,58 @@ - - - + + + - - + + - + - - - + + + - - - + + + - - + + + + + + + + + + + - - + + + + + + + + + + + - + @@ -42,20 +60,51 @@ - + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + - + diff --git a/data/presets/TripleOscillator/TB303-Arpeggio.xpf b/data/presets/TripleOscillator/TB303-Arpeggio.xpf deleted file mode 100644 index 09f1bca8e..000000000 --- a/data/presets/TripleOscillator/TB303-Arpeggio.xpf +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/data/presets/TripleOscillator/TINTNpad.xpf b/data/presets/TripleOscillator/TINTNpad.xpf new file mode 100644 index 000000000..840ee358f --- /dev/null +++ b/data/presets/TripleOscillator/TINTNpad.xpf @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/presets/TripleOscillator/TheMaster.xpf b/data/presets/TripleOscillator/TheMaster.xpf index 7311af546..c54787a19 100644 --- a/data/presets/TripleOscillator/TheMaster.xpf +++ b/data/presets/TripleOscillator/TheMaster.xpf @@ -1,18 +1,31 @@ - - - + + + - - - + + + + + - - - + + + - - - + + + + + + + + + + + + + + - + diff --git a/data/presets/TripleOscillator/TranceLead.xpf b/data/presets/TripleOscillator/TranceLead.xpf index c3071c976..cd1d3526a 100644 --- a/data/presets/TripleOscillator/TranceLead.xpf +++ b/data/presets/TripleOscillator/TranceLead.xpf @@ -1,19 +1,18 @@ - + - + - - - - - - - - - + + + + + + + + + - - - - + + + diff --git a/data/presets/TripleOscillator/WarmStack.xpf b/data/presets/TripleOscillator/WarmStack.xpf index 1a3e9c1a0..fb903295c 100644 --- a/data/presets/TripleOscillator/WarmStack.xpf +++ b/data/presets/TripleOscillator/WarmStack.xpf @@ -1,16 +1,16 @@ - + - + - + - + - - - + + + diff --git a/include/FxMixerView.h b/include/FxMixerView.h index 7eca91db4..aac3ad402 100644 --- a/include/FxMixerView.h +++ b/include/FxMixerView.h @@ -1,7 +1,7 @@ /* * FxMixerView.h - effect-mixer-view for LMMS * - * Copyright (c) 2008 Tobias Doerffel + * Copyright (c) 2008-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -48,8 +48,9 @@ class EXPORT FxMixerView : public QWidget, public ModelView, { Q_OBJECT public: - struct FxChannelView + class FxChannelView { + public: FxChannelView(QWidget * _parent, FxMixerView * _mv, int _chIndex ); FxLine * m_fxLine; diff --git a/include/Mixer.h b/include/Mixer.h index 4813fb0ea..8837fc211 100644 --- a/include/Mixer.h +++ b/include/Mixer.h @@ -47,6 +47,7 @@ #include "lmms_basics.h" #include "note.h" #include "fifo_buffer.h" +#include "MixerProfiler.h" class AudioDevice; @@ -246,9 +247,14 @@ public: } - inline int cpuLoad() const + MixerProfiler& profiler() { - return m_cpuLoad; + return m_profiler; + } + + int cpuLoad() const + { + return m_profiler.cpuLoad(); } const qualitySettings & currentQualitySettings() const @@ -433,7 +439,6 @@ private: bool m_oldBuffer[SURROUND_CHANNELS]; bool m_newBuffer[SURROUND_CHANNELS]; - int m_cpuLoad; QVector m_workers; int m_numWorkers; QWaitCondition m_queueReadyWaitCond; @@ -465,6 +470,7 @@ private: fifo * m_fifo; fifoWriter * m_fifoWriter; + MixerProfiler m_profiler; friend class engine; friend class MixerWorkerThread; diff --git a/include/MixerProfiler.h b/include/MixerProfiler.h new file mode 100644 index 000000000..697313612 --- /dev/null +++ b/include/MixerProfiler.h @@ -0,0 +1,60 @@ +/* + * MixerProfiler.h - class for profiling performance of Mixer + * + * Copyright (c) 2014 Tobias Doerffel + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + +#ifndef MIXER_PROFILER_H +#define MIXER_PROFILER_H + +#include + +#include "MicroTimer.h" + +class MixerProfiler +{ +public: + MixerProfiler(); + ~MixerProfiler(); + + void startPeriod() + { + m_periodTimer.reset(); + } + + void finishPeriod( sample_rate_t sampleRate, fpp_t framesPerPeriod ); + + int cpuLoad() const + { + return m_cpuLoad; + } + + void setOutputFile( const QString& outputFile ); + + +private: + MicroTimer m_periodTimer; + int m_cpuLoad; + QFile m_outputFile; + +}; + +#endif diff --git a/include/Plugin.h b/include/Plugin.h index bfc9bc34c..7c937dc8c 100644 --- a/include/Plugin.h +++ b/include/Plugin.h @@ -1,7 +1,7 @@ /* * Plugin.h - class plugin, the base-class and generic interface for all plugins * - * Copyright (c) 2005-2009 Tobias Doerffel + * Copyright (c) 2005-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -22,18 +22,15 @@ * */ -#ifndef _PLUGIN_H -#define _PLUGIN_H +#ifndef PLUGIN_H +#define PLUGIN_H -#include #include -#include -#include +#include +#include #include "JournallingObject.h" #include "Model.h" -#include "base64.h" - class QWidget; @@ -72,12 +69,12 @@ public: PluginTypes type; const PixmapLoader * logo; const char * supportedFileTypes; - inline bool supportsFileType( const QString & _ext ) const + + inline bool supportsFileType( const QString& extension ) const { - return QString( supportedFileTypes ). - split( QChar( ',' ) ). - contains( _ext ); + return QString( supportedFileTypes ).split( QChar( ',' ) ).contains( extension ); } + class EXPORT SubPluginFeatures { public: @@ -101,11 +98,10 @@ public: inline bool isValid() const { - return desc != NULL && - name != QString::null; + return desc != NULL && name.isNull() == false; } - const Plugin::Descriptor * desc; + const Plugin::Descriptor* desc; QString name; AttributeMap attributes; } ; @@ -113,8 +109,8 @@ public: typedef QList KeyList; - SubPluginFeatures( Plugin::PluginTypes _type ) : - m_type( _type ) + SubPluginFeatures( Plugin::PluginTypes type ) : + m_type( type ) { } @@ -126,8 +122,7 @@ public: { } - virtual void listSubPluginKeys( const Plugin::Descriptor *, - KeyList & ) const + virtual void listSubPluginKeys( const Plugin::Descriptor *, KeyList & ) const { } @@ -144,15 +139,13 @@ public: typedef QList DescriptorList; // contructor of a plugin - Plugin( const Descriptor * _descriptor, Model * _parent ); + Plugin( const Descriptor* descriptor, Model* parent ); virtual ~Plugin(); // returns display-name out of descriptor virtual QString displayName() const { - return Model::displayName().isEmpty() ? - m_descriptor->displayName : - Model::displayName(); + return Model::displayName().isEmpty() ? m_descriptor->displayName : Model::displayName(); } // return plugin-type @@ -162,41 +155,40 @@ public: } // return plugin-descriptor for further information - inline const Descriptor * descriptor() const + inline const Descriptor* descriptor() const { return m_descriptor; } // can be called if a file matching supportedFileTypes should be // loaded/processed with the help of this plugin - virtual void loadFile( const QString & _file ); + virtual void loadFile( const QString& file ); // Called if external source needs to change something but we cannot // reference the class header. Should return null if not key not found. - virtual AutomatableModel * childModel( const QString & _modelName ); + virtual AutomatableModel* childModel( const QString& modelName ); // returns an instance of a plugin whose name matches to given one // if specified plugin couldn't be loaded, it creates a dummy-plugin - static Plugin * instantiate( const QString & _plugin_name, - Model * _parent, void * _data ); + static Plugin * instantiate( const QString& pluginName, Model * parent, void * data ); // fills given list with descriptors of all available plugins - static void getDescriptorsOfAvailPlugins( DescriptorList & _plugin_descs ); + static void getDescriptorsOfAvailPlugins( DescriptorList& pluginDescriptors ); // create a view for the model - PluginView * createView( QWidget * _parent ); + PluginView * createView( QWidget* parent ); protected: // create a view for the model - virtual PluginView * instantiateView( QWidget * ) = 0; + virtual PluginView* instantiateView( QWidget* ) = 0; private: - const Descriptor * m_descriptor; + const Descriptor* m_descriptor; // pointer to instantiation-function in plugin - typedef Plugin * ( * instantiationHook )( Model *, void * ); + typedef Plugin * ( * InstantiationHook )( Model*, void* ); } ; diff --git a/include/lmms_math.h b/include/lmms_math.h index 67b4f10e9..9dc7a365c 100644 --- a/include/lmms_math.h +++ b/include/lmms_math.h @@ -40,6 +40,12 @@ #ifndef isinff #define isinff(x) isinf(x) #endif +#ifndef _isnanf +#define _isnanf(x) isnan(x) +#endif +#ifndef _isinff +#define _isinff(x) isinf(x) +#endif #endif #ifdef __INTEL_COMPILER diff --git a/plugins/LadspaEffect/calf/CMakeLists.txt b/plugins/LadspaEffect/calf/CMakeLists.txt index db6dea7a5..d685f5302 100644 --- a/plugins/LadspaEffect/calf/CMakeLists.txt +++ b/plugins/LadspaEffect/calf/CMakeLists.txt @@ -7,9 +7,9 @@ INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/include" INSTALL(TARGETS calf LIBRARY DESTINATION "${PLUGIN_DIR}/ladspa") SET_TARGET_PROPERTIES(calf PROPERTIES PREFIX "") SET(INLINE_FLAGS "") -IF(NOT LMMS_BUILD_APPLE) +IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") SET(INLINE_FLAGS "-finline-functions-called-once -finline-limit=80") -ENDIF(NOT LMMS_BUILD_APPLE) +ENDIF() SET_TARGET_PROPERTIES(calf PROPERTIES COMPILE_FLAGS "-O2 -finline-functions ${INLINE_FLAGS}") IF(LMMS_BUILD_WIN32) diff --git a/plugins/LadspaEffect/caps/SweepVF.cc b/plugins/LadspaEffect/caps/SweepVF.cc index 95921c258..f97c220cf 100644 --- a/plugins/LadspaEffect/caps/SweepVF.cc +++ b/plugins/LadspaEffect/caps/SweepVF.cc @@ -28,6 +28,8 @@ 02111-1307, USA or point your web browser to http://www.gnu.org. */ +#include + #include "basics.h" #include "SweepVF.h" @@ -85,7 +87,7 @@ SweepVFI::one_cycle (int frames) modulation *= scale * f; svf.set_f_Q (max (.001, f + modulation), Q); - int n = min (frames, BLOCK_SIZE); + int n = std::min (frames, BLOCK_SIZE); for (int i = 0; i < n; ++i) F (d, i, svf.process (s[i] + normal), adding_gain); @@ -231,7 +233,7 @@ SweepVFII::one_cycle (int frames) svf.set_f_Q (max (.001, f + modulation1), q); - int n = min (frames, BLOCK_SIZE); + int n = std::min (frames, BLOCK_SIZE); for (int i = 0; i < n; ++i) F (d, i, svf.process (s[i] + normal), adding_gain); @@ -385,7 +387,7 @@ AutoWah::one_cycle (int frames) m *= scale * .08; svf.set_f_Q (max (.001, f + m), Q); - int n = min (frames, BLOCK_SIZE); + int n = std::min (frames, BLOCK_SIZE); for (int i = 0; i < n; ++i) { diff --git a/plugins/LadspaEffect/caps/dsp/ToneStack.h b/plugins/LadspaEffect/caps/dsp/ToneStack.h index ef85d2057..4d0600856 100644 --- a/plugins/LadspaEffect/caps/dsp/ToneStack.h +++ b/plugins/LadspaEffect/caps/dsp/ToneStack.h @@ -69,10 +69,7 @@ class ToneStack // digital coefficients double dcoef_a[Order + 1]; double dcoef_b[Order + 1]; - double af[Order + 1]; - double bf[Order + 1]; - double fs; TDFII filter; public: @@ -209,10 +206,6 @@ class ToneStackLT // digital coefficients double *kcoef; double *vcoef; - double af [Order + 1]; - double bf [Order + 1]; - - double fs; LatFilt filter; public: diff --git a/plugins/LadspaEffect/cmt/src/lofi.cpp b/plugins/LadspaEffect/cmt/src/lofi.cpp index d4572f98b..67be8008d 100644 --- a/plugins/LadspaEffect/cmt/src/lofi.cpp +++ b/plugins/LadspaEffect/cmt/src/lofi.cpp @@ -277,8 +277,6 @@ class LoFi : public CMT_PluginInstance { BandwidthLimit *bandwidth_l; BandwidthLimit *bandwidth_r; - int last_trigger; - public: LoFi(const LADSPA_Descriptor *, unsigned long s_rate) diff --git a/plugins/LadspaEffect/cmt/src/pink_full.cpp b/plugins/LadspaEffect/cmt/src/pink_full.cpp index 1c4de1602..59c92906e 100644 --- a/plugins/LadspaEffect/cmt/src/pink_full.cpp +++ b/plugins/LadspaEffect/cmt/src/pink_full.cpp @@ -49,14 +49,13 @@ namespace pink_full { Voss-McCartney algorithm described at www.firstpr.com.au/dsp/pink-noise/ */ class Plugin : public CMT_PluginInstance { private: - LADSPA_Data sample_rate; PinkNoise noise_source; public: Plugin(const LADSPA_Descriptor *, unsigned long s_rate) : - CMT_PluginInstance(n_ports), - sample_rate(s_rate) { + CMT_PluginInstance(n_ports) + { } ~Plugin() { diff --git a/plugins/LadspaEffect/swh/fad_delay_1192.c b/plugins/LadspaEffect/swh/fad_delay_1192.c index 9d4ec77b3..422e769d9 100644 --- a/plugins/LadspaEffect/swh/fad_delay_1192.c +++ b/plugins/LadspaEffect/swh/fad_delay_1192.c @@ -86,7 +86,6 @@ static void activateFadDelay(LADSPA_Handle instance) { phase = 0; last_phase = 0; last_in = 0.0f; - sample_rate = sample_rate; plugin_data->buffer = buffer; plugin_data->buffer_mask = buffer_mask; plugin_data->buffer_size = buffer_size; diff --git a/plugins/LadspaEffect/swh/gsm/gsm_create.c b/plugins/LadspaEffect/swh/gsm/gsm_create.c index cadaff60e..f99eb91e2 100644 --- a/plugins/LadspaEffect/swh/gsm/gsm_create.c +++ b/plugins/LadspaEffect/swh/gsm/gsm_create.c @@ -4,7 +4,6 @@ * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. */ -static char const ident[] = "$Header: /home/cvs/giga/ladspa-swh/gsm/gsm_create.c,v 1.1 2001/06/10 21:36:51 swh Exp $"; #include "config.h" diff --git a/plugins/LadspaEffect/swh/gsm_1215.c b/plugins/LadspaEffect/swh/gsm_1215.c index 55c0f2628..8cef93ba5 100644 --- a/plugins/LadspaEffect/swh/gsm_1215.c +++ b/plugins/LadspaEffect/swh/gsm_1215.c @@ -224,7 +224,6 @@ static void runGsm(LADSPA_Handle instance, unsigned long sample_count) { int count = plugin_data->count; LADSPA_Data * dry = plugin_data->dry; gsm_signal * dst = plugin_data->dst; - float fs = plugin_data->fs; gsm handle = plugin_data->handle; int resamp = plugin_data->resamp; float rsf = plugin_data->rsf; @@ -238,8 +237,6 @@ static void runGsm(LADSPA_Handle instance, unsigned long sample_count) { int error_rate = f_round(error); int num_passes = f_round(passes); - fs = fs; // So gcc doesn't think it's unused - for (pos = 0; pos < sample_count; pos++) { // oversample into buffer down to aprox 8kHz, 13bit @@ -322,7 +319,6 @@ static void runAddingGsm(LADSPA_Handle instance, unsigned long sample_count) { int count = plugin_data->count; LADSPA_Data * dry = plugin_data->dry; gsm_signal * dst = plugin_data->dst; - float fs = plugin_data->fs; gsm handle = plugin_data->handle; int resamp = plugin_data->resamp; float rsf = plugin_data->rsf; @@ -336,8 +332,6 @@ static void runAddingGsm(LADSPA_Handle instance, unsigned long sample_count) { int error_rate = f_round(error); int num_passes = f_round(passes); - fs = fs; // So gcc doesn't think it's unused - for (pos = 0; pos < sample_count; pos++) { // oversample into buffer down to aprox 8kHz, 13bit diff --git a/plugins/LadspaEffect/swh/hermes_filter_1200.c b/plugins/LadspaEffect/swh/hermes_filter_1200.c index d313d376e..bf3bbbad5 100644 --- a/plugins/LadspaEffect/swh/hermes_filter_1200.c +++ b/plugins/LadspaEffect/swh/hermes_filter_1200.c @@ -817,7 +817,6 @@ static void runHermesFilter(LADSPA_Handle instance, unsigned long sample_count) float lfo2_phase = plugin_data->lfo2_phase; blo_h_osc * osc1_d = plugin_data->osc1_d; blo_h_osc * osc2_d = plugin_data->osc2_d; - blo_h_tables * tables = plugin_data->tables; sv_filter * xover_b1_data = plugin_data->xover_b1_data; sv_filter * xover_b2_data = plugin_data->xover_b2_data; @@ -927,8 +926,6 @@ static void runHermesFilter(LADSPA_Handle instance, unsigned long sample_count) dela_fb[1] = dela2_fb; dela_fb[2] = dela3_fb; - tables = tables; // To shut up gcc - for (pos = 0; pos < sample_count; pos++) { count++; // Count of number of samples processed @@ -1204,7 +1201,6 @@ static void runAddingHermesFilter(LADSPA_Handle instance, unsigned long sample_c float lfo2_phase = plugin_data->lfo2_phase; blo_h_osc * osc1_d = plugin_data->osc1_d; blo_h_osc * osc2_d = plugin_data->osc2_d; - blo_h_tables * tables = plugin_data->tables; sv_filter * xover_b1_data = plugin_data->xover_b1_data; sv_filter * xover_b2_data = plugin_data->xover_b2_data; @@ -1314,8 +1310,6 @@ static void runAddingHermesFilter(LADSPA_Handle instance, unsigned long sample_c dela_fb[1] = dela2_fb; dela_fb[2] = dela3_fb; - tables = tables; // To shut up gcc - for (pos = 0; pos < sample_count; pos++) { count++; // Count of number of samples processed diff --git a/plugins/LadspaEffect/swh/ladspa-util.c b/plugins/LadspaEffect/swh/ladspa-util.c index 57ce5bf15..431ba955e 100644 --- a/plugins/LadspaEffect/swh/ladspa-util.c +++ b/plugins/LadspaEffect/swh/ladspa-util.c @@ -4,7 +4,7 @@ the stack and crap like that. */ -static const float _truncate_half = 0.5f; +//static const float _truncate_half = 0.5f; int truncate(float flt) { int i; diff --git a/plugins/LadspaEffect/swh/pitch_scale_1193.c b/plugins/LadspaEffect/swh/pitch_scale_1193.c index ce3f81163..88cf24cc8 100644 --- a/plugins/LadspaEffect/swh/pitch_scale_1193.c +++ b/plugins/LadspaEffect/swh/pitch_scale_1193.c @@ -79,7 +79,6 @@ static void activatePitchScale(LADSPA_Handle instance) { memset(buffers->gAnaFreq, 0, FRAME_LENGTH*sizeof(float)); memset(buffers->gAnaMagn, 0, FRAME_LENGTH*sizeof(float)); buffers->gRover = 0; - sample_rate = sample_rate; /* do one run to make sure the plans are set up */ pitch_scale(buffers, 1.0, FRAME_LENGTH, 4, FRAME_LENGTH, sample_rate, buffers->gInFIFO, buffers->gOutFIFO, 0, 0.0f); diff --git a/plugins/LadspaEffect/swh/ringmod_1188.c b/plugins/LadspaEffect/swh/ringmod_1188.c index 393ad86b2..591dc966e 100644 --- a/plugins/LadspaEffect/swh/ringmod_1188.c +++ b/plugins/LadspaEffect/swh/ringmod_1188.c @@ -207,8 +207,6 @@ static void activateRingmod_1i1o1l(LADSPA_Handle instance) { static void cleanupRingmod_1i1o1l(LADSPA_Handle instance) { #line 93 "ringmod_1188.xml" - Ringmod_1i1o1l *plugin_data = (Ringmod_1i1o1l *)instance; - plugin_data = plugin_data; if (--refcount == 0) { free(sin_tbl); free(tri_tbl); diff --git a/plugins/LadspaEffect/swh/step_muxer_1212.c b/plugins/LadspaEffect/swh/step_muxer_1212.c index 9c27b84e1..99c4ecf15 100644 --- a/plugins/LadspaEffect/swh/step_muxer_1212.c +++ b/plugins/LadspaEffect/swh/step_muxer_1212.c @@ -100,7 +100,6 @@ static void activateStepMuxer(LADSPA_Handle instance) { } current_ch = 0; last_clock = 0.0f; - sample_rate = sample_rate; plugin_data->ch_gain = ch_gain; plugin_data->ch_state = ch_state; plugin_data->current_ch = current_ch; diff --git a/plugins/LadspaEffect/swh/tape_delay_1211.c b/plugins/LadspaEffect/swh/tape_delay_1211.c index 0b680ccf2..6d78239e3 100644 --- a/plugins/LadspaEffect/swh/tape_delay_1211.c +++ b/plugins/LadspaEffect/swh/tape_delay_1211.c @@ -116,7 +116,6 @@ static void activateTapeDelay(LADSPA_Handle instance) { last_in = 0.0f; last2_in = 0.0f; last3_in = 0.0f; - sample_rate = sample_rate; z0 = 0.0f; z1 = 0.0f; z2 = 0.0f; diff --git a/plugins/LadspaEffect/swh/transient_1206.c b/plugins/LadspaEffect/swh/transient_1206.c index 782593e5e..3c591535f 100644 --- a/plugins/LadspaEffect/swh/transient_1206.c +++ b/plugins/LadspaEffect/swh/transient_1206.c @@ -97,7 +97,6 @@ static void activateTransient(LADSPA_Handle instance) { medi_track = 0.1; slow_track = 0.1; count = 0; - sample_rate = sample_rate; plugin_data->buffer = buffer; plugin_data->buffer_pos = buffer_pos; plugin_data->count = count; diff --git a/plugins/bit_invader/bit_invader.cpp b/plugins/bit_invader/bit_invader.cpp index 9cab31847..b5d3ee791 100644 --- a/plugins/bit_invader/bit_invader.cpp +++ b/plugins/bit_invader/bit_invader.cpp @@ -26,6 +26,7 @@ #include #include "bit_invader.h" +#include "base64.h" #include "engine.h" #include "graph.h" #include "InstrumentTrack.h" diff --git a/plugins/dynamics_processor/dynamics_processor_controls.cpp b/plugins/dynamics_processor/dynamics_processor_controls.cpp index e0b9cf668..bd40d9c6a 100644 --- a/plugins/dynamics_processor/dynamics_processor_controls.cpp +++ b/plugins/dynamics_processor/dynamics_processor_controls.cpp @@ -28,6 +28,7 @@ #include "dynamics_processor_controls.h" #include "dynamics_processor.h" +#include "base64.h" #include "graph.h" #include "engine.h" #include "song.h" diff --git a/plugins/nes/Nes.cpp b/plugins/nes/Nes.cpp index d6f82d0d9..791925df8 100644 --- a/plugins/nes/Nes.cpp +++ b/plugins/nes/Nes.cpp @@ -57,11 +57,10 @@ Plugin::Descriptor PLUGIN_EXPORT nes_plugin_descriptor = } -NesObject::NesObject( NesInstrument * nes, const sample_rate_t samplerate, NotePlayHandle * nph, fpp_t frames ) : +NesObject::NesObject( NesInstrument * nes, const sample_rate_t samplerate, NotePlayHandle * nph ) : m_parent( nes ), m_samplerate( samplerate ), - m_nph( nph ), - m_fpp( frames ) + m_nph( nph ) { m_pitchUpdateCounter = 0; m_pitchUpdateFreq = wavelength( 60.0f ); @@ -561,7 +560,7 @@ void NesInstrument::playNote( NotePlayHandle * n, sampleFrame * workingBuffer ) if ( n->totalFramesPlayed() == 0 || n->m_pluginData == NULL ) { - NesObject * nes = new NesObject( this, engine::mixer()->processingSampleRate(), n, engine::mixer()->framesPerPeriod() ); + NesObject * nes = new NesObject( this, engine::mixer()->processingSampleRate(), n ); n->m_pluginData = nes; } diff --git a/plugins/nes/Nes.h b/plugins/nes/Nes.h index 6a80f0974..523d006dd 100644 --- a/plugins/nes/Nes.h +++ b/plugins/nes/Nes.h @@ -81,7 +81,7 @@ class NesInstrument; class NesObject { public: - NesObject( NesInstrument * nes, const sample_rate_t samplerate, NotePlayHandle * nph, fpp_t frames ); + NesObject( NesInstrument * nes, const sample_rate_t samplerate, NotePlayHandle * nph ); virtual ~NesObject(); void renderOutput( sampleFrame * buf, fpp_t frames ); @@ -149,7 +149,6 @@ private: NesInstrument * m_parent; const sample_rate_t m_samplerate; NotePlayHandle * m_nph; - fpp_t m_fpp; int m_pitchUpdateCounter; int m_pitchUpdateFreq; diff --git a/plugins/organic/organic.h b/plugins/organic/organic.h index 186d75158..616321e90 100644 --- a/plugins/organic/organic.h +++ b/plugins/organic/organic.h @@ -160,7 +160,6 @@ private: virtual PluginView * instantiateView( QWidget * _parent ); - float m_harmonics [18]; private slots: void updateAllDetuning(); diff --git a/plugins/papu/papu_instrument.cpp b/plugins/papu/papu_instrument.cpp index 2edd1deec..d310e8051 100644 --- a/plugins/papu/papu_instrument.cpp +++ b/plugins/papu/papu_instrument.cpp @@ -29,6 +29,7 @@ #include "Basic_Gb_Apu.h" #include "papu_instrument.h" +#include "base64.h" #include "InstrumentTrack.h" #include "knob.h" #include "NotePlayHandle.h" diff --git a/plugins/watsyn/Watsyn.cpp b/plugins/watsyn/Watsyn.cpp index 602866dd2..6afe4542f 100644 --- a/plugins/watsyn/Watsyn.cpp +++ b/plugins/watsyn/Watsyn.cpp @@ -25,6 +25,7 @@ #include #include "Watsyn.h" +#include "base64.h" #include "engine.h" #include "InstrumentTrack.h" #include "templates.h" diff --git a/plugins/waveshaper/waveshaper_controls.cpp b/plugins/waveshaper/waveshaper_controls.cpp index 1fa0dc16d..7f2507eeb 100644 --- a/plugins/waveshaper/waveshaper_controls.cpp +++ b/plugins/waveshaper/waveshaper_controls.cpp @@ -28,6 +28,7 @@ #include "waveshaper_controls.h" #include "waveshaper.h" +#include "base64.h" #include "graph.h" #include "engine.h" #include "song.h" diff --git a/src/core/DataFile.cpp b/src/core/DataFile.cpp index 90d856be6..34d74936a 100644 --- a/src/core/DataFile.cpp +++ b/src/core/DataFile.cpp @@ -40,6 +40,7 @@ #include "SongEditor.h" #include "Effect.h" #include "lmmsversion.h" +#include "base64.h" // bbTCO::defaultColor() #include "bb_track.h" diff --git a/src/core/Mixer.cpp b/src/core/Mixer.cpp index c657e2d90..7c1790a2a 100644 --- a/src/core/Mixer.cpp +++ b/src/core/Mixer.cpp @@ -38,7 +38,6 @@ #include "config_mgr.h" #include "SamplePlayHandle.h" #include "PianoRoll.h" -#include "MicroTimer.h" #include "atomic_int.h" // platform-specific audio-interface-classes @@ -69,7 +68,6 @@ Mixer::Mixer() : m_inputBufferWrite( 1 ), m_readBuf( NULL ), m_writeBuf( NULL ), - m_cpuLoad( 0 ), m_workers(), m_numWorkers( QThread::idealThreadCount()-1 ), m_queueReadyWaitCond(), @@ -77,7 +75,8 @@ Mixer::Mixer() : m_masterGain( 1.0f ), m_audioDev( NULL ), m_oldAudioDev( NULL ), - m_globalMutex( QMutex::Recursive ) + m_globalMutex( QMutex::Recursive ), + m_profiler() { for( int i = 0; i < 2; ++i ) { @@ -277,7 +276,7 @@ sample_rate_t Mixer::processingSampleRate() const bool Mixer::criticalXRuns() const { - return m_cpuLoad >= 99 && engine::getSong()->isExporting() == false; + return cpuLoad() >= 99 && engine::getSong()->isExporting() == false; } @@ -315,7 +314,8 @@ void Mixer::pushInputFrames( sampleFrame * _ab, const f_cnt_t _frames ) const surroundSampleFrame * Mixer::renderNextBuffer() { - MicroTimer timer; + m_profiler.startPeriod(); + static song::playPos last_metro_pos = -1; song::playPos p = engine::getSong()->getPlayPos( @@ -428,10 +428,7 @@ const surroundSampleFrame * Mixer::renderNextBuffer() Controller::triggerFrameCounter(); AutomatableModel::incrementPeriodCounter(); - const float new_cpu_load = timer.elapsed() / 10000.0f * - processingSampleRate() / m_framesPerPeriod; - m_cpuLoad = tLimit( (int) ( new_cpu_load * 0.1f + m_cpuLoad * 0.9f ), 0, - 100 ); + m_profiler.finishPeriod( processingSampleRate(), m_framesPerPeriod ); return m_readBuf; } diff --git a/src/core/MixerProfiler.cpp b/src/core/MixerProfiler.cpp new file mode 100644 index 000000000..9e3b99d27 --- /dev/null +++ b/src/core/MixerProfiler.cpp @@ -0,0 +1,63 @@ +/* + * MixerProfiler.cpp - class for profiling performance of Mixer + * + * Copyright (c) 2014 Tobias Doerffel + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + +#include "MixerProfiler.h" + + +MixerProfiler::MixerProfiler() : + m_periodTimer(), + m_cpuLoad( 0 ), + m_outputFile() +{ +} + + + +MixerProfiler::~MixerProfiler() +{ +} + + +void MixerProfiler::finishPeriod( sample_rate_t sampleRate, fpp_t framesPerPeriod ) +{ + int periodElapsed = m_periodTimer.elapsed(); + + const float newCpuLoad = periodElapsed / 10000.0f * sampleRate / framesPerPeriod; + m_cpuLoad = qBound( 0, ( newCpuLoad * 0.1f + m_cpuLoad * 0.9f ), 100 ); + + if( m_outputFile.isOpen() ) + { + m_outputFile.write( QString( "%1\n" ).arg( periodElapsed ).toLatin1() ); + } +} + + + +void MixerProfiler::setOutputFile( const QString& outputFile ) +{ + m_outputFile.close(); + m_outputFile.setFileName( outputFile ); + m_outputFile.open( QFile::WriteOnly | QFile::Truncate ); +} + diff --git a/src/core/Plugin.cpp b/src/core/Plugin.cpp index ddd1b4922..02d725f03 100644 --- a/src/core/Plugin.cpp +++ b/src/core/Plugin.cpp @@ -1,9 +1,7 @@ -#ifndef SINGLE_SOURCE_COMPILE - /* * Plugin.cpp - implementation of plugin-class including plugin-loader * - * Copyright (c) 2005-2009 Tobias Doerffel + * Copyright (c) 2005-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -24,9 +22,10 @@ * */ -#include -#include -#include +#include +#include +#include +#include #include "Plugin.h" #include "embed.h" @@ -54,9 +53,9 @@ static Plugin::Descriptor dummy_plugin_descriptor = -Plugin::Plugin( const Descriptor * _descriptor, Model * _parent ) : +Plugin::Plugin( const Descriptor * _descriptor, Model * parent ) : JournallingObject(), - Model( _parent ), + Model( parent ), m_descriptor( _descriptor ) { if( m_descriptor == NULL ) @@ -91,89 +90,80 @@ AutomatableModel * Plugin::childModel( const QString & ) -Plugin * Plugin::instantiate( const QString & _plugin_name, Model * _parent, - void * _data ) +Plugin * Plugin::instantiate( const QString & pluginName, Model * parent, + void * data ) { - QLibrary plugin_lib( configManager::inst()->pluginDir() + - _plugin_name ); - if( plugin_lib.load() == false ) + QLibrary pluginLibrary( configManager::inst()->pluginDir() + pluginName ); + if( pluginLibrary.load() == false ) { if( engine::hasGUI() ) { QMessageBox::information( NULL, tr( "Plugin not found" ), - tr( "The plugin \"%1\" wasn't found " - "or could not be loaded!\n" - "Reason: \"%2\"" ).arg( _plugin_name ). - arg( plugin_lib.errorString() ), - QMessageBox::Ok | - QMessageBox::Default ); + tr( "The plugin \"%1\" wasn't found or could not be loaded!\nReason: \"%2\"" ). + arg( pluginName ).arg( pluginLibrary.errorString() ), + QMessageBox::Ok | QMessageBox::Default ); } return new DummyPlugin(); } - instantiationHook inst_hook = ( instantiationHook ) plugin_lib.resolve( - "lmms_plugin_main" ); - if( inst_hook == NULL ) + + InstantiationHook instantiationHook = ( InstantiationHook ) pluginLibrary.resolve( "lmms_plugin_main" ); + if( instantiationHook == NULL ) { if( engine::hasGUI() ) { QMessageBox::information( NULL, tr( "Error while loading plugin" ), - tr( "Failed to load plugin \"%1\"!" - ).arg( _plugin_name ), - QMessageBox::Ok | - QMessageBox::Default ); + tr( "Failed to load plugin \"%1\"!").arg( pluginName ), + QMessageBox::Ok | QMessageBox::Default ); } return new DummyPlugin(); } - Plugin * inst = inst_hook( _parent, _data ); + + Plugin * inst = instantiationHook( parent, data ); return inst; } -void Plugin::getDescriptorsOfAvailPlugins( DescriptorList & _plugin_descs ) +void Plugin::getDescriptorsOfAvailPlugins( DescriptorList& pluginDescriptors ) { QDir directory( configManager::inst()->pluginDir() ); #ifdef LMMS_BUILD_WIN32 - QFileInfoList list = directory.entryInfoList( - QStringList( "*.dll" ) ); + QFileInfoList list = directory.entryInfoList( QStringList( "*.dll" ) ); #else - QFileInfoList list = directory.entryInfoList( - QStringList( "lib*.so" ) ); + QFileInfoList list = directory.entryInfoList( QStringList( "lib*.so" ) ); #endif - foreach( const QFileInfo & f, list ) + foreach( const QFileInfo& f, list ) { QLibrary( f.absoluteFilePath() ).load(); } - foreach( const QFileInfo & f, list ) + foreach( const QFileInfo& f, list ) { - QLibrary plugin_lib( f.absoluteFilePath() ); - if( plugin_lib.load() == false || - plugin_lib.resolve( "lmms_plugin_main" ) == NULL ) + QLibrary pluginLibrary( f.absoluteFilePath() ); + if( pluginLibrary.load() == false || + pluginLibrary.resolve( "lmms_plugin_main" ) == NULL ) { continue; } - QString desc_name = f.fileName().section( '.', 0, 0 ) + - "_plugin_descriptor"; - if( desc_name.left( 3 ) == "lib" ) + + QString descriptorName = f.baseName() + "_plugin_descriptor"; + if( descriptorName.left( 3 ) == "lib" ) { - desc_name = desc_name.mid( 3 ); + descriptorName = descriptorName.mid( 3 ); } - Descriptor * plugin_desc = - (Descriptor *) plugin_lib.resolve( - desc_name.toUtf8().constData() ); - if( plugin_desc == NULL ) + + Descriptor* pluginDescriptor = (Descriptor *) pluginLibrary.resolve( descriptorName.toUtf8().constData() ); + if( pluginDescriptor == NULL ) { - printf( "LMMS plugin %s does not have a " - "plugin descriptor named %s!\n", - f.absoluteFilePath().toUtf8().constData(), - desc_name.toUtf8().constData() ); + qWarning() << tr( "LMMS plugin %1 does not have a plugin descriptor named %2!" ). + arg( f.absoluteFilePath() ).arg( descriptorName ); continue; } - _plugin_descs.push_back( *plugin_desc ); + + pluginDescriptors += *pluginDescriptor; } } @@ -181,9 +171,9 @@ void Plugin::getDescriptorsOfAvailPlugins( DescriptorList & _plugin_descs ) -PluginView * Plugin::createView( QWidget * _parent ) +PluginView * Plugin::createView( QWidget * parent ) { - PluginView * pv = instantiateView( _parent ); + PluginView * pv = instantiateView( parent ); if( pv != NULL ) { pv->setModel( this ); @@ -227,4 +217,3 @@ QDomElement Plugin::Descriptor::SubPluginFeatures::Key::saveXML( } -#endif diff --git a/src/core/main.cpp b/src/core/main.cpp index a9b7f78b7..0962e95ca 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -95,7 +95,7 @@ int main( int argc, char * * argv ) bool core_only = false; bool fullscreen = true; bool exit_after_import = false; - QString file_to_load, file_to_save, file_to_import, render_out; + QString file_to_load, file_to_save, file_to_import, render_out, profilerOutputFile; for( int i = 1; i < argc; ++i ) { @@ -341,6 +341,11 @@ int main( int argc, char * * argv ) exit_after_import = true; } } + else if( argc > i && ( QString( argv[i] ) == "--profile" || QString( argv[i] ) == "-p" ) ) + { + profilerOutputFile = argv[i+1]; + ++i; + } else { if( argv[i][0] == '-' ) @@ -496,6 +501,11 @@ int main( int argc, char * * argv ) SLOT( updateConsoleProgress() ) ); t->start( 200 ); + if( profilerOutputFile.isEmpty() == false ) + { + engine::mixer()->profiler().setOutputFile( profilerOutputFile ); + } + // start now! r->startProcessing(); } diff --git a/src/gui/PianoRoll.cpp b/src/gui/PianoRoll.cpp index 7a31394b0..f676d919f 100644 --- a/src/gui/PianoRoll.cpp +++ b/src/gui/PianoRoll.cpp @@ -619,70 +619,53 @@ PianoRoll::PianoRoll() : tb_layout->addWidget( m_chordComboBox ); tb_layout->addStretch(); - m_zoomingComboBox->setWhatsThis( tr( - "This controls the magnification over time. " - "It can be useful choose a magnification for a specific task. " - "For ordinary editing, the magnification should be fitted to your " - "smallest used notes. " - "Most will use the default magnification of 100%, " - "when the shortest notes are 1/16. " - "If you have used shorter notes, your editing will be easier, " - "with a magnification of 200%, or more. " - "You should use low magnification, if you need to move a block " - "of notes many bars, or just to get an overview of the score." - ) ); - - m_quantizeComboBox->setWhatsThis( tr( - "This 'Q' stands for quantification, and controls the minimum spacing " - "between notes. " - "In piano-roll this is very important, when you make syncopated patterns, " - "and an absolute must, for swing-notes! " - "Observe that the score segmentation also changes, depending on the selected Q. " - "You should not use a Q-value that does not fit your chosen time-signature! " - "The default value is 1/16, and that fits the default 4/4 timing. " - "A Q of 1/16 will also work well in most editing." - ) ); - - m_noteLenComboBox->setWhatsThis( tr( - "This lets you select the note you place in the score. " - "In most circumstances the best choice is 'Last Note'." - "The choice 'Last Note' means that LMMS will use the note you last clicked, " - "when you place the next note. " - "But you can choose any note-length from this drop-down, " - "and your choice will be the note, that you can draw in the score." - ) ); - - m_scaleComboBox->setWhatsThis( tr( - "This lets you select a music scale that LMMS then will annotate. " - "The feature is directly connected to the context-menu " - "on the virtual keyboard, to the left. " - "First you chose which scale you will use. " - "You do that in this very dropdown! " - "Then you choose the key of your composition. " - "Right mouse click on the selected key in the virtual keyboard, " - "and then choose 'Mark current Scale' " - "LMMS will annotate all notes that belongs to the chosen scale, " - "and in the key you have selected! " - "LMMS will not only annotate in the score you have open, " - "but all scores in your project, will be correctly annotated. " - "This will help you avoid using bum-notes, as you compose. " - "You should know about principle scales in music. " - "Search the net, if you do not! " - ) ); - - m_chordComboBox->setWhatsThis( tr( - "This lets you select a standard music chord. " - "All notes that are played simultaneous, are 'chords'," - "but a large number of simultaneous key combinations, has own names, " - "and its own place in music. " - "They are standard chords, and it is these chords, " - "you can find in this drop-down. " - "After you have selected a chord, any click in the score, " - "will place that chord, musically correctly, " - "and with the Left mouse clicked note, as the root-note in the chord! " - "To return to single note placement, you need to choose 'No chord' " - "in this drop-down!" - ) ); + m_zoomingComboBox->setWhatsThis( + tr( + "This controls the magnification of an axis. " + "It can be helpful to choose magnification for a specific " + "task. For ordinary editing, the magnification should be " + "fitted to your smallest notes. " + ) ); + + m_quantizeComboBox->setWhatsThis( + tr( + "The 'Q' stands for quantization, and controls the grid size " + "notes and control points snap to. " + "With smaller quantization values, you can draw shorter notes " + "in Piano Roll, and more exact control points in the " + "Automation Editor." + + ) ); + + m_noteLenComboBox->setWhatsThis( + tr( + "This lets you select the length of new notes. " + "'Last Note' means that LMMS will use the note length of " + "the note you last edited" + ) ); + + m_scaleComboBox->setWhatsThis( + tr( + "The feature is directly connected to the context-menu " + "on the virtual keyboard, to the left in Piano Roll. " + "After you have chosen the scale you want " + "in this drop-down menu, " + "you can right click on a desired key in the virtual keyboard, " + "and then choose 'Mark current Scale'. " + "LMMS will highlight all notes that belongs to the chosen scale, " + "and in the key you have selected!" + ) ); + + + m_chordComboBox->setWhatsThis( + tr( + "Let you select a chord which LMMS then can draw or highlight." + "You can find the most common chords in this drop-down menu. " + "After you have selected a chord, click anywhere to place the chord, and right " + "click on the virtual keyboard to open context menu and highlight the chord. " + "To return to single note placement, you need to choose 'No chord' " + "in this drop-down menu." + ) ); // setup our actual window setFocusPolicy( Qt::StrongFocus );