package com.netthreads.network.osc.router.service;
import java.util.HashMap;
import java.util.Map;
import javax.sound.midi.ShortMessage;
import com.google.inject.Singleton;
@Singleton
public class MIDIMessageLookupImpl implements MIDIMessageLookup
{
public static String[] NAMES =
{
"None",
"Note On",
"Note Off",
"Polyphonic Key Pressure",
"Channel Pressure",
"Pitch Bend Change",
"Program Change",
"Control Change"
};
public static int[] VALUES =
{
ShortMessage.CONTINUE,
ShortMessage.NOTE_ON,
ShortMessage.NOTE_OFF,
ShortMessage.POLY_PRESSURE,
ShortMessage.CHANNEL_PRESSURE,
ShortMessage.PITCH_BEND,
ShortMessage.PROGRAM_CHANGE, ShortMessage.CONTROL_CHANGE
};
public static int[] PARAMETERS =
{
0, 3, 3, 1, 1, 1, 1, 1
};
@SuppressWarnings("serial")
private static final Map<String, Integer> MESSAGE_TABLE = new HashMap<String, Integer>()
{
{
for (int i = 0; i < NAMES.length; i++)
{
put(NAMES[i], VALUES[i]);
}
}
};
@SuppressWarnings("serial")
private static final Map<String, Integer> PARAMETERS_TABLE = new HashMap<String, Integer>()
{
{
for (int i = 0; i < NAMES.length; i++)
{
put(NAMES[i], PARAMETERS[i]);
}
}
};
@Override
public int getMessage(String name)
{
return MESSAGE_TABLE.get(name);
}
@Override
public int getParametersCount(String name)
{
int count = 0;
Integer parameterCount = PARAMETERS_TABLE.get(name);
if (parameterCount != null)
{
count = parameterCount;
}
return count;
}
}