Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Midi;
- import javax.sound.midi.*;
- import javax.sound.midi.spi.MidiFileReader;
- import java.io.File;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URL;
- import java.util.Scanner;
- public class Midi {
- public static final int NOTE_ON = 0x90;
- public static final int NOTE_OFF = 0x80;
- public static final String[] NOTE_NAMES = {"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"};
- 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"};
- public static void main(String[] args) throws Exception{
- FileWriter fw= new FileWriter("midi.mcfunction");
- Scanner sc=new Scanner(System.in);
- Sequence sequence = MidiSystem.getSequence(new File("MIDIlovania.mid"));
- //fw.write("scoreboard players set @e[name=tics] tics 0\n");
- int trackNumber = 0;
- for (Track track : sequence.getTracks()) {
- trackNumber++;
- System.out.println("Track " + trackNumber + ": size = " + track.size());
- System.out.println();
- for (int i=0; i < track.size(); i++) {
- MidiEvent event = track.get(i);
- System.out.print("@" + event.getTick() + " ");
- MidiMessage message = event.getMessage();
- if (message instanceof ShortMessage) {
- ShortMessage sm = (ShortMessage) message;
- System.out.print("Channel: " + sm.getChannel() + " ");
- if (sm.getCommand() == NOTE_ON) {
- int key = sm.getData1();
- int octave = (key / 12)-1;
- int note = key % 12;
- String noteName = NOTE_NAMES[note];
- int velocity = sm.getData2();
- System.out.println("Note on, " + noteName + octave + " key=" + key + " velocity: " + velocity);
- } else if (sm.getCommand() == NOTE_OFF) {
- int key = sm.getData1();
- int octave = (key / 12)-1;
- int note = key % 12;
- String noteName = NOTE_NAMES[note];
- int velocity = sm.getData2();
- System.out.println("Note off, " + noteName + octave + " key=" + key + " velocity: " + velocity);
- 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");
- } else {
- System.out.println("Command:" + sm.getCommand());
- }
- } else {
- System.out.println("Other message: " + message.getClass());
- }
- }
- System.out.println();
- }
- fw.write("scoreboard players add @e[name=tics] tics 8");
- fw.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement