JFugue 错误地转换 midi 文件

发布于 2025-01-10 20:25:36 字数 1584 浏览 3 评论 0原文

(使用 jfugue 5.0.9) 我想将 .mid 转换为 .txt(断奏),然后再转换为 .mid< /strong> 再次确认转换是否有效。理想情况下,.mid(原始文件和转换后的文件)应该相等,但是转换后的(midi -> staccato -> midi)文件具有奇怪的延迟音符,并且音符持续时间延长。 JFugue 可能会遇到困难,因为 midi 是人类的、超敏感的录音。有什么办法可以解决这个问题吗?

这是 3 个文件https://drive.google.com/drive/folders/ 1DepX0lCqNaIRCoHRfGwBRsO1xRFCbCpl?usp=sharing

这是使用2种方法:

public static Pattern convMidToStac(String fileName, boolean makeAFile) {
    
    Pattern p = new Pattern();
    
    // Convert midi file to a JFugue Staccato pattern.
    try {
        p = MidiFileManager.loadPatternFromMidi(new File("D:/eclipse-workspace/MidiReader/" + fileName + ".mid"));
        
        if (makeAFile) {
            makeFile(fileName, p.toString());
        }
        return p;
        
    } catch (Exception e) {
        System.out.println("An error occurred.");
        e.printStackTrace();
        
        return null;
    }
}

public static void convStacToMid(String fileName) {
    
    Pattern p = new Pattern();
    
    try {
        p = MidiFileManager.loadPatternFromMidi(new File("D:/eclipse-workspace/MidiReader/" + fileName + ".mid"));
        
        File filePath = new File("D:/eclipse-workspace/MidiReader/" + fileName + "MIDI.mid");            
        
        MidiFileManager.savePatternToMidi(p, filePath);
        
    } catch (Exception e) {
        e.printStackTrace();
    }
}

(using jfugue 5.0.9) I wanted to convert .mid to .txt (staccato), and later to .mid again, to confirm conversions worked. Both .mid (original and converted) should be equal ideally, but the converted (midi -> staccato -> midi) file has weird delayed notes, and one enlargened note duration. JFugue probably struggles because the midi is a human, hyper-sensible recording. Is there any way to fix this?

Heres the 3 files https://drive.google.com/drive/folders/1DepX0lCqNaIRCoHRfGwBRsO1xRFCbCpl?usp=sharing

And here are the 2 methods used:

public static Pattern convMidToStac(String fileName, boolean makeAFile) {
    
    Pattern p = new Pattern();
    
    // Convert midi file to a JFugue Staccato pattern.
    try {
        p = MidiFileManager.loadPatternFromMidi(new File("D:/eclipse-workspace/MidiReader/" + fileName + ".mid"));
        
        if (makeAFile) {
            makeFile(fileName, p.toString());
        }
        return p;
        
    } catch (Exception e) {
        System.out.println("An error occurred.");
        e.printStackTrace();
        
        return null;
    }
}

public static void convStacToMid(String fileName) {
    
    Pattern p = new Pattern();
    
    try {
        p = MidiFileManager.loadPatternFromMidi(new File("D:/eclipse-workspace/MidiReader/" + fileName + ".mid"));
        
        File filePath = new File("D:/eclipse-workspace/MidiReader/" + fileName + "MIDI.mid");            
        
        MidiFileManager.savePatternToMidi(p, filePath);
        
    } catch (Exception e) {
        e.printStackTrace();
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文