Commit Graph

100 Commits

Author SHA1 Message Date
Tobias Doerffel
8c9a9dd14c File and class renames part 1
Most files and most of the core classes and their methods have been
renamed to match new coding style conventions:

391 files changed, 25400 insertions(+), 25598 deletions(-)

Furthermore splitted some files where model and view classes were
declared or implemented together in the same file.

Should be tested thoroughly as I might have missed renaming some virtual
methods or SIGNAL/SLOT parameters.
2009-08-24 17:59:28 +02:00
Tobias Doerffel
55337ad2be Renamed MIDI and audio related classes/files to match new style
Renamed all MIDI and audio related classes/files to match new style.
Additionally various cleanups.
(cherry picked from commit b8ebfbd06a)
2009-08-13 01:46:49 +02:00
Paul Giblock
f1d60958f0 Rename all Controller-family classes to new style
Adjust capitialization on all Controller-related classes to new
standards and update all calling code
2009-08-08 13:05:22 -04:00
Tobias Doerffel
bf8f823751 Mixer: fixed wrong macro logic leading to potential performance loss
The macro logic for defining the SPINLOCK_PAUSE macro tested against
LMMS_HOST_X86_64 twice instead of testing against LMMS_HOST_X86_64 and
LMMS_HOST_X86. This caused the SPINLOCK_PAUSE macro not being set on
x86.
2009-08-03 18:53:10 +02:00
Tobias Doerffel
89fa5c99e9 CPU: new framework for optimized CPU-specific routines
The new CPU framework replaces the old BasicOps framework. It is more
flexible and the build process isn't such a mess anymore (pre-compiled
assembler files etc.). It will hopefully see some improvements and
extensions soon.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-08-03 17:14:16 +02:00
Tobias Doerffel
e3fa8762ef Mixer: selectively remove PlayHandles in removePlayHandles()
This commit allows finer control of which kind of PlayHandles get
removed in Mixer::removePlayHandles().

