/[svn]/linuxsampler/trunk/src/engines/common/Event.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/common/Event.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3118 by schoenebeck, Fri Apr 21 13:33:03 2017 UTC revision 3360 by schoenebeck, Fri Oct 27 21:19:18 2017 UTC
# Line 58  namespace LinuxSampler { Line 58  namespace LinuxSampler {
58          public:          public:
59              EventGenerator(uint SampleRate);              EventGenerator(uint SampleRate);
60              void UpdateFragmentTime(uint SamplesToProcess);              void UpdateFragmentTime(uint SamplesToProcess);
61                void SetSampleRate(uint SampleRate);
62              Event CreateEvent();              Event CreateEvent();
63              Event CreateEvent(int32_t FragmentPos);              Event CreateEvent(int32_t FragmentPos);
64    
# Line 166  namespace LinuxSampler { Line 167  namespace LinuxSampler {
167                  type_note_pressure, ///< polyphonic key pressure (aftertouch)                  type_note_pressure, ///< polyphonic key pressure (aftertouch)
168                  type_play_note, ///< caused by a call to built-in instrument script function play_note()                  type_play_note, ///< caused by a call to built-in instrument script function play_note()
169                  type_stop_note, ///< caused by a call to built-in instrument script function note_off()                  type_stop_note, ///< caused by a call to built-in instrument script function note_off()
170                    type_kill_note, ///< caused by a call to built-in instrument script function fade_out()
171                  type_note_synth_param, ///< change a note's synthesis parameters (upon real-time instrument script function calls, i.e. change_vol(), change_tune(), change_pan(), etc.)                  type_note_synth_param, ///< change a note's synthesis parameters (upon real-time instrument script function calls, i.e. change_vol(), change_tune(), change_pan(), etc.)
172              } Type;              } Type;
173              enum synth_param_t {              enum synth_param_t {
174                  synth_param_volume,                  synth_param_volume,
175                    synth_param_volume_time,
176                    synth_param_volume_curve,
177                  synth_param_pitch,                  synth_param_pitch,
178                    synth_param_pitch_time,
179                    synth_param_pitch_curve,
180                  synth_param_pan,                  synth_param_pan,
181                    synth_param_pan_time,
182                    synth_param_pan_curve,
183                  synth_param_cutoff,                  synth_param_cutoff,
184                  synth_param_resonance,                  synth_param_resonance,
185                  synth_param_attack,                  synth_param_attack,
186                  synth_param_decay,                  synth_param_decay,
187                    synth_param_sustain,
188                  synth_param_release,                  synth_param_release,
189                    synth_param_cutoff_attack,
190                    synth_param_cutoff_decay,
191                    synth_param_cutoff_sustain,
192                    synth_param_cutoff_release,
193                  synth_param_amp_lfo_depth,                  synth_param_amp_lfo_depth,
194                  synth_param_amp_lfo_freq,                  synth_param_amp_lfo_freq,
195                    synth_param_cutoff_lfo_depth,
196                    synth_param_cutoff_lfo_freq,
197                  synth_param_pitch_lfo_depth,                  synth_param_pitch_lfo_depth,
198                  synth_param_pitch_lfo_freq,                  synth_param_pitch_lfo_freq,
199              };              };
# Line 303  namespace LinuxSampler { Line 318  namespace LinuxSampler {
318      class VMEventHandler;      class VMEventHandler;
319      class VMExecContext;      class VMExecContext;
320    
321        /**
322         * Maximum amount of child script handler instances one script handler is
323         * allowed to create by calling built-in script function fork().
324         */
325        #define MAX_FORK_PER_SCRIPT_HANDLER 8
326    
327      /** @brief Real-time instrument script event.      /** @brief Real-time instrument script event.
328       *       *
329       * Encapsulates one execution instance of a real-time instrument script for       * Encapsulates one execution instance of a real-time instrument script for
# Line 326  namespace LinuxSampler { Line 347  namespace LinuxSampler {
347          int executionSlices; ///< Amount of times this script event has been executed by the ScriptVM runner class.          int executionSlices; ///< Amount of times this script event has been executed by the ScriptVM runner class.
348          bool ignoreAllWaitCalls; ///< If true: calling any built-in wait*() script function should be ignored (this variable may be set with the 2nd argument of built-in script function stop_wait()).          bool ignoreAllWaitCalls; ///< If true: calling any built-in wait*() script function should be ignored (this variable may be set with the 2nd argument of built-in script function stop_wait()).
349          VMEventHandlerType_t handlerType; ///< Native representation of built-in script variable $NI_CALLBACK_TYPE, reflecting the script event type of this script event.          VMEventHandlerType_t handlerType; ///< Native representation of built-in script variable $NI_CALLBACK_TYPE, reflecting the script event type of this script event.
350            script_callback_id_t parentHandlerID; ///< Only in case this script handler instance was created by calling built-in script function fork(): callback ID of the parent event handler instance which created this child. For regular event handler instances which were not created by fork(), this variable reflects 0 (which is always considered an invalid handler ID).
351            script_callback_id_t childHandlerID[MAX_FORK_PER_SCRIPT_HANDLER+1]; ///< In case built-in script function fork() was called by this script handler instance: A zero terminated ID list of all child event handler instances (note: children will not vanish from this list after they terminated).
352            bool autoAbortByParent; ///< Only if this is a child event handler created by calling fork(): if this is true then this child will automatically aborted if the parent event handler terminates.
353            int forkIndex; ///< Only for fork() calls: distinguishment feature which is 0 for parent, 1 for 1st child, 2 for 2nd child, etc.
354    
355            void forkTo(ScriptEvent* e, bool bAutoAbort) const;
356            int countChildHandlers() const;
357            void addChildHandlerID(script_callback_id_t childID);
358      };      };
359    
360      /**      /**
# Line 337  namespace LinuxSampler { Line 366  namespace LinuxSampler {
366       * interpreted by this method to be "now".       * interpreted by this method to be "now".
367       *       *
368       * The meaning of @a fragmentPosBase becomes more important the larger       * The meaning of @a fragmentPosBase becomes more important the larger
369       * the audio fragment size, and vice versa it bcomes less important the       * the audio fragment size, and vice versa it becomes less important the
370       * smaller the audio fragment size.       * smaller the audio fragment size.
371       *       *
372       * @param queue - destination scheduler queue       * @param queue - destination scheduler queue
# Line 347  namespace LinuxSampler { Line 376  namespace LinuxSampler {
376       */       */
377      template<typename T>      template<typename T>
378      void EventGenerator::scheduleAheadMicroSec(RTAVLTree<T>& queue, T& node, int32_t fragmentPosBase, uint64_t microseconds) {      void EventGenerator::scheduleAheadMicroSec(RTAVLTree<T>& queue, T& node, int32_t fragmentPosBase, uint64_t microseconds) {
379          node.scheduleTime = uiTotalSamplesProcessed + fragmentPosBase + float(uiSampleRate) * (float(microseconds) / 1000000.f);          // round up (+1) if microseconds is not zero (i.e. because 44.1 kHz and
380            // 1 us would yield in < 1 and thus would be offset == 0)
381            const sched_time_t offset =
382                (microseconds != 0LL) ?
383                    1.f + (float(uiSampleRate) * (float(microseconds) / 1000000.f))
384                    : 0.f;
385            node.scheduleTime = uiTotalSamplesProcessed + fragmentPosBase + offset;
386          queue.insert(node);          queue.insert(node);
387      }      }
388    

Legend:
Removed from v.3118  
changed lines
  Added in v.3360

  ViewVC Help
Powered by ViewVC