【问题标题】:Java jFugue music playJava jFugue 音乐播放
【发布时间】:2021-10-20 16:44:11
【问题描述】:
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 播放十二条蓝音乐代码。 但我得到了错误代码 无法调用“java.lang.CharSequence.length()”,因为“this.text”为空 当我运行 MusicPlayer MusicPlayer Error Code

【问题讨论】:

    标签: java jfugue


    【解决方案1】:

    当您执行 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()); 之类的操作。

    【讨论】:

      猜你喜欢
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多