Java -практика использования

         

Создание MIDIпоследовательности нот звукоряда



Листинг 15.18. Создание MIDI-последовательности нот звукоряда 

import javax.sound.midi. *; 

import java.io.*;

class SynMIDI {

SynMIDI() {

play(synth());

}

public Sequence synth(){ 

Sequence seq = null;

try{

// Последовательность будет отсчитывать по 10 

// MIDI-событий на Звук длительйостью в четверть 

seq = new Sequence(Sequence.PPQ, 10);
 

// Создаем в последовательности одну дорожку 

Track tr = seq.createTrack();

for (int k = 0; k < 100; k++){

ShortMessage msg = new ShortMessage();

// Пробегаем MIDI-ноты от номера 10 до 109 

msg.setMessage(ShortMessage.NOTE_ON, 10+k, 93);

// Будем проигрывать ноты через каждые 5 отсчетов 

tr.add(new MidiEvent(msg, 5*k));

msg = null;

}

} catch (Exception e) { 

System, err.printing "From synth(): "+e);

System.exit (0);

}

return seq;

}

public void play (Sequence seq) { 

try{

Sequencer sequencer = MidiSystem.getSequencer();
 

if (sequencer = null){

System.err.println("Sequencer is not supported");
 

System.exit(0);
 

}

sequencer.open();
 

sequencer.setSequence(seq);
 

sequencer.startRecording();

int[] type = MidiSystem.getMidiFileTypes(seq);
 

MidiSystem.write(seq, type[0], new File("gammas.mid"));
 

}catch(Exception e) {

System.err.println("From play(): " + e);
 

public static void main(String[] args)(

new SynMIDI();
 

}

К сожалению, объем книги не позволяет коснуться темы о работе с синтезатором (synthesizer), микширования звука, работы с несколькими инструментами и прочих возможностей Java Sound API. В документации SUN J2SDK, в каталоге docs\guide\sound\prog_guide, есть подробное руководство программиста, а в каталоге demo\sound\src лежат исходные тексты синтезатора, использующего Java Sound API.



Содержание раздела