首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java jFugue音乐播放

Java jFugue音乐播放
EN

Stack Overflow用户
提问于 2021-10-20 16:44:12
回答 1查看 57关注 0票数 0
代码语言:javascript
复制
import org.jfugue.player.Player;

public class MusicPlayer {
    public static void main(String[] args) {
        TwelveBarBlues twelveBarBlues = new TwelveBarBlues();

        System.out.println("Twelve Bar blues Playing: ");

        Player player = new Player();
        player.play(twelveBarBlues.getPattern());

        }

}

import java.io.IOException;

import org.jfugue.pattern.Pattern;
import org.jfugue.player.Player;
import org.jfugue.theory.ChordProgression;

public class TwelveBarBlues {

private String pattern;

public static void main(String[] args) throws IOException {
    Pattern pattern = new ChordProgression("I IV V")
            .distribute("7%6")
            .allChordsAs("$0 $0 $0 $0 $1 $1 $0 $0 $2 $1 $0 $0")
            .eachChordAs("$0ia100 $1ia80 $2ia80 $3ia80 $4ia100 $3ia80 $2ia80 $1ia80")
            .getPattern()
            .setInstrument("Acoustic_Bass")
            .setTempo(100);
    new Player().play(pattern);
}

public String getPattern() {
    this.pattern = pattern;
    return pattern;
    }
}

我想在MusicPlayer上播放twelveBarBlue音乐代码。但我得到错误代码无法调用"java.lang.CharSequence.length()“,因为在我运行MusicPlayer MusicPlayer Error Code时,"this.text”为null

EN

回答 1

Stack Overflow用户

发布于 2021-10-21 16:55:31

当你执行MusicPlayer时,它调用MusicPlayer中的main(),但是TwelveBarBlues中的main()从未被调用过,所以在getPattern()中,'pattern‘从未被设置过,你返回的是null。

相反,请更改TwelveBarBlues,以便getPattern()返回main()中当前具有的模式。只需将代码从main()移到getPattern()中,然后删除main()方法,因为您没有将TwelveBarBlues作为自己的程序运行。

或者,保留main()方法,以防您希望将该类用作自己的可执行文件,但让它调用自己的getPattern()方法。您需要执行类似TwelveBarBlues blues = new TwelveBarBlues();的操作,然后执行new Player().play(blues.getPattern());

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

https://stackoverflow.com/questions/69649977

复制
相关文章

相似问题

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