added "Recently opened files"-menu, fixed several bugs & crashes, removed obsolete plugins from build

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@529 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Tobias Doerffel
2007-08-19 23:31:01 +00:00
parent 69dcd6bbfc
commit 4648b0e21f
21 changed files with 899 additions and 243 deletions

View File

@@ -1,3 +1,58 @@
2007-08-19 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
* data/locale/de.ts:
* data/locale/de.qm:
updated German localization-file
* Makefile.am:
fixed command for updating TS-files
* include/config_mgr.h:
* include/main_window.h:
* src/core/config_mgr.cpp:
* src/core/main_window.cpp:
added support for "Recently opened files"-menu
* src/core/main_window.cpp:
- cleanups
- limit x-coordinate of a widget to be >= 0 in
mainWindow::restoreWidgetState( ... ) - fixes bug with appearently
inacccessible title-bars of piano-roll, song-editor etc. after
loading project
* include/config_mgr.h:
* src/core/engine.cpp:
also destroy config-manager at engine::destroy()
* src/audio/audio_jack.cpp:
added define for support for per-track audio-ports - almost works
except that the buffers of the audio-port are already cleared again at
the time the callback fills the buffers - will need an additional
buffer in audio-ports or something like that
* src/core/mixer.cpp:
* src/lib/journalling_object.cpp:
* src/lib/project_journal.cpp:
* src/widgets/knob.cpp:
removed debug-out
* plugins/patman/patman.cpp:
set directory of sample-selection-dialog to /usr/share/midi/freepats
if it exists
* plugins/Makefile.am:
* plugins/vibed/vibed.cpp:
* lib/src/mmp.cpp:
replaced obsolete PluckedStringSynth with Vibed
* plugins/Makefile.am:
removed Polyb302 from build as the same results can be achieved either
via (improved and maintained) LB302 or TripleOsc+filter - Polyb302
just increases redundancy and adds extra maintainance-work
* plugins/stk/mallets/mallets.cpp:
do not crash if Stk-files are missing
2007-08-18 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
* plugins/lb302/lb302.cpp:

View File

@@ -35,7 +35,7 @@ AM_CXXFLAGS := $(AM_CXXFLAGS) $(QT_CXXFLAGS)
$(MOC) -o $@ $<
%.ts:
$(LUPDATE) $(lmms_SOURCES) `find plugins/ -type f -name *.cpp` -ts data/locale/$@
$(LUPDATE) $(lmms_SOURCES) `find plugins/ -type f -name "*.cpp"` -ts data/locale/$@
%.qm: %.ts
$(LRELEASE) $<

Binary file not shown.

View File

