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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Revision 2594 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jun 5 00:16:25 2014 UTC (5 years ago) by schoenebeck
File length: 7914 byte(s)
Diff to previous 2330
* ScriptVM (WIP): started to integrate real-time instrument script
  support into the sampler engine implementations. The code is
  shared among all sampler engines, however currently only the gig
  file format supports storing instrument scripts (as LinuxSampler
  extension to the original GigaStudio 4 file format).
* gig engine: Added support for loading instrument scripts from .gig
  files.
* ScriptVM (WIP): Implemented built-in script variables %CC, $CC_NUM,
  $EVENT_NOTE, $EVENT_VELOCITY, $VCC_MONO_AT, $VCC_PITCH_BEND.
* ScriptVM (WIP): Implemented execution of script event handler "init".
* ScriptVM (WIP): Implemented execution of script event handler
  "controller".
* Bumped version (1.0.0.svn42).


Revision 2330 - (view) (download) (annotate) - [select for diffs]
Modified Mon Mar 12 15:14:31 2012 UTC (7 years, 3 months ago) by schoenebeck
File length: 7689 byte(s)
Diff to previous 2277
* Introduced new C++ API method EngineChannel::InstrumentFileName(int index)
  allowing to retrieve the whole list of files used for the loaded
  instrument on an engine channel (a.k.a. part). Some GigaStudio instruments
  for example are splitted over several files like "Foo.gig", "Foo.gx01",
  "Foo.gx02", ...
* Bumped version to 1.0.0.svn18


Revision 2277 - (view) (download) (annotate) - [select for diffs]
Modified Sat Oct 1 08:23:02 2011 UTC (7 years, 8 months ago) by persson
File length: 7074 byte(s)
Diff to previous 2127
* fixed handling of rapid bank select and program change messages sent
  to the same sampler channel (patch from the Open Octave project,
  slightly adjusted)


Revision 2127 - (view) (download) (annotate) - [select for diffs]
Modified Wed Sep 22 18:59:16 2010 UTC (8 years, 8 months ago) by persson
File length: 6950 byte(s)
Diff to previous 2114
* fixed crash when deleting a sampler channel or changing engine type
  while an instrument load was in progress


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


Revision 2043 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jan 9 09:37:01 2010 UTC (9 years, 5 months ago) by persson
File length: 7106 byte(s)
Diff to previous 2012
* gig engine: implemented the "round robin keyboard" dimension
* gig engine: fixed round robin and random dimensions for cases when
  number of dimension zones is not a power of two
* gig engine: made round robin use a counter for each region instead
  of each key
* fixed building with libgig installed in a non-standard directory


Revision 2012 - (view) (download) (annotate) - [select for diffs]
Modified Fri Oct 23 17:53:17 2009 UTC (9 years, 7 months ago) by iliev
File length: 6614 byte(s)
Diff to previous 1924
* 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 1924 - (view) (download) (annotate) - [select for diffs]
Modified Sun Jun 28 16:43:38 2009 UTC (9 years, 11 months ago) by persson
File length: 41532 byte(s)
Diff to previous 1847
* made program change handling in MIDI thread real-time safe by moving
  the logic to a non-RT thread


Revision 1847 - (view) (download) (annotate) - [select for diffs]
Modified Fri Feb 27 17:12:40 2009 UTC (10 years, 3 months ago) by iliev
File length: 41069 byte(s)
Diff to previous 1844
* fixed crash when changing the audio output device of a sampler
  channel with loaded instrument and start playing notes


