32 "key",
"MIDIDispatcher",
34 "description",
"MIDIDispatcher",
37 static FactoryRegistrator<ProcessingFactory, MIDIDispatcher>
reg =
metadata;
43 AddNumberOfInControls();
45 SetNumberOfVoices( 2 );
46 SetNumberOfInControls( 2 );
73 std::list<VoiceStatus>::iterator it;
75 for (it=mVoiceStatusList.begin();it!=mVoiceStatusList.end();it++)
77 if ((*it).mId == availableInstr)
79 mVoiceStatusList.erase(it);
80 VoiceStatus status = { -1,-1,
int(availableInstr) };
81 mVoiceStatusList.push_front(status);
90 if( mVelocity == 0.0 )
92 std::list<VoiceStatus>::iterator it;
94 for (it=mVoiceStatusList.begin();it!=mVoiceStatusList.end();it++)
96 if ( it->mNote != mNote )
continue;
97 if ( !it->mVelocity )
continue;
99 mOutputControls[ it->mId * + 1]->SendControl( mVelocity );
105 VoiceStatus status = mVoiceStatusList.front();
106 mVoiceStatusList.pop_front();
107 status.mNote =
int(mNote);
108 status.mVelocity =
int(mVelocity);
109 mVoiceStatusList.push_back(status);
111 mOutputControls[ status.mId * mConfig.GetNumberOfInControls() + 1 ]->SendControl( mVelocity );
112 mOutputControls[ status.mId * mConfig.GetNumberOfInControls() ]->SendControl( mNote );
116 void MIDIDispatcher::CreateControls()
119 for (
int i=0;i<mConfig.GetNumberOfInControls(); i++)
121 std::stringstream number;
124 mInputControls.push_back( inControl );
127 for(
int i=0; i<mConfig.GetNumberOfInControls(); i++ )
128 mInputControls[i]->DoControl(0.);
130 for(
int i = 0; i < mConfig.GetNumberOfVoices(); i++ )
135 VoiceStatus status = { -1, -1, i };
136 mVoiceStatusList.push_back(status);
140 for (
int i = 0; i < mConfig.GetNumberOfVoices(); i++ )
142 for (
int j=0; j < mConfig.GetNumberOfInControls();j++)
144 std::stringstream number(
"");
146 mOutputControls.push_back(
new FloatOutControl(
"a" + number.str(),this ) );
154 void MIDIDispatcher::RemoveControls()
156 std::vector< FloatInControl* >::iterator itInControl;
158 for( itInControl=mInputControls.begin(); itInControl!=mInputControls.end(); itInControl++)
161 mInputControls.clear();