/** * @version 02.52 20021231 * @author Robert C. Radcliffe */ import java.util. Hashtable; public class Bendir { // these are permanent static final int[] cf = {6,12,18,25,33,41,50,60,72, 85,101,120,145,181,241}; static final String SLAP="slap"; static final String BASS="bass"; static final String _PPP= "ppp"; static final String __PP= "pp"; static final String ___P= "p"; static final String __MP= "mp"; static final String __MF= "mf"; static final String ___F= "f"; static final String __FF= "ff"; static final String _FFF= "fff"; static final String _ALL= "all"; static final String[] dynamics = {_PPP,__PP,___P,__MP,__MF,___F,__FF,_FFF,_ALL}; static final Keytable keys = new Keytable(); // these might change or be read in: static final String NAME="Bendir "; static int MIDIbank = 0; static int MIDIpatch =20; static String[] sampleQualities = { /*SLAP*/SLAP, /*BASS*/BASS}; static String[][] sampleDynamics = { /*SLAP*/{_PPP,__PP,___P,__MP,__MF,___F,__FF,_FFF}, /*BASS*/{_PPP,__PP,___P,__MF,__MF,___F,___F,___F}}; static int[][]initialAttenuations = { /*SLAP*/{-428,-239,-257,-210,-150, -55, -16, 0}, /*BASS*/{ -93,-345,-275, 33, 33,-159,-159,-159}}; public static void main(String[] args) { printSamples(); printInstruments(); printPresets(); printInfo(); } static void printSamples() { System.out.println( "[Samples]" ); System.out.println(); for(int n=0; n< sampleQualities.length; n++) { String sQ = sampleQualities [n]; String[] sDn=sampleDynamics [n]; String sDx="_"; for(int d= sDn.length-1;d>=0;d--) { String sDnd= sDn[d]; if(! sDnd.equals(sDx)) printSample( sQ, sDnd); sDx= sDnd; } } System.out.println(); } static void printSample ( String sampleQuality , String sampleDynamic ) { System.out.println( " SampleName="+ sampleQuality+"_"+ sampleDynamic); System.out.println(" SampleRate=44100"); System.out.println(" Key="+ (Integer) keys. get(sampleQuality)); System.out.println(" FineTune=0"); System.out.println(" Type=1"); System.out.println(); } static void printInstruments() { int v; System.out.println( "[Instruments]"); System.out.println(); v=127; do { printInstrumentPair( NAME + _ALL, v ); v=v-16; } while (v>= 16); do { printInstrument1( NAME + _ALL, v--, 0 ); } while (v>= 1); for(int j=7 ; j>=0 ; j-- ) { v=127; do { printInstrument1( NAME + dynamics[j], v--, j ); } while (v>= 1); } } static void printInstrumentPair ( String instrumentName , int instrumentVelocity ) { int v= instrumentVelocity ; int index= v/16; printInstrument1( instrumentName, v-- , index ); { int up=0; int dn=cf.length-1; do { printInstrument2( instrumentName, v-- , index , cf[up++], cf[dn--]); } while ( dn>=0); } } static void printInstrument1 ( String instrumentName , int instrumentVelocity , int index ) { printInstrumentHdr( instrumentName , instrumentVelocity ); for(int j=0 ; j< sampleQualities.length ; j++ ) printInstrumentSample( sampleQualities [j] , sampleDynamics [j][index] , initialAttenuations [j][index] ); printGlobalZone( instrumentVelocity ); } static void printInstrument2 ( String instrumentName , int instrumentVelocity , int index , int crossFade1 , int crossFade2 ) { printInstrumentHdr( instrumentName , instrumentVelocity ); for(int j=0 ; j< sampleQualities.length ; j++ ) { String sampleQuality = sampleQualities [j] ; String sampleDynamic1 = sampleDynamics [j][index] ; String sampleDynamic2 = sampleDynamics [j][index-1] ; if ( sampleDynamic1 == sampleDynamic2 ) printInstrumentSample( sampleQuality , sampleDynamic1 , initialAttenuations [j][index] ); else { printInstrumentSample( sampleQuality , sampleDynamic1 , initialAttenuations [j][index] + crossFade1 ); printInstrumentSample( sampleQuality , sampleDynamic2 , initialAttenuations [j][index-1] + crossFade2 ); } } printGlobalZone( instrumentVelocity ); } static void printInstrumentHdr ( String instrumentName , int instrumentVelocity ) { System.out.println(" InstrumentName="+ instrumentName+":"+ (instrumentVelocity<100?"0":"")+ (instrumentVelocity< 10?"0":"")+ instrumentVelocity); System.out.println(); } static void printInstrumentSample ( String sampleQuality , String sampleDynamic , int initialAttenuation ) { Integer key= (Integer) keys. get(sampleQuality); System.out.println(" Sample="+ sampleQuality+"_"+ sampleDynamic); System.out.println( " Z_LowKey="+ key); System.out.println( " Z_HighKey="+ key); System.out.println( " Z_LowVelocity=0"); System.out.println( " Z_HighVelocity=127"); if (0 != initialAttenuation ) System.out.println( " Z_initialAttenuation="+ ((initialAttenuation +65536) %65536)); System.out.println(); } static void printGlobalZone ( int initialFilterFc ) { System.out.println(" GlobalZone"); System.out.println(" GZ_initialFilterFc="+ ((initialFilterFc*30)+9690)); System.out.println(" GZ_releaseVolEnv=5317"); System.out.println(); System.out.println(); } static void printPresets() { System.out.println( "[Presets]"); System.out.println(); for(int i=0 ; i< dynamics.length; i++ ) printPreset ( NAME+ dynamics[i] , MIDIbank , MIDIpatch+i ); } static void printPreset ( String presetName , int bank , int program ) { System.out.println(" PresetName="+ presetName); System.out.println(" Bank="+ bank); System.out.println(" Program="+ program); System.out.println(); printPresetInstrument( presetName, 0, 1 ); for (int v=2;v<=127;++v) printPresetInstrument( presetName, v, v ); printGlobalLayer ( ); } static void printPresetInstrument ( String instrumentName , int lowVelocity , int highVelocity ) { System.out.println(" Instrument="+ instrumentName+":"+ ( highVelocity<100?"0":"")+ ( highVelocity< 10?"0":"")+ highVelocity); System.out.println( " L_LowKey=0"); System.out.println( " L_HighKey=127"); System.out.println( " L_LowVelocity="+ lowVelocity); System.out.println( " L_HighVelocity="+ highVelocity); System.out.println(); } static void printGlobalLayer () { System.out.println(" GlobalLayer"); System.out.println(); System.out.println(); } static void printInfo () { System.out.println("[Info]"); System.out.println("Version=2.1"); System.out.println("Engine=E-mu 10K1"); System.out.println("Name=User Bank"); System.out.println("ROMName="); System.out.println("ROMVersion=0.0"); System.out.println("Date="); System.out.println("Designer="); System.out.println("Product="); System.out.println("Copyright="); System.out.println("Editor=SFEDT v1.28:"); System.out.println("Comments="); } } class Keytable extends Hashtable { Keytable () { this.put("Slap", new Integer(65)); this.put("slap", new Integer(65)); this.put("Bass", new Integer(67)); this.put("bass", new Integer(67)); } }