MCPcopy Create free account
hub / github.com/Card-Forge/forge / AudioMusic

Class AudioMusic

forge-gui-desktop/src/main/java/forge/sound/AudioMusic.java:12–163  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10import javazoom.jl.player.advanced.PlaybackListener;
11
12public class AudioMusic implements IAudioMusic {
13 private AdvancedPlayer musicPlayer;
14 private FileInputStream fileStream;
15 private BufferedInputStream bufferedStream;
16 private boolean canResume;
17 private String filename;
18 private int total;
19 private int stopped;
20 private boolean valid;
21 private Runnable onComplete;
22 private volatile boolean isPlaying = false;
23 private VolumeAudioDevice volumeDevice;
24
25 public AudioMusic(String filename0) {
26 filename = filename0;
27 }
28
29 @Override
30 public void play(final Runnable onComplete0) {
31 onComplete = onComplete0;
32 play(-1);
33 }
34
35 private boolean play(int pos) {
36 valid = true;
37 canResume = false;
38 try {
39 fileStream = new FileInputStream(filename);
40 total = fileStream.available();
41 if (pos > -1) {
42 fileStream.skip(pos);
43 }
44 bufferedStream = new BufferedInputStream(fileStream);
45 volumeDevice = new VolumeAudioDevice();
46 musicPlayer = new AdvancedPlayer(bufferedStream, volumeDevice);
47 musicPlayer.setPlayBackListener(new PlaybackListener() {
48 @Override
49 public void playbackFinished(PlaybackEvent evt) {
50 if (onComplete != null) {
51 onComplete.run();
52 }
53 }
54 });
55 Thread musicThread = new Thread(() -> {
56 try {
57 isPlaying = true;
58 musicPlayer.play();
59 }
60 catch (Exception e){
61 e.printStackTrace();
62 valid = false;
63 isPlaying = false;
64 }
65 }, "Audio Music");
66 musicThread.setDaemon(true);
67 musicThread.start();
68 }
69 catch (Exception e) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected