Commit Graph

2366 Commits

Author SHA1 Message Date
Tobias Doerffel
59800c1570 Merge branch 'master' into fx-mixer-rework 2009-10-26 00:24:45 +01:00
Tobias Doerffel
d2fd133f64 Cpu: use qDebug() rather than fprintf()
Using old C functions is really deprecated. Therefore use qDebug()
instead of fprintf().
2009-10-26 00:23:21 +01:00
Tobias Doerffel
67afd2acef Build system: various fixes for CPU objects
Also make use of user-specified compiler flags when building CPU objects.

Furthermore do not add CPU objects to lmms_SOURCES rather than listing
them at ADD_EXECUTABLE. This fixes warnings when updating localizations.
2009-10-26 00:15:47 +01:00
Tobias Doerffel
2262c00973 FxMixer: use new CPU::bufMixCoeff()
When mixing FX channel to another use new CPU::bufMixCoeff() function
instead of implementing an own (slower) mixing loop.
2009-10-26 00:12:06 +01:00
Tobias Doerffel
aff3789834 Cpu: added BufMixCoeff + SSE implementation
Added another buffer operation BufMixCoeff allowing to mix a certain
buffer to another at a given amount (coeff). CpuX86 has been extended
by an according SSE implementation.
2009-10-26 00:00:37 +01:00
Paul Giblock
3fe353545b Alsa and OSS Device hints
This should resolve the remaining issues.  OSS has auto-complete with
the filesystem.  Alsa has an editable combobox for PCM and MIDI-raw.
The DEVICE  box for Alsa MIDI-seq should be obsoleted
2009-10-25 16:19:57 -04:00
Paul Giblock
82fd694e4a Add dev-file autocompletion to OSS device fields
Added QDirModel-based completion for OSS device fields in the settings
dialog
2009-10-25 16:19:57 -04:00
Paul Giblock
a45a211f2b Add Audio-device listing support for alsa-pcm
Added a AlsaDeviceListModel, will do the same for other devices as well
2009-10-25 16:19:57 -04:00
Tobias Doerffel
ff03ddb8e4 MixerWorkerThread: added job queue modes and improved class structure
JobQueues can now operate in JobQueue::Static and JobQueue::Dynamic mode.
In static mode it operates the way it always used to while in dynamic
mode a changing job queue is supported. This is particularly important
for FX mixer sends.

There were also heavy improvements regarding the overall structure
and functionality of MixerWorkerThread and MixerWorkerThread::JobQueue.
There's now a clean distinction between multi-threaded processing
and actual (thread-safe) job queue processing. MixerWorkerThread does
not need to be a friend class of Mixer anymore.
2009-10-24 18:59:00 +02:00
Tobias Doerffel
a3cac6ae79 Regenerate QM files
After refreshing TS files in commit 8641023053
we need to regenerate final localization files (*.qm) to make changes
take effect.
2009-10-24 17:29:56 +02:00
Tobias Doerffel
8641023053 Refresh localization files with improved lupdate command
Due to changes introduced by commit 5685663233
we need to refresh localization files. This also fixes problems with
translations not working anymore due to class name changes.
2009-10-24 17:27:32 +02:00
Tobias Doerffel
5685663233 Suppress location information in *.ts files and drop obsolete strings
By passing two additional parameters to lupdate we can suppress useless
location information for messages in *.ts files. Furthermore drop
obsolete translated strings when updating a localization file for not
cluttering repository.
2009-10-24 17:26:03 +02:00
Tobias Doerffel
4f5d31f862 MixerWorkerThread: exit outer loop in processJobQueue() if finished
Exit the outer loop of processJobQueue() Only as soon as we went through
the job queue without having processed at least one job.

In MixerWorkerThread::waitForJobs() re-introduced "pause" instruction on
x86 and x86_64 giving better performance on HyperThreading systems.

These improvements however still do not solve all performance and
multithreading issues.
2009-10-19 01:13:22 +02:00
Tobias Doerffel
05b1325c09 Song: do not refresh FxMixerView when loading song in console mode
Calling FxMixerView::refreshDisplay causes LMMS to crash when running
in console mode. Therefore explicitely check GUI mode before calling
this function.
2009-10-19 01:03:22 +02:00
Tobias Doerffel
01ae99d6aa Build system: another stupid compiler flag fix for OS X
All versions of OS X except Snow Leopard ship GCC 4.0 which does not
understand the "-finline-functions-called-once" flag. Therefore do not
use this flag when building for OS X.
2009-10-17 23:53:48 +02:00
Tobias Doerffel
de8e13b44b Build system: remove ChangeLog from "dist" target
ChangeLog has been removed as of commit
c896488e13, therefore "dist" target fails.
Removing ChangeLog from list of files to be copied into tarball fixes
this issue.
2009-10-17 23:42:50 +02:00
Tobias Doerffel
65f6bb7135 Merge branch 'calf-updates'
* calf-updates:
  + DSP primitives: fix a rather stupid bug in clamping functions
  + Monosynth: fix type bug that made it impossible to compile with g++ 4.2
  + AutoHell: update AUTHORS file
  + GUI, Multiband Compressor, Toggle button: apply more fixes and additions by Markus Schmidt
  + Multiband Compressor: better metadata
  + Multiband Compressor: new module (first version, by Markus Schmidt, based on code by me and Thor) plus associated refactoring and graph colour scheme update
2009-10-17 23:34:23 +02:00
Tobias Doerffel
a9d24d34f2 Mixer/FxMixer: separated MixerWorkerThread and ThreadableJob into files
Declarations and implementations of MixerWorkerThread and ThreadableJob
have been moved into separate source files.

Furthermore there were some improvements to MixerWorkerThreads.
MixerWorkerThread::processJobQueue() does not return until the job
queue completely has been processed. This way each thread can "help"
to finish processing the queue and does not get back to sleep until
all of the work is done.

Management of the queue is now done via an array of QAtomicPointers.
Items that are non-NULL still need to be processed while NULL-items
were taken from the queue (i.e. in progress or done). Thus we do not
need to deal with ThreadableJob-states within MixerWorkerThread anymore.
2009-10-14 01:44:41 +02:00
Andrew Kelley
c4647a58ac Merge commit 'origin/master' into fx-mixer-rework 2009-10-13 03:15:33 -07:00
Andrew Kelley
45a2f81eaa Rough fix for freeze-up bug
Added startJobs() to the waitForJobs() loop, and don't give up in
masterMix() until status of master channel is Done.
2009-10-13 03:14:23 -07:00
Andrew Kelley
95eb60f05f Fixed the audio/visual screwups
With the help of Toby, effects in the channels work and the peak
displays correctly. However the freeze-up bug is still wreaking havoc.
2009-10-13 02:21:13 -07:00
Krzysztof Foltman
b60527e699 + DSP primitives: fix a rather stupid bug in clamping functions
(cherry picked from commit d55bbe5f163d3e32f3428c0a1f2643d4fe999a1b)
2009-10-13 09:37:23 +02:00
Krzysztof Foltman
f8c6833e9f + Monosynth: fix type bug that made it impossible to compile with g++ 4.2
(cherry picked from commit f2cd6987deba9f82a9824529bad6de2ab89e0bc6)
2009-10-13 09:36:26 +02:00
Andrew Kelley
f6f4414c98 NOT WORKING! Fx Mixer uses job threads
The FxMixer now uses job threads to accomplish its mixing. It's
theoretically efficient, but there is a horrible thread bug
preventing the code from working. I've spent 5 hours debugging and
need some external help!
2009-10-12 01:09:35 -07:00
Tobias Doerffel
3fa96a576c Mixer: rewrote/reorganized job queueing for worker threads
In Mixer, the old C-macro based code has been replaced by an OOP-like
design. Management of job queue now happens via some static member
methods of MixerWorkerThread. All the moved code still needs to be
splitted into some new files but here's a first dirty version.

All objects that are intended to be processed by MixerWorkerThreads
have to inherit ThreadableJob (name of class is subject of change).

One can add jobs to the job queue even if the queue is already being
processed. This is merely important for multithreading with upcoming
FX sends support.
2009-10-11 01:43:16 +02:00
Krzysztof Foltman
9b29e3a2a6 + AutoHell: update AUTHORS file
(cherry picked from commit 3897c98a85401ee3a99b0adde4a2428adb6e9b53)
2009-10-11 00:18:42 +02:00
Krzysztof Foltman
b89707c6da + GUI, Multiband Compressor, Toggle button: apply more fixes and additions by Markus Schmidt
(cherry picked from commit 6717c99440d6bef04a16447145d8beb2b0b3f16e)
2009-10-11 00:18:42 +02:00
Krzysztof Foltman
86212e2691 + Multiband Compressor: better metadata
(cherry picked from commit 5763a3ca62a1c6de51b4ed1a886cb85fa99694f2)
2009-10-11 00:18:42 +02:00
Krzysztof Foltman
5fd28cb5f3 + Multiband Compressor: new module (first version, by Markus Schmidt, based on code by me and Thor) plus associated refactoring and graph colour scheme update
(cherry picked from commit 9912931955299424aac7f32685d1a04003765995)
2009-10-11 00:18:42 +02:00
Paul Giblock
49c2f6bad1 Rename "All Files" to "All file types" release QM
Translations didn't work because I didn't "release" within Linguist.  I
wonder how to update the *.ts files with missing strings...
2009-10-08 14:39:24 -04:00
Paul Giblock
beb92563f1 Proper File import extensions and translations
Previously, the extensions were stored in the translations, this i18n
more difficult, additionally, there was a preprocessor statement that
would cause the translated phrase to change! Hence, no translations if
you didn't have ZIP file support.  The text is now split into seperate
translations and I added "All Files".
2009-10-08 12:01:25 -04:00
Paul Giblock
c504bc84d4 Increase import filter for *.midi and *.riff
Fix song.cpp and translations so the somewhat common *.midi extension is
recognized.
2009-10-07 17:21:29 -04:00
Krzysztof Foltman
1294ff62ee + Organ, Framework: use std::vector::front() instead of std::vector::data() (may possibly fix the MacOS X compilation problem reported by Daniel Klaffenbach and Tobias Doerffel)
(cherry picked from commit 628eb1543591f5137e6001abad439d01942ffd4a)
2009-10-05 23:47:38 +02:00
Tobias Doerffel
68bd237061 Revert "CALF: removed usage of non-standard std::vector::data()"
This reverts commit dd260245ec.

The commit fixed the compilation problem but according to upstream
causes new problems because of the huge data structures on the stack.

Upstream provided a better patch which will be applied next.
2009-10-05 23:44:53 +02:00
Tobias Doerffel
dd260245ec CALF: removed usage of non-standard std::vector::data()
The std::vector::data() method is a special feature of GCC and
therefore not portable. This causes a compile failure of CALF plugin
on OS X. Therefore I replaced the code with standard arrays
allocated on stack.

Upstream needs to be informed about this patch.

Thanks to Daniel Klaffenbach for pointing out this issue.
2009-10-03 01:16:05 +02:00
Krzysztof Foltman
66a5ae5066 + Monosynth: code cleanup (move more things to .cpp file, ignore the negligible performance hit)
(cherry picked from commit 24f4661a73fe39e70db8e74b9a5c1279859b6fb3)
2009-10-03 00:27:57 +02:00
Tobias Doerffel
b8d339e196 CALF: moved some files to allow easy cherry-picking from CALF Git
Source directory structure of the CALF plugin shipped with LMMS was
not equal with original one which makes cherry-picking commits from
CALF Git impossible.
2009-10-03 00:23:18 +02:00
Andrew Kelley
abfdb6a74d Fixed bug - Instruments had wrong channel models
Instruments were initialized with hardcoded 0-10 for min/max
channel selector range. Fixed.
2009-10-01 17:42:14 -07:00
Andrew Kelley
1c9b24afb7 Fixed a mixer bug regarding deleting channels 2009-10-01 11:37:46 -07:00
Andrew Kelley
23e3301037 FxMixerView - Left and right to select channels 2009-10-01 03:45:04 -07:00
Andrew Kelley
275bf5bb0e Fix FL Import with new mixer 2009-10-01 03:40:20 -07:00
Andrew Kelley
333df687e6 Ability to save mixer sends to disk with the mmp
LMMS can load projects with the old mixer and new projects with
the new mixer. By "new mixer", I simply mean not hardcoded to 64
channels.
2009-10-01 02:45:32 -07:00
Andrew Kelley
dd28a654b5 Channel selector has a max range of num channels
When you add and remove channels, the range of the
L.E.D. channel selector is correct.
2009-09-30 17:04:28 -07:00
Andrew Kelley
f6507b52ee fixes segfault when importing a midi file
pitanga's patch - fixes a segfault when trying
to import a midi file without a default soundfont set.
2009-09-30 07:49:01 -07:00
Andrew Kelley
33753495bd Ability to re-order mixer channels
In the Fx Mixer View, you can select a channel and press Alt+Left
and Alt+Right respectively to re-order Fx Channels. This should be
made more easily available in the GUI eventually.
2009-09-30 07:37:05 -07:00
Andrew Kelley
e09c12687a Ability to delete mixer channels in the FX Mixer
Users can now delete mixer channels from the FX mixer, and it
doesn't mess up the instrument send channels.
2009-09-30 07:36:40 -07:00
Andrew Kelley
186378a4f1 Fixed segfault when libmp3lame.so is not found
Applied pitanga's patch against lame_library -
Fixes missing return statement if the library
was not found. (Thanks pitanga)
2009-09-30 02:08:18 -07:00
Paul Giblock
147844b388 Merge branch 'master' of ssh://pgib@lmms.git.sourceforge.net/gitroot/lmms/lmms into fx-mixer-rework 2009-09-30 03:14:57 -04:00
Paul Giblock
db6164ca91 Requested improvements to new FxMixerView$
* lock fx mixer height
 Done. channelArea->setFixedHeight and proper sizeConstraints
* width: pick a good min. size. keep max. size off.
 Done. Set to 6 fx-lines.
* effects chain should align to the right
 Done.
* get rid of padding in mixer
 Done. setSpacing and setMargin on chLayout
* scroll area so that vert scrollbar is  never seen.
 Done. setVerticalScrollBarPolicy and proper height calculation
* Get rid of scroll bar area border
 Done. FrameStyle.

The biggest change, however, was removing the multiple EffectRackViews
that were being used.  Now just a single EffectRackView exists and it is
shared by all models.
2009-09-30 03:12:25 -04:00
Andrew Kelley
d68d53b83a Scrollbar for the fx mixer channels
Still need to fix up the rest of the fx mixer
2009-09-29 20:54:30 -07:00