Revision 1844 - (view) (download) (annotate) - [select for diffs]
Modified Mon Feb 23 18:29:50 2009 UTC (10 years, 3 months ago) by persson
File length: 40821 byte(s)
Diff to previous 1843
* fixed crash when removing channel with active voices (#116)


Revision 1843 - (view) (download) (annotate) - [select for diffs]
Modified Sat Feb 21 17:08:18 2009 UTC (10 years, 3 months ago) by iliev
File length: 41629 byte(s)
Diff to previous 1835
* fixed orphaned pointers when setting maximum voices limit (bug #118)


Revision 1835 - (view) (download) (annotate) - [select for diffs]
Modified Mon Feb 16 17:56:50 2009 UTC (10 years, 4 months ago) by iliev
File length: 40503 byte(s)
Diff to previous 1826
* Adapted drivers/Plugin class to be used as a base class for the
  AudioUnit plugin and fixed orphaned pointers when deleting PluginGlobal
* Fixed possible iterator invalidations when resetting the sampler
* Fixed memory leaks when issuing the following LSCP commands:
  GET AUDIO_OUTPUT_DRIVER INFO
  GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO
  GET MIDI_INPUT_DRIVER INFO
  GET MIDI_INPUT_DRIVER_PARAMETER INFO
* Fixed possible compilation error when sqlite is not present


Revision 1826 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jan 24 14:32:35 2009 UTC (10 years, 4 months ago) by iliev
File length: 39927 byte(s)
Diff to previous 1761
* fixed a crash which occurs when removing a sampler channel with
  instrument loading in progress (bug #113)


Revision 1761 - (view) (download) (annotate) - [select for diffs]
Modified Fri Aug 29 15:42:06 2008 UTC (10 years, 9 months ago) by iliev
File length: 39589 byte(s)
Diff to previous 1723
* fixed a crash which occurs when removing a sampler channel waiting
  to start instrument loading after another channel


Revision 1723 - (view) (download) (annotate) - [select for diffs]
Modified Sun Apr 20 08:53:39 2008 UTC (11 years, 2 months ago) by schoenebeck
File length: 39545 byte(s)
Diff to previous 1662
* allow pan control of engine channels on C++ API level
* export denormals-are-zero mode feature to C++ API


Revision 1662 - (view) (download) (annotate) - [select for diffs]
Modified Sun Feb 3 16:21:38 2008 UTC (11 years, 4 months ago) by schoenebeck
File length: 39096 byte(s)
Diff to previous 1659
* the promised "cleanup": rewrote virtual MIDI device's notification a bit
  (using now a safe double buffer approach using "SynchronizedConfig"
  instead of the Trylock() approach previously to synchronize the list of
  virtual MIDI devices)
* bumped version to 0.5.1.2cvs


Revision 1659 - (view) (download) (annotate) - [select for diffs]
Modified Sun Feb 3 00:13:27 2008 UTC (11 years, 4 months ago) by schoenebeck
File length: 37487 byte(s)
Diff to previous 1653
* added support for triggering notes by instrument editors
  (still some cleanup / refactoring ahead, but it should work)
* bumped version to 0.5.1.1cvs


Revision 1653 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jan 30 01:51:46 2008 UTC (11 years, 4 months ago) by schoenebeck
File length: 34753 byte(s)
Diff to previous 1646
* added support for notifying instrument editors on note-on / note-off
  events (e.g. to highlight the pressed keys on the virtual keyboard
  of gigedit)
* fixed return value of recently added Thread::TestCancel() method
* be verbose on DLL load errors (on Linux)


Revision 1646 - (view) (download) (annotate) - [select for diffs]
Modified Sun Jan 20 15:04:51 2008 UTC (11 years, 5 months ago) by persson
File length: 34191 byte(s)
Diff to previous 1424
* made it possible to load an instrument even if the audio thread
  isn't running


Revision 1424 - (view) (download) (annotate) - [select for diffs]
Modified Sun Oct 14 22:00:17 2007 UTC (11 years, 8 months ago) by schoenebeck
File length: 31885 byte(s)
Diff to previous 1309
* 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 1309 - (view) (download) (annotate) - [select for diffs]
Modified Wed Aug 29 10:36:32 2007 UTC (11 years, 9 months ago) by iliev
File length: 31843 byte(s)
Diff to previous 1298
* A notification event is now sent when the
  instrument loading on a sampler channel failed


Revision 1298 - (view) (download) (annotate) - [select for diffs]
Modified Fri Aug 17 12:55:37 2007 UTC (11 years, 10 months ago) by iliev
File length: 31744 byte(s)
Diff to previous 1267
* ensure that a notification event is sent when already
  loaded instrument is assigned to another sampler channel


Revision 1267 - (view) (download) (annotate) - [select for diffs]
Modified Tue Aug 7 10:34:07 2007 UTC (11 years, 10 months ago) by iliev
File length: 31706 byte(s)
Diff to previous 1212
* A notification event is now sent when altering
  audio output channel on a sampler channel


Revision 1212 - (view) (download) (annotate) - [select for diffs]
Modified Tue May 29 23:59:36 2007 UTC (12 years ago) by schoenebeck
File length: 31674 byte(s)
Diff to previous 1130
* added highly experimental support for on-the-fly instrument editing
  within the sampler's process (by using instrument editor plugins),
  you'll notice the new "Registered instrument editors:" message on
  startup, the plugin path can be overridden at compile time with
  ./configure --enable-plugin-dir=/some/dir
* added a new LSCP command "EDIT INSTRUMENT <sampler-channel>" to spawn
  a matching instrument editor for the instrument on the given sampler
  channel (LSCP command syntax might be subject to change soon)
* config.h is not going to be installed along with liblinuxsampler's
  API header files anymore (not necessary anymore)
* take care of $(DESTDIR) when creating the instruments DB on 'make
  install' rule (needed for packaging and cross compilation)
* bumped version to 0.4.0.5cvs


Revision 1130 - (view) (download) (annotate) - [select for diffs]
Modified Sun Mar 25 18:59:14 2007 UTC (12 years, 2 months ago) by iliev
File length: 31753 byte(s)
Diff to previous 1108
* Implemented new, improved notification system


Revision 1108 - (view) (download) (annotate) - [select for diffs]
Modified Thu Mar 22 20:39:04 2007 UTC (12 years, 3 months ago) by iliev
File length: 31876 byte(s)
Diff to previous 1041
* Added new notification events for tracking
effect send changes and global volume changes


Revision 1041 - (view) (download) (annotate) - [select for diffs]
Modified Wed Feb 7 17:45:19 2007 UTC (12 years, 4 months ago) by schoenebeck
File length: 31600 byte(s)
Diff to previous 1040
* handle MIDI coarse tuning messages (MIDI RPN #0 MSB, #2 LSB),
  currently lazy implementation, transpose value is simply added on the
  note on/off values instead only at the mandatory places, thus when
  altering transpose while playing, voices can unintendedly survive


Revision 1040 - (view) (download) (annotate) - [select for diffs]
Modified Wed Feb 7 15:41:31 2007 UTC (12 years, 4 months ago) by schoenebeck
File length: 31571 byte(s)
Diff to previous 1039
* bugfix: sampler crashed when trying to persistently map a not existent or
  corrupt .gig file ("MAP MIDI_INSTRUMENT ... PERSISTENT")
* behavior fix: reset FX send levels i.e. when receiving a MIDI "reset all
  controllers" message
* bumped version to 0.4.0.3cvs


Revision 1039 - (view) (download) (annotate) - [select for diffs]
Modified Sat Feb 3 20:46:44 2007 UTC (12 years, 4 months ago) by persson
File length: 31402 byte(s)
Diff to previous 1038
* EG fix: a release value of zero could cause noises or crash
* fix of previous thread safety fix, which in some cases locked the
  engine


Revision 1038 - (view) (download) (annotate) - [select for diffs]
Modified Sat Feb 3 15:33:00 2007 UTC (12 years, 4 months ago) by persson
File length: 31361 byte(s)
Diff to previous 1005
* 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 1005 - (view) (download) (annotate) - [select for diffs]
Modified Fri Dec 29 20:06:14 2006 UTC (12 years, 5 months ago) by schoenebeck
File length: 31188 byte(s)
Diff to previous 1001
* global volume can now be altered at runtime
  (added two new LSCP commands for this, LSCP specs updated)


Revision 1001 - (view) (download) (annotate) - [select for diffs]
Modified Wed Dec 27 16:17:08 2006 UTC (12 years, 5 months ago) by schoenebeck
File length: 31209 byte(s)
Diff to previous 970
* implemented effect sends (also added new LSCP commands for this feature,
  updated LSCP spec document along with this commit batch as well)


Revision 970 - (view) (download) (annotate) - [select for diffs]
Modified Wed Dec 6 22:28:17 2006 UTC (12 years, 6 months ago) by schoenebeck
File length: 26828 byte(s)
Diff to previous 947
* fixed crash occuring in conjunction with the new 'MAP MIDI_INSTRUMENT'
  LSCP command (cause: RingBuffer was not able to do deep copies)


Revision 947 - (view) (download) (annotate) - [select for diffs]
Modified Mon Nov 27 21:34:55 2006 UTC (12 years, 6 months ago) by schoenebeck
File length: 26816 byte(s)
Diff to previous 906
* implemented MIDI instrument mapping according to latest LSCP draft


Revision 906 - (view) (download) (annotate) - [select for diffs]
Modified Sun Jul 23 16:44:08 2006 UTC (12 years, 10 months ago) by schoenebeck
File length: 26771 byte(s)
Diff to previous 903
* MIDI driver API extension for MIDI drivers which already supply exact
  time stamps for events (i.e. for offline rendering based MIDI drivers)


Revision 903 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jul 22 14:22:53 2006 UTC (12 years, 11 months ago) by persson
File length: 21014 byte(s)
Diff to previous 880
* real support for 24 bit samples - samples are not truncated to 16
  bits anymore
* support for aftertouch (channel pressure, not polyphonic aftertouch)


Revision 880 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jun 27 22:57:37 2006 UTC (12 years, 11 months ago) by schoenebeck
File length: 21014 byte(s)
Diff to previous 846
just some refactoring work:
- renamed class LinuxSamplerException -> Exception
- encapsulated LS API relevant files into LS namespace
- removed unnecessary header inclusions


Revision 846 - (view) (download) (annotate) - [select for diffs]
Modified Sun Mar 19 16:38:22 2006 UTC (13 years, 3 months ago) by persson
File length: 21062 byte(s)
Diff to previous 829
* more thread safety fixes: another fix for lscp "load engine" and
  midi thread. Sysex midi protected against lscp. Instrument loader
  thread protected against lscp thread.


Revision 829 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jan 14 14:07:47 2006 UTC (13 years, 5 months ago) by schoenebeck
File length: 21012 byte(s)
Diff to previous 781
* 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 781 - (view) (download) (annotate) - [select for diffs]
Modified Mon Sep 26 10:17:00 2005 UTC (13 years, 8 months ago) by schoenebeck
File length: 20775 byte(s)
Diff to previous 776
* fixed event handling bug which was introduced by the recent synthesis
  optimizations (events were only processed for the first active voice)
* added global volume attenuation of -9 dB (0.35f) to prevent clipping
  which can be overridden with --enable-global-attenuation


Revision 776 - (view) (download) (annotate) - [select for diffs]
Modified Wed Sep 21 19:05:41 2005 UTC (13 years, 9 months ago) by iliev
File length: 20753 byte(s)
Diff to previous 738
* Added support for sostenuto pedal


Revision 738 - (view) (download) (annotate) - [select for diffs]
Modified Tue Aug 16 17:14:25 2005 UTC (13 years, 10 months ago) by schoenebeck
File length: 20721 byte(s)
Diff to previous 675
* 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 675 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jun 22 22:09:28 2005 UTC (13 years, 11 months ago) by schoenebeck
File length: 21672 byte(s)
Diff to previous 670
* update MIDI channel info on program change


Revision 670 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jun 21 18:00:52 2005 UTC (14 years ago) by schoenebeck
File length: 20898 byte(s)
Diff to previous 660
* don't reset volume, pan, pitch and MIDI controller values on instrument
  or audio output device change
* send 'CHANNEL_INFO' LSCP event on MIDI program change messages


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


Revision 554 - (view) (download) (annotate) - [select for diffs]
Modified Thu May 19 19:25:14 2005 UTC (14 years, 1 month ago) by schoenebeck
File length: 19420 byte(s)
Diff to previous 517
* 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 517 - (view) (download) (annotate) - [select for diffs]
Modified Sun May 8 00:26:21 2005 UTC (14 years, 1 month ago) by schoenebeck
File length: 19413 byte(s)
Diff to previous 475
* implemented progress indicator for loading instruments
  (can be polled with "GET CHANNEL INFO", field "INSTRUMENT_STATUS")


Revision 475 - (view) (download) (annotate) - [select for diffs]
Modified Thu Mar 17 23:56:56 2005 UTC (14 years, 3 months ago) by schoenebeck
File length: 18968 byte(s)
Diff to previous 473
* 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 (14 years, 3 months ago) by schoenebeck
File length: 18881 byte(s)
Diff to previous 460
* 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 460 - (view) (download) (annotate) - [select for diffs]
Modified Mon Mar 14 22:35:44 2005 UTC (14 years, 3 months ago) by schoenebeck
File length: 18699 byte(s)
Diff to previous 438
* 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 (14 years, 3 months ago) by persson
File length: 15876 byte(s)
Diff to previous 424
* 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 (14 years, 3 months ago) by schoenebeck
File length: 15907 byte(s)
Diff to previous 420
* 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 (14 years, 3 months ago) by schoenebeck
File length: 15835 byte(s)
Diff to previous 412
* 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 (14 years, 3 months ago) by schoenebeck
File length: 15651 byte(s)
Diff to previous 411
* 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]
Added Sat Feb 26 02:01:14 2005 UTC (14 years, 3 months ago) by schoenebeck
File length: 15324 byte(s)
* 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)


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