#include "emux_voice.h"
#include <sound/asoundef.h>
-#define NELEM(arr) (sizeof(arr)/sizeof((arr)[0]))
-
/*
* conversion from NRPN/control parameters to Emu8000 raw parameters
*/
{26, EMUX_FX_REVERB, fx_reverb},
};
-static int num_awe_effects = NELEM(awe_effects);
-
/*
* GS(SC88) NRPN effects; still experimental
{10, EMUX_FX_LFO1_DELAY, gs_vib_delay},
};
-static int num_gs_effects = NELEM(gs_effects);
-
/*
* NRPN events
{
snd_emux_port_t *port;
- port = snd_magic_cast(snd_emux_port_t, p, return);
+ port = p;
snd_assert(port != NULL, return);
snd_assert(chan != NULL, return);
chan->control[MIDI_CTL_LSB_DATA_ENTRY];
val -= 8192;
send_converted_effect
- (awe_effects, num_awe_effects,
+ (awe_effects, ARRAY_SIZE(awe_effects),
port, chan, chan->control[MIDI_CTL_NONREG_PARM_NUM_LSB],
val, EMUX_FX_FLAG_SET);
return;
/* only MSB is valid */
val = chan->control[MIDI_CTL_MSB_DATA_ENTRY];
send_converted_effect
- (gs_effects, num_gs_effects,
+ (gs_effects, ARRAY_SIZE(gs_effects),
port, chan, chan->control[MIDI_CTL_NONREG_PARM_NUM_LSB],
val, EMUX_FX_FLAG_ADD);
return;
{73, EMUX_FX_ENV2_ATTACK, xg_attack},
};
-static int num_xg_effects = NELEM(xg_effects);
-
int
snd_emux_xg_control(snd_emux_port_t *port, snd_midi_channel_t *chan, int param)
{
- return send_converted_effect(xg_effects, num_xg_effects,
+ return send_converted_effect(xg_effects, ARRAY_SIZE(xg_effects),
port, chan, param,
chan->control[param],
EMUX_FX_FLAG_ADD);
snd_emux_port_t *port;
snd_emux_t *emu;
- port = snd_magic_cast(snd_emux_port_t, p, return);
+ port = p;
snd_assert(port != NULL, return);
snd_assert(chset != NULL, return);
emu = port->emu;