API de sonido de Java

JavaSound es una colección de clases e interfaces para efectuar y controlar medios de sonido en Java. Consta de dos paquetes.

  • javax.sound.sampled: Este paquete proporciona una interfaz para la captura, mezcla de audio digital.
  • javax.sound.midi: este paquete proporciona una interfaz para la síntesis, secuenciación y transporte de eventos MIDI (interfaz digital de instrumentos musicales).

¿Qué es midi?

Exploraremos MIDI más sobre MIDI aquí. Entonces, MIDI es como una hoja de notas que el instrumento con capacidad midi puede tocar, considérelo como un documento HTML y un instrumento con capacidad midi como un navegador web. El archivo MIDI tiene información sobre cómo se debe tocar una canción, al igual que una hoja de instrucciones para un guitarrista. Los dispositivos MIDI saben cómo leer un archivo midi y generar sonido.

Para hacer un sonido real, necesitamos cuatro cosas para esto:

  1. Instrumento (que toca la música) SECUENCIADOR
  2. Canción (la música que se reproducirá) SECUENCIA
  3. Pista (que contiene las notas)
  4. Notas (la información musical real) EVENTOS MIDI

La API de JavaSound cubrió todo esto.

SECUENCIADOR ⇒ SECUENCIA ⇒ PISTA ⇒ EVENTOS MIDI

Procedimiento:

Paso 1: Obtenga un secuenciador y ábralo

// Make a sequencer named player and open it
Sequencer player = MIDISystem.getSequencer();
player.open();

Paso 2: Hacer una nueva Secuencia

// Make a new sequence 
Sequence seq = new Sequence(Sequence.PPQ, 4);

Paso 3: Obtenga una nueva pista de la secuencia

// Creating new Track
Track t = seq.createTrack();

Paso 4: Rellene la pista con MIDIEVENTS  

// Filling the Track with MidiEvent and
// giving the Sequence to the Sequencer

t.add(myMidiEvent1);
player.setSequence(seq);

// Play it using start
player.start();

Implementación:

Ejemplo

Java

// Java Program to Illustrate JAva Sound API
 
// Importing classes from
// javax.sound package
import javax.sound.midi.*;
 
// Main class
// MiniMusicApp
public class GFG {
 
    // Method 1
    // Main driver method
    public static void main(String[] args)
    {
        // Creating object of class inside main()
        GFG minimusic = new GFG();
 
        // Calling method 2 to play the sound
        minimusic.play();
 
        // Display message on the console for
        // successful execution of program
        System.out.print(
            "Successfully compiled and executed");
    }
 
    // Method 2
    // To play the sound
    public void play()
    {
 
        // Try block to check for exceptions
        try {
            // Getting a sequencer and open it
            Sequencer player = MidiSystem.getSequencer();
            player.open();
 
            // Making 1a new Sequence
            Sequence seq = new Sequence(Sequence.PPQ, 4);
 
            // Creating a new track
            Track track = seq.createTrack();
 
            // Making a Message
            ShortMessage a = new ShortMessage();
 
            // Put the Instruction in the Message
            a.setMessage(144, 1, 44, 100);
 
            // Make a new MidiEvent
            MidiEvent noteOn = new MidiEvent(a, 1);
 
            // Add MidiEvent to the Track
            track.add(noteOn);
 
            ShortMessage b = new ShortMessage();
            b.setMessage(128, 1, 44, 100);
            MidiEvent noteOff = new MidiEvent(b, 16);
            track.add(noteOff);
 
            // Giving sequence to Sequencer
            player.setSequence(seq);
 
            // Start the Sequencer using start() method
            player.start();
        }
 
        // Catch block to handle exceptions
        catch (Exception ex) {
            // Display the exception on console
            // along with line number
            ex.printStackTrace();
        }
    }
}

Producción:

Successfully compiled and executed

Publicación traducida automáticamente

Artículo escrito por kalashmathankar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *