首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从爪哇的MusicXML中提取乐谱呢?

如何从爪哇的MusicXML中提取乐谱呢?
EN

Stack Overflow用户
提问于 2021-04-21 06:54:19
回答 1查看 261关注 0票数 2

我目前正在开发一个视觉阅读应用程序,它需要显示音乐符号;我很难找到一种在JFrame中高效地绘制这一功能的方法。

我正在查看JFugue库来帮助解决这个问题,MusicXMLParser_J类的描述说明如下。

解析一个MusicXML文件,并在解释令牌时为ParserListener接口触发事件。ParserListener对产生的事件进行智能处理,例如创建音乐、绘制乐谱或转换数据。可以使用文件名、文件、InputStream或读取器调用MusicXmlParser.parse。

但是,我不确定实现ParserListener的哪个类将允许绘制单曲。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-25 03:18:16

JFugue不附带一个绘制单曲的ParserListener,但是您可以自己编写!另外,当您编写ParserListener时,它将适用于任何解析器,因此您还可以为MIDI文件和其他解析器所支持的文件类型绘制乐谱。如果您在这方面取得了很大进展,请考虑将其提交给下一个版本的JFugue。

下面是编写您自己的单张音乐解析器侦听器的一种方法:

代码语言:javascript
复制
public class ArunavSheetMusicParserListener extends JPanel implements ParserListener {
    private List<ThingToDraw> thingsToDraw;

    public ArunavSheetMusicParserListener() { 
        super();
        this.thingsToDraw = new ArrayList<>();
    }

    @Override
    public void paint(Graphics g) {
        super(g);
        for (ThingToDraw thingToDraw : thingsToDraw) {
            thingToDraw.draw(g);
        }
    }

    @Override
    public void onNoteParsed(Note note) {
        thingsToDraw.add(new NoteDrawing(note));
    }

    ...and so on for the other events from ParserListener that you wish to draw...
}

代码语言:javascript
复制
public interface ThingToDraw {
    public void draw(Graphics g);
}

代码语言:javascript
复制
public class NoteDrawing implements ThingToDraw {
    private Note note;

    public NoteDrawing(Note note) {
        this.note = note;
    }

    public void draw(Graphics g) {
        // look at the methods of the note to determine
        // how to draw it:
        //   - note.getDuration()
        //   - note.getValue()
    }
}

这样做是为了其他你计划画的东西。

请注意: MusicXMLParser是由用户社区贡献的,并且没有JFugue库的其他部分那么好地维护。在您自己的ParserListener上投入时间之前,请确保MusicXMLParser按照您的预期工作。并且,请确保您使用的是最新版本的JFugue,此时的版本是5.0.9。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67190664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档