Цель состоит в том, чтобы создать программу, в которой я читаю из простого файла .txt и выводю звук для каждого символа ascii. На данный момент моя текущая программа воспроизводит один конкретный файл .wav (длиной менее 1 секунды) каждый раз, когда символ 'e' или 'E' читается из текстового файла. Я считаю, что мой подход не самый лучший, потому что есть случайные несоответствия в количестве звуковых выходов.
Код ниже в настоящее время является тем, что у меня есть, но если есть лучшие методы, я открыт для обсуждения. Как лучше всего создать программу, в которой каждый символ ascii имеет свой собственный уникальный звук? Стоит ли рассмотреть возможность использования более двоичного подхода путем преобразования каждого ascii в его двоичное представление и вывода звукового сигнала длякаждый 1 в двоичной строке?
import java.io.FileReader;
import java.io.IOException;
//These imports will allow for sound to play.
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class LetterToSound {
public static void main(String[] args) throws IOException
{
FileReader inputStream = null;
try
{
inputStream = new FileReader("readFile.txt");
int character;
while((character = inputStream.read()) != -1)
{
System.out.print((char) character);
//Output a beeping sound for every time it encounters the letter 'e'
if(((char) character) == 'e' || ((char) character) == 'E')
{
System.out.println("*");
sound();
}
}
}finally
{
if(inputStream != null)
{
inputStream.close();
}
}
}
public static void sound()
{
try
{
AudioInputStream audioInputStream =
AudioSystem.getAudioInputStream(LetterToSound.class.getResource("beep-3.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
clip.drain();
clip.stop();
//clip.setFramePosition(0);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}