@@ -3,7 +3,54 @@
<name>QObject</name>
<message>
<source>Note detuning</source>
<translation>Noten-Verstimmung</translation>
<translation type="obsolete">Noten-Verstimmung</translation>
</message>
</context>
<context>
<name>QWidget</name>
<message>
<source>Name: </source>
<translation> Name: </translation>
</message>
<message>
<source>Maker: </source>
<translation>Hersteller: </translation>
</message>
<message>
<source>Copyright: </source>
<translation>Copyright: </translation>
</message>
<message>
<source>Requires Real Time: </source>
<translation>Benötigt Echtzeit: </translation>
</message>
<message>
<source>Yes</source>
<translation>Ja</translation>
</message>
<message>
<source>No</source>
<translation></translation>
</message>
<message>
<source>Real Time Capable: </source>
<translation>Echtzeitfähig: </translation>
</message>
<message>
<source>In Place Broken: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Channels In: </source>
<translation>Eingangs-Kanäle: </translation>
</message>
<message>
<source>Channels Out: </source>
<translation>Ausgangs-Kanäle: </translation>
</message>
<message>
<source>File: </source>
<translation>Datei: </translation>
</message>
</context>
<context>
@@ -50,10 +97,22 @@ Wenn Sie an der Übersetzung von LMMS in eine andere Sprache interessiert sind o
Copyright (c) 2004-2006 LMMS-Developers
http://lmms.sourceforge.net</source>
<translation>LMMS - Ein leistungsfähiges Synthesizer-Studio
<translation type="obsolete">LMMS - Ein leistungsfähiges Synthesizer-Studio
Copyright (c) 2004-2006 LMMS-Entwickler
http://lmms.sourceforge.net</translation>
</message>
<message>
<source>LMMS - A powerful synthesizer-studio
Copyright (c) 2004-2007 LMMS-Developers
http://lmms.sourceforge.net</source>
<translation>LMMS - Ein leistungsfähiges Synthesizer-Studio
Copyright (c) 2004-2007 LMMS-Entwickler
http://lmms.sourceforge.net</translation>
</message>
</context>
@@ -649,6 +708,10 @@ http://lmms.sourceforge.net</translation>
<source>END</source>
<translation>ENDE</translation>
</message>
<message>
<source>Loop</source>
<translation>Wiederholen</translation>
</message>
</context>
<context>
<name>automatableButton</name>
@@ -790,6 +853,49 @@ http://lmms.sourceforge.net</translation>
<source>If you click here, move-mode will be activated. In this mode you can move the values you selected in select-mode. You can also press &apos;Shift+M&apos; on your keyboard to activate this mode.</source>
<translation>Wenn Sie hier klicken, wird der Auswahl-Verschieben-Modus aktiviert. In diesem Modus können Sie die markierten Werte verschieben. Sie können auch &apos;Umschalt+M&apos; auf Ihrer Tastatur drücken, um diesen Modus zu aktivieren.</translation>
</message>
<message>
<source>Note detuning</source>
<translation>Noten-Verstimmung</translation>
</message>
</context>
<context>
<name>bassBoosterControlDialog</name>
<message>
<source>Frequency</source>
<translation>Frequenz</translation>
</message>
<message>
<source>FREQ</source>
<translation>FREQ</translation>
</message>
<message>
<source>Frequency:</source>
<translation>Frequenz:</translation>
</message>
<message>
<source>Gain</source>
<translation>Gain</translation>
</message>
<message>
<source>GAIN</source>
<translation>GAIN</translation>
</message>
<message>
<source>Gain:</source>
<translation>Gain:</translation>
</message>
<message>
<source>Ratio</source>
<translation>Rate</translation>
</message>
<message>
<source>RATIO</source>
<translation>RATE</translation>
</message>
<message>
<source>Ratio:</source>
<translation>Rate:</translation>
</message>
</context>
<context>
<name>bbEditor</name>
@@ -1153,6 +1259,13 @@ installiert sind. Soll der Einrichtungsassistent jetzt gestartet werden?</transl
<translation>LMMS-Arbeitsverzeichnis wählen</translation>
</message>
</context>
<context>
<name>effectList</name>
<message>
<source>Description</source>
<translation>Beschreibung</translation>
</message>
</context>
<context>
<name>effectSelectDialog</name>
<message>
@@ -1793,6 +1906,69 @@ Stellen Sie sicher, dass Sie Schreibzugriff auf die gewählte Datei/Gerät haben
<translation>FX</translation>
</message>
</context>
<context>
<name>kickerInstrument</name>
<message>
<source>Start frequency</source>
<translation>Startfrequenz</translation>
</message>
<message>
<source>START</source>
<translation>START</translation>
</message>
<message>
<source>Start frequency:</source>
<translation>Startfrequenz:</translation>
</message>
<message>
<source>End frequency</source>
<translation>Endfrequenz</translation>
</message>
<message>
<source>END</source>
<translation>ENDE</translation>
</message>
<message>
<source>End frequency:</source>
<translation>Endfrequenz:</translation>
</message>
<message>
<source>Decay</source>
<translation>Abfallzeit</translation>
</message>
<message>
<source>DECAY</source>
<translation>ABFALL</translation>
</message>
<message>
<source>Decay:</source>
<translation>Abfallzeit (decay):</translation>
</message>
<message>
<source>Distortion</source>
<translation>Verzerrung</translation>
</message>
<message>
<source>DIST</source>
<translation>DIST</translation>
</message>
<message>
<source>Distortion:</source>
<translation>Verzerrung:</translation>
</message>
<message>
<source>Gain</source>
<translation>Gain</translation>
</message>
<message>
<source>GAIN</source>
<translation>GAIN</translation>
</message>
<message>
<source>Gain:</source>
<translation>Gain:</translation>
</message>
</context>
<context>
<name>knob</name>
<message>
@@ -1964,51 +2140,245 @@ Double clicking any of the plugins will bring up information on the ports.</sour
<name>ladspaSubPluginDescriptionWidget</name>
<message>
<source>Description</source>
<translation>Beschreibung</translation>
<translation type="obsolete">Beschreibung</translation>
</message>
<message>
<source>Name: </source>
<translation> Name:</translation>
<translation type="obsolete"> Name:</translation>
</message>
<message>
<source>Maker: </source>
<translation> Hersteller:</translation>
<translation type="obsolete"> Hersteller:</translation>
</message>
<message>
<source>Copyright: </source>
<translation> Copyright:</translation>
<translation type="obsolete"> Copyright:</translation>
</message>
<message>
<source>Requires Real Time: Yes</source>
<translation>Benötigt Echtzeit: ja</translation>
<translation type="obsolete">Benötigt Echtzeit: ja</translation>
</message>
<message>
<source>Requires Real Time: No</source>
<translation>Benötigt Echtzeit: nein</translation>
<translation type="obsolete">Benötigt Echtzeit: nein</translation>
</message>
<message>
<source>Real Time Capable: Yes</source>
<translation>Echtzeitfähig: ja</translation>
<translation type="obsolete">Echtzeitfähig: ja</translation>
</message>
<message>
<source>Real Time Capable: No</source>
<translation>Echtzeitfähig: nein</translation>
</message>
<message>
<source>In Place Broken: Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>In Place Broken: No</source>
<translation type="unfinished"></translation>
<translation type="obsolete">Echtzeitfähig: nein</translation>
</message>
<message>
<source>Channels In: </source>
<translation> Eingangs-Kanäle:</translation>
<translation type="obsolete"> Eingangs-Kanäle:</translation>
</message>
<message>
<source>Channels Out: </source>
<translation> Ausgangs-Kanäle:</translation>
<translation type="obsolete"> Ausgangs-Kanäle:</translation>
</message>
</context>
<context>
<name>lb302Synth</name>
<message>
<source>VCF Cutoff Frequency</source>
<translation>VCF-Kennfrequenz</translation>
</message>
<message>
<source>Cutoff Freq:</source>
<translation>Kennfrequenz:</translation>
</message>
<message>
<source>CUT</source>
<translation>FREQ</translation>
</message>
<message>
<source>VCF Resonance</source>
<translation>VCF-Resonanz</translation>
</message>
<message>
<source>Resonance:</source>
<translation>Resonanz:</translation>
</message>
<message>
<source>RES</source>
<translation>RES</translation>
</message>
<message>
<source>VCF Envelope Mod</source>
<translation>VCF-Hüllkurvenintensität</translation>
</message>
<message>
<source>Env Mod:</source>
<translation>Hüllkurven-Modulation:</translation>
</message>
<message>
<source>ENV MOD</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>VCF Envelope Decay</source>
<translation>VCF-Hüllkurvenabfallzeit</translation>
</message>
<message>
<source>Decay:</source>
<translation>Abfallzeit (decay):</translation>
</message>
<message>
<source>DEC</source>
<translation>DEC</translation>
</message>
<message>
<source>Slide</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Accent</source>
<translation>Betonung</translation>
</message>
<message>
<source>Dead</source>
<translation>Tot</translation>
</message>
<message>
<source>303-es-que, 24dB/octave, 3 pole filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Slide Decay</source>
<translation>Slide-Abfallzeit</translation>
</message>
<message>
<source>Slide Decay:</source>
<translation>Slide-Abfallzeit:</translation>
</message>
<message>
<source>SLIDE</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fine detuning of the VCO. Ranged between -100 and 100 centes.</source>
<translation>Feinverstimmung des VCOs. Bereich zwischen -100 und 100 Cents.</translation>
</message>
<message>
<source>VCO Fine Detuning:</source>
<translation>VCO Feinverstimmung:</translation>
</message>
<message>
<source>DETUNE</source>
<translation></translation>
</message>
<message>
<source>Distortion</source>
<translation>Verzerrung</translation>
</message>
<message>
<source>DIST:</source>
<translation>Verzerrung:</translation>
</message>
<message>
<source>DIST</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Waveform</source>
<translation>Wellenform</translation>
</message>
<message>
<source>WAVE:</source>
<translation type="unfinished">Wellenform:</translation>
</message>
<message>
<source>WAVE</source>
<translation>WELLE</translation>
</message>
<message>
<source>Sawtooth </source>
<translation>Sägezahn </translation>
</message>
<message>
<source>Inverted Sawtooth </source>
<translation>Invertierter Sägezahn </translation>
</message>
<message>
<source>Triangle </source>
<translation>Dreieck </translation>
</message>
<message>
<source>Square </source>
<translation>Rechteck</translation>
</message>
<message>
<source>Rounded Square </source>
<translation>Abgerundetes Reckteck</translation>
</message>
<message>
<source>Moog </source>
<translation>Moog </translation>
</message>
</context>
<context>
<name>lb303Synth</name>
<message>
<source>VCF Cutoff Frequency</source>
<translation type="obsolete">VCF-Kennfrequenz</translation>
</message>
<message>
<source>Cutoff Freq:</source>
<translation type="obsolete">Kennfreq.:</translation>
</message>
<message>
<source>VCF Resonance</source>
<translation type="obsolete">VCF-Resonanz</translation>
</message>
<message>
<source>Resonance:</source>
<translation type="obsolete">Resonanz:</translation>
</message>
<message>
<source>VCF Envelope Mod</source>
<translation type="obsolete">VCF-Hüllkurvenintensität</translation>
</message>
<message>
<source>VCF Envelope Decay</source>
<translation type="obsolete">VCF-Hüllkurvenabfallzeit</translation>
</message>
<message>
<source>Decay:</source>
<translation type="obsolete">Abfallzeit (decay):</translation>
</message>
<message>
<source>Accent</source>
<translation type="obsolete">Betonung</translation>
</message>
<message>
<source>Dead</source>
<translation type="obsolete">Tot</translation>
</message>
<message>
<source>Slide Decay</source>
<translation type="obsolete">Slide-Abfallzeit</translation>
</message>
<message>
<source>Slide Decay:</source>
<translation type="obsolete">Slide-Abfallzeit:</translation>
</message>
<message>
<source>Waveform</source>
<translation type="obsolete">Wellenform</translation>
</message>
<message>
<source>Fine detuning of the VCO. Ranged between -100 and 100 centes.</source>
<translation type="obsolete">Feinverstimmung des VCOs. Bereich zwischen -100 und 100 Cents.</translation>
</message>
<message>
<source>VCO Fine Detuning:</source>
<translation type="obsolete">VCO Feinverstimmung:</translation>
</message>
<message>
<source>Distortion</source>
<translation type="obsolete">Verzerrung</translation>
</message>
</context>
<context>
@@ -2037,6 +2407,19 @@ Double clicking any of the plugins will bring up information on the ports.</sour
<translation>--- Distributions-Dateien ---</translation>
</message>
</context>
<context>
<name>liveTool</name>
<message>
<source>This tool is intended to be used in live performances, though you can use it for music production as well.
The following keys will work only if this window is active.
The spacebar toggles play and pause in the Song Editor.
F1-F10 keys mute the first 10 instruments in the Beat+Baseline Editor.</source>
<translation>Dieses Werkzeug ist für die Verwendung in Live-Auftritten gedacht, allerdings können Sie es natürlich auch für die Musikproduktion verwenden.
Die folgenden Tasten funktionieren nur, wenn dieses Fenster im Vordergrund ist.
Leertaste wechselt zwischen Abspielen und Pause im Song-Editor.
F1-F10 schalten die ersten 10 Instrumente im Beat+Bassline-Editor stumm bzw. wieder zurück.</translation>
</message>
</context>
<context>
<name>mainWindow</name>
<message>
@@ -2133,11 +2516,11 @@ Double clicking any of the plugins will bring up information on the ports.</sour
</message>
<message>
<source>Import file</source>
<translation>Datei importieren</translation>
<translation type="obsolete">Datei importieren</translation>
</message>
<message>
<source>E&amp;xport</source>
<translation>E&amp;xportieren</translation>
<translation type="obsolete">E&amp;xportieren</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -2235,7 +2618,7 @@ Bitte besuchen Sie http://wiki.mindrules.net für Dokumentationen über LMMS.</t
</message>
<message>
<source>LADSPA Plugins...</source>
<translation>LADSPA-Plugins...</translation>
<translation type="obsolete">LADSPA-Plugins...</translation>
</message>
<message>
<source>MultiMedia Project (*.mmp *.mmpz *.xml)</source>
@@ -2245,6 +2628,26 @@ Bitte besuchen Sie http://wiki.mindrules.net für Dokumentationen über LMMS.</t
<source>MultiMedia Project (*.mmp *.mmpz);;MultiMedia Project Template (*.mpt)</source>
<translation>MultiMedia Projekt (*.mmp *.mmpz);;MultiMedia Projekt-Vorlage (*.mpt)</translation>
</message>
<message>
<source>&amp;Tools</source>
<translation>&amp;Werkzeuge</translation>
</message>
<message>
<source>Online help</source>
<translation>Online-Hilfe</translation>
</message>
<message>
<source>Recently opened projects</source>
<translation>Zuletzt geöffnete Projekte</translation>
</message>
<message>
<source>Import...</source>
<translation>Importieren...</translation>
</message>
<message>
<source>E&amp;xport...</source>
<translation>E&amp;xportieren...</translation>
</message>
</context>
<context>
<name>mallets</name>
@@ -2440,6 +2843,14 @@ Bitte besuchen Sie http://wiki.mindrules.net für Dokumentationen über LMMS.</t
<source>Tibetan Bowl</source>
<translation>Tibetanische Schüssel</translation>
</message>
<message>
<source>Missing files</source>
<translation>Fehlende Dateien</translation>
</message>
<message>
<source>Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed!</source>
<translation>Ihre Stk-Installation scheint unvollständig zu sein. Bitte stellen Sie sicher, dass das volle Stk-Paket installiert ist!</translation>
</message>
</context>
<context>
<name>meterDialog</name>
@@ -2601,6 +3012,53 @@ Bitte besuchen Sie http://wiki.mindrules.net für Dokumentationen über LMMS.</t
<translation>Würfeln</translation>
</message>
</context>
<context>
<name>patmanSynth</name>
<message>
<source>Open other patch</source>
<translation>Andere Patch-Datei öffnen</translation>
</message>
<message>
<source>Click here to open another patch-file. Loop and Tune settings are not reset.</source>
<translation>Klicken Sie hier, um eine andere Patch-Datei zu laden. Wiederholungs- und Stimmungseinstellungen werden nicht zurückgesetzt.</translation>
</message>
<message>
<source>Loop</source>
<translation>Wiederholen</translation>
</message>
<message>
<source>Loop mode</source>
<translation>Modus beim Wiederholen</translation>
</message>
<message>
<source>Here you can toggle the Loop mode. If enabled, PatMan will use the loop information available in the file.</source>
<translation>Hier können Sie den Wiederholen-Modus (de-)aktivieren. Wenn aktiviert, verwendet PatMan die in der Datei verfügbaren Informationen zum Wiederholen.</translation>
</message>
<message>
<source>Tune</source>
<translation>Stimmung</translation>
</message>
<message>
<source>Tune mode</source>
<translation>Stimmungsmodus</translation>
</message>
<message>
<source>Here you can toggle the Tune mode. If enabled, PatMan will tune the sample to match the note&apos;s frequency.</source>
<translation>Hier können Sie den Stimmungs-Modus (de-)aktivieren. Wenn aktiviert, wird der Klang automatisch an die Frequenz der Note angepasst.</translation>
</message>
<message>
<source>No file selected</source>
<translation>Keine Datei ausgewählt</translation>
</message>
<message>
<source>Open patch file</source>
<translation>Patch-Datei öffnen</translation>
</message>
<message>
<source>Patch-Files (*.pat)</source>
<translation>Patch-Dateien (*.pat)</translation>
</message>
</context>
<context>
<name>pattern</name>
<message>
@@ -2671,11 +3129,11 @@ Lautstärke eines Steps kann mit Mausrad geändert werden</translation>
</message>
<message>
<source>Pattern muted</source>
<translation>Pattern stummgeschaltet</translation>
<translation type="obsolete">Pattern stummgeschaltet</translation>
</message>
<message>
<source>The track this pattern belongs to or the pattern itself is currently muted therefore freezing makes no sense! Do you still want to continue?</source>
<translation>Die Spur, zu der dieser Pattern gehört oder dieser Pattern selbst sind derzeit stummgeschaltet, weshalb das Einfrieren keinen Sinn ergibt. Wollen Sie trotzdem fortfahren?</translation>
<translation type="obsolete">Die Spur, zu der dieser Pattern gehört oder dieser Pattern selbst sind derzeit stummgeschaltet, weshalb das Einfrieren keinen Sinn ergibt. Wollen Sie trotzdem fortfahren?</translation>
</message>
</context>
<context>
@@ -2890,7 +3348,7 @@ Lautstärke eines Steps kann mit Mausrad geändert werden</translation>
</message>
<message>
<source>Rough &amp; Dirty Wavetable Synthesizer.</source>
<translation type="unfinished"></translation>
<translation>Einfacher &amp; roher Wavetable-Synthesizer.</translation>
</message>
<message>
<source>You can drag an instrument-plugin into either the Song-Editor, the Beat+Baseline Editor or just into a channel-window or on the corresponding channel-button.</source>
@@ -2928,6 +3386,26 @@ Lautstärke eines Steps kann mit Mausrad geändert werden</translation>
<source>plugin for using arbitrary VST-effects inside LMMS.</source>
<translation>Plugin um beliebige VST-Effekte in LMMS nutzen zu können.</translation>
</message>
<message>
<source>Incomplete monophonic immitation tb303</source>
<translation>Unvollständiger monophonischer TB303-Klon</translation>
</message>
<message>
<source>versatile kick- &amp; bassdrum-synthesizer</source>
<translation>Vielfältiger Kick- &amp; Bassdrum-Synthesizer</translation>
</message>
<message>
<source>GUS-compatible patch instrument</source>
<translation>GUS-kompatibles Patch-Instrument</translation>
</message>
<message>
<source>Singer bot to add some basic vocals</source>
<translation>Künstlicher Sänger für ein paar einfache Vokale</translation>
</message>
<message>
<source>Tool for live performance</source>
<translation>Werkzeug für Live-Auftritte</translation>
</message>
</context>
<context>
<name>projectNotes</name>
@@ -3104,7 +3582,7 @@ Lautstärke eines Steps kann mit Mausrad geändert werden</translation>
</message>
<message>
<source>Controls</source>
<translation type="unfinished">Eigensch.</translation>
<translation>Regler</translation>
</message>
<message>
<source>Effect plugins function as a chained series of effects where the signal will be processed from top to bottom.
@@ -3199,12 +3677,20 @@ Wenn es mit anderer VST-software unter Linux funktioniert, kontaktieren Sie bitt
</message>
<message>
<source>All Audio-Files (*.wav *.ogg *.flac *.voc *.aif *.aiff *.au *.raw)</source>
<translation>Alle Audio-Dateien (*.wav *.ogg *.flac *.voc *.aif *.aiff *.au *.raw)</translation>
<translation type="obsolete">Alle Audio-Dateien (*.wav *.ogg *.flac *.voc *.aif *.aiff *.au *.raw)</translation>
</message>
<message>
<source>FLAC-Files (*.flac)</source>
<translation>FLAC-Dateien (*.flac)</translation>
</message>
<message>
<source>All Audio-Files (*.wav *.ogg *.flac *.spx *.voc *.aif *.aiff *.au *.raw)</source>
<translation>Alle Audio-Dateien (*.wav *.ogg *.flac *.spx *.voc *.aif *.aiff *.au *.raw)</translation>
</message>
<message>
<source>SPEEX-Files (*.spx)</source>
<translation>SPEEX-Dateien (*.spx)</translation>
</message>
</context>
<context>
<name>sampleTCO</name>
@@ -3410,7 +3896,7 @@ Latenz: %2 ms</translation>
</message>
<message>
<source>SMP-level</source>
<translation>SMP-Level</translation>
<translation type="obsolete">SMP-Level</translation>
</message>
<message>
<source>If you have a machine with more then one processor (e.g. dual-core systems) you should use a parallelizing-level above 1 which means that LMMS will try to split up sound-processing into several threads which should should be run on several cores by the underlaying operating-system.
@@ -4377,15 +4863,15 @@ Die LED rechts unterhalb der Wellenform gibt an, ob die Saite aktiviert ist.</tr
<name>vstSubPluginDescriptionWidget</name>
<message>
<source>Description</source>
<translation>Beschreibung</translation>
<translation type="obsolete">Beschreibung</translation>
</message>
<message>
<source>Name: </source>
<translation> Name:</translation>
<translation type="obsolete"> Name:</translation>
</message>
<message>
<source>File: </source>
<translation> Datei:</translation>
<translation type="obsolete"> Datei:</translation>
</message>
</context>
</TS>

