Commit Graph

2498 Commits

Author SHA1 Message Date
Tobias Doerffel
bbb91a923c Moved CALF headers to proper location
The directory layout for some reason was not the same as with
upstream CALF, therefore move the includes to where they belong.
2010-05-21 16:17:56 +02:00
Krzysztof Foltman
527a02d648 Simplify Multiband Compressor code and fix several bugs.
Eliminated some (not all) repetition in the code. Fixed a bug where old value
for Q and separation was taken from the wrong variable. Fixed a bug where
having a band bypassed or muted caused the graph to stop redrawing properly.

(cherry picked from commit 3be583385b0bfb69bb7e52ee7426fe27d515560c)
2010-04-03 13:05:42 +02:00
Krzysztof Foltman
f8cb1120b0 Remove zombie small plugin code.
(cherry picked from commit ed69e7d41246d169ffccdc97cc666b111bdc6710)
2010-04-03 13:04:05 +02:00
Krzysztof Foltman
0ab27d30c3 Remove small plugins together with all the supporting infrastructure.
The small plugins don't really fit into the project and should be moved somewhere
else instead. Unfortunately, I don't have enough time to do it myself, so if
anyone needs them, feel free to make a separate project out of them, or merge
them (if possible, it may be very hard) into some other small plugin library.

(cherry picked from commit e03505a778ac3b8edb7a389a11eae03cbacc79fe)
2010-04-03 13:03:41 +02:00
Krzysztof Foltman
6c59404c32 Add Doxygen documentation for plugin_registry class.
(cherry picked from commit 4c093bf60cc6257232927d907106551293913384)
2010-04-03 12:58:52 +02:00
Krzysztof Foltman
47a46da43d More refactoring.
Make the result of plugin_registry::get_by_uri() const, as no external code
should modify metadata objects.

(cherry picked from commit 2f9ae953b30bc8702d302df58f0c7f1a589a15c3)
2010-04-03 12:58:47 +02:00
Krzysztof Foltman
4a59150d4b General refactoring. Start implementing external GUI.
Constify metadata functions. Constify other functions that really needed
it. Make variables keeping old state mutable for now. Move filter composition
operations into biquad.h. Replace global function get_all_plugins with
a singleton class that returns the same list (as const) or a single plugin
by URI. Add a skeleton implementation of functions in lv2_external_ui
and skeleton UI related functions for external UI.

(cherry picked from commit ae7f7293961a3ea3b194b73ab35886f94e562cd7)
2010-04-03 12:56:49 +02:00
Krzysztof Foltman
f344d4c1fe + LV2: add external UI header (not used for anything yet)
(cherry picked from commit f0719b1e8926595d869936865ba84f60284dd660)
2010-04-03 12:39:31 +02:00
Tobias Doerffel
9fd3dacb67 Fixed spelling errors
Fixed some spelling errors found by Lintian while checking the Debian
package of LMMS. Thanks to Patrick Winnertz for pointing out this issue.
2010-01-25 23:24:42 +01:00
Tobias Doerffel
c8a444d026 Merge branch 'calf-updates'
* calf-updates:
  CALF: resync source files due to forgotten commits
  + JACK host: implemented Save/Save as...; Open not implemented yet - who could possibly want THAT?
  + EQ: Fix adding EQ plugin using menu in calfjackhost
  Some changes in style, smaller h/v-scale added
  + LADSPA: make plugin IDs unique across Calf plugins, add an install-time check
  + EQ-5: refactoring to eliminate code duplication, side effect: stereo meters
  + EQ-n: shorter names for calfjackhost and others
  + Equalizers: convert lists of per-band parameters using macros (ugly, but effective)
  + EQ-8, EQ-12: reduce copypasta by using a class template
  + Compatibility: workaround for GStreamer crash bug in Ubuntu 9.10 (thanks to Stefan Kost for diagnosing the problem and suggesting the workaround)
  + Compressor simplification, added optional audio ports
