Java звук при нажатии

Музыка по нажатию на кнопку?

Музыка по нажатию на кнопку
Помогите создать программу в которой по нажатию кнопки начала играть музыка, а при клике на вторую.

На форме создать кнопку и по нажатию на эту кнопку открыть фотографию
Салют всем форумчанам! Помогите мне! Как реализовать следующую задумку — на форме создать кнопку и.

WinForms, музыка при нажатии на кнопку
Как сделать так, чтобы при нажатии на кнопку проигрывалась музыка? И все это на C#

Сделать по нажатию на 1-ую кнопку открытие формы2 на указанной записи, а на 2-ую кнопку — формы2 на новой
Здравствуйте, возник вопрос. не буду тянуть кота за хвост. В общем: на главной форме есть 2.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
package GameMain; import javax.swing.JComponent; import javax.swing.JLabel; import java.io.File; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; public class class_fonSound extends JComponent { public class_fonSound () { //. System.out.println("Voice"); } public class SoundFon extends JLabel { public SoundFon() { //. fonSound(); } public void fonSound() { try { File soundFile = new File("data/song.wav"); AudioInputStream inAudio = AudioSystem.getAudioInputStream(soundFile); Clip clip = AudioSystem.getClip(); clip.open(inAudio); clip.setFramePosition(0); clip.start(); clip.loop(Clip.LOOP_CONTINUOUSLY); } catch (Exception e) { //. } } } }

Я уже понял про mp3. Но как сделать, чтобы музыка играла по нажатию на кнопку? Пробовал ток, но ничего

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
RudButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { AudioPlayer MGP = AudioPlayer.player; AudioStream BGM; AudioData MD; ContinuousAudioDataStream loop = null; try { BGM = new AudioStream(new FileInputStream("C:\\Users\\viric\\Downloads\\3285.wav")); MD = BGM.getData(); loop = new ContinuousAudioDataStream(MD); } catch (Exception e1) { } MGP.start(loop); } });

Добавлено через 2 часа 40 минут
Записал в catch JOptionPane.showMessageDialog(null, e1); Выдало такую надпись java.io.ioexception could not create audio stream from input stream. Что это может быть и как исправить?

Лучший ответ

Сообщение было отмечено BananaSkill как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.swing.JButton; import javax.swing.JFrame; public class disco { public JFrame window = new JFrame("Welcom"); public disco() { window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setBounds(0, 0, 450, 360); window.setResizable(false); window.setLayout(null); myButton(); window.setVisible(true); } private void myButton() { JButton button = new JButton(); button.setBounds(50, 50, 100, 100); button.setFocusable(false); button.setText(":)"); window.add(button); ActionListener actionListener = new ButtonPushActionListener(); button.addActionListener(actionListener); } private class ButtonPushActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { try { File soundFile = new File("data/song.wav"); AudioInputStream inAudio = AudioSystem.getAudioInputStream(soundFile); Clip clip = AudioSystem.getClip(); clip.open(inAudio); clip.setFramePosition(0); clip.start(); clip.loop(Clip.LOOP_CONTINUOUSLY); } catch (Exception e1) { //. } } } public static void main(String[] args) { new disco(); } }

Спасибо. Была такая ошибка javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input . Решилась перекодировкой wav файла в wav 16 битный pcm файл.

Можете подсказать еще пожалуйста каким образом можно сделать звук тише, какая нужна для этого библиотека?

Читайте также:  Javascript text length function

BananaSkill, Вот тот же пример только с громкостью, поэксперементируйте с числом

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
package base; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.sound.sampled.FloatControl; import javax.swing.JButton; import javax.swing.JFrame; public class disco { public JFrame window = new JFrame("Welcom"); public disco() { window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setBounds(0, 0, 450, 360); window.setResizable(false); window.setLayout(null); myButton(); window.setVisible(true); } private void myButton() { JButton button = new JButton(); button.setBounds(50, 50, 100, 100); button.setFocusable(false); button.setText(":)"); window.add(button); ActionListener actionListener = new ButtonPushActionListener(); button.addActionListener(actionListener); } private class ButtonPushActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { try { File soundFile = new File("data/song.wav"); AudioInputStream inAudio = AudioSystem.getAudioInputStream(soundFile); Clip clip = AudioSystem.getClip(); clip.open(inAudio); clip.setFramePosition(0); FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN); gainControl.setValue((float) -20.0);//-10 громкость //gainControl.setValue(0.0f);//-10f clip.start(); clip.loop(Clip.LOOP_CONTINUOUSLY); } catch (Exception e1) { //. } } } public static void main(String[] args) { new disco(); } }

Источник

Воспроизводить звук при нажатии кнопки

У меня есть большая проблема здесь, я попробовал миллион способов сделать это, но ничего не помогает, вот ссылки, которые я пытался сделать это.

Есть только некоторые ссылки, которые все еще открыты в браузере, но не берите в голову.. Я делаю это в NetBeans, и я действительно не могу понять, как я должен сделать это, пожалуйста, помогите мне. Вот класс, который я хочу сделать это, а также кнопка.. если вы можете сделать это для меня, я буду очень счастлив

public class Machines extends javax.swing.JFrame < public Machines() < initComponents(); >private void spinBtnActionPerformed(java.awt.event.ActionEvent evt)

также музыкальный файл spinsound.wav и я поместил в каталог, где находится мой проект, вот ссылка C:\Users\MONSTER\Desktop\STEFAN\NetBeansProjects\PasswordSaver\spinsound.wav

Читайте также:  Делаем свой слайдер css

4 ответа

Не могли бы вы попробовать это:

ClassLoader CLDR = this.getClass().getClassLoader(); InputStream soundName = CLDR.getResourceAsStream("yourDirectory/yourSound.wav"); AudioStream audioStream = new AudioStream(soundName); AudioPlayer.player.start(audioStream); 

Взято отсюда после проверки гугла.

Поиск полностью скопированных кодов поможет вам меньше, чем изучение и знание кодирования и его процесса.

Так как вы просто хотите воспроизвести звук, вы можете использовать пример, который я привожу ниже: file:C:/image/song.wav , E сть file: Ключевое слово перед объявлением каталога.

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; import javax.swing.*; import java.io.*; import java.net.MalformedURLException; import java.net.URL; import java.util.logging.Level; import java.util.logging.Logger; public class WavPlayer extends JFrame < JButton btn = new JButton("Play Sound"); File wavFile; URL defaultSound; public static Clip clip; public static AudioInputStream audioInputStream; public WavPlayer(String url) < try < setSize(300, 100); setLocation(400, 300); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel jp = new JPanel(); defaultSound = new URL (url); jp.add(btn); getContentPane().add(jp); pack(); btn.addActionListener(new ActionListener() < @Override public void actionPerformed(ActionEvent e) < play(); >>); > catch (MalformedURLException ex) < Logger.getLogger(WavPlayer.class.getName()).log(Level.SEVERE, null, ex); >> public void play() < try < audioInputStream = AudioSystem.getAudioInputStream(defaultSound); try < clip = AudioSystem.getClip(); clip.open(audioInputStream); clip.loop(20000); clip.start(); >catch (LineUnavailableException e) < >> catch (UnsupportedAudioFileException | IOException e) < >> public void stop() < clip.stop(); >public static void main(String args[]) < WavPlayer t = new WavPlayer("file:C:/image/song.wav"); t.setVisible(true); >> 

Источник

Воспроизведение звука в Java

Нормальной русскоязычной информации по теме просто нет. Java-tutorials тоже оставляют желать лучшего. А архитектура javax.sound.sampled хоть и проста, но далеко не тривиальна. Поэтому свой первый пост на Хабре я решил посвятить именно этой теме. Приступим:

Воспроизведение звука

try < File soundFile = new File("snd.wav"); //Звуковой файл //Получаем AudioInputStream //Вот тут могут полететь IOException и UnsupportedAudioFileException AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile); //Получаем реализацию интерфейса Clip //Может выкинуть LineUnavailableException Clip clip = AudioSystem.getClip(); //Загружаем наш звуковой поток в Clip //Может выкинуть IOException и LineUnavailableException clip.open(ais); clip.setFramePosition(0); //устанавливаем указатель на старт clip.start(); //Поехали. //Если не запущено других потоков, то стоит подождать, пока клип не закончится //В GUI-приложениях следующие 3 строчки не понадобятся Thread.sleep(clip.getMicrosecondLength()/1000); clip.stop(); //Останавливаем clip.close(); //Закрываем >catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) < exc.printStackTrace(); >catch (InterruptedException exc) <> 
Регулятор громкости

Поигравшись со звуками, вы наверняка захотите иметь возможность программно изменять громкость звука. Java Sound API предоставляет такую возможность с фирменной кривотой.

//Получаем контроллер громкости FloatControl vc = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN); //Устанавливаем значение //Оно должно быть в пределах от vc.getMinimum() до vc.getMaximum() vc.setValue(5); //Громче обычного 

Этот код нужно поместить между строчками clip.open(ais) и clip.setFramePosition(0).

Читайте также:  Php temp file dir

Упрощаем процесс

import java.io.File; import java.io.IOException; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.sound.sampled.FloatControl; import javax.sound.sampled.LineEvent; import javax.sound.sampled.LineListener; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; public class Sound implements AutoCloseable < private boolean released = false; private AudioInputStream stream = null; private Clip clip = null; private FloatControl volumeControl = null; private boolean playing = false; public Sound(File f) < try < stream = AudioSystem.getAudioInputStream(f); clip = AudioSystem.getClip(); clip.open(stream); clip.addLineListener(new Listener()); volumeControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN); released = true; >catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) < exc.printStackTrace(); released = false; close(); >> // true если звук успешно загружен, false если произошла ошибка public boolean isReleased() < return released; >// проигрывается ли звук в данный момент public boolean isPlaying() < return playing; >// Запуск /* breakOld определяет поведение, если звук уже играется Если breakOld==true, о звук будет прерван и запущен заново Иначе ничего не произойдёт */ public void play(boolean breakOld) < if (released) < if (breakOld) < clip.stop(); clip.setFramePosition(0); clip.start(); playing = true; >else if (!isPlaying()) < clip.setFramePosition(0); clip.start(); playing = true; >> > // То же самое, что и play(true) public void play() < play(true); >// Останавливает воспроизведение public void stop() < if (playing) < clip.stop(); >> public void close() < if (clip != null) clip.close(); if (stream != null) try < stream.close(); >catch (IOException exc) < exc.printStackTrace(); >> // Установка громкости /* x долже быть в пределах от 0 до 1 (от самого тихого к самому громкому) */ public void setVolume(float x) < if (x<0) x = 0; if (x>1) x = 1; float min = volumeControl.getMinimum(); float max = volumeControl.getMaximum(); volumeControl.setValue((max-min)*x+min); > // Возвращает текущую громкость (число от 0 до 1) public float getVolume() < float v = volumeControl.getValue(); float min = volumeControl.getMinimum(); float max = volumeControl.getMaximum(); return (v-min)/(max-min); >// Дожидается окончания проигрывания звука public void join() < if (!released) return; synchronized(clip) < try < while (playing) clip.wait(); >catch (InterruptedException exc) <> > > // Статический метод, для удобства public static Sound playSound(String path) < File f = new File(path); Sound snd = new Sound(f); snd.play(); return snd; >private class Listener implements LineListener < public void update(LineEvent ev) < if (ev.getType() == LineEvent.Type.STOP) < playing = false; synchronized(clip) < clip.notify(); >> > > > 

Пользоваться очень просто, например:

Sound.playSound("sounds/hello.wav").join(); 

Форматы

Пару слов о поддержке форматов звуковых файлов: забудьте про mp3 и вспомните wav. Также поддерживаются au и aif.

Источник

Оцените статью