View File

@@ -1,129 +1,132 @@
<?xml version="1.0"?>
<!DOCTYPE multimedia-project>
<multimediaproject creator="Linux MultiMedia Studio (LMMS)" creatorversion="0.0.9beta2" type="song" version="1.0" >
<head>
<bpm value="130" />
<mastervol value="86" />
<masterpitch value="0" />
</head>
<song>
<trackcontainer type="songeditor" >
<track muted="0" type="1" >
<bbtrack name="Beat/Baseline 0" >
<trackcontainer type="bbeditor" >
<track muted="0" type="0" >
<channeltrack surpos="134219776" fxch="0" baseoct="3" vol="25" name="Crystallo" basetone="9" tab="1" >
<tripleoscillator userwavefile1="samples/empty.wav" wavetype1="4" coarse1="0" userwavefile2="samples/empty.wav" wavetype2="5" coarse2="12" vol0="80" vol1="90" finel0="0" vol2="100" finel1="0" finel2="0" modalgo1="2" stphdetun0="316" pan0="0" modalgo2="2" stphdetun1="94" pan1="0" stphdetun2="269" pan2="0" phoffset0="0" phoffset1="112" phoffset2="36" finer0="0" finer1="0" finer2="0" userwavefile0="samples/empty.wav" wavetype0="5" coarse0="12" />
<eldata fres="2.54" ftype="7" fcut="2172" fwet="1" >
<elvol lpdel="0" amt="1" rel="0.359" latt="0" sus="0.286" lspd="0.0917" att="0.043" pdel="0" lamt="0" dec="0.571" x100="0" lshp="0" hold="0" />
<elcut lpdel="0" amt="1" rel="0" latt="0" sus="0.999" lspd="0.06" att="0.275" pdel="0" lamt="-1" dec="0.177" x100="0" lshp="2" hold="0" />
<elres lpdel="0" amt="0" rel="0.1" latt="0" sus="0.5" lspd="0.01" att="0" pdel="0" lamt="0" dec="0.5" x100="0" lshp="1" hold="0" />
</eldata>
<arpandchords chordrange="1" arprange="1" chord="0" arpgate="100" arp="0" arptime="100" arpdir="0" />
</channeltrack>
<pattern type="1" name="Crystallo" pos="0" frozen="0" len="576" >
<note tone="8" pan="0" oct="1" vol="100" pos="0" len="16" />
<note tone="3" pan="0" oct="3" vol="100" pos="0" len="40" />
<note tone="8" pan="0" oct="3" vol="100" pos="8" len="32" />
<note tone="3" pan="0" oct="1" vol="100" pos="16" len="16" />
<note tone="3" pan="0" oct="4" vol="100" pos="16" len="16" />
<note tone="1" pan="0" oct="4" vol="100" pos="24" len="16" />
<note tone="3" pan="0" oct="2" vol="100" pos="32" len="16" />
<note tone="11" pan="0" oct="3" vol="100" pos="32" len="16" />
<note tone="10" pan="0" oct="3" vol="100" pos="40" len="16" />
<note tone="8" pan="0" oct="1" vol="100" pos="48" len="16" />
<note tone="6" pan="0" oct="3" vol="100" pos="48" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="56" len="16" />
<note tone="3" pan="0" oct="1" vol="100" pos="64" len="16" />
<note tone="3" pan="0" oct="3" vol="100" pos="64" len="32" />
<note tone="8" pan="0" oct="3" vol="100" pos="72" len="24" />
<note tone="8" pan="0" oct="1" vol="100" pos="80" len="16" />
<note tone="3" pan="0" oct="3" vol="100" pos="128" len="40" />
<note tone="8" pan="0" oct="1" vol="100" pos="128" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="136" len="32" />
<note tone="3" pan="0" oct="4" vol="100" pos="144" len="16" />
<note tone="3" pan="0" oct="1" vol="100" pos="144" len="16" />
<note tone="1" pan="0" oct="4" vol="100" pos="152" len="16" />
<note tone="11" pan="0" oct="3" vol="100" pos="160" len="16" />
<note tone="3" pan="0" oct="2" vol="100" pos="160" len="16" />
<note tone="10" pan="0" oct="3" vol="100" pos="168" len="16" />
<note tone="6" pan="0" oct="3" vol="100" pos="176" len="16" />
<note tone="8" pan="0" oct="1" vol="100" pos="176" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="184" len="16" />
<note tone="3" pan="0" oct="3" vol="100" pos="192" len="32" />
<note tone="3" pan="0" oct="1" vol="100" pos="192" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="200" len="24" />
<note tone="8" pan="0" oct="1" vol="100" pos="208" len="16" />
<note tone="8" pan="0" oct="1" vol="100" pos="256" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="256" len="16" />
<note tone="11" pan="0" oct="3" vol="100" pos="264" len="16" />
<note tone="3" pan="0" oct="1" vol="100" pos="272" len="16" />
<note tone="3" pan="0" oct="4" vol="100" pos="272" len="16" />
<note tone="8" pan="0" oct="4" vol="100" pos="280" len="16" />
<note tone="11" pan="0" oct="0" vol="100" pos="288" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="288" len="16" />
<note tone="11" pan="0" oct="3" vol="100" pos="296" len="16" />
<note tone="3" pan="0" oct="1" vol="100" pos="304" len="16" />
<note tone="3" pan="0" oct="4" vol="100" pos="304" len="16" />
<note tone="8" pan="0" oct="4" vol="100" pos="312" len="16" />
<note tone="8" pan="0" oct="1" vol="100" pos="320" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="320" len="16" />
<note tone="11" pan="0" oct="3" vol="100" pos="328" len="16" />
<note tone="3" pan="0" oct="1" vol="100" pos="336" len="16" />
<note tone="3" pan="0" oct="4" vol="100" pos="336" len="16" />
<note tone="6" pan="0" oct="4" vol="100" pos="344" len="16" />
<note tone="8" pan="0" oct="1" vol="100" pos="352" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="352" len="16" />
<note tone="11" pan="0" oct="3" vol="100" pos="360" len="16" />
<note tone="8" pan="0" oct="0" vol="100" pos="368" len="16" />
<note tone="3" pan="0" oct="4" vol="100" pos="368" len="16" />
<note tone="6" pan="0" oct="4" vol="100" pos="376" len="16" />
<note tone="4" pan="0" oct="1" vol="100" pos="384" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="384" len="16" />
<note tone="11" pan="0" oct="3" vol="100" pos="392" len="16" />
<note tone="8" pan="0" oct="1" vol="100" pos="400" len="16" />
<note tone="3" pan="0" oct="4" vol="100" pos="400" len="16" />
<note tone="4" pan="0" oct="4" vol="100" pos="408" len="16" />
<note tone="1" pan="0" oct="1" vol="100" pos="416" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="416" len="16" />
<note tone="11" pan="0" oct="3" vol="100" pos="424" len="16" />
<note tone="3" pan="0" oct="1" vol="100" pos="432" len="16" />
<note tone="3" pan="0" oct="4" vol="100" pos="432" len="16" />
<note tone="4" pan="0" oct="4" vol="100" pos="440" len="16" />
<note tone="6" pan="0" oct="1" vol="100" pos="448" len="16" />
<note tone="6" pan="0" oct="3" vol="100" pos="448" len="16" />
<note tone="10" pan="0" oct="3" vol="100" pos="456" len="16" />
<note tone="1" pan="0" oct="1" vol="100" pos="464" len="16" />
<note tone="1" pan="0" oct="4" vol="100" pos="464" len="16" />
<note tone="4" pan="0" oct="4" vol="100" pos="472" len="16" />
<note tone="4" pan="0" oct="1" vol="100" pos="480" len="16" />
<note tone="6" pan="0" oct="3" vol="100" pos="480" len="16" />
<note tone="10" pan="0" oct="3" vol="100" pos="488" len="16" />
<note tone="3" pan="0" oct="1" vol="100" pos="496" len="16" />
<note tone="1" pan="0" oct="4" vol="100" pos="496" len="16" />
<note tone="4" pan="0" oct="4" vol="100" pos="504" len="16" />
<note tone="8" pan="0" oct="1" vol="100" pos="512" len="16" />
<note tone="3" pan="0" oct="3" vol="100" pos="512" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="520" len="16" />
<note tone="3" pan="0" oct="1" vol="100" pos="528" len="16" />
<note tone="11" pan="0" oct="3" vol="100" pos="528" len="16" />
<note tone="3" pan="0" oct="4" vol="100" pos="536" len="16" />
<note tone="8" pan="0" oct="1" vol="100" pos="544" len="16" />
<note tone="3" pan="0" oct="3" vol="100" pos="544" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="552" len="16" />
<note tone="8" pan="0" oct="0" vol="100" pos="560" len="16" />
<note tone="11" pan="0" oct="3" vol="100" pos="560" len="16" />
<note tone="8" pan="0" oct="3" vol="100" pos="568" len="8" />
</pattern>
</track>
</trackcontainer>
</bbtrack>
<bbtco name="Beat/Baseline 0" color="4282417407" pos="0" len="576" />
<multimedia-project creator="Linux MultiMedia Studio (LMMS)" creatorversion="0.3.0-rc2" type="song" version="1.0" >
<head masterpitch="0" bpm="130" mastervol="86" />
<song>
<trackcontainer width="680" x="54" y="-3" height="300" type="songeditor" visible="1" >
<track muted="0" height="32" type="1" >
<bbtrack icon="" name="Beat/Baseline 0" >
<trackcontainer width="504" x="93" y="259" height="300" type="bbeditor" visible="1" >
<track muted="0" height="32" type="0" >
<instrumenttrack width="250" x="444" surpos-x="0" y="38" surpos-y="0" fxch="0" height="436" basenote="45" vol="15" name="Crystallo" tab="1" visible="1" >
<tripleoscillator userwavefile1="samples/empty.wav" wavetype1="4" coarse1="0" userwavefile2="samples/empty.wav" wavetype2="5" coarse2="12" vol0="80" vol1="90" finel0="0" vol2="100" finel1="0" finel2="0" modalgo1="2" stphdetun0="316" pan0="0" modalgo2="2" stphdetun1="94" pan1="0" stphdetun2="269" pan2="0" phoffset0="0" phoffset1="112" phoffset2="36" finer0="0" finer1="0" finer2="0" userwavefile0="samples/empty.wav" wavetype0="5" coarse0="12" />
<eldata fres="2.54" ftype="7" fcut="2172" fwet="1" >
<elvol lspd_numerator="1" lpdel="0" amt="1" rel="0.359" ctlenvamt="0" latt="0" syncmode="0" sus="0.286" lspd_denominator="1" lspd="0.0917" att="0.043" pdel="0" lamt="0" dec="0.571" userwavefile="" x100="0" lshp="0" hold="0" />
<elcut lspd_numerator="1" lpdel="0" amt="1" rel="0" ctlenvamt="0" latt="0" syncmode="0" sus="0.999" lspd_denominator="1" lspd="0.06" att="0.275" pdel="0" lamt="-0.44" dec="0.177" userwavefile="" x100="0" lshp="1" hold="0" />
<elres lspd_numerator="1" lpdel="0" amt="0" rel="0.1" ctlenvamt="0" latt="0" syncmode="0" sus="0.5" lspd_denominator="1" lspd="0.01" att="0" pdel="0" lamt="0" dec="0.5" userwavefile="" x100="0" lshp="1" hold="0" />
</eldata>
<arpandchords arpmode="0" chordrange="1" arp-enabled="0" arptime_numerator="1" arprange="1" chord-enabled="1" arptime_denominator="1" chord="0" syncmode="0" arpgate="100" arp="0" arptime="100" arpdir="0" />
<midi defvelout="0" inputchannel="0" outputchannel="1" receive="0" send="0" defvelin="0" />
<fx fxdisabled="1" >
<rack numofeffects="0" />
</fx>
</instrumenttrack>
<pattern steps="16" muted="0" type="1" name="Crystallo" pos="0" frozen="0" len="576" >
<note tone="8" pan="0" oct="1" detuning="0" vol="100" pos="0" len="16" />
<note tone="3" pan="0" oct="3" detuning="0" vol="100" pos="0" len="40" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="8" len="32" />
<note tone="3" pan="0" oct="1" detuning="0" vol="100" pos="16" len="16" />
<note tone="3" pan="0" oct="4" detuning="0" vol="100" pos="16" len="16" />
<note tone="1" pan="0" oct="4" detuning="0" vol="100" pos="24" len="16" />
<note tone="3" pan="0" oct="2" detuning="0" vol="100" pos="32" len="16" />
<note tone="11" pan="0" oct="3" detuning="0" vol="100" pos="32" len="16" />
<note tone="10" pan="0" oct="3" detuning="0" vol="100" pos="40" len="16" />
<note tone="8" pan="0" oct="1" detuning="0" vol="100" pos="48" len="16" />
<note tone="6" pan="0" oct="3" detuning="0" vol="100" pos="48" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="56" len="16" />
<note tone="3" pan="0" oct="1" detuning="0" vol="100" pos="64" len="16" />
<note tone="3" pan="0" oct="3" detuning="0" vol="100" pos="64" len="32" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="72" len="24" />
<note tone="8" pan="0" oct="1" detuning="0" vol="100" pos="80" len="16" />
<note tone="3" pan="0" oct="3" detuning="0" vol="100" pos="128" len="40" />
<note tone="8" pan="0" oct="1" detuning="0" vol="100" pos="128" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="136" len="32" />
<note tone="3" pan="0" oct="4" detuning="0" vol="100" pos="144" len="16" />
<note tone="3" pan="0" oct="1" detuning="0" vol="100" pos="144" len="16" />
<note tone="1" pan="0" oct="4" detuning="0" vol="100" pos="152" len="16" />
<note tone="11" pan="0" oct="3" detuning="0" vol="100" pos="160" len="16" />
<note tone="3" pan="0" oct="2" detuning="0" vol="100" pos="160" len="16" />
<note tone="10" pan="0" oct="3" detuning="0" vol="100" pos="168" len="16" />
<note tone="6" pan="0" oct="3" detuning="0" vol="100" pos="176" len="16" />
<note tone="8" pan="0" oct="1" detuning="0" vol="100" pos="176" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="184" len="16" />
<note tone="3" pan="0" oct="3" detuning="0" vol="100" pos="192" len="32" />
<note tone="3" pan="0" oct="1" detuning="0" vol="100" pos="192" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="200" len="24" />
<note tone="8" pan="0" oct="1" detuning="0" vol="100" pos="208" len="16" />
<note tone="8" pan="0" oct="1" detuning="0" vol="100" pos="256" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="256" len="16" />
<note tone="11" pan="0" oct="3" detuning="0" vol="100" pos="264" len="16" />
<note tone="3" pan="0" oct="1" detuning="0" vol="100" pos="272" len="16" />
<note tone="3" pan="0" oct="4" detuning="0" vol="100" pos="272" len="16" />
<note tone="8" pan="0" oct="4" detuning="0" vol="100" pos="280" len="16" />
<note tone="11" pan="0" oct="0" detuning="0" vol="100" pos="288" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="288" len="16" />
<note tone="11" pan="0" oct="3" detuning="0" vol="100" pos="296" len="16" />
<note tone="3" pan="0" oct="1" detuning="0" vol="100" pos="304" len="16" />
<note tone="3" pan="0" oct="4" detuning="0" vol="100" pos="304" len="16" />
<note tone="8" pan="0" oct="4" detuning="0" vol="100" pos="312" len="16" />
<note tone="8" pan="0" oct="1" detuning="0" vol="100" pos="320" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="320" len="16" />
<note tone="11" pan="0" oct="3" detuning="0" vol="100" pos="328" len="16" />
<note tone="3" pan="0" oct="1" detuning="0" vol="100" pos="336" len="16" />
<note tone="3" pan="0" oct="4" detuning="0" vol="100" pos="336" len="16" />
<note tone="6" pan="0" oct="4" detuning="0" vol="100" pos="344" len="16" />
<note tone="8" pan="0" oct="1" detuning="0" vol="100" pos="352" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="352" len="16" />
<note tone="11" pan="0" oct="3" detuning="0" vol="100" pos="360" len="16" />
<note tone="8" pan="0" oct="0" detuning="0" vol="100" pos="368" len="16" />
<note tone="3" pan="0" oct="4" detuning="0" vol="100" pos="368" len="16" />
<note tone="6" pan="0" oct="4" detuning="0" vol="100" pos="376" len="16" />
<note tone="4" pan="0" oct="1" detuning="0" vol="100" pos="384" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="384" len="16" />
<note tone="11" pan="0" oct="3" detuning="0" vol="100" pos="392" len="16" />
<note tone="8" pan="0" oct="1" detuning="0" vol="100" pos="400" len="16" />
<note tone="3" pan="0" oct="4" detuning="0" vol="100" pos="400" len="16" />
<note tone="4" pan="0" oct="4" detuning="0" vol="100" pos="408" len="16" />
<note tone="1" pan="0" oct="1" detuning="0" vol="100" pos="416" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="416" len="16" />
<note tone="11" pan="0" oct="3" detuning="0" vol="100" pos="424" len="16" />
<note tone="3" pan="0" oct="1" detuning="0" vol="100" pos="432" len="16" />
<note tone="3" pan="0" oct="4" detuning="0" vol="100" pos="432" len="16" />
<note tone="4" pan="0" oct="4" detuning="0" vol="100" pos="440" len="16" />
<note tone="6" pan="0" oct="1" detuning="0" vol="100" pos="448" len="16" />
<note tone="6" pan="0" oct="3" detuning="0" vol="100" pos="448" len="16" />
<note tone="10" pan="0" oct="3" detuning="0" vol="100" pos="456" len="16" />
<note tone="1" pan="0" oct="1" detuning="0" vol="100" pos="464" len="16" />
<note tone="1" pan="0" oct="4" detuning="0" vol="100" pos="464" len="16" />
<note tone="4" pan="0" oct="4" detuning="0" vol="100" pos="472" len="16" />
<note tone="4" pan="0" oct="1" detuning="0" vol="100" pos="480" len="16" />
<note tone="6" pan="0" oct="3" detuning="0" vol="100" pos="480" len="16" />
<note tone="10" pan="0" oct="3" detuning="0" vol="100" pos="488" len="16" />
<note tone="3" pan="0" oct="1" detuning="0" vol="100" pos="496" len="16" />
<note tone="1" pan="0" oct="4" detuning="0" vol="100" pos="496" len="16" />
<note tone="4" pan="0" oct="4" detuning="0" vol="100" pos="504" len="16" />
<note tone="8" pan="0" oct="1" detuning="0" vol="100" pos="512" len="16" />
<note tone="3" pan="0" oct="3" detuning="0" vol="100" pos="512" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="520" len="16" />
<note tone="3" pan="0" oct="1" detuning="0" vol="100" pos="528" len="16" />
<note tone="11" pan="0" oct="3" detuning="0" vol="100" pos="528" len="16" />
<note tone="3" pan="0" oct="4" detuning="0" vol="100" pos="536" len="16" />
<note tone="8" pan="0" oct="1" detuning="0" vol="100" pos="544" len="16" />
<note tone="3" pan="0" oct="3" detuning="0" vol="100" pos="544" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="552" len="16" />
<note tone="8" pan="0" oct="0" detuning="0" vol="100" pos="560" len="16" />
<note tone="11" pan="0" oct="3" detuning="0" vol="100" pos="560" len="16" />
<note tone="8" pan="0" oct="3" detuning="0" vol="100" pos="568" len="8" />
</pattern>
</track>
</trackcontainer>
<projectnotes><![CDATA[<html><head><meta name="qrichtext" content="1" /></head><body style="font-size:11pt;font-family:Bitstream Vera Sans">
</trackcontainer>
</bbtrack>
<bbtco muted="0" name="Beat/Baseline 0" color="4282417407" pos="0" len="576" />
</track>
</trackcontainer>
<pianoroll width="640" x="447" y="378" height="480" visible="0" />
<automation-editor width="640" x="471" y="422" height="480" visible="0" />
<projectnotes width="369" x="342" y="321" height="200" visible="1" ><![CDATA[<html><head><meta name="qrichtext" content="1" /></head><body style="font-size:9pt;font-family:Sans Serif">
<p><span style="color:#00aaff">Some mystic gis-minor sounds...</span></p>
</body></html>
]]></projectnotes>
</song>
</multimediaproject>
<timeline lp1pos="64" lp0pos="0" lpstate="0" />
</song>
</multimedia-project>

View File

@@ -169,6 +169,13 @@ public:
}
#endif
inline const QStringList & recentlyOpenedProjects( void ) const
{
return( m_recentlyOpenedProjects );
}
void addRecentlyOpenedProject( const QString & _file );
const QString & value( const QString & _class,
const QString & _attribute ) const;
void setValue( const QString & _class, const QString & _attribute,
@@ -227,6 +234,8 @@ private:
#ifdef HAVE_STK_H
QString m_stkDir;
#endif
QStringList m_recentlyOpenedProjects;
typedef vvector<QPair<QString, QString> > stringPairVector;
typedef QMap<QString, stringPairVector> settingsMap;
@@ -257,6 +266,9 @@ private:
QHBoxLayout * m_mainLayout;
QVBoxLayout * m_contentLayout;
friend class engine;
} ;
#endif

View File

@@ -110,14 +110,15 @@ public slots:
}
void createNewProject( void );
void createNewProjectFromTemplate( QAction * _idx );
void createNewProjectFromTemplate( int _idx );
void createNewProjectFromTemplate( int _id );
void openProject( void );
void updateRecentlyOpenedProjectsMenu( void );
void openRecentlyOpenedProject( int );
bool saveProject( void );
bool saveProjectAs( void );
void showSettingsDialog( void );
void aboutLMMS( void );
void help( void );
// void ladspaPluginBrowser( void );
void toggleAutomationEditorWin( void );
void toggleBBEditorWin( void );
void toggleSongEditorWin( void );
@@ -151,6 +152,7 @@ private:
QGridLayout * m_toolBarLayout;
QMenu * m_templatesMenu;
QMenu * m_recentlyOpenedProjectsMenu;
int m_custom_templates_count;
struct keyModifiers

