Morse Code Tone
<< Mr Potato Head | OtherProjectsTrailIndex | Birds >>
import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.SourceDataLine; public class ToneTester { /** * @param args * @throws Exception */ public static final int DIT=90; public static final float FRQ=650F; public static void main(String[] args) { // TODO Auto-generated method stub int dah=3*DIT; int gap=1; int letterGap=3*gap; int wordGap=7*gap; generateTone(FRQ,dah,100); generateTone(FRQ,DIT,100); generateTone(FRQ,dah,100); generateTone(FRQ,DIT,100); } public static void generateTone(float hz1, int msecs, int volume) { float frequency = 44100.0F; int samplesize = 8; int channels; boolean signed = true; boolean bigendian = false; byte[] buf; double ttpi = (2.0 * Math.PI); AudioFormat format; buf = new byte[1]; channels = 1; format = new AudioFormat(frequency, samplesize, channels, signed, bigendian); try { SourceDataLine sdl = AudioSystem.getSourceDataLine(format); sdl.open(format); sdl.start(); for (int i = 0; i < msecs * frequency / 1000; i++) { double angle = i / (frequency / hz1)* ttpi; buf[0] = (byte) (Math.sin(angle) * volume); sdl.write(buf, 0, 1); } sdl.drain(); sdl.stop(); sdl.close(); } catch ( Exception e){ e.printStackTrace(); } } }