tutorials.de Buch-Aktion 02/2012
Like Tree1Danke
  • 1 Beitrag von wakoz
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
849
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    wakoz wakoz ist offline Mitglied Gold
    Registriert seit
    Apr 2010
    Beiträge
    114
    Hi
    Ich verwende derzeit dies hier zum abspielen von sounds
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    
    package sound.model;
     
    import java.util.ArrayList;
     
    import javax.sound.midi.MidiEvent;
    import javax.sound.midi.MidiSystem;
    import javax.sound.midi.Receiver;
    import javax.sound.midi.Sequence;
    import javax.sound.midi.Sequencer;
    import javax.sound.midi.ShortMessage;
    import javax.sound.midi.Synthesizer;
    import javax.sound.midi.Track;
    import javax.sound.midi.Transmitter;
     
    import main.model.Volume;
     
    public class SoundGenerator {
        private final int PPQS = 16;
        private final int STAKKATO = 4;
        
        private Volume volumeclass;
        
        private long currentTick = 0;
        
        // Sequencer und Synthesizer initialisieren
        private Sequencer sequencer = null;
        private Transmitter transmitter = null;
        private Synthesizer synthesizer = null;
        private Receiver receiver = null;
     
        private int tone[][] = null;
        private ShortMessage message = null;
        private Sequence sequence = null;
        private Track track = null;
     
        public void midiSound(ArrayList<Double> doubleList) throws Exception {
            // Partitur {{Tonhoehe, DauerInViertelNoten, AnzahlWdh},...}
            int index = (doubleList.size());
            tone = new int[index][3];
            System.out.println(index);
            for (int i = 0; i < (index); i++) {
                tone[i][0] = (doubleList.get(i).intValue() - 50 );
                tone[i][1] = 1;
                tone[i][2] = 1;
            }
            doubleList = null;
            sequence = new Sequence(Sequence.PPQ, PPQS);
            track = sequence.createTrack();
            // Kanal 0 auf "EnsembleStrings" umschalten
            message = new ShortMessage();
            message.setMessage(ShortMessage.PROGRAM_CHANGE, 0, 48, 0);
            track.add(new MidiEvent(message, currentTick));
            // Partiturdaten hinzufügen
            volumeclass = Volume.getInstance();
            for (int i = 0; i < tone.length; ++i) {
                for (int j = 0; j < tone[i][2]; ++j) { // Anzahl Wdh. je Note
                    message = new ShortMessage();
                    message.setMessage(ShortMessage.NOTE_ON, 0, tone[i][0], volumeclass.getVolume());
                    track.add(new MidiEvent(message, currentTick));
                    currentTick += PPQS * tone[i][1] - STAKKATO;
                    message = new ShortMessage();
                    message.setMessage(ShortMessage.NOTE_OFF, 0, tone[i][0], 0);
                    track.add(new MidiEvent(message, currentTick));
                    currentTick += STAKKATO;
                }
            }
            // Sequencer und Synthesizer initialisieren
            sequencer = MidiSystem.getSequencer();
            transmitter = sequencer.getTransmitter();
            synthesizer = MidiSystem.getSynthesizer();
            receiver = synthesizer.getReceiver();
            // Beide öffnen und verbinden
            synthesizer.open();
            sequencer.open();
            transmitter.setReceiver(receiver);
            // Sequence abspielen
            sequencer.setSequence(sequence);
            sequencer.setTempoInBPM(145);
            sequencer.start();
            int count = 0;
            while (true) {
                System.out.println(count);
                count++;
                try {
                    Thread.sleep(400);
                } catch (Exception e) {
                    // nothing
                }
                if (!sequencer.isRunning()) {
                    break;
                }
            }
            // Sequencer anhalten und Geräte schließen
            sequencer.stop();
            sequencer.close();
            synthesizer.close();
     
        }
     
    }
    nun möchte ich diesen Midi Sound in eine wav schreiben bin aber derzeit noch bisschen ratlos
    Habe mir diese Seite finden können aber....
    http://java.sun.com/docs/books/tutor...onverters.html
    komme dennoch nicht weiter, ich muss irgendwie die "sequence" raus geben um sie als wav zu speichern bin aber wie vernagelt und sehe den Wald vor lauter Bäumen nicht
     

  2. #2
    wakoz wakoz ist offline Mitglied Gold
    Registriert seit
    Apr 2010
    Beiträge
    114
    Code :
    1
    2
    
    int[] allowedTypes = MidiSystem.getMidiFileTypes(sequence);
            MidiSystem.write(sequence, allowedTypes[0], new File("filename.wav"));

    wer die antwort wissen will


    warum finde ich immer die Lösung wenn ich die frage poste
    r_maniac bedankt sich. 

  3. #3
    r_maniac r_maniac ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    10
    vor monat oder so habe ich sowas für mein drummprogramming project gesucht .(dann aber adacta project gelegt)... wenn wirklich klappt dann DANKE! klingt viel versprechend
     

Ähnliche Themen

  1. sound in Seite einbinden, ohne auf ein file zu verlinken
    Von LookAndSee im Forum HTML & XHTML
    Antworten: 5
    Letzter Beitrag: 07.09.10, 19:56
  2. Sound abspielen - Invalid media file parameter
    Von Nord-Süd-Richtung im Forum Java
    Antworten: 2
    Letzter Beitrag: 09.12.09, 12:22
  3. Suche Sprüche als Sound-File!
    Von Sliver im Forum Smalltalk
    Antworten: 1
    Letzter Beitrag: 09.12.03, 23:50
  4. Sound file stoppen?
    Von MsvP im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 31.01.02, 23:38
  5. ein externes Sound-Flash file vorladen lassen...
    Von ttrenz im Forum Flash Plattform
    Antworten: 4
    Letzter Beitrag: 09.09.01, 08:42