View File

@@ -26,8 +26,6 @@ SUBDIRS = \
midi_import \
organic \
patman \
plucked_string_synth \
polyb302 \
$(SINGERBOT_DIR) \
$(STK_DIR) \
triple_oscillator \

View File

@@ -372,7 +372,15 @@ void patmanSynth::openFile( void )
if( m_patchFile == "" )
{
ofd.setDirectory( configManager::inst()->userSamplesDir() );
if( QDir( "/usr/share/midi/freepats" ).exists() )
{
ofd.setDirectory( "/usr/share/midi/freepats" );
}
else
{
ofd.setDirectory(
configManager::inst()->userSamplesDir() );
}
}
else if( QFileInfo( m_patchFile ).isRelative() )
{

View File

@@ -32,6 +32,8 @@
#else
#include <qdom.h>
#include <qmessagebox.h>
#include <qdir.h>
#endif
@@ -70,24 +72,40 @@ plugin::descriptor malletsstk_plugin_descriptor =
}
mallets::mallets( instrumentTrack * _channel_track ) :
instrument( _channel_track, &malletsstk_plugin_descriptor )
mallets::mallets( instrumentTrack * _instrument_track ) :
instrument( _instrument_track, &malletsstk_plugin_descriptor ),
m_filesMissing( TRUE )
{
m_modalBarWidget = setupModalBarControls( this, _channel_track );
m_filesMissing =
!QDir( configManager::inst()->stkDir() ).exists() ||
!QFileInfo( configManager::inst()->stkDir()+QDir::separator()
+ "sinewave.raw" ).exists();
#if 0
// for some reason this crashes...???
if( m_filesMissing )
{
QMessageBox::information( 0, tr( "Missing files" ),
tr( "Your Stk-installation seems to be "
"incomplete. Please make sure "
"the full Stk-package is installed!" ),
QMessageBox::Ok );
}
#endif
m_modalBarWidget = setupModalBarControls( this, _instrument_track );
setWidgetBackground( m_modalBarWidget, "artwork" );
m_tubeBellWidget = setupTubeBellControls( this, _channel_track );
m_tubeBellWidget = setupTubeBellControls( this, _instrument_track );
setWidgetBackground( m_tubeBellWidget, "artwork" );
m_tubeBellWidget->hide();
m_bandedWGWidget = setupBandedWGControls( this, _channel_track );
m_bandedWGWidget = setupBandedWGControls( this, _instrument_track );
setWidgetBackground( m_bandedWGWidget, "artwork" );
m_bandedWGWidget->hide();
m_presets = setupPresets( this, _channel_track );
m_presets = setupPresets( this, _instrument_track );
m_spread = new knob( knobBright_26, this, tr( "Spread" ),
_channel_track );
_instrument_track );
m_spread->setLabel( tr( "Spread" ) );
m_spread->setRange( 0, 255, 1 );
m_spread->setInitValue( 0 );
@@ -390,6 +408,11 @@ QString mallets::nodeName( void ) const
void mallets::playNote( notePlayHandle * _n, bool )
{
if( m_filesMissing )
{
return;
}
int p = m_presets->value();
const float freq = _n->frequency();

View File

@@ -172,7 +172,9 @@ private:
vvector<sample_t> m_scalers;
sampleFrame * m_buffer;
};
bool m_filesMissing;
} ;
#endif

