Package org.mctourney.autoreferee.util.midi

Source Code of org.mctourney.autoreferee.util.midi.ToneUtil

package org.mctourney.autoreferee.util.midi;

import org.bukkit.Note;
import org.bukkit.Note.Tone;

import javax.sound.midi.ShortMessage;

/**
* Utility for converting between different representations of a tone.
*
* @author authorblues
*/
public class ToneUtil
{
  private static final byte BASE_NOTE = new Note(1, Tone.F, true).getId();

  private static final int MIDI_BASE_FSHARP = 54;

  public static double noteToPitch(Note note)
  {
    double semitones = note.getId() - BASE_NOTE;
    return Math.pow(2.0, semitones / 12.0);
  }

  // converts midi events into Note objects
  public static Note midiToNote(ShortMessage smsg)
  {
    assert smsg.getCommand() == ShortMessage.NOTE_ON;
    int semitones = smsg.getData1() - MIDI_BASE_FSHARP % 12;
    return new Note(semitones % 24);
  }

  // converts midi events into pitch
  public static double midiToPitch(ShortMessage smsg)
  {
    return noteToPitch(midiToNote(smsg));

  //  assert smsg.getCommand() == ShortMessage.NOTE_ON;
  //  int semitones = smsg.getData1() - MIDI_BASE_FSHARP;
  //  return Math.pow(2.0, semitones / 12.0);
  }
}
TOP

Related Classes of org.mctourney.autoreferee.util.midi.ToneUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.