2010-01-04 00:43:13 +01:00
Tobias Doerffel
2d55ef8291 Merge branch 'master' into calf-updates 2010-01-04 00:42:01 +01:00
Tobias Doerffel
1fb803242c CALF: resync source files due to forgotten commits
Probably I forgot to cherry pick one or two commits from CALF Git repo
resulting in a slight diverge of source codes. Resynced the concerned
header files. Fixes the missing Pulsator plugin.
2010-01-04 00:41:31 +01:00
Krzysztof Foltman
059fbab252 + JACK host: implemented Save/Save as...; Open not implemented yet - who could possibly want THAT? 2010-01-04 00:31:58 +01:00
Krzysztof Foltman
c16949e308 + EQ: Fix adding EQ plugin using menu in calfjackhost 2010-01-04 00:30:13 +01:00
Markus Schmidt
9414b90d7b Some changes in style, smaller h/v-scale added 2010-01-04 00:29:28 +01:00
Janne Sinisalo
0ac6f0b741 New drum samples
Added a drum kit I've recorded from my Korg module.
2010-01-03 09:47:14 +02:00
Tobias Doerffel
81cea79c38 Base64: realize decode() as template function
In Base64::decode() we mess around with pointers so it's more type-safe
to realize everything as a template function. This also silences compiler
warning about dereferencing type-punned pointer in Vibed plugin.
2009-12-26 01:06:52 +01:00
Tobias Doerffel
ebf80bb8a3 Instrument: added Doxygen comments
Commented the whole Instrument class and converted the existing comments
to Doxygen style.
2009-12-26 00:54:33 +01:00
Tobias Doerffel
c2e0cde213 Win32 toolchain: various fixes + march=i686
In build_mingw32 script fixed path to Win32Toolchain.cmake. In this
file set march=i686 and mtune=generic.
2009-12-25 00:39:32 +01:00
Tobias Doerffel
5e711875f5 VeSTige: set VeSTige logo as window icon for plugin GUI subwindow
Up to now the MainWindow's icon was used for VST plugin GUI subwindows.
Improve this a little bit by using the VeSTige logo now.
2009-12-22 00:49:34 +01:00
Tobias Doerffel
ca2440d1c4 Removed some old projects
Removed some old projects that did not represent LMMS and its abilities
anymore. We also need to replace most of the "Cool songs" and replace
them by more recent projects from LSP.
2009-12-22 00:38:48 +01:00
Tobias Doerffel
04699ba412 MainWindow: stop playing song when asking whether to save project
Users reported the last buffer played repeatedly while the dialog asking
whether to save project is shown. This behaviour even continued while
loading a project. An easy workaround for this is to stop playing song
(or whichever TrackContainer is active at the moment) in
MainWindow::mayChangeProject().

Closes bug #2904781.
2009-12-17 21:17:34 +01:00
Tobias Doerffel
bb57d53770 TrackContainer: fix Qt header includes
Always prefix Qt header includes with name of according module.
2009-12-14 09:28:42 +01:00
Tobias Doerffel
bf0f0151d2 Mallets: build properly with Stk 4.4
As of Stk 4.4 all classes and types have been moved to the namespace "stk".
This breaks build of the Mallets plugin. This can be easily fixed by
using the namespace "stk". For compatibility reasons we have to declare
the namespace before, because it did not exist in previous versions.

Closes #2870878.
2009-12-06 23:19:26 +01:00
Tobias Doerffel
5f241e6374 RemoteVstPlugin: allocate buffer for chunk on heap rather than stack
It's not a good idea to allocate the buffer for VST chunk data on the
stack as chunks might become quite big (several megabytes) and thus
could cause a stack overflow. Fix this by using new/delete.
2009-12-06 01:01:27 +01:00
Tobias Doerffel
cef439b1ce AutomatableModel: made member variables private again
As of commit dd28a654b5 some member
variables were made protected without any actual requirement for it.
Revert the part of the commit.
2009-12-03 19:09:55 +01:00
Tobias Doerffel
d45de34c0d Revert "AutomatableModel: fix member variable initialization order"
This reverts commit a141fd477a.
2009-12-03 18:31:13 +01:00
Tobias Doerffel
a141fd477a AutomatableModel: fix member variable initialization order
Initialize member variables of AutomatableModel in order of their
declaration to fix compiler warning.
2009-12-03 01:10:12 +01:00
Tobias Doerffel
900b599c2d Merge branch 'master' into calf-updates 2009-12-03 00:18:20 +01:00
Andrew Kelley
48d7e7cf50 Bugfix: crash dealing with clearing the project
FxMixerView was being cleared before fxMixer which caused a crash.
Fixed.
2009-11-29 18:54:58 -07:00
Tobias Doerffel
c11c228437 LV2Browser: fixed compilation
I somehow forgot to migrate LV2Browser plugin while reworking Mixer.
Should compile again now.
2009-11-30 01:37:53 +01:00
Tobias Doerffel
114aeb3e2c Merge branch 'mixer-new-fifo-arch'
* mixer-new-fifo-arch:
  ProjectRenderer: lock Mixer while calling Song::{start,stop}Export()
  ProjectRenderer: start thread with normal priority
  ProjectRenderer: renamed OutputSettings to EncoderSettings + Doxygen comments
  Mixer: rewrote processing chain of rendered audio buffers
2009-11-30 00:56:54 +01:00
Tobias Doerffel
0e82b0facc Merge branch 'master' into mixer-new-fifo-arch
Conflicts:
	include/Mixer.h
	src/core/Mixer.cpp
	src/core/audio/AudioPort.cpp
	src/core/main.cpp
2009-11-30 00:50:31 +01:00
Tobias Doerffel
9bb3ab5f16 ProjectRenderer: lock Mixer while calling Song::{start,stop}Export()
We have to lock Mixer when touching Song's state via Song::startExport()
and Song::stopExport() in ProjectRenderer::run() as the FIFO writer
thread may call Mixer::renderNextBuffer() (which calls Song::doActions())
simultaneously. Fixes a random segfault when exporting project.

This was a new bug as the ProjectRenderer does not operate FIFO-less
anymore.
2009-11-29 23:57:30 +01:00
Tobias Doerffel
294fa87475 Merge branch 'auto-save'
* auto-save:
  don't change the current project when auto-saving
  auto-saves every minute and recovers upon crash
  don't show WelcomeScreen when importing/loading

Conflicts:
	src/gui/MainWindow.cpp
2009-11-29 23:21:54 +01:00
Tobias Doerffel
37ccbb4b50 Merge branch 'fx-mixer-rework'
* fx-mixer-rework: (25 commits)
  FxMixer: use new CPU::bufMixCoeff()
  Cpu: added BufMixCoeff + SSE implementation
  MixerWorkerThread: added job queue modes and improved class structure
  MixerWorkerThread: exit outer loop in processJobQueue() if finished
  Song: do not refresh FxMixerView when loading song in console mode
  Mixer/FxMixer: separated MixerWorkerThread and ThreadableJob into files
  Rough fix for freeze-up bug
  Fixed the audio/visual screwups
  NOT WORKING! Fx Mixer uses job threads
  Mixer: rewrote/reorganized job queueing for worker threads
  Fixed bug - Instruments had wrong channel models
  Fixed a mixer bug regarding deleting channels
  FxMixerView - Left and right to select channels
  Fix FL Import with new mixer
  Ability to save mixer sends to disk with the mmp
  Channel selector has a max range of num channels
  Ability to re-order mixer channels
  Ability to delete mixer channels in the FX Mixer
  Requested improvements to new FxMixerView$
  Scrollbar for the fx mixer channels
  ...
2009-11-29 23:13:55 +01:00
Tobias Doerffel
c9802d8a26 ProjectRenderer: start thread with normal priority
There's no need to start the ProjectRenderer thread with high priority
anymore as the actual rendering is done on the other side of the FIFO.
The ProjectRenderer just waits for new data in the FIFO and encodes
them as they arrive.
2009-11-29 15:49:21 +01:00
Tobias Doerffel
03d3548ba1 ProjectRenderer: renamed OutputSettings to EncoderSettings + Doxygen comments
Renamed the ProjectRenderer::OutputSettings structure to
ProjectRenderer::EncoderSettings to better reflect its meaning.