View File

@@ -480,7 +480,8 @@ void vibed::loadSettings( const QDomElement & _this )
name = "active" + QString::number( i );
m_editors[i]->setOn( _this.attribute( name ).toInt() );
if( m_editors[i]->isOn() )
if( m_editors[i]->isOn() &&
_this.hasAttribute( "volume" + QString::number( i ) ) )
{
name = "volume" + QString::number( i );
m_volumeKnobs[i]->loadSettings( _this, name );

View File

@@ -279,8 +279,8 @@ void audioJACK::stopProcessing( void )
void audioJACK::registerPort( audioPort * _port )
{
return;
/* // make sure, port is not already registered
#ifdef AUDIO_PORT_SUPPORT
// make sure, port is not already registered
unregisterPort( _port );
const QString name[2] = { _port->name() + " L",
_port->name() + " R" } ;
@@ -296,7 +296,8 @@ void audioJACK::registerPort( audioPort * _port )
#endif
JACK_DEFAULT_AUDIO_TYPE,
JackPortIsOutput, 0 );
}*/
}
#endif
}
@@ -304,8 +305,8 @@ void audioJACK::registerPort( audioPort * _port )
void audioJACK::unregisterPort( audioPort * _port )
{
return;
/* if( m_portMap.contains( _port ) )
#ifdef AUDIO_PORT_SUPPORT
if( m_portMap.contains( _port ) )
{
for( Uint8 ch = 0; ch < DEFAULT_CHANNELS; ++ch )
{
@@ -316,7 +317,8 @@ void audioJACK::unregisterPort( audioPort * _port )
}
}
m_portMap.erase( m_portMap.find( _port ) );
}*/
}
#endif
}
@@ -324,8 +326,8 @@ void audioJACK::unregisterPort( audioPort * _port )
void audioJACK::renamePort( audioPort * _port )
{
return;
/* if( m_portMap.contains( _port ) )
#ifdef AUDIO_PORT_SUPPORT
if( m_portMap.contains( _port ) )
{
const QString name[2] = { _port->name() + " L",
_port->name() + " R" };
@@ -340,7 +342,8 @@ void audioJACK::renamePort( audioPort * _port )
#endif
) ;
}
}*/
}
#endif
}
@@ -368,12 +371,13 @@ int audioJACK::processCallback( jack_nframes_t _nframes, void * _udata )
_this->m_outputPorts[chnl], _nframes );
}
/* const Uint32 frames = tMin<Uint32>( _nframes,
getMixer()->framesPerPeriod() );
#ifdef AUDIO_PORT_SUPPORT
const Uint32 frames = tMin<Uint32>( _nframes,
_this->getMixer()->framesPerPeriod() );
for( jackPortMap::iterator it = _this->m_portMap.begin();
it != _this->m_portMap.end(); ++it )
{
for( Uint8 ch = 0; ch < DEFAULT_CHANNELS; ++ch )
for( Uint8 ch = 0; ch < _this->channels(); ++ch )
{
if( it.data().ports[ch] == NULL )
{
@@ -385,10 +389,11 @@ int audioJACK::processCallback( jack_nframes_t _nframes, void * _udata )
_nframes );
for( Uint32 frame = 0; frame < frames; ++frame )
{
buf[frame] = it.key()->firstBuffer()[ch][frame];
buf[frame] = it.key()->firstBuffer()[frame][ch];
}
}
}*/
}
#endif
jack_nframes_t done = 0;
while( done < _nframes && _this->m_stopped == FALSE )
@@ -465,7 +470,7 @@ audioJACK::setupWidget::setupWidget( QWidget * _parent ) :
audioDevice::setupWidget( audioJACK::name(), _parent )
{
QString cn = configManager::inst()->value( "audiojack", "clientname" );
if( cn == "" )
if( cn.isEmpty() )
{
cn = "lmms";
}

View File

@@ -729,6 +729,25 @@ void configManager::addPage( QWidget * _w, const QString & _title )
void configManager::addRecentlyOpenedProject( const QString & _file )
{
if( m_recentlyOpenedProjects.size() > 15 )
{
m_recentlyOpenedProjects.remove(
m_recentlyOpenedProjects.last() );
}
QStringList::iterator it;
while( ( it = m_recentlyOpenedProjects.find( _file ) ) !=
m_recentlyOpenedProjects.end() )
{
m_recentlyOpenedProjects.remove( it );
}
m_recentlyOpenedProjects.push_front( _file );
}
const QString & configManager::value( const QString & _class,
const QString & _attribute ) const
{
@@ -845,6 +864,22 @@ bool configManager::loadConfigFile( void )
}
m_settings[node.nodeName()] = attr;
}
else if( node.nodeName() == "recentfiles" )
{
m_recentlyOpenedProjects.clear();
QDomNode n = node.firstChild();
while( !n.isNull() )
{
if( n.isElement() &&
n.toElement().hasAttributes() )
{
m_recentlyOpenedProjects <<
n.toElement().
attribute( "path" );
}
n = n.nextSibling();
}
}
node = node.nextSibling();
}
@@ -965,6 +1000,17 @@ void configManager::saveConfigFile( void )
lmms_config.appendChild( n );
}
QDomElement recent_files = doc.createElement( "recentfiles" );
for( QStringList::iterator it = m_recentlyOpenedProjects.begin();
it != m_recentlyOpenedProjects.end(); ++it )
{
QDomElement n = doc.createElement( "file" );
n.setAttribute( "path", *it );
recent_files.appendChild( n );
}
lmms_config.appendChild( recent_files );
#if QT_VERSION >= 0x030100
QString xml = "<?xml version=\"1.0\"?>\n" + doc.toString( 2 );
#else