This is now used by InstrumentTrack which only removes NotePlayHandles
in InstrumentTrack::silenceAllNotes(). Fixes broken preview of resources
loaded by IPH-based instruments.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-07-05 16:38:58 +02:00
Tobias Doerffel
2cc49b8010 PlayHandle: use QList instead of QVector for PlayHandle array
Use QList instead of QVector when using a set of PlayHandle's. QList
has faster insert/remove operations and in most cases we iterate through
the array using iterators so there's no performance drop.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-15 15:04:55 +02:00
Tobias Doerffel
c0f48d6196 reworked mixer-threads (synchronization, realization of jobqueue etc.) which results in a much better performance and stability
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1998 0778d3d1-df1d-0410-868b-ea421aaaa00d
2009-02-05 13:14:12 +00:00
Tobias Doerffel
3bed588917 fixed compilation on x86_64
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1847 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-11-22 22:10:12 +00:00
Tobias Doerffel
22dc97f13d experimental support for MMX/SSE/SSE2 instructions
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1832 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-11-10 10:31:11 +00:00
Tobias Doerffel
30c7732665 various fixes for successfully building LMMS for win64
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1804 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-10-27 21:25:46 +00:00
Tobias Doerffel
9530460fce * initial (not yet enabled) support for binding mixer threads to CPUs to reduce scheduling overhead and cache misses (gives avg. 10% performance boost)
* merged mixer-thread with first worker-thread - no more duplicate code for single- and multicore processing and better scheduling on multicore systems



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1803 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-10-25 17:53:58 +00:00
Tobias Doerffel
834046163f fixed debug out for 64 bit systems
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1753 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-10-14 22:25:13 +00:00
Tobias Doerffel
ff846833e8 more debug output when encountering bad jobqueue items
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1751 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-10-14 22:05:43 +00:00
Tobias Doerffel
3e8639e733 use ordered memory semantics for atomic int
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1750 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-10-14 21:25:23 +00:00
Tobias Doerffel
97971332de removed fine-granular locking of various playHandle-vectors, just use one global big lock for everything now - prevents various deadlocks (e.g. when previewing samples in file browser)
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1738 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-10-04 23:20:34 +00:00
Tobias Doerffel
6be3579bcb fixed last commit
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1725 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-10-02 20:49:48 +00:00
Tobias Doerffel
abb6257693 fixed last commit
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1724 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-10-02 20:46:38 +00:00
Tobias Doerffel
e679f8c52f * use one static jobqueue for not getting problems with cached pointers
* check for job being NULL
* improved performance of master mix



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1721 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-10-02 11:46:29 +00:00
Tobias Doerffel
adf8aed93c removed obsolete instrument-parallelization support as this is handled much better by worker threads and adds unneccessary complexity
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1718 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-30 11:14:32 +00:00
Tobias Doerffel
4583e48c3d * lock playHandle mutex in mixer::clear()
* moved implementation of mixer::removePlayHandle() from header to source-file
* only delete play-handle in mixer::removePlayHandle() if it was found in playHandle vector (fixes crash when previewing a preset under high load)



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1698 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-23 10:45:05 +00:00
Tobias Doerffel
778293b31e fixed compiler warnings
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1680 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-21 23:47:02 +00:00
Tobias Doerffel
e282227c6a when just rendering at console, use DEFAULT_BUFFER_SIZE
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1629 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-18 21:33:56 +00:00
Tobias Doerffel
b217bbdfd8 * ensure correct thread affinity when deleting play handles - fixes crash when previewing samples and LMMS was linked against Qt 4.3.x
* renamed destroyed()-signals for not conflicting with QObject::destroyed() in Qt 4.3
* made effectChain creation in audioPort optional
* fixed various compiler warnings



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1602 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-11 13:43:43 +00:00
Tobias Doerffel
2ccbbae6ee re-enabled WinMM MIDI
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1587 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-08 09:57:37 +00:00
Tobias Doerffel
fb9ecdc24e disabled WinMM MIDI for the time being
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1530 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-02 15:29:43 +00:00
Tobias Doerffel
1410f2bc92 added basic support for recording sound into sample tracks
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1508 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-08-27 13:52:21 +00:00
Tobias Doerffel
1087aa77b5 cleanups and coding-style fixes
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1450 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-08-20 11:28:11 +00:00
Tobias Doerffel
c238f579c2 added rudimentary WinMM MIDI support
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1355 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-07-22 13:14:15 +00:00
Tobias Doerffel
e637495489 migrated build-system to CMAKE
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1352 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-07-22 11:36:50 +00:00
Tobias Doerffel
6ed33b3241 cleanups
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1281 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-07-05 23:25:58 +00:00
Tobias Doerffel
1464d03b74 again fixed worker-thread destruction
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1250 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-06-30 21:47:47 +00:00
Tobias Doerffel
6fb0c2cd42 improved mixer-shutdown
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1240 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-06-30 19:56:57 +00:00
Tobias Doerffel
6881cfa20d initialize m_quit for worker-threads - fixes lockups at startup
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1238 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-06-30 19:50:00 +00:00
Tobias Doerffel
5e77d6b547 properly terminate worker-threads at mixer-destruction
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1230 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-06-30 16:52:10 +00:00
Tobias Doerffel
0638ec5e55 don't use fifoWriter when rendering as we do not have realtime issues here - fixes lockups on various systems when exporting project
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1122 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-06-10 22:35:13 +00:00
Tobias Doerffel
c4043b20c7 try all audio-drivers at startup even if dummy-driver is selected
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1055 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-06-02 20:48:56 +00:00
Tobias Doerffel
8618b1474f added PulseAudio-support
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1037 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-06-01 22:33:11 +00:00
Tobias Doerffel
542baec14b use less complex worker-thread-synchronization
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1033 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-05-30 22:09:12 +00:00
Tobias Doerffel
8be14b8518 use QAtomicInt instead of volatile bool + queue-global mutex for worker-thread jobqueues
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1032 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-05-29 06:45:01 +00:00
Tobias Doerffel
fc1b985fe8 * LADSPA-effect-plugin: improved handling of effects which only work at limited samplerates
* audio-port: small optimizations
* mixer: removed obsolete idle-property of worker-threads
* FX-mixer: protect individual buffers of FX-channels from being processed by more than one thread



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@979 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-05-17 15:50:27 +00:00
Tobias Doerffel
7598cd7a8e * sf2Player: retrieve resampling-interpolation from current mixer quality settings
* mixer: made m_writing-variable in fifoWriter volatile
* projectRenderer: change audio-device to file-device from within GUI-thread in order to make slots being connected to sampleRateChanged()-signal being called 
immediately
* audioDevice: made HQ-mode for audio-devices optional



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@959 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-05-11 23:21:33 +00:00
Tobias Doerffel
e32eed940f * introduced new project-export dialog
* new class for easily rendering a project into a file
* when changing quality-settings tell audio-devices about it so that they can adjust their output-samplerate



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@958 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-05-11 20:08:34 +00:00
Tobias Doerffel
5cfb1b2f96 made quality-settings (internal processing samplerate, interpolation and so on) independent of audio-devices (final output) and added new qualitySettings-structure to mixer - might be still buggy and HQ-mode is currently not working, this is going to be fixed tomorrow, anyways important preparation for new project-export-dialog
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@957 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-05-05 23:14:48 +00:00
Tobias Doerffel
39786d36d5 made clearAudioBuffer() static
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@911 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-04-12 15:09:49 +00:00
Tobias Doerffel
2fcd8150d9 changed internal MIDI-time-resolution from 64th to 192th resulting for example in better MIDI-import and allowing to use triplet-notes in LMMS
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@908 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-04-09 22:16:52 +00:00
Tobias Doerffel
c8c5382b35 made rendering happen with one global working-buffer per thread - hopefully improves L1/L2-cache-efficiency
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@890 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-04-05 19:06:32 +00:00
Paul Giblock
0bb4bf5221 Performance improvements to controller-base
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@888 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-04-05 04:17:25 +00:00
Tobias Doerffel
f8369195a0 implemented parallelization of FX-channel-processing
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@887 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-04-04 16:55:47 +00:00
Paul Giblock
3541af29df initial controllers code
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@883 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-04-04 06:39:00 +00:00