Parent Directory | Revision Log
Links to HEAD: | (view) (download) (annotate) |
Sticky Revision: |
This commit was manufactured by cvs2svn to create tag 'v0_1_0'.
* added Envelope Generator 2 and 3 (filter cutoff EG and pitch EG) for accurate .gig playback * fixed accuracy of pitch calculation * changed filter cutoff range to 100Hz..10kHz with exponential curve, this value range can also be adjusted on compile time by setting FILTER_CUTOFF_MIN and FILTER_CUTOFF_MAX in src/voice.h to desired frequencies * src/lfo.h: lfo is now generalized to a C++ template, which will be useful especially when we implement further engines
* implemented all three low frequency oscillators (LFO1 = volume, LFO2 = filter cutoff frequency, LFO3 = pitch) for accurate .gig playback
* added filters (lowpass, bandpass and highpass), note that filter code is currently disabled by default, you have to explicitly enable it in src/voice.h by setting define ENABLE_FILTER to 1 * src/eg_vca.cpp: Decay_1 stage now using exponential curve
* src/eg_vca.cpp: added following transitions to the envelope generator: 'Attack_Hold' -> 'Release', 'Decay_1' -> 'Release' in case of a release event * EG1 parameters 'Attack Time', 'Release Time' and 'Sustain Time' are now controllable by a MIDI controller defined in the .gig file * src/voice.cpp: fixed bug in pitch calculation which caused new triggered voices to be played back without honoring the current pitch bend value
* implemented parser for the LinuxSampler control protocol (LSCP) by using flex / bison (where src/network/lscp.l is the input file for lex / flex and src/network/lscp.y is the input file for yacc / bison), parser and scanner can be regenerated by 'make parser' * implemented LSCP network server (only single threaded so far), LSCP server will be launched if LinuxSampler was started with "--server" flag, implemented the following LSCP commands so far: "LOAD INSTRUMENT", "GET CHANNEL VOICE_COUNT", "GET CHANNEL STREAM_COUNT", "GET CHANNEL BUFFER_FILL", "SET CHANNEL VOLUME" and "RESET CHANNEL" * disk thread now started within the engine
* implemented bidirectional voice state transition, means voice state can switch arbitrary times between 'Sustained'<-->'Released' within it's life time, thus the release process of a voice can be cancelled * src/eg_vca.cpp: extended envelope generator by additional states ('Attack_Hold', 'Decay_1' and 'Decay_2') * applied patch from Vladimir Senkov which adds new command line parameters ('--jackout', '--alsaout' and '--samplerate') * configure.in: fixed compiler warning
* introduced time stamped events * implemented jitter correction * added pitchbend wheel support * src/audiothread.cpp: using voice pool instead of a voice array, makes voice allocation more efficient and code more readable * src/rtelmemorypool: redesigned, added some new methods and pool is now derived from list
* Added JACK support: Audio rendering process is now callback based and independant of used audio output system. Interfaces to other audio output systems can be added by creating a class derived from abstract base class 'AudioIO' and embedding the new class into linuxsampler.cpp. * src/audiothread.cpp: applied patch from Vladimir Senkov which fixes hanging notes in conjunction with the sustain pedal
* implemented amplitude envelope generator * src/voice.cpp: some .gig instruments still sounded detuned, I hope finally to have this fixed now
* src/gig.cpp: fixed looping informations ('LoopStart', 'LoopEnd' and 'LoopSize') * src/voice.cpp: pitch sample according to keyboard position only if keyrange > 1 key, this was the reason that some gig files were horrible detuned * src/audioio.cpp: bigendian specific fix * src/ringbuffer.h: removed kernel header dependency by adding own atomic.h
* implemented looping; RAM only loops (that is loops that end within the cached part of the sample) are handled in src/voice.cpp whereas disk stream looping is handled in src/stream.cpp and is mostly covered there by the new ReadAndLoop() method in class 'Sample' from src/gig.cpp
* src/audioio.cpp: added support for Alsa 1.0.0 * src/audiothread.cpp: fixed several bugs in sustain pedal handling * src/diskthread.cpp: fixed several bugs which occured under extreme conditions (endless loop in audiothread, freezing the whole application, outage of available disk streams) * src/voice.cpp: fixed cubic interpolation (disabled by default; you can enable it by setting USE_LINEAR_INTERPOLATION to 0 in src/voice.h) * src/configure.in: added check for Alsa version
* implemented velocity->volume mapping: samples are now played back with a volume appropriate to the velocity of the triggered key, the velocity curve transformation functions (in src/gig.h) used for this are so far only an approximation to the ones from Gigasampler
* rewrote sustain pedal handling: instead of just queuing the note-offs I added a sustain pointer for each midi key which starts to point to the first active voice on the respective key and increments to the next voice on the key when a note-off arrived, the release velocity value will immediately be stored in the respective voice object (this also fixes the segmentation fault issue when the sustain pool was full)
* src/voice.cpp: fixed bug which caused a voice not free it's disk stream when the whole sample was already played back and the voice was going to free itself resulting in outage of unused disk streams after a while * src/audioio.cpp: implemented automatic fallback to ALSA plughw when the sound card doesn't support one of the hardware parameters * src/linuxsampler.cpp: solved segmentation fault issue when receiving a SIGINT which was caused due to the fact that all threads entered the signal handler (there still seems to occur a segfault on some certain circumstances though) * added print out of all-time maximum usage of voices and streams and the current number of unused streams * src/thread.cpp: the StopThread() method will now block until the associated thread actually stopped it's execution
* src/gig.cpp: fixed bug in decompression algorithm which caused it not to detect the end of a stream and let the disk streams reload forever also resulting in strange sounds at the end of disk voices (concerned only playback of compressed gig files) * src/audiothread.cpp: deallocation of voices when they reached the end of playback (thus e.g. when sustain pedal is pressed and a disk stream reached it's end) * various endian corrections needed for non intel systems * introduced debug level, you can set the debug level and thus the verbosity of LinuxSampler in src/global.h
* transition from plain Makefile to autotools, source files moved to src/ * configure.in: added test for x86 architecture * src/voice.h: x86 specific asm optimization for double to int casts only if compiling for x86 architecture
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.
ViewVC Help | |
Powered by ViewVC |