Advertisement
guillermolmr

midi command creator

May 29th, 2017
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.98 KB | None | 0 0
  1. package Midi;
  2. import javax.sound.midi.*;
  3. import javax.sound.midi.spi.MidiFileReader;
  4.  
  5. import java.io.File;
  6. import java.io.FileWriter;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.net.URL;
  10. import java.util.Scanner;
  11. public class Midi {
  12.     public static final int NOTE_ON = 0x90;
  13.     public static final int NOTE_OFF = 0x80;
  14.     public static final String[] NOTE_NAMES = {"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"};
  15.     public static final String[] notas={"0.7","0.75","0.8","0.85","0.9","0.95","1.0","1.05","1.1","1.2","1.25","1.32"};
  16.     public static void main(String[] args) throws Exception{
  17.         FileWriter fw= new FileWriter("midi.mcfunction");
  18.         Scanner sc=new Scanner(System.in);
  19.         Sequence sequence = MidiSystem.getSequence(new File("MIDIlovania.mid"));
  20.         //fw.write("scoreboard players set @e[name=tics] tics 0\n");
  21.         int trackNumber = 0;
  22.         for (Track track :  sequence.getTracks()) {
  23.             trackNumber++;
  24.             System.out.println("Track " + trackNumber + ": size = " + track.size());
  25.             System.out.println();
  26.             for (int i=0; i < track.size(); i++) {
  27.                 MidiEvent event = track.get(i);
  28.                 System.out.print("@" + event.getTick() + " ");
  29.                 MidiMessage message = event.getMessage();
  30.                 if (message instanceof ShortMessage) {
  31.                     ShortMessage sm = (ShortMessage) message;
  32.                     System.out.print("Channel: " + sm.getChannel() + " ");
  33.                     if (sm.getCommand() == NOTE_ON) {
  34.                         int key = sm.getData1();
  35.                         int octave = (key / 12)-1;
  36.                         int note = key % 12;
  37.                         String noteName = NOTE_NAMES[note];
  38.                         int velocity = sm.getData2();
  39.                         System.out.println("Note on, " + noteName + octave + " key=" + key + " velocity: " + velocity);
  40.                     } else if (sm.getCommand() == NOTE_OFF) {
  41.                         int key = sm.getData1();
  42.                         int octave = (key / 12)-1;
  43.                         int note = key % 12;
  44.                         String noteName = NOTE_NAMES[note];
  45.                         int velocity = sm.getData2();
  46.                         System.out.println("Note off, " + noteName + octave + " key=" + key + " velocity: " + velocity);
  47.                         fw.write("execute @e[name=tics,score_tics="+event.getTick()+",score_tics_min="+(event.getTick()-8)+"] ~ ~ ~ /playsound block.note.harp player @a ~ ~ ~ 1 "+notas[note]+"\n");
  48.                     } else {
  49.                         System.out.println("Command:" + sm.getCommand());
  50.                     }
  51.                 } else {
  52.                     System.out.println("Other message: " + message.getClass());
  53.                 }
  54.             }
  55.            
  56.             System.out.println();
  57.         }
  58.         fw.write("scoreboard players add @e[name=tics] tics 8");
  59.         fw.close();
  60.        
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement