Персонаж в Звук - PullRequest
       30

Персонаж в Звук

0 голосов
/ 04 ноября 2019

Цель состоит в том, чтобы создать программу, в которой я читаю из простого файла .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();
      }
  }
}
...