Additionally added some basic Doxygen comments.
2009-11-29 15:37:04 +01:00
Tobias Doerffel
20589f19e4 Mixer: rewrote processing chain of rendered audio buffers
Until now, Mixer not only was responsible for rendering audio buffers
but also managed writing them to audio backend (through a FIFO) and
handled various quality related parameters.

All this functionality has been moved into the new AudioOutputContext
class. It glues together AudioBackend (formerly called AudioDevice),
global quality settings and the Mixer.

The AudioOutputContext class creates a FifoWriter which calls
Mixer::renderNextBuffer() and writes the output into the BufferFifo of
the AudioOutputContext it belongs to. The BufferFifo is read by the
according AudioBackend which belongs to the AudioOutputContext as well.

The AudioOutputContext also handles resampling in case the AudioBackend
wants the buffers in a different samplerate.

During this rewrite the Mixer class and the according source files have
been renamed from "mixer" to "Mixer". This results in small changes
all over LMMS' code base.
2009-11-29 01:46:23 +01:00
Tobias Doerffel
ced0d8ecc6 Merge branch 'master' into fx-mixer-rework 2009-11-26 01:47:38 +01:00
Tobias Doerffel
63cb220090 ResourceDB: added Doxygen comments
Documented the ResourceDB class and all its members.
2009-11-26 01:41:57 +01:00
Tobias Doerffel
dc561a07e7 Revert "Mixer, FifoBuffer, AudioDevice: removed memory allocation/free cycles"
This reverts commit c517f1fa5a.

The commit was not very helpful and introduced new xrun problems.
Instead I'll be rewriting the part of LMMS where Mixer, Mixer's
quality settings, Buffer FIFO and AudioDevice are sticked together.
2009-11-26 01:36:36 +01:00
Tobias Doerffel
c517f1fa5a Mixer, FifoBuffer, AudioDevice: removed memory allocation/free cycles
There's really no need to allocate a buffer each period, push it to the
FifoBuffer and free it when fetching the buffer in
AudioDevice::getNextBuffer(). Instead keep the pointer in FifoBuffer's
pool and reuse it.
2009-11-24 12:46:08 +01:00
Tobias Doerffel
9cabd559dc ResourceItem: added Doxygen comments
Documented the ResourceItem class and all its members.
2009-11-24 00:50:10 +01:00
Tobias Doerffel
74bd0ab9af ResourceAction: added Doxygen comments
Documented the ResourceAction class and all its members.
2009-11-24 00:49:26 +01:00
Tobias Doerffel
79566abf1b Added Doxygen configuration file
Added Doxygen configuration file so one can instantly test whether
he added proper comments in Doxygen style.
2009-11-23 00:27:38 +01:00
Armin Kazmi
92047f5e9e AudioPulseAudio: fixed latency and underrun problems
Try to adjust latency of PulseAudio according to our settings of mixer
so it does not have such a bad latency anymore.

Furthermore force PulseAudio to play silence instead of rewinding
streams in case of underruns.
2009-11-20 23:08:07 +01:00
Tobias Doerffel
168805745e AudioPulseAudio: fixed improper shutdown + free allocated resources
There have been some problems with the threading logic in the
AudioPulseAudio backend resulting in an endless loop when quitting LMMS.

Furthermore allocated PulseAudio resources were not freed properly.
Thanks to Armin Kazmi <armin.kazmi@tu-dortmund.de> for pointing out
this issue.
2009-11-20 22:28:47 +01:00
Krzysztof Foltman
871c31aaaa + LADSPA: make plugin IDs unique across Calf plugins, add an install-time check 2009-11-19 11:27:34 +01:00
Krzysztof Foltman
9fcffa9c20 + EQ-5: refactoring to eliminate code duplication, side effect: stereo meters 2009-11-19 11:25:40 +01:00