Skip to content

Commit a27de2a

Browse files
committed
Music player added
1 parent c801f9f commit a27de2a

7 files changed

Lines changed: 189 additions & 0 deletions
28.5 MB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

utilities/MusicPlayer/Main.java

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package MusicPlayer;
2+
3+
import java.io.File;
4+
import java.util.Scanner;
5+
6+
import javax.sound.sampled.AudioInputStream;
7+
import javax.sound.sampled.AudioSystem;
8+
import javax.sound.sampled.Clip;
9+
10+
public class Main {
11+
12+
public static void main(String[] args) {
13+
// MUSIC PLAYER
14+
File[] songs = {
15+
new File("utilities/MusicPlayer/track1.wav"),
16+
new File("utilities/MusicPlayer/track2.wav"),
17+
new File("utilities/MusicPlayer/track3.wav"),
18+
new File("utilities/MusicPlayer/track4.wav"),
19+
new File("utilities/MusicPlayer/track5.wav")
20+
};
21+
22+
int songIndex = 0;
23+
Clip clip = null;
24+
long pausePosition = 0;
25+
26+
Scanner scanner = new Scanner(System.in);
27+
28+
try {
29+
AudioInputStream audioStream =
30+
AudioSystem.getAudioInputStream(songs[songIndex]);
31+
32+
clip = AudioSystem.getClip();
33+
clip.open(audioStream);
34+
35+
String choice = "";
36+
37+
while (!choice.equals("Q")) {
38+
39+
System.out.println("\nP = Play");
40+
System.out.println("S = Pause");
41+
System.out.println("C = Back 10 sec");
42+
System.out.println("D = Forward 10 sec");
43+
System.out.println("N = Next song");
44+
System.out.println("R = Restart");
45+
System.out.println("Q = Quit");
46+
System.out.print("Choice: ");
47+
48+
choice = scanner.next().toUpperCase();
49+
50+
if (choice.equals("P")) {
51+
clip.setMicrosecondPosition(pausePosition);
52+
clip.start();
53+
}
54+
55+
else if (choice.equals("S")) {
56+
pausePosition = clip.getMicrosecondPosition();
57+
clip.stop();
58+
}
59+
60+
else if (choice.equals("C")) {
61+
long newPos = clip.getMicrosecondPosition() - 10_000_000;
62+
if (newPos < 0) newPos = 0;
63+
clip.setMicrosecondPosition(newPos);
64+
}
65+
66+
else if (choice.equals("D")) {
67+
long newPos = clip.getMicrosecondPosition() + 10_000_000;
68+
if (newPos > clip.getMicrosecondLength())
69+
newPos = clip.getMicrosecondLength();
70+
clip.setMicrosecondPosition(newPos);
71+
}
72+
else if (choice.equals("N")) {
73+
clip.stop();
74+
clip.close();
75+
76+
songIndex++;
77+
if (songIndex == songs.length) {
78+
songIndex = 0;
79+
}
80+
pausePosition = 0;
81+
AudioInputStream newStream =
82+
AudioSystem.getAudioInputStream(songs[songIndex]);
83+
84+
clip = AudioSystem.getClip();
85+
clip.open(newStream);
86+
clip.start();
87+
}
88+
89+
else if (choice.equals("R")) {
90+
pausePosition = 0;
91+
clip.setMicrosecondPosition(0);
92+
}
93+
}
94+
clip.close();
95+
scanner.close();
96+
}
97+
catch (Exception e) {
98+
System.out.println("Error playing music");
99+
}
100+
}
101+
}

utilities/MusicPlayer/README.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# 🎵 Java Console Music Player
2+
3+
A simple **Java console-based music player** built using the `javax.sound.sampled.Clip` API.
4+
5+
This project demonstrates basic audio controls such as:
6+
- Play / Pause
7+
- Skip forward
8+
- Skip backward
9+
- Reset
10+
- Next track (playlist)
11+
12+
It is designed as a **beginner-friendly Java project** to understand file handling, user input, loops, and audio playback.
13+
14+
---
15+
16+
## ✨ Features
17+
18+
- Play and pause music
19+
- Skip forward and backward by 10 seconds
20+
- Reset current track
21+
- Switch between multiple tracks (playlist)
22+
- Console-based menu interface
23+
- Uses WAV audio files
24+
25+
---
26+
27+
## 📁 Project Structure
28+
utilities/
29+
└── MusicPlayer/
30+
├── Main.java
31+
├── track1.wav
32+
├── track2.wav
33+
├── track3.wav
34+
├── track4.wav
35+
└── track5.wav
36+
37+
38+
> ⚠️ Audio files may not be included in this repository.
39+
> Please add your own WAV files as explained below.
40+
41+
---
42+
43+
## ▶️ How to Run
44+
```bash
45+
46+
1️⃣ Add audio files
47+
48+
Add 5 WAV files to this folder:
49+
utilities/MusicPlayer/
50+
51+
Rename them exactly to:-
52+
53+
track1.wav
54+
track2.wav
55+
track3.wav
56+
track4.wav
57+
track5.wav
58+
59+
Only .wav files are supported.
60+
61+
2️⃣Compile the program:-
62+
63+
From the root of the project:
64+
javac utilities/MusicPlayer/Main.java
65+
66+
3️⃣ Run the program:-
67+
java -cp utilities MusicPlayer.Main
68+
69+
🎵 Audio License Note:-
70+
71+
This project does not claim ownership of any music.
72+
For demonstration purposes:
73+
You may use your own audio files
74+
Or use music from the YouTube Audio Library (royalty-free)
75+
Audio files are excluded to avoid copyright issues.
76+
77+
🛠️ Technologies Used:-
78+
79+
Java
80+
javax.sound.sampled.Clip
81+
Scanner (console input)
82+
83+
📌 Notes:-
84+
85+
This project uses relative file paths, so it works across different systems.
86+
Absolute file paths are intentionally avoided for portability.
87+
Designed for learning purposes.
88+

0 commit comments

Comments
 (0)