/[svn]/linuxsampler/trunk/src/engines/gig/Voice.h
ViewVC logotype

Log of /linuxsampler/trunk/src/engines/gig/Voice.h

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (download) (as text) (annotate)
Sticky Revision:

Revision 3444 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Dec 23 19:32:11 2018 UTC (3 weeks, 6 days ago) by schoenebeck
File length: 7565 byte(s)
Diff to previous 3054
* Only play release trigger samples on sustain pedal up if this behaviour
  was explicitly requested by the instrument (otherwise only on note-off).
* Bumped version (2.1.0.svn2).


Revision 3054 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Dec 15 12:47:45 2016 UTC (2 years, 1 month ago) by schoenebeck
File length: 7492 byte(s)
Diff to previous 3052
* Fixed numerous compiler warnings.
* Bumped version (2.0.0.svn32).


Revision 3052 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Dec 14 17:34:54 2016 UTC (2 years, 1 month ago) by schoenebeck
File length: 7190 byte(s)
Diff to previous 2559
- Preparations for Xcode project update.


Revision 2559 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun May 18 17:38:25 2014 UTC (4 years, 8 months ago) by schoenebeck
File length: 7122 byte(s)
Diff to previous 2390
* Aftertouch: extended API to explicitly handle channel pressure and
  polyphonic key pressure events (so far polyphonic pressure was not
  supported at all, and channel pressure was rerouted as CC128 but not
  used so far).
* Gig Engine: Fixed support for 'aftertouch' attenuation controller.
* Bumped version (1.0.0.svn39).


Revision 2390 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jan 5 12:31:05 2013 UTC (6 years ago) by persson
File length: 6889 byte(s)
Diff to previous 2382
* fixed compilation with Clang 3.2