View File

@@ -27,6 +27,7 @@
#include "automation_editor.h"
#include "bb_editor.h"
#include "config_mgr.h"
#include "project_journal.h"
#include "engine.h"
#include "main_window.h"
@@ -118,6 +119,8 @@ void engine::destroy( void )
delete s_projectJournal;
s_projectJournal = NULL;
s_mainWindow = NULL;
delete configManager::inst();
}

View File

@@ -81,6 +81,7 @@
#include "tool_button.h"
#include "project_journal.h"
#include "automation_editor.h"
#include "templates.h"
#if QT_VERSION >= 0x030100
@@ -98,6 +99,7 @@ mainWindow::mainWindow( void ) :
),
m_workspace( NULL ),
m_templatesMenu( NULL ),
m_recentlyOpenedProjectsMenu( NULL ),
m_tools_menu( NULL )
{
#ifdef QT4
@@ -217,20 +219,7 @@ mainWindow::mainWindow( void ) :
mainWindow::~mainWindow()
{
/* // first make sure, there're no mixing/audio-device-threads any more
engine::getMixer()->stopProcessing();
// destroy editors with all their children
delete engine::getSongEditor();
delete engine::getBBEditor();
// destroy mixer
delete engine::getMixer();
// destroy config-manager (which automatically saves config-file)
*/
// destroy engine which will do further cleanups etc.
engine::destroy();
}
@@ -436,6 +425,10 @@ void mainWindow::finalize( void )
m_toolBarLayout->setColumnStretch( 100, 1 );
m_recentlyOpenedProjectsMenu = new QMenu( NULL );
connect( m_recentlyOpenedProjectsMenu, SIGNAL( activated( int ) ),
this, SLOT( openRecentlyOpenedProject( int ) ) );
updateRecentlyOpenedProjectsMenu();
// project-popup-menu
QMenu * project_menu = new QMenu( this );
@@ -454,6 +447,10 @@ void mainWindow::finalize( void )
this, SLOT( openProject() ),
Qt::CTRL + Qt::Key_O );
project_menu->addAction( embed::getIconPixmap( "project_open" ),
tr( "Recently opened projects" ),
m_recentlyOpenedProjectsMenu );
project_menu->addAction( embed::getIconPixmap( "project_save" ),
tr( "&Save" ),
this, SLOT( saveProject() ),
@@ -469,16 +466,11 @@ void mainWindow::finalize( void )
project_menu->insertSeparator();
#endif
project_menu->addAction( /*embed::getIconPixmap( "project_import" ),*/
tr( "Import file" ),
tr( "Import..." ),
engine::getSongEditor(),
SLOT( importProject() ) );
#ifdef QT4
project_menu->addSeparator();
#else
project_menu->insertSeparator();
#endif
project_menu->addAction( embed::getIconPixmap( "project_export" ),
tr( "E&xport" ),
tr( "E&xport..." ),
engine::getSongEditor(),
SLOT( exportProject() ),
Qt::CTRL + Qt::Key_E );
@@ -577,19 +569,6 @@ void mainWindow::finalize( void )
tr( "What's this?" ),
this, SLOT( enterWhatsThisMode() ) );
#if 0
#ifdef LADSPA_SUPPORT
#ifdef QT4
help_menu->addSeparator();
#else
help_menu->insertSeparator();
#endif
help_menu->addAction( embed::getIconPixmap( "help" ), tr( "LADSPA Plugins..." ),
this, SLOT( ladspaPluginBrowser() ) );
#endif
#endif
#ifdef QT4
help_menu->addSeparator();
#else
@@ -702,7 +681,8 @@ void mainWindow::saveWidgetState( QWidget * _w, QDomElement & _de )
void mainWindow::restoreWidgetState( QWidget * _w, const QDomElement & _de )
{
QRect r( _de.attribute( "x" ).toInt(), _de.attribute( "y" ).toInt(),
QRect r( tMax( 0, _de.attribute( "x" ).toInt() ),
tMax( 0, _de.attribute( "y" ).toInt() ),
_de.attribute( "width" ).toInt(),
_de.attribute( "height" ).toInt() );
if( !r.isNull() && _w->parentWidget() != NULL )
@@ -792,6 +772,9 @@ void mainWindow::openProject( void )
{
engine::getSongEditor()->loadProject(
ofd.selectedFiles()[0] );
configManager::inst()->addRecentlyOpenedProject(
ofd.selectedFiles()[0] );
updateRecentlyOpenedProjectsMenu();
}
}
}
@@ -799,6 +782,30 @@ void mainWindow::openProject( void )
void mainWindow::updateRecentlyOpenedProjectsMenu( void )
{
m_recentlyOpenedProjectsMenu->clear();
QStringList rup = configManager::inst()->recentlyOpenedProjects();
for( QStringList::iterator it = rup.begin(); it != rup.end(); ++it )
{
m_recentlyOpenedProjectsMenu->addAction( *it );
}
}
void mainWindow::openRecentlyOpenedProject( int _id )
{
const QString & f = m_recentlyOpenedProjectsMenu->text( _id );
engine::getSongEditor()->loadProject( f );
configManager::inst()->addRecentlyOpenedProject( f );
updateRecentlyOpenedProjectsMenu();
}
bool mainWindow::saveProject( void )
{
if( engine::getSongEditor()->projectFileName() == "" )
@@ -858,6 +865,9 @@ bool mainWindow::saveProjectAs( void )
#else
engine::getSongEditor()->saveProjectAs( sfd.selectedFile() );
#endif
configManager::inst()->addRecentlyOpenedProject(
sfd.selectedFiles()[0] );
updateRecentlyOpenedProjectsMenu();
return( TRUE );
}
return( FALSE );
@@ -896,19 +906,6 @@ void mainWindow::help( void )
#if 0
void mainWindow::ladspaPluginBrowser( void )
{
// moc for Qt 3.x doesn't recognize preprocessor directives,
// so we can't just block the whole thing out.
#ifdef LADSPA_SUPPORT
ladspaBrowser lb;
lb.exec();
#endif
}
#endif
void mainWindow::toggleBBEditorWin( void )
{
@@ -1167,8 +1164,8 @@ void mainWindow::browseHelp( void )
}
else if( pid == 0 )
{
QString url = "http://wiki.mindrules.net/doku.php?id="
+ tr( "start", "doku.php id" );
// TODO: use QDesktopService with Qt4
QString url = "http://lmms.sf.net/wiki/index.php?title=Main_Page";
execlp( "x-www-browser", "x-www-browser", url.
#ifdef QT4
toAscii().constData(),

View File

@@ -288,7 +288,7 @@ const surroundSampleFrame * mixer::renderNextBuffer( void )
// clear last audio-buffer
clearAudioBuffer( m_writeBuf, m_framesPerPeriod );
printf("---------------------------next period\n");
//printf("---------------------------next period\n");
// if( criticalXRuns() == FALSE )
{
engine::getSongEditor()->processNextBuffer();
@@ -745,7 +745,7 @@ void mixer::processBuffer( const surroundSampleFrame * _buf,
for( ch_cnt_t chnl = 0; chnl < m_audioDev->channels(); ++chnl )
{
m_writeBuf[frame][chnl] += _buf[frame][chnl];
if( m_scaleClip )
{
scaleClip( frame, chnl );

View File

@@ -68,7 +68,6 @@ journallingObject::~journallingObject()
void journallingObject::undo( void )
{
printf("undo: %d\n", id() );
if( m_journalEntries.empty() == TRUE )
{
return;
@@ -85,7 +84,6 @@ void journallingObject::undo( void )
void journallingObject::redo( void )
{
printf("undo: %d\n", id() );
if( m_journalEntries.empty() == TRUE )
{
return;

View File

@@ -537,7 +537,7 @@ void multimediaProject::upgrade( void )
{
el.setAttribute( "chord-enabled", TRUE );
el.setAttribute( "arp-enabled",
el.attribute( "arpdir" ).toInt() != 0 );
el.attribute( "arpdir" ).toInt() != 0 );
}
}
@@ -594,6 +594,24 @@ void multimediaProject::upgrade( void )
}
}
if( version < "0.3.0" )
{
QDomNodeList list = elementsByTagName( "pluckedstringsynth" );
for( int i = 0; !list.item( i ).isNull(); ++i )
{
QDomElement el = list.item( i ).toElement();
el.setTagName( "vibedstrings" );
el.setAttribute( "active0", 1 );
}
list = elementsByTagName( "lb303" );
for( int i = 0; !list.item( i ).isNull(); ++i )
{
QDomElement el = list.item( i ).toElement();
el.setTagName( "lb302" );
}
}
if( !m_head.hasAttribute( "mastervol" ) )
{
m_head.setAttribute( "mastervol", 100 );

View File

@@ -103,7 +103,6 @@ void projectJournal::journalEntryAdded( const jo_id_t _id )
m_journalEntries.push_back( _id );
m_currentJournalEntry = m_journalEntries.end();
engine::getSongEditor()->setModified();
printf("history size: %d\n", m_journalEntries.size() );
}

View File

@@ -411,13 +411,13 @@ void knob::dropEvent( QDropEvent * _de )
QString val = stringPairDrag::decodeValue( _de );
if( type == "float_value" )
{
printf("set val\n");
//printf("set val\n");
setValue( val.toFloat() );
_de->accept();
}
else if( type == "link_object" )
{
printf("link!\n");
//printf("link!\n");
knob * obj = (knob *)( val.toULong() );
linkObjects( this, obj );
obj->setValue( value() );