From 21747c25eedb34c103f852d1bb63efddaf3cbc66 Mon Sep 17 00:00:00 2001 From: Kunal Gupta Date: Wed, 16 Nov 2016 21:56:00 +0530 Subject: [PATCH] Added Volume Control for BeatBoxer --- src/beatboxer/BeatBoxer.fxml | 17 +++++++- src/beatboxer/BeatBoxer.java | 19 ++------- src/beatboxer/BeatBoxerController.java | 55 ++++++++++++++++++++++++-- 3 files changed, 71 insertions(+), 20 deletions(-) diff --git a/src/beatboxer/BeatBoxer.fxml b/src/beatboxer/BeatBoxer.fxml index 337d9e9..dadbb73 100644 --- a/src/beatboxer/BeatBoxer.fxml +++ b/src/beatboxer/BeatBoxer.fxml @@ -24,7 +24,10 @@ - + + + + diff --git a/src/beatboxer/BeatBoxer.java b/src/beatboxer/BeatBoxer.java index 52cc43e..aff46c5 100644 --- a/src/beatboxer/BeatBoxer.java +++ b/src/beatboxer/BeatBoxer.java @@ -34,6 +34,7 @@ public class BeatBoxer extends Application { public static StringProperty state; public static BBSong defaultSong; public static Timeline timer; + public static double volume; @Override public void start(Stage stage) throws Exception { state= new SimpleStringProperty("Unknown"); @@ -101,28 +102,14 @@ public static void playNext(){ } } - private static double getvolumevalue(String genre) { - double volume; - if (genre.contains("Dance") || genre.contains("Party") || genre.contains("Rock") || genre.contains("Metal") || genre.contains("Progressive House")) { - volume = 1.0; - } else if (genre.contains("Pop") || genre.contains("Electro") || genre.contains("Techno") || genre.contains("Edm") || genre.contains("Hip hop") || genre.contains("Hip-hop") || genre.contains("Trap")) { - volume = 0.05; - } else if (genre.contains("Romantic") || genre.contains("Soothing") || genre.contains("Soul") || genre.contains("Piano") || genre.contains("Tropical House") || genre.contains("Ambient")) { - volume = 0.02; - } else if (genre.contains("Bollywood")) { - volume = 0.1; - } else { - volume = 0.3; - } - return volume; - } + public static void play(BBSong track){ mediaPlayer.dispose(); mediaPlayer = toMediaPlayer(track.getLocation()); initMediaPlayer(); currentIndex = BBGenerator.find(nowPlaying, track); - mediaPlayer.setVolume(getvolumevalue(track.getGenre())); + mediaPlayer.setVolume(volume); mediaPlayer.play(); } public static void initMediaPlayer(){ diff --git a/src/beatboxer/BeatBoxerController.java b/src/beatboxer/BeatBoxerController.java index 0067145..819379a 100644 --- a/src/beatboxer/BeatBoxerController.java +++ b/src/beatboxer/BeatBoxerController.java @@ -96,6 +96,10 @@ public class BeatBoxerController implements Initializable { @FXML private Button shuffleButton; @FXML + private Slider volumeSlider; + @FXML + private Label volumeLabel; + @FXML private ToggleButton autoplayButton; public static ChangeListener currentTimePropertyListener; public static ChangeListener totalDurationPropertyListener; @@ -302,13 +306,18 @@ private void createPlaylist(){ public void playNext(){ int size = BeatBoxer.nowPlaying.size(); BeatBoxer.mediaPlayer.stop(); - BeatBoxer.play(BeatBoxer.nowPlaying.get((BeatBoxer.currentIndex + 1)%size)); + BBSong a; + a=BeatBoxer.nowPlaying.get((BeatBoxer.currentIndex + 1)%size); + setVolumeValue(a.getGenre()); + BeatBoxer.play(a); } @FXML public void playPrevious(){ int size = BeatBoxer.nowPlaying.size(); BeatBoxer.mediaPlayer.stop(); - BeatBoxer.play(BeatBoxer.nowPlaying.get((BeatBoxer.currentIndex + size - 1)%size)); + BBSong a = BeatBoxer.nowPlaying.get((BeatBoxer.currentIndex + size - 1)%size); + setVolumeValue(a.getGenre()); + BeatBoxer.play(a); } @FXML private void shuffle(){ @@ -353,6 +362,7 @@ public void playAlbum(BBItem album){ favouriteButton.setDisable(false); nowPlayingListView.setItems(BeatBoxer.nowPlaying); listViewTabPane.getSelectionModel().select(0); + setVolumeValue(BeatBoxer.nowPlaying.get(0).getGenre()); BeatBoxer.play(BeatBoxer.nowPlaying.get(0)); BeatBoxer.mediaPlayer.stop(); } @@ -374,6 +384,7 @@ public void playArtist(BBItem artist){ favouriteButton.setDisable(false); nowPlayingListView.setItems(BeatBoxer.nowPlaying); listViewTabPane.getSelectionModel().select(0); + setVolumeValue(BeatBoxer.nowPlaying.get(0).getGenre()); BeatBoxer.play(BeatBoxer.nowPlaying.get(0)); BeatBoxer.mediaPlayer.stop(); } @@ -402,6 +413,7 @@ private int getListViewIndex(ListView l, BBSong song){ } private void refresh(){ try{ + volumeSlider.setValue(100); nowPlayingListView.setDisable(true); nowPlayingListView.setItems(null); trackDetails.setText("\n\nNo track Playing."); @@ -474,11 +486,27 @@ else if (playlist.getId()==-1){ favouriteButton.setDisable(true); } else{ + setVolumeValue(BeatBoxer.nowPlaying.get(0).getGenre()); BeatBoxer.play(BeatBoxer.nowPlaying.get(0)); } BeatBoxer.mediaPlayer.stop(); } - + private double setVolumeValue(String genre) { + double volume=100; + if (genre.contains("Dance") || genre.contains("Party") || genre.contains("Rock") || genre.contains("Metal") || genre.contains("Progressive House")) { + volume = 100; + } else if (genre.contains("Pop") || genre.contains("Electro") || genre.contains("Techno") || genre.contains("Edm") || genre.contains("Hip hop") || genre.contains("Hip-hop") || genre.contains("Trap")) { + volume = 70; + } else if (genre.contains("Romantic") || genre.contains("Soothing") || genre.contains("Soul") || genre.contains("Piano") || genre.contains("Tropical House") || genre.contains("Ambient")) { + volume = 40; + } else if (genre.contains("Bollywood")) { + volume = 80; + } else { + volume = 90; + } + volumeSlider.setValue(volume); + return BeatBoxer.volume; + } @Override public void initialize(URL url, ResourceBundle rb) { newPlayListMenu.setAccelerator(new KeyCodeCombination(KeyCode.N)); @@ -513,6 +541,24 @@ public void changed(ObservableValue observable, Object oldValu BeatBoxer.mediaPlayer.stop(); }); } + volumeSlider.valueProperty().addListener(new ChangeListener(){ + @Override + public void changed(ObservableValue observable, Number oldValue, Number newValue) { + volumeLabel.setText(Integer.toString(newValue.intValue())); + if(newValue.intValue()>=1){ + BeatBoxer.volume = 1-(0.5*Math.log10(100-newValue.intValue())); + if(Double.isInfinite(BeatBoxer.volume)){ + BeatBoxer.volume = 1.00; + } + BeatBoxer.mediaPlayer.setVolume(BeatBoxer.volume); + } + else{ + BeatBoxer.volume=0; + BeatBoxer.mediaPlayer.setVolume(0); + } + } + + }); /*-------------Slider and Time Listeners----------------------------*/ currentTimePropertyListener = new ChangeListener() { @@ -624,6 +670,7 @@ public void handle(MouseEvent click) { else{ BBSong a = nowPlayingListView.getSelectionModel().getSelectedItem(); nowPlayingListView.getSelectionModel().select(-1); + setVolumeValue(a.getGenre()); BeatBoxer.play(a); } } @@ -642,6 +689,7 @@ public void handle(MouseEvent click) { allsongsListView.getSelectionModel().select(-1); System.out.println(a.getId()); playPlaylist(new BBItem(0, "All Songs")); + setVolumeValue(a.getGenre()); BeatBoxer.play(a); } } @@ -710,6 +758,7 @@ public void handle(MouseEvent click) { songListView.getSelectionModel().select(-1); System.out.println(a.getId()); playPlaylist(new BBItem(0, "All Songs")); + setVolumeValue(a.getGenre()); BeatBoxer.play(a); } }