Commit Graph

1847 Commits

Author SHA1 Message Date
Tobias Doerffel
019c438668 Merge pull request #817 from diizy/bbtrack-ui
Make BB-tracks themeable
2014-06-09 13:41:55 +02:00
Tobias Doerffel
dc9804f7b6 Merge pull request #823 from diizy/automation
Fix drag/drop for automation patterns
2014-06-09 13:38:31 +02:00
Vesa
2fa7892542 Use QBrush instead of QColor on some theme properties
Apparently, we can use QBrush -typed properties in the CSS. This just never occured to me before!
So, this has several benefits. A QColor property only allows a singular RGB value, but a QBrush allows the same plus also qgradients, RGBA-colours and maybe even bitmap patterns. So I'm changing some properties to QBrush, where it makes sense to allow this additional functionality - no need to enable it for simple things like text colours or such.

- Song editor background: instead of the earlier hack with 7 qproperties just to set a limited background gradient, we can use only 2 properties and allow much more flexibility with Qt's own qgradient syntax
- Automation editor: background, graph colour, and the sidebar colour - @musikBear recently complained not seeing the grid through the graph, so transparency can help there, and qlineargradients in the graph can produce very cool visual effects. Grid is pointless to change, it should stay single-colour for now.
- Piano roll: here, I only made the background use QBrush - we don't really have much else here that can utilize QBrush, the notes have their own gradient system... maybe the 2nd colour of the note gradient could be customizable though.

There are probably more places where this change makes sense...
2014-06-08 18:06:09 +03:00
Vesa
9cc3344756 Fix drag/drop for automation patterns
There was some apparently legacy code that was entirely unnecessary and interfering with model drops.
Closes #814
2014-06-08 12:28:43 +03:00
Vesa
910f89a5d3 Make BB-tracks themeable
- This allows defining a default colour for BB-track patterns in the CSS
- The default colour is used for all bb-patterns which don't have a custom colour set by the user: in other words, the colour of a pattern can be any rgb-value OR "style colour"
- By default, all created bb-patterns use the style colour
- You can also reset colourized patterns to use style colour again
- Backwards compatibility: old projects will be loaded so that any pattern using either of the old default colours will be converted to use style colour

TODO: add a settings option that can disable custom colours (ie. always use style colour), and/or an option to reset all patterns in a project to style colour. This is needed, since themes can now change the song editor background, which can lead to unfortunate colour combinations with custom colours...
2014-06-06 11:06:12 +03:00
tresf
7a03353fb6 Export dialog append wav/ogg #764 w/ #779 recommendations 2014-06-04 08:55:30 -04:00
Vesa
06be5bba82 Make MIDI timing sample-accurate
- currently only affects Vestige
- no idea whether this can also be used for Zyn and OpulenZ, I'm not sure if Zyn has any kind of mechanism for communicating frame offset to the synth, as for OpulenZ, @softrabbit would know the answer better
- basically, I made it happen by simply adding an extra parameter in the processMidi{In|Out} functions, which is 0 by default, and made the necessary changes in instrumentTrack and nph to utilize it
- I based this against 1.1 because I didn't think it's a very big change, and I don't see much possibility for things going wrong here, since we're basically just using the existing functionality in Vestige (there already was a frame offset being communicated to the remote plugin, just that it was always set to 0). However, if @tobydox thinks this is better to bump up to 1.2, I can rebase it for master...
2014-06-04 04:23:16 +03:00
Tobias Doerffel
b28e995316 Merge pull request #797 from softrabbit/issue780
Issue780
2014-06-01 10:09:54 +02:00
Raine M. Ekman
f0556cbc3b InstrumentTrack: Fix issue #780 by showing the m_pitchRangeSpinBox too, in case it's been hidden. 2014-05-31 20:41:50 +03:00
Tobias Doerffel
a2e61a7a08 Merge pull request #789 from diizy/pianoroll
PianoRoll: CSS stylability, mousewheel improvements
2014-05-31 15:12:07 +02:00
Vesa
3a1e447d7b PianoRoll: wheelevent improvements, similar to AutomationEditor
- ctrl+alt+wheel changes q (as in auto)
- ctrl+shift+wheel changes note length
- changed note lock functionality slightly, it no longer changes itself to 1/16 because this would cause annoying infinite scrolling with the wheel, instead it just acts like 1/16 when notelength is last note
2014-05-31 07:06:58 +03:00
Vesa
7a19654ab9 AutomationEditor - fix previous 2014-05-31 04:05:58 +03:00
Vesa
310ac28009 AutomationEditor: CSS stylability 2014-05-31 03:32:55 +03:00
Vesa
5652043185 AutomationEditor: improve zoom functionality
- entire wheelevent code was written very... weirdly, I simplified it
- fix bug with x zoom with mousewheel, no more getting stuck between 25/50
- ctrl+shift+mousewheel now zooms y-axis
- ctrl+alt+mousewheel now changes quantization
2014-05-31 01:47:59 +03:00
Vesa
f43678cbae PianoRoll: CSS stylability
Most parts of piano roll are now stylable:
- background color
- note color
- bar color (for volume bars)
- grid color
2014-05-30 23:00:20 +03:00
Tobias Doerffel
ef0ccb4094 Merge pull request #778 from diizy/pianoroll
PianoRoll: Note Quick Resize
2014-05-30 15:15:28 +02:00
Vesa
51194453f1 FxMixerView: fix crash when loading project while selected channel != 0
Fixes #782
2014-05-30 08:19:54 +03:00
Vesa
adea08d5b9 PianoRoll: Note Quick Resize
Basically, this works as such:
- if you click shift *after* starting a note move OR after creating a new note, the note move action is switched into resize mode, so you can quickly resize the note you just created, or the note you just moved. This saves time and improves workflow - at least based on my own experience: I've always wished I could do this, this is a huge time saving when you want to quickly jot down notes of differing lengths.
- if shift is already pressed when you click, the above will not happen, because that would mess with the note copy function. Copying notes with shift-dragging works the same as before.
- note test playback is halted when you click shift while moving. This is purely because it was causing some crackling noise, probably because of the changing length of a note that is currently playing. Maybe that can be fixed later, although it's arguably better not to hear the note while resizing - it's consistent with the other resize.
- works on group of notes as well, if you start moving a group of notes and then click shift, it will go into resize. Exception is notes copied with shift-drag... for obvious reasons.
- that should be all. Testing appreciated.
2014-05-28 03:38:59 +03:00
Tobias Doerffel
1567bd8d09 Merge pull request #752 from tresf/master
Drag-and-drop support for VST, SF2
2014-05-26 10:28:44 +02:00
Tobias Doerffel
c3af25e54a Merge pull request #758 from grejppi/master-samplebuffer
SampleBuffer: fix amplification
2014-05-26 10:26:59 +02:00
Tobias Doerffel
54531f5144 Merge pull request #761 from zonkmachine/random-wave-2
Random wave for instrument plugin LFO
2014-05-26 10:26:09 +02:00
Vesa
eaf0f15d3f FxMixerView: prevent mixer from being loaded with improper send buttons which cause crashes when clicked, fixes #766 2014-05-25 13:55:05 +03:00
Oskar Wallgren
2e78e65d59 Code simplifed 2014-05-24 20:02:18 +02:00
Hannu Haahti
d715c18b65 SampleBuffer: amplify in post 2014-05-23 21:50:47 +03:00
Oskar Wallgren
768f0e54b0 Random graph approximation and cleanup 2014-05-23 03:46:40 +02:00
Hannu Haahti
904370ec34 SampleBuffer: fix amplification 2014-05-22 23:48:05 +03:00
Oskar Wallgren
3d61768538 Gui button fix, test backward compatibility 2014-05-22 19:25:04 +02:00
Oskar Wallgren
85c02cddfe Random wave first commit, pixmap button defect 2014-05-22 07:17:55 +02:00
Tres Finocchiaro
71f6b1b205 Drag-and-drop support for VST, SF2 2014-05-21 16:39:02 -04:00
Vesa
9742becb81 Fix globalautomationvalueat and coding style 2014-05-21 17:37:30 +03:00
Tobias Doerffel
bfe2f0cf11 InstrumentFunctions: fix base note playback in chords
As of 6650dd356d base notes are not played
anymore when chords are enabled. Therefore create a separate NotePlayHandle
for the base note like we do for all other notes in the chord.
2014-05-20 23:13:13 +02:00
Vesa
97ff5e99e0 Removal of the "sample-exact controllers" and "anti-aliasing oscillators" qualitysettings. 2014-05-18 21:36:49 +03:00
Tobias Doerffel
465aa1afbc EffectChain: remember original effect plugin data when loading dummy plugin
We don't want to loose the settings of an effect plugin even if it's not
available and thus can't be instantiated. Therefore remember original
settings data and save them back properly.

