shunya28 / Demo_MusicPlayingTool

This is the demo app of Music Playing Tool.
0 stars 0 forks source link

タスクと情報収集 #1

Open shunya28 opened 3 years ago

shunya28 commented 3 years ago

盛り込みたい機能

shunya28 commented 3 years ago

音を鳴らすコード

引用:Java 音声ファイルを再生して音を鳴らす、ビープ音を鳴らす

import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFileFormat.Type;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class MP3Player {
    public static void main(String[] args) {

        System.out.println("===== サポートしている形式 =====");
        Type[] typeArray = AudioSystem.getAudioFileTypes();
        for(Type type : typeArray) {
            System.out.println(type.toString());
        }

        AudioInputStream ais = null;
        try {
            ais = AudioSystem.getAudioInputStream(new File("../../data/Mixdown.wav"));
            AudioFormat af = ais.getFormat();
            DataLine.Info info = new DataLine.Info(Clip.class, af);
            Clip clip = (Clip)AudioSystem.getLine(info);
            clip.open(ais);
            clip.loop(0);
            clip.flush();
            while(clip.isActive()) {
                Thread.sleep(100);
            }
        } catch (UnsupportedAudioFileException | IOException | LineUnavailableException | InterruptedException e) {
            e.printStackTrace();
        }finally {
            try {
                ais.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

ちゃんと鳴った。ただし、WAVファイルによっては再生できないものもあるらしく、その場合下のようなエラーが出る。

Exception in thread "main" java.lang.IllegalArgumentException: No line matching interface Clip supporting format PCM_FLOAT 44100.0 Hz, 32 bit, stereo, 8 bytes/frame is supported.
        at java.desktop/javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:425)
        at MP3Player.main(MP3Player.java:26)
shunya28 commented 3 years ago

参考になりそうなサイト

shunya28 commented 3 years ago

wavファイルからデータを取り込む方法 wavファイルを作成する方法

shunya28 commented 3 years ago

例外処理について 参考サイト