Revision 2382 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Dec 2 16:30:42 2012 UTC (6 years, 1 month ago) by persson
File length: 6862 byte(s)
Diff to previous 2327
* all engines: add pan CC value to instrument pan parameter before
  applying panning, instead of using two separate pan functions in
  series (#182)
* sfz parser: allow -200 to 200 for pan_oncc opcode (#182)
* gig engine: handle special case when pan parameter in gig file has
  max or min value
* CoreMIDI: fixed memory deallocation error


Revision 2327 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Mar 10 16:16:14 2012 UTC (6 years, 10 months ago) by persson
File length: 6798 byte(s)
Diff to previous 2175
* sfz/sf2 engine: fixed crash when using small audio fragment size


Revision 2175 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Apr 25 08:12:36 2011 UTC (7 years, 8 months ago) by persson
File length: 6721 byte(s)
Diff to previous 2114
* sfz engine: implemeted filters. Filter types: lowpass, bandpass,
  bandreject and highpass. 1, 2, 4 and 6 pole filters. Opcodes:
  fil_type, cutoff, resonance, fil_veltrack, fil_keytrack,
  fil_keycenter, cutoff_cc, cutoff_chanaft.
* sfz engine: bugfix: zero ampeg_sustain didn't work
* gig engine: bugfix: pitch LFO controller "internal+aftertouch" was broken
* gig engine: bugfix: filter keyboard tracking was broken
* gig engine: filter performance fix (an unnecessary copy was made of
  the filter parameters in each sub fragment)
* ASIO driver: fixes for newer gcc versions (fix from PortAudio)


Revision 2114 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Aug 10 12:05:19 2010 UTC (8 years, 5 months ago) by persson
File length: 6544 byte(s)
Diff to previous 2055
* sfz engine: improved support for exclusive groups (group, off_by and
  off_mode)
* minor valgrind fixes


Revision 2055 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jan 30 10:30:02 2010 UTC (8 years, 11 months ago) by persson
File length: 6454 byte(s)
Diff to previous 2015
* sfz engine: added support for v2 multiple stage envelope generators
* sfz engine: added a fine-tuned v1 envelope generator instead of
  using the one from the gig engine


Revision 2015 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Oct 25 22:22:52 2009 UTC (9 years, 2 months ago) by iliev
File length: 6276 byte(s)
Diff to previous 2012
* Refactoring: moved the independent code from gig::Voice to base classes
* SoundFont format engine: implemented EG1 & EG2


Revision 2012 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Oct 23 17:53:17 2009 UTC (9 years, 2 months ago) by iliev
File length: 13328 byte(s)
Diff to previous 1923
* Refactoring: moved the independent code from
  the Gigasampler format engine to base classes
* SFZ format engine: experimental code (not usable yet)
* SoundFont format engine: experimental code (not usable yet)
* Fixed crash which may occur when MIDI key + transpose is out of range


Revision 1923 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jun 27 16:55:41 2009 UTC (9 years, 6 months ago) by persson
File length: 13764 byte(s)
Diff to previous 1424
* fixed crash happening when a pitch bend event arrived at the same
  time a new instrument was loading
* fixed building with sqlite installed in a non-standard directory


Revision 1424 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Oct 14 22:00:17 2007 UTC (11 years, 3 months ago) by schoenebeck
File length: 13634 byte(s)
Diff to previous 1321
* code cleanup:
- global.h now only covers global definitions that are needed for the C++
  API header files, all implementation internal global definitions are now
  in global_private.h
- atomic.h is not exposed to the C++ API anymore (replaced the references
  in SynchronizedConfig.h for this with local definitions)
- no need to include config.h anymore for using LS's API header files
- DB instruments classes are not exposed to the C++ API
- POSIX callback functions of Thread.h are hidden
- the (optional) gig Engine benchmark compiles again
- updated Doxyfile.in
- fixed warnings in API doc generation
* preparations for release 0.5.0


Revision 1321 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Sep 4 01:12:49 2007 UTC (11 years, 4 months ago) by schoenebeck
File length: 13626 byte(s)
Diff to previous 1038
* added highly experimental code for synchronizing instrument editors
  hosted in the sampler's process to safely edit instruments while playing
  without a crash (hopefully) by either suspending single regions wherever
  possible or - if unavoidable - whole engine(s)
* disk thread: queue sizes are now proportional to CONFIG_MAX_STREAMS
  instead of fix values
* removed legacy Makefiles in meanwhile deleted src/lib directory and its
  subdirectories
* bumped version to 0.4.0.7cvs


Revision 1038 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Feb 3 15:33:00 2007 UTC (11 years, 11 months ago) by persson
File length: 13583 byte(s)
Diff to previous 877
* playback is no longer disabled during instrument loading
* all notes playing on a channel that changes its instrument keep
  playing with the old instrument until they get a note off command
* new thread safety fix for lscp "load engine" and "set channel audio
  output device"


Revision 877 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Jun 25 13:54:17 2006 UTC (12 years, 6 months ago) by persson
File length: 13331 byte(s)
Diff to previous 840
* new filter implementation, which is more accurate and supports all
  filter types including bandreject and lowpass turbo


Revision 840 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Feb 26 13:00:08 2006 UTC (12 years, 10 months ago) by persson
File length: 13428 byte(s)
Diff to previous 832
* fixed some concurrency problems between the lscp thread and the
  audio/midi threads for these commands: load engine, set channel
  audio output device, set channel midi input device/port/channel and
  remove channel. Thanks to Vincent Bongiorno for bug reports and
  testing.
* removed an autotools warning
* fixed an iterator bug
* minor code clean-ups


Revision 832 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Feb 5 10:24:05 2006 UTC (12 years, 11 months ago) by persson
File length: 13465 byte(s)
Diff to previous 831
* added smoothing of volume changes caused by control change messages
* fine tuning of the crossfade volume curve


Revision 831 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jan 28 16:55:30 2006 UTC (12 years, 11 months ago) by persson
File length: 13119 byte(s)
Diff to previous 830
* fixed global pan (CC10) which hasn't been working for a while
* fine tuning of the curves for volume (CC7) and pan (CC10 and gig
  parameter)
* added support for the "attenuation controller threshold" gig
  parameter


Revision 830 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Jan 15 18:23:11 2006 UTC (13 years ago) by persson
File length: 13175 byte(s)
Diff to previous 829
* added linear interpolation of volume modulation inside a
  subfragment; this prevents clicks during voice stealing. Can be
  switched off with the --disable-interpolate-volume configure option.


Revision 829 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jan 14 14:07:47 2006 UTC (13 years ago) by schoenebeck
File length: 13144 byte(s)
Diff to previous 783
* implemented portamento mode and solo mode (a.k.a 'mono mode'):
  all modes can be altered via standard GM messages, that is CC5 for
  altering portamento time, CC65 for enabling / disabling portamento
  mode, CC126 for enabling solo mode and CC127 for disabling solo mode
* fixed EG3 (pitch envelope) synthesis which was neutral all the time
* configure.in: do not automatically pick optimized gcc flags if the user
  already provided some on his own (as CXXFLAGS)


Revision 783 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Oct 2 14:40:52 2005 UTC (13 years, 3 months ago) by persson
File length: 13066 byte(s)
Diff to previous 770
* EG fixes: the length of "attack hold" stage was wrong. Release stage
  can now start before attack stage ends. Cancel release didn't work
  when sustain was zero.


Revision 770 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Sep 11 15:56:29 2005 UTC (13 years, 4 months ago) by schoenebeck
File length: 13068 byte(s)
Diff to previous 738
* synthesis core optimizations


Revision 738 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Aug 16 17:14:25 2005 UTC (13 years, 5 months ago) by schoenebeck
File length: 13084 byte(s)
Diff to previous 729
* extensive synthesis optimization: reimplementation of EGs and LFO(s),
  removed synthesis parameter prerendering and the synthesis parameter
  matrix in general, splitting each audio fragment into subfragments now
  where each subfragment uses constant synthesis parameters
  (everything's still very buggy ATM)


Revision 729 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jul 26 11:18:46 2005 UTC (13 years, 5 months ago) by persson
File length: 11345 byte(s)
Diff to previous 687
* improved filter cutoff calculation by adding support for the
  following gig parameters: Cutoff freq (used when no cutoff
  controller is defined), Control invert, Minimum cutoff, Velocity
  curve and Velocity range. The keyboard tracking now also scales
  cutoff frequency, not just resonance.


Revision 687 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jul 12 22:37:21 2005 UTC (13 years, 6 months ago) by schoenebeck
File length: 11217 byte(s)
Diff to previous 669
* minor efficiency fix (LFO preprocessing was performed even though the
  respective LFO was disabled by the instrument patch)


Revision 669 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jun 21 13:33:19 2005 UTC (13 years, 7 months ago) by schoenebeck
File length: 10875 byte(s)
Diff to previous 663
* fixed minor issue with null/silence samples
  (those stole voices even though they don't need a voice at all which
  resulted in "voice stealing didn't work out" messages)


Revision 663 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jun 18 21:37:03 2005 UTC (13 years, 7 months ago) by schoenebeck
File length: 11059 byte(s)
Diff to previous 563
* another voice stealing fix
  (endless loop occured when voices were stolen from other engine channels)


Revision 563 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun May 22 20:43:32 2005 UTC (13 years, 8 months ago) by schoenebeck
File length: 11043 byte(s)
Diff to previous 554
* (re)implemented voice stealing algorithm "oldestvoiceonkey" and made it
  the default voice stealing algorithm
* added new LSCP command "GET SERVER INFO" which currently returns
  description and version about this sampler
* added some API documentation comments
* minor cleanup


Revision 554 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu May 19 19:25:14 2005 UTC (13 years, 8 months ago) by schoenebeck
File length: 10916 byte(s)
Diff to previous 505
* All compile time options are now centrally alterable as arguments to the
  ./configure script. All options are C Macros beginning with CONFIG_
  prefix and will be placed into auto generated config.h file.


Revision 505 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue May 3 01:00:25 2005 UTC (13 years, 8 months ago) by schoenebeck
File length: 10986 byte(s)
Diff to previous 502
fixed libgig include rules


Revision 502 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Apr 29 14:20:22 2005 UTC (13 years, 8 months ago) by letz
File length: 11013 byte(s)
Diff to previous 460
Fix destructor


Revision 460 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Mar 14 22:35:44 2005 UTC (13 years, 10 months ago) by schoenebeck
File length: 11004 byte(s)
Diff to previous 411
* spawning layered voices now within a loop instead of recursively (fixes
  segmentation fault under heavy voice count load and reduces stress on the
  stack)
* voice stealing operates on all engine channels now
* limit voice stealing to MAX_AUDIO_VOICES thefts per audio fragment cycle
* fixed keygroup handling (layered voices could kill each other)


Revision 411 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Feb 26 02:01:14 2005 UTC (13 years, 10 months ago) by schoenebeck
File length: 11160 byte(s)
Diff to previous 348
* design change: using now one sampler engine instance and one disk thread
  instance for all sampler channels that are connected to the same audio
  output device (and are using the same engine type of course)
* added EngineFactory / EngineChannelFactory to remove the annoying build
  dependencies e.g. of the lscpserver to the actual sampler engine
  implementations
* bumped version to 0.3.0 (current CVS state is still quite broken,
  previous, stable CVS version was tagged as "v0_2_0" and is also available
  as source tarball)


Revision 348 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Jan 23 21:24:16 2005 UTC (13 years, 11 months ago) by schoenebeck
File length: 12066 byte(s)
Diff to previous 346
* another crossfade fix (honoring AttenuationController for case 0,0,0,0,
  fixed cases in_start = in_end = CrossfadeControllerValue, fixed curve for
  cases out_start < CrossfadeControllerValue < out_end, honoring
  InvertAttenuationController parameter)
* support for up to 8 dimensions as introduced by Gig V3
(patch by Andreas Persson)


Revision 346 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jan 21 17:17:31 2005 UTC (14 years ago) by schoenebeck
File length: 11900 byte(s)
Diff to previous 330
* libgig: fixed vcf_type_lowpassturbo value, fixed crossfade points order
* gig::Voice: fixed special crossfade case 0,0,0,0 which actually means no
  crossfade defined


Revision 330 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Dec 29 01:14:15 2004 UTC (14 years ago) by schoenebeck
File length: 11799 byte(s)
Diff to previous 325
* fixed endless loop at the end of sample playback
  (patch by Andreas Persson)


Revision 325 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Dec 21 04:54:37 2004 UTC (14 years, 1 month ago) by senkov
File length: 11642 byte(s)
Diff to previous 319
* Added some profiling capabilities, bugs.


Revision 319 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Dec 13 00:46:42 2004 UTC (14 years, 1 month ago) by schoenebeck
File length: 11827 byte(s)
Diff to previous 287
* introduced 'synthesis mode' to reduce the amount of code and conditionals
  for the current synthesis case in the main synthesis loop
* support for MMX and SSE(1) in the core synthesis algorithms (CPU feature
  detection at runtime, only x86 so far)


Revision 287 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Oct 16 17:38:03 2004 UTC (14 years, 3 months ago) by schoenebeck
File length: 17838 byte(s)
Diff to previous 285
* fixed segfault which occured whenever a voice stole a voice and was in
  turn killed in the same audio fragment, to fix that the MIDI key
  informations are now updated only after all voices were processed


Revision 285 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Oct 14 21:31:26 2004 UTC (14 years, 3 months ago) by schoenebeck
File length: 17660 byte(s)
Diff to previous 273
* bunch of bugfixes (e.g. segfault on voice stealing)


Revision 273 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Oct 8 21:04:51 2004 UTC (14 years, 3 months ago) by schoenebeck
File length: 17577 byte(s)
Diff to previous 271
forgot to modify include for Pool.h


Revision 271 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Oct 8 20:51:39 2004 UTC (14 years, 3 months ago) by schoenebeck
File length: 17587 byte(s)
Diff to previous 245
* libgig: fixed panorama value in DimensionRegion (invalid conversion
  from signed 7 bit to signed 8 bit)
* src/linuxsampler.cpp: stacktrace is now automatically shown on fatal
  errors (that is  segmentation faults, etc.), gdb should be installed for
  this to work
* gig::Voice: tiny accuracy fix of pan calculation
* replaced old pool classes by completely new ones which now offer
  Iterator abstraction


Revision 245 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Sep 18 14:12:36 2004 UTC (14 years, 4 months ago) by schoenebeck
File length: 17551 byte(s)
Diff to previous 242
* support patch panorama info


Revision 242 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Sep 15 13:59:08 2004 UTC (14 years, 4 months ago) by schoenebeck
File length: 16257 byte(s)
Diff to previous 239
* added support for release trigger dimension (that is voices which are
  spawned when a key was released)
* libgig: bugfix in dimension region switching


Revision 239 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Sep 12 14:48:19 2004 UTC (14 years, 4 months ago) by schoenebeck
File length: 15809 byte(s)
Diff to previous 236
* implemented key groups (a.k.a exclusive groups) which is important for
  drum patches and monphonic instruments
* src/engines/gig/Engine.cpp: bugfix in ProcessNoteOn() - did not always
  stick the note on event to the respective key's own event list although
  e.g. the EGADRS expects it to find there


Revision 236 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Sep 9 18:44:18 2004 UTC (14 years, 4 months ago) by schoenebeck
File length: 15613 byte(s)
Diff to previous 233
* added support for crossfades
* support sample playback start offset


Revision 233 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Sep 7 09:32:21 2004 UTC (14 years, 4 months ago) by schoenebeck
File length: 14580 byte(s)
Diff to previous 225
* added support for layers
* fixed initial pitch calculation which did not honor the sample's own
  sample rate


Revision 225 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Aug 22 14:46:47 2004 UTC (14 years, 5 months ago) by schoenebeck
File length: 14564 byte(s)
Diff to previous 203
* set default volume to 1.0 in Gigasampler engine (was 0.0)
* implemented "SET CHANNEL AUDIO_OUTPUT_CHANNEL" LSCP command
* fixed "GET ENGINE INFO" LSCP command
* fixed "GET CHANNEL INFO" LSCP command
* src/network/lscp.y: fixed 'stringval' rule (returned string with formal
  apostrophes), fixed 'dotnum' rule (ignored position after decimal point)


Revision 203 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jul 13 22:44:13 2004 UTC (14 years, 6 months ago) by schoenebeck
File length: 14893 byte(s)
Diff to previous 99
forgot to change some things which was mandatory due to the recent
directory movements ('/src/audiodriver' -> '/src/drivers/audio',
'/src/mididriver' -> '/src/drivers/midi')


Revision 99 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jun 1 16:19:40 2004 UTC (14 years, 7 months ago) by letz
File length: 14891 byte(s)
Diff to previous 97
* Do polynomial interpolation computation in float


Revision 97 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon May 31 19:28:09 2004 UTC (14 years, 7 months ago) by schoenebeck
File length: 14837 byte(s)
Diff to previous 80
* src/engines/gig/Voice.h: fixed bug which caused to hear only one audio
  channel


Revision 80 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun May 23 19:16:33 2004 UTC (14 years, 8 months ago) by schoenebeck
File length: 15904 byte(s)
Diff to previous 56
* biquad filter parameters are now calculated outside the interpolate
  loop for better performance
* couple of loop unroll optimizations
* filter is now enabled by default
* cubic interpolation is now enabled by default
* reduced debug level to 1 to lower verbosity
* raised default limit for voices to 128
* raised default limit for streams to 150
* added some compiler optimization flags (-ffast-math -march -mcpu)


Revision 56 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Apr 27 09:21:58 2004 UTC (14 years, 8 months ago) by schoenebeck
File length: 15421 byte(s)
Diff to previous 53
updated copyright header for 2004


Revision 53 - (view) (download) (as text) (annotate) - [select for diffs]
Added Mon Apr 26 17:15:51 2004 UTC (14 years, 8 months ago) by schoenebeck
File length: 15421 byte(s)
* completely restructured source tree
* implemented multi channel support
* implemented instrument manager, which controls sharing of instruments
  between multiple sampler engines / sampler channels
* created abstract classes 'AudioOutputDevice' and 'MidiInputDevice' for
  convenient implementation of further audio output driver and MIDI input
  driver for LinuxSampler
* implemented following LSCP commands: 'SET CHANNEL MIDI INPUT TYPE',
  'LOAD ENGINE', 'GET CHANNELS', 'ADD CHANNEL', 'REMOVE CHANNEL',
  'SET CHANNEL AUDIO OUTPUT TYPE'
* temporarily removed all command line options
* LSCP server is now launched by default


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.

  Diffs between and
  Type of Diff should be a

  ViewVC Help
Powered by ViewVC