Partly closes #733.
2014-05-18 15:53:18 +02:00
Tobias Doerffel
a71749af08 Merge pull request #720 from diizy/master
Initial implementation for two additional methods in AutomatableModel, A...
2014-05-18 15:15:49 +02:00
Tobias Doerffel
6b6bfa2666 Merge pull request #734 from diizy/bandlimit
Move the initialization of BandLimitedWaves into engine.cpp
2014-05-18 15:11:51 +02:00
Vesa
c854f1d0ec InstrumentFunctions: Add power chord
Aka. 5-chord, simple 5th interval chord. A very simple addition and something I've always wondered why it's missing from the very extensive huge list of chords and scales.
2014-05-18 13:14:52 +03:00
Vesa
bf54852062 Move the initialization of BandLimitedWaves into engine.cpp
Since we now provide the wavetables as pre-generated files, there's no delay caused by their initialization
so we can move it to the startup of the software. I thought engine.cpp is the best place for this, it makes
conceptually more sense than main.cpp IMO.
This way each instrument that wants to use them in the future won't have to call the initialization function
separately, making things a bit easier.
2014-05-17 23:32:34 +03:00
Vesa
aefc9832f8 Initial implementation for two additional methods in AutomatableModel, AutomationPattern:
These methods are used to fetch the automated value of a model at a given MidiTime
These are still untested but that shouldn't be a problem since they aren't actually used by anything yet... but I'll be doing some testing and bugfixing (if needed) for them later.
These will be an important step in making sampletracks eventually be reliably playable from any position, and more generically, being able to reliably convert MidiTime to real time. Of course they can be useful for other things too (not sure what though, yet).
2014-05-15 03:02:42 +03:00
Tobias Doerffel
28cf4a5f8d Merge remote-tracking branch 'origin/stable-1.0'
Conflicts:
	CMakeLists.txt
	data/CMakeLists.txt
	include/SampleBuffer.h
	plugins/CMakeLists.txt
	plugins/zynaddsubfx/zynaddsubfx/src/Params/PADnoteParameters.cpp
	src/core/SampleBuffer.cpp
2014-05-12 21:57:10 +02:00
Tobias Doerffel
b9d51f0a40 Merge pull request #685 from tresf/stable-1.0
SWH Clang Fixes, Apple Installer Fixes
2014-05-06 09:39:22 +02:00
Vesa
dbe69c74ec Automation recording: remove unnecessary hasAutomation() - the pattern doesn't need to already have automation in
order to record more...
2014-05-05 00:57:32 +03:00
Vesa
6b7a3c0041 Automation recording: add option to trackops to switch on/off recording in all TCOs on the track
I still had time to implement this convenient little thing, so here you go...
The same code can be reused in the future for sampletracks as well.
2014-05-05 00:37:39 +03:00
Vesa
62068684c2 Fix to previous - use value<float>() instead of making an unnecessary new function... also accidentally didn't upload the new image last time 2014-05-04 22:54:06 +03:00
Vesa
4564ed14cd Automation Recording 2014-05-04 21:59:39 +03:00
Vesa V
1371b5b0fd Merge pull request #679 from diizy/master
PianoRoll: allow shift-right-click in addition to middle-click in vol/pa...
2014-05-03 23:53:50 +03:00
Vesa
d66d5870fd PianoRoll: allow shift-right-click in addition to middle-click in vol/pan bars 2014-05-03 23:52:24 +03:00
Oskar Wallgren
348315845a Add new toolbutton, whatsthis, to MainWindow 2014-05-03 20:32:58 +02:00
Vesa
b18d80e0b5 Pianoroll vol/pan UI - further improvements of earlier improvements 2014-05-03 00:12:18 +03:00
Vesa
23f1634f96 PianoRoll: improvements for note/panning widget 2014-05-01 23:15:28 +03:00
Vesa
ed19009d29 FXLine: add context menu with options to remove, move & rename FX channels
- Uses existing functionality in FxMixer & FxMixerView to manipulate channels
- Instruments sending to the manipulated channels get automatically updated
- In the future I hope to implement a drag/drop functionality instead of the clunky context menu but this is a good first step until then
- Also added in a little QWhatsThis help message for the FX line, also accessible from context menu

That lmms_math thing got mixed in accidentally, but it's also a good change: always include math.h in lmms_math - that way, other parts of the software can just #include lmms_math, and won't have to #include both math.h and lmms_math, also the yet unused sinc function in it seems to need it so this prevents problems down the line
2014-05-01 18:10:05 +03:00