com.frinika.sequencer.model
Class AbstractSysexMacro

java.lang.Object
  extended by com.frinika.sequencer.model.AbstractSysexMacro
All Implemented Interfaces:
SysexMacro
Direct Known Subclasses:
E70fx, E70req, E70set, Sysex

public abstract class AbstractSysexMacro
extends java.lang.Object
implements SysexMacro

Abstract superclass for SysexMacros.

Author:
Jens Gulden

Field Summary
static java.lang.String SYSEX_MACRO_PACKAGE
           
 
Constructor Summary
AbstractSysexMacro()
           
 
Method Summary
protected  void error(java.lang.String msg)
           
static SysexMacro findMacro(java.lang.String s)
          Tries to find a responsible macro-parser class for a given sysex macro string.
 byte[] parse(int[] args)
          The default implementation throws a runtime error, so at last this method must be overwritten by subclasses.
 byte[] parse(java.lang.String macro)
          The default implementation skipps the macro-name, then calls parse(StringTokenizer st).
 byte[] parse(java.lang.String[] args)
          The default implementation treats all args as decimal number values, then calls parse(int[] args)
 byte[] parse(java.util.StringTokenizer st)
          The default implementation extracts individual blank-seperated parameters (not comma-seperated), then calls parse(String[] args).
protected static byte parseByte(java.lang.String s, int defaultRadix)
           
protected static int parseInt(java.lang.String s, int defaultRadix)
          Parses a single byte-string.
protected static int parseInt(java.lang.String s, int defaultRadix, int min, int max)
           
 int parseIntArg(java.lang.String arg, int index)
          Might be overwritten if other formats than decimal are to be parsed as args.
 javax.sound.midi.MidiMessage[] parseMessages(java.lang.String macro)
          Entry method called from SysexEvent.
protected  int parseType(java.lang.String s, java.lang.String[] list)
           
static java.lang.String[] splitArgs(java.lang.String s)
          Same as splitWords, but without first word (i.e.
 java.lang.String usage()
          Generic usage message.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SYSEX_MACRO_PACKAGE

public static final java.lang.String SYSEX_MACRO_PACKAGE
See Also:
Constant Field Values
Constructor Detail

AbstractSysexMacro

public AbstractSysexMacro()
Method Detail

usage

public java.lang.String usage()
Generic usage message. Should be overwritten by subclasses.

Returns:
Usage message string.

findMacro

public static SysexMacro findMacro(java.lang.String s)
Tries to find a responsible macro-parser class for a given sysex macro string. The first word of the string is considered the macro name, which should be available as a class in com.frinika.sequencer.midi.sysex, e.g.: "roland 1000 11 22 33" will try to load the macro class com.frinika.sequencer.midi.sysex.Roland.

Parameters:
macro -
Returns:

parseMessages

public javax.sound.midi.MidiMessage[] parseMessages(java.lang.String macro)
                                             throws javax.sound.midi.InvalidMidiDataException
Entry method called from SysexEvent. Default implementation assumes a single sysex message to be parsed and thus delegates to parse(String).

Specified by:
parseMessages in interface SysexMacro
Parameters:
macro -
Returns:
Throws:
javax.sound.midi.InvalidMidiDataException

parse

public byte[] parse(java.lang.String macro)
             throws javax.sound.midi.InvalidMidiDataException
The default implementation skipps the macro-name, then calls parse(StringTokenizer st).

Parameters:
macro -
Returns:
Throws:
javax.sound.midi.InvalidMidiDataException

parse

public byte[] parse(java.util.StringTokenizer st)
             throws javax.sound.midi.InvalidMidiDataException
The default implementation extracts individual blank-seperated parameters (not comma-seperated), then calls parse(String[] args).

Parameters:
st -
Returns:
Throws:
javax.sound.midi.InvalidMidiDataException

parse

public byte[] parse(java.lang.String[] args)
             throws javax.sound.midi.InvalidMidiDataException
The default implementation treats all args as decimal number values, then calls parse(int[] args)

Parameters:
args -
Returns:
Throws:
javax.sound.midi.InvalidMidiDataException

parseIntArg

public int parseIntArg(java.lang.String arg,
                       int index)
                throws javax.sound.midi.InvalidMidiDataException
Might be overwritten if other formats than decimal are to be parsed as args.

Parameters:
arg -
index -
Returns:
Throws:
javax.sound.midi.InvalidMidiDataException

parse

public byte[] parse(int[] args)
             throws javax.sound.midi.InvalidMidiDataException
The default implementation throws a runtime error, so at last this method must be overwritten by subclasses.

Parameters:
args -
Returns:
Throws:
javax.sound.midi.InvalidMidiDataException

splitArgs

public static java.lang.String[] splitArgs(java.lang.String s)
Same as splitWords, but without first word (i.e. without macro name itself, just parameters).

Parameters:
s -
Returns:

parseInt

protected static int parseInt(java.lang.String s,
                              int defaultRadix)
                       throws javax.sound.midi.InvalidMidiDataException
Parses a single byte-string. By default a hex-value is assumed, but decimal values can be given if preceeded by a tilde (~).

Parameters:
s -
Returns:
Throws:
javax.sound.midi.InvalidMidiDataException

parseInt

protected static int parseInt(java.lang.String s,
                              int defaultRadix,
                              int min,
                              int max)
                       throws javax.sound.midi.InvalidMidiDataException
Throws:
javax.sound.midi.InvalidMidiDataException

parseByte

protected static byte parseByte(java.lang.String s,
                                int defaultRadix)
                         throws javax.sound.midi.InvalidMidiDataException
Throws:
javax.sound.midi.InvalidMidiDataException

parseType

protected int parseType(java.lang.String s,
                        java.lang.String[] list)
                 throws javax.sound.midi.InvalidMidiDataException
Throws:
javax.sound.midi.InvalidMidiDataException

error

protected void error(java.lang.String msg)
              throws javax.sound.midi.InvalidMidiDataException
Throws:
javax.sound.midi.InvalidMidiDataException