added capability to collect multiple errormessages and display them at once
unexpected codestyle fixes
fixed argument being passed into errormessage of vsteffect
fixed wrong visibility of Plugin::logError
Tempo synced Delay Plugin
Fixed issues with original verion, as directed in pull request.

 corrected the typeo's,
 Used sampleFrame instead of float* making the code cleaner.
 Set up a socket to change the samplerate where required.
 Stopped using malloc ( yeah that was bad practice on my part ).
 Now using lmms_Math.h and the predefined versions of F_PI and F_2PI,
 I didn't know data from the knobs etc. was not updated over the course of a buffer, so have moved outside the processing loop,
 made appropriate functions inline,
 used sinf.
 Multiplication has replaced division where possible,
 zeroing of the buffer has been removed, as redundant.
removed unused socket and empty function in delaycontrols
moved call to delayTimeModel.value() outside of process loop
Add includes parameter to fix warnings when generating a translation file.

When generating a translation file with e.g. "make de.ts" more than 150 warnings like the following appeared.
/home/daniel/Lmms/src/tracks/Pattern.cpp:642: Qualifying with unknown namespace/class ::PatternView
/home/daniel/Lmms/src/tracks/Pattern.cpp:701: Qualifying with unknown namespace/class ::PatternView
/home/daniel/Lmms/src/tracks/AutomationTrack.cpp:40: Qualifying with unknown namespace/class ::AutomationTrack
...
Move definitions to fix 26 errors which adds new translatable strings

Fixes the following 26 errors when generating a translation file with e.g. "make de.ts":
/home/daniel/Lmms/plugins/monstro/Monstro.h:69: tr() cannot be called without context
/home/daniel/Lmms/plugins/monstro/Monstro.h:70: tr() cannot be called without context
...
/home/daniel/Lmms/plugins/monstro/Monstro.h:96: tr() cannot be called without context
/home/daniel/Lmms/plugins/monstro/Monstro.h:97: tr() cannot be called without context
The delay buffer now resizes on sample rate change.
tidy up formatting
Initial version of the GIG Player

It currently loads 16-bit mono and stereo GIG files. It plays the whole
note (no attack/delay/release), doesn't resample when exporting as a
different sample rate, and it doesn't do anything different based on
velocity.
GIG Player now uses correct velocity and changes sample rate properly

Fixed crashes when loading invalid file, but this required exceptions
since libgig throws exceptions, hence the changes to CMakeLists.txt.

If the sample rate is changed (e.g. on exporting at 48k when the samples
are at 44.1k), when playing the note convert each note individually to
the correct sample rate instead of converting the output from the notes
to the correct sample rate.

Save the instrument so we don't have to search the entire GIG file every
time we play a note. This should make it work better on computers that
don't have tons of RAM.

Currently there is a 0.5 second fade out time when the note is released.
I still have to implement the release-triggered samples.
Release samples, move constructors, attenuation

An initial implementation of playing release samples on key up. It seems
a bit messy at the moment. Wrote a move constructor since there's quite
a bit of passing around the gigNote class. Use attenuation so that notes
set their gain properly based on the information in the GIG file,
quite noticeable on some release samples.

Note that to support move constructors I enabled building the plugin
with the C++11 standard.
Key changing dimension, 24-bit samples, locking

Support for 24-bit samples. It just so happens that the only GIG file I
have that is 24-bit also has the key changing dimension set, so I
implemented that so I could compare the output sound with that of Linux
Sampler. It still sounds different, brighter in LMMS. Not sure if that
has to do with gain, ADSR, or incorrect 24-bit decoding. I'm guessing
ADSR.

There were many crashing issues when playing notes when changing
patches/instruments. More locking, less crashing. However, this also
means that it is quite slow when playing a lot of notes with large
samples and converting sample rates. Linux Sampler amazingly can handle
36 or so keys being pressed at once whereas LMMS nowhere near that many
at the moment.
Use release time as linear fade out time

This makes it sound better than before, so that pianos fade out like
expected and synths abruptly stop as intended. It's not the fully
implemented ADSR of the format, but it's better.
Mutex for note output, delete note after fade out

Hopefully the separate mutex for playing the samples reduces the
glitching. Deleting notes after fading out instead of after the entire
sample finished playing (with many zeros after the fade out) will reduce
the number of notes playing at the same time which should allow for more
actually-heard notes to be played.

Also, moved delete note code from release function into the rendering
the notes to the output function. This seemed to fix notes occasionally
not being released.
Rebased on master, minor changes
Fixed second instance no name

Previously if you created a second instance of a certain GIG file, it
would set the name to an empty string since it didn't create a new
instance, only increased a reference count. Though, it still seg faults
eventually when the reference count is greater than one.
Multiple references load samples from one instance without segfault

Now it doesn't appear to segfault when multiple references to the same
instance try accessing samples at the same time. In libgig it said I
just have to create another decompression buffer for each thread. This
doesn't quite make the whole addNotes function thread safe since I still
hear missing notes. But, it's getting closer.