void SetupEffects(MidiChannelPcSpk chan, EffectEnvelope env, EffectDefinition def, byte flags, byte[] data, int offset) { def.phase = 0; def.useModWheel = (byte)(flags & 0x40); env.loop = (byte)(flags & 0x20); def.type = (short)(flags & 0x1F); env.modWheelSensitivity = 31; if (def.useModWheel != 0) { env.modWheelState = (byte)(MidiChannelPcSpk.ModWheel >> 2); } else { env.modWheelState = 31; } switch (def.type) { case 0: env.maxLevel = 767; env.startLevel = 383; break; case 1: env.maxLevel = 31; env.startLevel = 15; break; case 2: env.maxLevel = 63; env.startLevel = chan._out.unkB; break; case 3: env.maxLevel = 63; env.startLevel = chan._out.unkC; break; case 4: env.maxLevel = 3; env.startLevel = chan._instrument[4]; break; case 5: env.maxLevel = 62; env.startLevel = 31; env.modWheelState = 0; break; case 6: env.maxLevel = 31; env.startLevel = 0; env.modWheelSensitivity = 0; break; } StartEffect(env, data, offset); }
public PCSpeakerDriver(IMixer mixer) : base(mixer) { _pcSpk = new PCSpeaker(mixer.OutputRate); for (int i = 0; i < _channels.Length; i++) { _channels[i] = new MidiChannelPcSpk(); } }
void SetupEffects(MidiChannelPcSpk chan, EffectEnvelope env, EffectDefinition def, byte flags, byte[] data, int offset) { def.phase = 0; def.useModWheel = (byte)(flags & 0x40); env.loop = (byte)(flags & 0x20); def.type = (short)(flags & 0x1F); env.modWheelSensitivity = 31; if (def.useModWheel != 0) env.modWheelState = (byte)(MidiChannelPcSpk.ModWheel >> 2); else env.modWheelState = 31; switch (def.type) { case 0: env.maxLevel = 767; env.startLevel = 383; break; case 1: env.maxLevel = 31; env.startLevel = 15; break; case 2: env.maxLevel = 63; env.startLevel = chan._out.unkB; break; case 3: env.maxLevel = 63; env.startLevel = chan._out.unkC; break; case 4: env.maxLevel = 3; env.startLevel = chan._instrument[4]; break; case 5: env.maxLevel = 62; env.startLevel = 31; env.modWheelState = 0; break; case 6: env.maxLevel = 31; env.startLevel = 0; env.modWheelSensitivity = 0; break; } StartEffect(env, data, offset); }