Announcement

Collapse
No announcement yet.

midi unter java

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • midi unter java

    hallo!<BR>
    befasse mich seit kurzem mit midi unter java und habe folgendes problem (komme mit meiner bescheidenen java-erfahrung noch nicht so mit der sun api-doc zurecht):<BR>
    wie kann ich überprüfen, welche instrumente nach gm-standard von sound-karte unterstützt werden und wie lade ich ein bestimmtes in ein synthesizer-objekt?<BR>
    konkreter:<BR>
    <PRE>import javax.sound.midi.*;<BR>

    Synthesizer synth = null;<BR>
    try{
    synth = MidiSystem.getSynthesizer();<BR>
    synth.getAvailableInstruments(); //laut api-doc wird Instrument[] zurück gegeben
    //- wie abfangen und "liste" überprüfen auf gewünschtes instrument?
    //(in meinem fall gm-instrument nr.19)
    //wie sieht so ein instrument-objekt aus?
    synth.loadInstrument(Instrument[i]) //müsste ja funktionieren, wenn ich weiss,
    //an welcher Stelle i sich das ges. instrument befindet.?
    </PRE><BR>
    bin dankbar für jede antwort. mfg<BR>
    pascal

  • #2
    Hi pascal,

    eigentlich recht einfach, aber wenn man keine ordentliche Anleitung hat.......<br>
    <br>
    import java.io.File;
    <br>
    <br>import javax.sound.midi.Instrument;
    <br>import javax.sound.midi.MidiSystem;
    <br>import javax.sound.midi.Soundbank;
    <br>import javax.sound.midi.Synthesizer;
    <br>
    <br>public class Instruments extends BaseClass
    <br>{
    <br> private Instrument[] inst = null;
    <br> private Synthesizer synth = null;
    <br> private Soundbank soundbank = null;
    <br>
    <br> private Instruments()
    <br> {
    <br> try
    <br> {
    <br> synth = MidiSystem.getSynthesizer();
    <br> synth.open();
    <br> String[] instruments = getInstruments();
    <br> if( instruments == null || instruments.length == 0)
    <br> {
    <br> echo("Keine Instrumente gefunden.");
    <br> ende(-1);
    <br> };
    <br> for( int i = 0; i < instruments.length; i++ )
    <br> {
    <br> echo( instruments[i] + ( synth.loadInstrument(inst[i]) ? " geladen.": " nicht geladen."));
    <br> };
    <br> }
    <br> catch(Exception e)
    <br> {
    <br> echo(e.toString());
    <br> };
    <br> if( synth.isOpen() ) synth.close();
    <br> ende(0);
    <br> };
    <br>
    <br> public String[] getInstruments()
    <br> {
    <br> try
    <br> {
    <br> soundbank = MidiSystem.getSoundbank( new File("soundbank.gm") );
    <br> Instrument[] instruments = soundbank.getInstruments();
    <br> String[] names = new String[instruments.length];
    <br> inst = new Instrument[instruments.length];
    <br> for(int i = 0; i < instruments.length; i++ )
    <br> {
    <br> names[i] = (i + 1 ) + ".\t" + instruments[i].getName();
    <br> inst[i] = instruments[i];
    <br> };
    <br> return names;
    <br> }
    <br> catch(Exception e)
    <br> {
    <br> echo(e);
    <br> };
    <br> return null;
    <br> };
    <br>
    <br> public static void main(String[] args)
    <br> {
    <br> new Instruments();
    <br> };
    <br>}
    <br>
    <br>
    das ist eine von den ersten Klassen aus meiner Java-Musik ... Torture ... ;o)

    Daniel Kraecke

    Comment

    Working...
    X