add an unused lyrics in midi

This commit is contained in:
Chayapak 2023-09-27 12:31:58 +07:00
parent 020bd62643
commit ed8c89bcb2
2 changed files with 15 additions and 6 deletions

View file

@ -5,15 +5,13 @@ import land.chipmunk.chayapak.chomens_bot.Bot;
import javax.sound.midi.*; import javax.sound.midi.*;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
// Author: hhhzzzsss // Author: hhhzzzsss
public class MidiConverter implements Converter { public class MidiConverter implements Converter {
public static final int TEXT = 0x01; public static final int TEXT = 0x01;
public static final int TRACK_NAME = 0x03; public static final int TRACK_NAME = 0x03;
public static final int LYRICS = 0x05;
public static final int SET_INSTRUMENT = 0xC0; public static final int SET_INSTRUMENT = 0xC0;
public static final int SET_TEMPO = 0x51; public static final int SET_TEMPO = 0x51;
public static final int NOTE_ON = 0x90; public static final int NOTE_ON = 0x90;
@ -26,6 +24,8 @@ public class MidiConverter implements Converter {
} }
public static Song getSong(Sequence sequence, String name, Bot bot) { public static Song getSong(Sequence sequence, String name, Bot bot) {
final Map<Long, String> lyrics = new HashMap<>();
long tpq = sequence.getResolution(); long tpq = sequence.getResolution();
String songName = null; String songName = null;
@ -55,6 +55,10 @@ public class MidiConverter implements Converter {
} else if (mm.getType() == TEXT) { } else if (mm.getType() == TEXT) {
text.append(new String(mm.getData())); text.append(new String(mm.getData()));
text.append('\n'); text.append('\n');
} else if (mm.getType() == LYRICS) {
final String lyric = new String(mm.getMessage());
lyrics.put(event.getTick(), lyric);
} }
} }
} }
@ -130,6 +134,10 @@ public class MidiConverter implements Converter {
} }
} }
} }
if (lyrics.get(event.getTick()) != null) {
song.lyrics.put(microTime / 1000L, lyrics.get(event.getTick()));
}
} }
} }

View file

@ -2,8 +2,7 @@ package land.chipmunk.chayapak.chomens_bot.song;
import land.chipmunk.chayapak.chomens_bot.Bot; import land.chipmunk.chayapak.chomens_bot.Bot;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
// Author: hhhzzzsss & _ChipMC_ but i changed most of the stuff // Author: hhhzzzsss & _ChipMC_ but i changed most of the stuff
public class Song { public class Song {
@ -18,6 +17,8 @@ public class Song {
public long time = 0; // Time since start of song public long time = 0; // Time since start of song
public long loopPosition = 200; // Milliseconds into the song to start looping public long loopPosition = 200; // Milliseconds into the song to start looping
public final Map<Long, String> lyrics = new HashMap<>();
public String songName; public String songName;
public String songAuthor; public String songAuthor;
public String songOriginalAuthor; public String songOriginalAuthor;