/[svn]/linuxsampler/trunk/src/engines/gig/Engine.cpp
ViewVC logotype

Log of /linuxsampler/trunk/src/engines/gig/Engine.cpp

Parent Directory Parent Directory | Revision Log Revision Log


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

Revision 669 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jun 21 13:33:19 2005 UTC (18 years, 9 months ago) by schoenebeck
File length: 67476 byte(s)
Diff to previous 668 , to selected 392
* 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 668 - (view) (download) (annotate) - [select for diffs]
Modified Mon Jun 20 15:30:47 2005 UTC (18 years, 9 months ago) by schoenebeck
File length: 61427 byte(s)
Diff to previous 665 , to selected 392
* fixed a key group bug which caused undefined behavior in conjunction with
  stolen voices (this case was usually followed by a "killed voice
  survived" or "voice stealing didn't work out" error message)


Revision 665 - (view) (download) (annotate) - [select for diffs]
Modified Sun Jun 19 15:11:20 2005 UTC (18 years, 9 months ago) by schoenebeck
File length: 60688 byte(s)
Diff to previous 663 , to selected 392
finally fixes endless loop in voice stealing algorithm (hopefully)


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


Revision 660 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jun 17 19:49:30 2005 UTC (18 years, 9 months ago) by schoenebeck
File length: 59635 byte(s)
Diff to previous 659 , to selected 392
* LSCP server: fixed LSCP event "CHANNEL_INFO" notification
  (e.g. did not notify on volume changes)


Revision 659 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jun 16 21:35:30 2005 UTC (18 years, 9 months ago) by schoenebeck
File length: 59523 byte(s)
Diff to previous 649 , to selected 392
* don't reset scale tuning on instrument or audio output device change


Revision 649 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jun 15 00:01:28 2005 UTC (18 years, 9 months ago) by schoenebeck
File length: 59443 byte(s)
Diff to previous 630 , to selected 392
* revised voice stealing (fixes crash caused by voice stealing)


Revision 630 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jun 11 14:51:49 2005 UTC (18 years, 9 months ago) by persson
File length: 55620 byte(s)
Diff to previous 614 , to selected 392
* volume of release triggered samples now depends on note-on velocity,
  note length and gig parameter "release trigger decay" instead of
  note-off velocity.


Revision 614 - (view) (download) (annotate) - [select for diffs]
Modified Mon Jun 6 16:54:20 2005 UTC (18 years, 9 months ago) by persson
File length: 55297 byte(s)
Diff to previous 563 , to selected 392
* support for the gig parameters for "release velocity response"
  curves, which means the decay and release times now depends on
  velocity. The softer velocity, the longer release.
* fine tuning of the envelope curves. Decay1 and release now have two
  parts, first linear and then exponential at the end.


Revision 563 - (view) (download) (annotate) - [select for diffs]
Modified Sun May 22 20:43:32 2005 UTC (18 years, 10 months ago) by schoenebeck
File length: 55249 byte(s)
Diff to previous 554 , to selected 392
* (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) (annotate) - [select for diffs]
Modified Thu May 19 19:25:14 2005 UTC (18 years, 10 months ago) by schoenebeck
File length: 55336 byte(s)
Diff to previous 497 , to selected 392
* 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 497 - (view) (download) (annotate) - [select for diffs]
Modified Sun Apr 10 11:55:44 2005 UTC (18 years, 11 months ago) by persson
File length: 55279 byte(s)
Diff to previous 493 , to selected 392
* removed some build warnings
* fixed a bug with hanging notes when using sustain pedal
* release samples are not triggered anymore when sustain pedal is down


Revision 493 - (view) (download) (annotate) - [select for diffs]
Modified Sun Apr 3 19:53:43 2005 UTC (18 years, 11 months ago) by schoenebeck
File length: 55211 byte(s)
Diff to previous 475 , to selected 392
* fixed MIDI GS scale tuning (via SysEx Message)


Revision 475 - (view) (download) (annotate) - [select for diffs]
Modified Thu Mar 17 23:56:56 2005 UTC (19 years ago) by schoenebeck
File length: 54819 byte(s)
Diff to previous 473 , to selected 392
* fixed segmentation fault on "GET CHANNEL INFO" commands which occured
  when an engine type was selected but no audio device connected yet to
  the sampler channel (fixes bug #4)


Revision 473 - (view) (download) (annotate) - [select for diffs]
Modified Thu Mar 17 20:13:08 2005 UTC (19 years ago) by schoenebeck
File length: 54812 byte(s)
Diff to previous 466 , to selected 392
* fixed event leak (events sent to inactive keys were not freed)
* implemented MIDI channel mode messages "All Sound Off", "Reset All
  Controller", "All Notes Off" (fixes bug #5)


Revision 466 - (view) (download) (annotate) - [select for diffs]
Modified Tue Mar 15 19:27:01 2005 UTC (19 years ago) by schoenebeck
File length: 48735 byte(s)
Diff to previous 460 , to selected 392
* fixed another crash under heavy load which was accidently introduced with
  the previous commit - events have to be processed completely on all
  engine channels before audio is rendered (fixes bug #7)


Revision 460 - (view) (download) (annotate) - [select for diffs]
Modified Mon Mar 14 22:35:44 2005 UTC (19 years ago) by schoenebeck
File length: 48605 byte(s)
Diff to previous 438 , to selected 392
* 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 438 - (view) (download) (annotate) - [select for diffs]
Modified Wed Mar 9 22:12:15 2005 UTC (19 years ago) by persson
File length: 48019 byte(s)
Diff to previous 424 , to selected 392
* 24-bit decompression now supports the 20 and 18 bit formats
* support for "random" and "round robin" dimensions
* removed a warning printout for empty samples during instrument
  loading


Revision 424 - (view) (download) (annotate) - [select for diffs]
Modified Fri Mar 4 22:54:11 2005 UTC (19 years ago) by schoenebeck
File length: 48076 byte(s)
Diff to previous 420 , to selected 392
* implemented MIDI Control Change 7 (Volume)
* implemented MIDI Control Change 10 (Panpot)


Revision 420 - (view) (download) (annotate) - [select for diffs]
Modified Thu Mar 3 03:25:17 2005 UTC (19 years, 1 month ago) by schoenebeck
File length: 47461 byte(s)
Diff to previous 412 , to selected 392
* fixed some segfaults (which occured on EngineChannel destruction)
* InstrumentResourceManager: recache small samples if their current
  number of silence sample points are not sufficient enough for the used
  audio output device
* src/linuxsampler.cpp: voice / streams statistics on the console is back
  again (can be turned on with command line switch --statistics)


Revision 412 - (view) (download) (annotate) - [select for diffs]
Modified Sat Feb 26 22:44:51 2005 UTC (19 years, 1 month ago) by schoenebeck
File length: 47365 byte(s)
Diff to previous 411 , to selected 392
* gig::Engine: fixed silence (engine channels' events were not imported
  into the engine, fixed undesired creation of new gig::Engine instances
  (and disk threads)
* AudioOutputDevice: reverted behavior to render per Engine instance (and
  not per EngineChannel instance)


Revision 411 - (view) (download) (annotate) - [select for diffs]
Modified Sat Feb 26 02:01:14 2005 UTC (19 years, 1 month ago) by schoenebeck
File length: 42975 byte(s)
Diff to previous 392
* 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 392 - (view) (download) (annotate) - [selected]
Modified Sat Feb 19 02:40:24 2005 UTC (19 years, 1 month ago) by schoenebeck
File length: 51927 byte(s)
Diff to previous 376
* fixed possibility that memory got not locked
* immediately set instrument status when calling LOAD INSTUMENT NON_MODAL


Revision 376 - (view) (download) (annotate) - [select for diffs]
Modified Sat Feb 12 23:48:50 2005 UTC (19 years, 1 month ago) by senkov
File length: 51328 byte(s)
Diff to previous 361 , to selected 392
* Added INSTRUMENT_NAME to GET CHANNEL INFO command result set


Revision 361 - (view) (download) (annotate) - [select for diffs]
Modified Wed Feb 9 01:22:18 2005 UTC (19 years, 1 month ago) by schoenebeck
File length: 51202 byte(s)
Diff to previous 354 , to selected 392
* bunch of fixes for OSX (patch by Stephane Letz)


Revision 354 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jan 29 15:17:59 2005 UTC (19 years, 2 months ago) by schoenebeck
File length: 50954 byte(s)
Diff to previous 351 , to selected 392
* support for keyswitching
* ignore if no sample was defined for region(s) or dimension region(s)
(patch by Andreas Persson)


Revision 351 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jan 25 22:11:43 2005 UTC (19 years, 2 months ago) by schoenebeck
File length: 50497 byte(s)
Diff to previous 329 , to selected 392
* fixed some memory leaks (patch by Gene Anders)


Revision 329 - (view) (download) (annotate) - [select for diffs]
Modified Tue Dec 28 09:43:04 2004 UTC (19 years, 3 months ago) by senkov
File length: 50429 byte(s)
Diff to previous 319 , to selected 392
* Fixes for engine reloading. Fixed streaming bugs in some
 cases only, most probably not all yet.


Revision 319 - (view) (download) (annotate) - [select for diffs]
Modified Mon Dec 13 00:46:42 2004 UTC (19 years, 3 months ago) by schoenebeck
File length: 50284 byte(s)
Diff to previous 293 , to selected 392
* 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 293 - (view) (download) (annotate) - [select for diffs]
Modified Mon Oct 25 15:14:27 2004 UTC (19 years, 5 months ago) by schoenebeck
File length: 50240 byte(s)
Diff to previous 287 , to selected 392
* gig::Engine: changed way how events make it from the input event queue
  into the engine's process chain (fixes forced segfault in EGADSR)
* Event.h: using signed type for fragment position for easier
  differentiation if event might happened before or after current fragment


Revision 287 - (view) (download) (annotate) - [select for diffs]
Modified Sat Oct 16 17:38:03 2004 UTC (19 years, 5 months ago) by schoenebeck
File length: 49384 byte(s)
Diff to previous 285 , to selected 392
* 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) (annotate) - [select for diffs]
Modified Thu Oct 14 21:31:26 2004 UTC (19 years, 5 months ago) by schoenebeck
File length: 47655 byte(s)
Diff to previous 271 , to selected 392
* bunch of bugfixes (e.g. segfault on voice stealing)


Revision 271 - (view) (download) (annotate) - [select for diffs]
Modified Fri Oct 8 20:51:39 2004 UTC (19 years, 5 months ago) by schoenebeck
File length: 47022 byte(s)
Diff to previous 250 , to selected 392
* 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 250 - (view) (download) (annotate) - [select for diffs]
Modified Mon Sep 20 00:31:13 2004 UTC (19 years, 6 months ago) by schoenebeck
File length: 46019 byte(s)
Diff to previous 246 , to selected 392
* added first two experimental voice stealing algorithms ('oldestkey' -
which just steals the oldest voice on the oldest key and 'keymask' - which
tries to pick the oldest voice on the same key where the new voice should
be spawned, if it fails it behaves like 'oldestkey'), the desired algorithm
can be selected at compile time (see Engine.h) will be configurable via
LSCP soon though


Revision 246 - (view) (download) (annotate) - [select for diffs]
Modified Sun Sep 19 14:12:55 2004 UTC (19 years, 6 months ago) by schoenebeck
File length: 39645 byte(s)
Diff to previous 244 , to selected 392
just tidied up event type specific parameters (that is note-on specific
parameters, controle change specific parameters, etc.) in Event class


Revision 244 - (view) (download) (annotate) - [select for diffs]
Modified Fri Sep 17 01:01:11 2004 UTC (19 years, 6 months ago) by schoenebeck
File length: 39318 byte(s)
Diff to previous 242 , to selected 392
* added support for scale tuning via MIDI GS system exclusive message


Revision 242 - (view) (download) (annotate) - [select for diffs]
Modified Wed Sep 15 13:59:08 2004 UTC (19 years, 6 months ago) by schoenebeck
File length: 33868 byte(s)
Diff to previous 239 , to selected 392
* 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) (annotate) - [select for diffs]
Modified Sun Sep 12 14:48:19 2004 UTC (19 years, 6 months ago) by schoenebeck
File length: 32886 byte(s)
Diff to previous 233 , to selected 392
* 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 233 - (view) (download) (annotate) - [select for diffs]
Modified Tue Sep 7 09:32:21 2004 UTC (19 years, 6 months ago) by schoenebeck
File length: 30688 byte(s)
Diff to previous 225 , to selected 392
* added support for layers
* fixed initial pitch calculation which did not honor the sample's own
  sample rate


Revision 225 - (view) (download) (annotate) - [select for diffs]
Modified Sun Aug 22 14:46:47 2004 UTC (19 years, 7 months ago) by schoenebeck
File length: 29995 byte(s)
Diff to previous 133 , to selected 392
* 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 133 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jun 18 14:29:02 2004 UTC (19 years, 9 months ago) by capela
File length: 28139 byte(s)
Diff to previous 123 , to selected 392
* Load Instrument patch applied; this patch makes the
  LOAD INSTRUMENT command to return immediately,
  almost/always with an OK response, while spawning
  the proper instrument file loading in the background.

* New INSTRUMENT_STATUS field on GET CHANNEL INFO result
  set; the instrument status value holds the load progress
  percentage if positive, otherwise a negative value is
  evidence of a load exception error.

* VERSION is now set to 0.2.


Revision 123 - (view) (download) (annotate) - [select for diffs]
Modified Mon Jun 14 19:33:16 2004 UTC (19 years, 9 months ago) by schoenebeck
File length: 27883 byte(s)
Diff to previous 112 , to selected 392
* src/common: added template class 'optional<>' which can be used e.g. as
  return type whenever a value might be returned, but don't has to; this
  template class pretty much acts like a pointer of the given type, but is
  much more safer than a simple pointer
* src/audiodriver: added static class AudioDeviceFactory to create audio
  devices at runtime by using a string and to obtain driver informations
  of drivers at runtime, driver classes should simply use the macro
  REGISTER_AUDIO_OUTPUT_DRIVER(DriverName,DriverClass) in their cpp file
  to register the driver to LinuxSampler (no changes needed anymore in the
  LS code to add a new audio output driver)
* src/drivers: added classes to dynamically manage driver parameters; there
  are two different kinds of parameters: parameters which are need to
  create a new device (DeviceCreationParameterX) used to e.g. create an
  audio output device or a MIDI input device and parameters which are only
  available at runtime, means when a device is already created
  (DeviceRuntimeParameterX) which will be e.g. used as audio channel
  parameters and MIDI port parameters
* src/linuxsampler.cpp: all registered audio output drivers will be shown
  on the console on startup
* src/network: implemented configuration of audio output devices via LSCP


Revision 112 - (view) (download) (annotate) - [select for diffs]
Modified Sun Jun 6 20:57:28 2004 UTC (19 years, 9 months ago) by senkov
File length: 27788 byte(s)
Diff to previous 80 , to selected 392
* Added methods for CHANNEL_INFO command


Revision 80 - (view) (download) (annotate) - [select for diffs]
Modified Sun May 23 19:16:33 2004 UTC (19 years, 10 months ago) by schoenebeck
File length: 27463 byte(s)
Diff to previous 64 , to selected 392
* 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 64 - (view) (download) (annotate) - [select for diffs]
Modified Thu May 6 20:06:20 2004 UTC (19 years, 10 months ago) by schoenebeck
File length: 26751 byte(s)
Diff to previous 56 , to selected 392
* src/Sampler.cpp: fixed 3 stupid but fatal bugs that left in the rush (in
  method SamplerChannels(), CreateAudioOutputDevice() and
  CreateMidiInputDevice())
* src/network/lscpserver.cpp: implemented LSCP command
  'SET CHANNEL MIDI_INPUT_CHANNEL'
* src/Sampler.h: moved enums 'audio_output_type_t', 'midi_input_type_t'
  and 'engine_type_t' into the respective base classes
  ('AudioOutputDevice', 'MidiInputDevice', 'Engine')


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


Revision 53 - (view) (download) (annotate) - [select for diffs]
Added Mon Apr 26 17:15:51 2004 UTC (19 years, 11 months ago) by schoenebeck
File length: 26751 byte(s)
Diff to selected 392
* 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