Commit Graph

1241 Commits

Author SHA1 Message Date
Tobias Doerffel
8395c9428c Moved baseNoteModel from InstrumentTrack to MidiEventProcessor; cleanups
Moved baseNoteModel from InstrumentTrack class to MidiEventProcessor
class in order to make Piano class independent from InstrumentTrack
class (so it can be used by other classes as well).

Furthermore did various cleanups and coding style improvements.
2009-05-29 01:35:52 +02:00
Tobias Doerffel
cdcc158c03 TrackView: do not set Qt::WA_OpaquePaintEvent attribute
Due to optimizations in Qt 4.5 setting Qt::WA_OpaquePaintEvent attribute
for TrackView widgets caused a line of distorted pixels at the bottom of
the left part so do not set this attribute anymore (closes #2795861).
2009-05-25 13:47:30 +02:00
Tobias Doerffel
aaf45467b2 Track UI: coding style fixes
Fixed indentation issues and the like.
2009-05-25 13:27:26 +02:00
Tobias Doerffel
031e87b307 LV2: moved conditional include into lv2_manager.h
Moved conditional #include <slv2/scalepoints.h> from lv2_manager.cpp
into lv2_manager.h so we only have to have this compat code in one
place.
2009-05-24 01:28:16 +02:00
Tobias Doerffel
41c939f5aa AutomationRecorder: delete after Song object
Delete the AutomationRecorder after Song object. Otherwise LMMS crashes
at exit (closes #2793356).
2009-05-20 18:18:30 +02:00
Tobias Doerffel
6d77f83ae9 ControllerConnection: fixed segfault when finalizing invalid controller
In ControllerConnection::finalizeConnections() we did not check whether
the current controller ID really exists in Song's controller array.
Fixes segfault when loading projects with screwed controller settings.
2009-05-19 18:32:24 +02:00
Tobias Doerffel
002021aac5 ResourcesDB: save type and basedir property as string rather than number
So far the type and basedir properties were saved as numbers (as they
are defined in internal enumeration). This is bad style so these
properties are now translated into a human-readable string when saving
and back to internal enumeration type when loading.
2009-05-18 14:27:02 +02:00
Tobias Doerffel
55548d58c0 AutomationRecorder: instantiate even in console-only mode
Always create an instance of AutomationRecorder in Engine class as
it is not related to GUI at all. Fixes crash when rendering a project
in console-only mode.
2009-05-17 00:00:16 +02:00
Tobias Doerffel
41907a7ebf InstrumentTrack: added support for changing pitch range
Added a new LCD spinbox which allows to control the range of the pitch
knob. This way it's possible to extend the range of the pitch knob up
to 24 semitones in each direction.
2009-05-16 16:58:44 +02:00
Tobias Doerffel
24353ca248 PianoRoll: removed unused variable
Removed unused variable volumeHandles in
PianoRoll::computeSelectedNotes(bool) which as a side-effect also fixes

/usr/include/qt4/QtCore/qvector.h: In member function ‘void PianoRoll::computeSelectedNotes(bool)’:
/usr/include/qt4/QtCore/qvector.h:421: warning: dereferencing pointer ‘<anonymous>’ does break strict-aliasing rules
/usr/include/qt4/QtCore/qvector.h:114: note: initialized from here
2009-05-16 15:16:54 +02:00
Tobias Doerffel
9dcb62c630 NotePlayHandle: use public method for accessing pitch model
Do not use private m_pitchModel member variable of InstrumentTrack even
if NotePlayHandle is a friend class. Instead use the already existing
InstrumentTrack::pitchModel() method.
2009-05-16 15:08:40 +02:00
Tobias Doerffel
40b9b1cb4c LV2: fixed compilation without LV2 support or older versions of LV2
LV2 core was not compiled conditionally into LMMS binary so compilation
failed when building without LV2 support. Furthermore added
compatibility code for SLV2 <= 0.6.2.
2009-05-15 18:23:09 +02:00
Achim Settelmeier
f4e929022e Added MidiControlListener for controlling LMMS via MIDI
MidiControlListener is MidiEventProcessor that listens for specific
MIDI events in order to control LMMS' transportation (currently only
start/stop). Can be advanced later to control other things in LMMS.
2009-05-05 23:43:47 +02:00
Achim Settelmeier
515f0243b9 MainWindow: fixed problems with maximized window-state when using FVWM2
Added a workaround for FVWM2 as showMaximized() does not work with it
unless the window is already visible.
2009-05-05 23:35:40 +02:00
Tobias Doerffel
6929caa777 Pass main window as parent for progress dialog when loading project
Make progress dialog when loading project a proper sub-window of LMMS
by passing main window as parent to constructor of QProgressDialog.
Fixes default window icon and additional taskbar item.
2009-05-04 23:23:06 +02:00
Tobias Doerffel
ccb65f4b40 Added universal codebase for dragging plugin-specific presets
Added new stringPairDrag type "pluginpresetfile", allowing to drag
and drop any kind of plugin-specific preset files everywhere in the
program. Adopted changes in ZynAddSubFX plugin.
2009-05-03 16:10:06 +02:00
Tobias Doerffel
ebd3d26531 LadspaControl: set name property for tempoSyncKnobModel
For each model but the tempoSyncKnobModel the name property was properly
passed to the according constructor. This made time-based knobs in LADSPA
effects have no internal name, e.g. there were blank captions in the
knob's context menu or empty titles when used in combination with
automation patterns.
2009-05-03 15:26:43 +02:00
Tobias Doerffel
9cced2957c EffectView: always check whether effect has a control dialog
Do not add empty subwindows for effects that do not have a control
dialog at all (i.e. Effect::getControlCount() == 0). Also check whether
creation of control dialog was successful. Fixes possible crashes if
something went wrong with the effect (e.g. loading VST effect failed).
2009-05-03 15:09:58 +02:00
Tobias Doerffel
324b5afb50 LV2: fixed serious violations of coding style conventions
Unfortunately new LV2 code didn't respect coding style conventions
so I fixed most of it and did various other cleanups. Still needs some
work though.
2009-04-30 01:09:20 +02:00
Martin Andrews
b40a9e1905 LV2: Manager now in LMMS core
Moved LV2Manager to LMMS core so it can be used by several plugins.
Furthermore made LMMS instead of LV2 browser plugin link against SLV2
libraries.
2009-04-30 00:29:38 +02:00
Andrew Kelley
c12b716458 Experimental automation recording support
Allows you to record automation by arming an automatable model
and then recording with the RecordAndPlay button.

Known bugs:
	* when you record and there is already an auto clip, it repeats it
	* it freezes when you try to do it with the Volume or Panning slider
	* crashes when you try to do it with a solo/mute button
2009-04-28 17:56:49 -07:00
Andrew Kelley
198cfe96b4 fix alignment of automation recording 2009-04-28 17:56:49 -07:00
Andrew Kelley
bdd1ca0bfe fix knob not being updated when controlled 2009-04-28 17:56:49 -07:00
Andrew Kelley
57824bb2d1 make knobs easier to tune 2009-04-28 17:56:49 -07:00
Andrew Kelley
f40b61045a implemented automation recording 2009-04-28 17:56:48 -07:00
Tobias Doerffel
12d26ed0aa InstrumentTrackWindow: clear focus on closeEvent
When closing an InstrumentTrackWindow make sure it doesn't still have
keyboard focus (looks like a bug in Qt) and set focus on
trackLabelButton instead (closes #2780590).
2009-04-25 16:39:44 +02:00
Tobias Doerffel
780447d751 BasicOpsX86: regenerated with final 4.4.0 release of GCC
Regenerated BasicOps assemblies with final 4.4.0 release of GCC,
providing some more minor optimizations.
2009-04-23 12:09:39 +02:00
Tobias Doerffel
232c1de404 InstrumentTrackView: save and restore last position of window
When closing a InstrumentTrackWindow save its position so it can be
restored later when showing it. Fixes windows always popping up
somewhere else when toggling instrument track button repeatedly.
2009-04-18 18:25:44 +02:00
Tobias Doerffel
5828643582 Note class: renamed method "bool selected()" to "bool isSelected()"
In class "Note" renamed method "bool selected()" to "bool isSelected()"
in order to match coding style conventions.
2009-04-17 15:11:41 +02:00
Tobias Doerffel
efb335cea7 PianoRoll: do not make notes disappear under certain circumstances
When starting LMMS, loading an existing project and opening a pattern
with notes inside in piano roll, moving single notes showed unexpected
behaviour, i.e. the according note has been moved somewhere unreachable.

I tracked this down to a missing initialization of m_moveBoundary*
variables. Adding a few lines fixes the issue (closes #2632909).
2009-04-17 15:07:54 +02:00
Tobias Doerffel
d4680ba21d AutomationEditor: fixed window title
As of commit 91f3db7b window title of automation editor has been in
uppercase letters which is wrong.
2009-04-17 12:24:54 +02:00
Tobias Doerffel
6f0388be7c PianoView/PianoRoll: fixed keycodes for OS X
This patch enables the usage of PC keyboard for playing instrument piano
or piano roll on OS X by evaluating nativeVirtualKey rather than
nativeScanCode.
2009-04-16 10:40:00 +02:00
Tobias Doerffel
e0d352dc2c FileBrowser: added file type VstPluginFile
Added file type VstPluginFile in order to allow loading DLL files by
an according plugin directly from file browser.
2009-04-13 23:58:30 +02:00
Tobias Doerffel
9a4b4f3cfe Plugin: try to load all shared libraries first
Try to load all shared libraries before resolving any symbols. Fixes
problems with plugins that are linked against other shared libraries
located in LMMS' plugin directory.
2009-04-13 23:55:48 +02:00
Tobias Doerffel
ad79ac7e21 WebResourcesProvider: more safely manage download IDs
Do not add download ID returned by QHttp::get() to array and remove it
in the finishDownload() slot rather than adding the ID to the array as
soon as the download has finished.
2009-04-13 01:22:49 +02:00
Tobias Doerffel
6e30ae3369 InstrumentTrack::masterKey(): fixed miscalculation
Global master pitch wasn't taken into account correctly when calculating
master key of a given key. Made MIDI based instruments behave in the
opposite direction regarding pitch when changing global master pitch.

Thanks to Skiessi for pointing out this issue.
2009-04-08 23:36:43 +02:00
Tobias Doerffel
b4e38e3978 AudioJack: fixed lockup when getting zombified
This commit fixes lockup of the whole audio engine as soon as LMMS'
JACK backend got zombified due to longer delays (e.g. when audio engine
is blocked while loading a project). Restart JACK backend in such cases
and show an according message to the user.

Furthermore this commit includes various cleanups and improvements.
2009-04-07 00:07:19 +02:00
Tobias Doerffel
f42fee37c3 ProjectRenderer: fixed bug introduced by 1b91b599b...
There's been a missing evaluation of _os.depth in the 2nd ternary
operator which caused depth of filetype always be 24 bit even if 16 bit
was selected.
2009-04-06 00:20:12 +02:00
Tobias Doerffel
ff010da5ee SongEditor: fixed horizontal scrollbar with Qt 4.5
Due to optimizations in the graphics subsystem of Qt 4.5
songEditor::paintEvent() didn't get called regularly anymore and thus
the range of the horizontal scrollbar didn't get updated at all.

This commit makes the GUI track all changes related to the length of
the song.
2009-04-05 23:54:28 +02:00
Tobias Doerffel
0ae72462d9 LocalResourcesProvider: fixed filesystem monitoring
The slot LocalResourcesProvider::reloadDirectory() contained various bugs
so it did not record changes in filesystem properly. This also fixes lots
of QFileSystemWatcher messages in console window when saving a new project
inside LMMS.
2009-04-05 23:18:37 +02:00
Tobias Doerffel
1b91b599ba ProjectRenderer: added support for 24 Bit WAVs
Integrated patch by Skiessi which adds support for exporting 24 Bit WAV
files in LMMS.
2009-04-05 16:02:27 +02:00
llama
7cb7bc1dcf GIT SUCKS BALLS. FINALLY A COMMIT FROM WEEKS AGO 2009-03-31 19:56:12 -05:00
Tobias Doerffel
ca5588f747 3rdparty/libsamplerate: updated to version 0.1.7
Updated 3rdparty libsamplerate to version 0.1.7 and bumped requirement
to system's libsamplerate to version 0.1.7.

Besides minor stuff, version 0.1.7 has one important fix:

  * src/src_sinc.c
  Fix a segfault which occurs when memcpy is passed a bad length parameter.
  This bug has zero security implications beyond the ability to cause a
  program hitting this bug to exit immediately with a segfault.
2009-03-26 23:54:08 +01:00
Tobias Doerffel
2547bf8d57 Oscillator: reverted recent fix for PM
As of acaaea8204 a samplerate dependent
ratio has been added into calculation of the local phase. This however is
wrong for PM.
2009-03-22 15:15:47 +01:00
Tobias Doerffel
acaaea8204 Oscillator: fixed samplerate dependence of FM/PM
When doing FM/PM, the value of sub-oscillator is globally/locally added to
phase. However when doing this, a ratio between fixed default samplerate and
actual samplerate needs to be taken into account in the phase calculation.

This commit fixes missounding render output when rendering projects with
FM/PM inside at higher samplerates. (Thanks to Skiessi for his ladspa2.mmpz
which clearly brought up this bug)
2009-03-21 10:30:49 +01:00
Tobias Doerffel
f195d907a7 AudioAlsa: fixed crash when no more data is available
Calling alignedMemClear() when getNextBuffer() returns 0 is superfluous and
causes crashes in some situations. Simply get out of the outer loop as soon
as quit==true.
2009-03-18 23:57:16 +01:00
Tobias Doerffel
b1787f2c87 AutomationPatternView: anti-aliased painting of automation data
If pixels/tact ratio <= 32 use anti-aliasing for drawing automation data
resulting in a smoother appearence.
2009-03-16 17:38:39 +01:00
Tobias Doerffel
9ea3c6660d AutomationPatternView: fixed painting of automation data
At low pixels/tact ratio automation was not drawn properly due to miscalculation
of x2 variable. This patch fixes this by adding 1 to x2.
2009-03-16 17:37:25 +01:00
Tobias Doerffel
7449c4f731 Fixed various types to be suffixed with "_t".
This commit ensures that all defined data types in include/lmms_basics.h are
suffxed with "_t" to keep consistency as well as to fix issues on systems
with older STL/libstdc++.
2009-03-15 16:28:13 +01:00
Tobias Doerffel
d981b32480 MidiPort: subscribe writable rather than readable port when settings
When loading MidiPort settings, erroneously readable port was subscribed rather
than writable port. This commit fixes the issue.
2009-03-14 19:09:46 +01:00