/[svn]/linuxsampler/trunk/src/engines/common/InstrumentScriptVMFunctions.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/common/InstrumentScriptVMFunctions.cpp

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

revision 2596 by schoenebeck, Thu Jun 5 19:39:12 2014 UTC revision 2600 by schoenebeck, Sat Jun 7 00:16:03 2014 UTC
# Line 26  namespace LinuxSampler { Line 26  namespace LinuxSampler {
26    
27          if (note < 0 || note > 127) {          if (note < 0 || note > 127) {
28              errMsg("play_note(): argument 1 is an invalid note number");              errMsg("play_note(): argument 1 is an invalid note number");
29              return errorResult();              return errorResult(-1);
30          }          }
31    
32          if (velocity < 0 || velocity > 127) {          if (velocity < 0 || velocity > 127) {
33              errMsg("play_note(): argument 2 is an invalid velocity value");              errMsg("play_note(): argument 2 is an invalid velocity value");
34              return errorResult();              return errorResult(-1);
35          }          }
36    
37          if (sampleoffset < 0) {          if (sampleoffset < 0) {
38              errMsg("play_note(): argument 3 may not be a negative sample offset");              errMsg("play_note(): argument 3 may not be a negative sample offset");
39              return errorResult();              return errorResult(-1);
40          } else if (sampleoffset != 0) {          } else if (sampleoffset != 0) {
41              wrnMsg("play_note(): argument 3 does not support a sample offset other than 0 yet");              wrnMsg("play_note(): argument 3 does not support a sample offset other than 0 yet");
42          }          }
43    
44          if (duration < -1) {          if (duration < -1) {
45              errMsg("play_note(): argument 4 must be a duration value of at least -1 or higher");              errMsg("play_note(): argument 4 must be a duration value of at least -1 or higher");
46              return errorResult();              return errorResult(-1);
47          } else if (duration == -1) {          } else if (duration == -1) {
48              wrnMsg("play_note(): argument 4 does not support special value -1 as duration yet");              wrnMsg("play_note(): argument 4 does not support special value -1 as duration yet");
49          } else if (duration != 0) {          } else if (duration != 0) {
# Line 57  namespace LinuxSampler { Line 57  namespace LinuxSampler {
57          e.Type = Event::type_note_on;          e.Type = Event::type_note_on;
58          e.Param.Note.Key = note;          e.Param.Note.Key = note;
59          e.Param.Note.Velocity = velocity;          e.Param.Note.Velocity = velocity;
60            e.Format = {}; // init format speific stuff with zero
61    
62            int id = pEngineChannel->ScheduleEvent(&e, duration);
63    
64            return successResult(id);
65        }
66    
67        InstrumentScriptVMFunction_set_controller::InstrumentScriptVMFunction_set_controller(InstrumentScriptVM* parent)
68            : m_vm(parent)
69        {
70        }
71    
72        VMFnResult* InstrumentScriptVMFunction_set_controller::exec(VMFnArgs* args) {
73            int controller = args->arg(0)->asInt()->evalInt();
74            int value      = args->arg(1)->asInt()->evalInt();
75    
76            AbstractEngineChannel* pEngineChannel =
77                static_cast<AbstractEngineChannel*>(m_vm->m_event->cause.pEngineChannel);
78    
79            Event e = m_vm->m_event->cause;
80            e.Format = {}; // init format speific stuff with zero
81            if (controller == CTRL_TABLE_IDX_AFTERTOUCH) {
82                e.Type = Event::type_channel_pressure;
83                e.Param.ChannelPressure.Value = value & 127;
84            } else if (controller == CTRL_TABLE_IDX_PITCHBEND) {
85                e.Type = Event::type_pitchbend;
86                e.Param.Pitch.Pitch = value;
87            } else if (controller >= 0 && controller <= 127) {
88                e.Type = Event::type_control_change;
89                e.Param.CC.Controller = controller;
90                e.Param.CC.Value = value;
91            } else {
92                errMsg("set_controller(): argument 1 is an invalid controller");
93                return errorResult();
94            }
95    
96            int id = pEngineChannel->ScheduleEvent(&e, 0);
97    
98            return successResult(id);
99        }    
100    
101        InstrumentScriptVMFunction_ignore_event::InstrumentScriptVMFunction_ignore_event(InstrumentScriptVM* parent)
102            : m_vm(parent)
103        {
104        }
105    
106        VMFnResult* InstrumentScriptVMFunction_ignore_event::exec(VMFnArgs* args) {
107            int id = args->arg(0)->asInt()->evalInt();
108            if (id < 0) {
109                wrnMsg("ignore_event(): argument may not be a negative event ID");
110                return successResult();
111            }
112    
113            AbstractEngineChannel* pEngineChannel =
114                static_cast<AbstractEngineChannel*>(m_vm->m_event->cause.pEngineChannel);
115    
116            pEngineChannel->IgnoreEvent(id);
117    
118            return successResult();
119        }
120    
121        InstrumentScriptVMFunction_ignore_controller::InstrumentScriptVMFunction_ignore_controller(InstrumentScriptVM* parent)
122            : m_vm(parent)
123        {
124        }
125    
126        VMFnResult* InstrumentScriptVMFunction_ignore_controller::exec(VMFnArgs* args) {
127            int id = (args->argsCount() >= 1) ? args->arg(0)->asInt()->evalInt() : m_vm->m_event->id;
128            if (id < 0) {
129                wrnMsg("ignore_controller(): argument may not be a negative event ID");
130                return successResult();
131            }
132    
133            AbstractEngineChannel* pEngineChannel =
134                static_cast<AbstractEngineChannel*>(m_vm->m_event->cause.pEngineChannel);
135    
136          pEngineChannel->ScheduleEvent(&e, duration);          pEngineChannel->IgnoreEvent(id);
137    
138          return successResult();          return successResult();
139      }      }

Legend:
Removed from v.2596  
changed lines
  Added in v.2600

  ViewVC Help
Powered by ViewVC