Benutzer:Seboll
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Java</language>
<code id="4dc58ec237878" hidden>
javax.sound.sampled.AudioFormat audioFormat;
javax.sound.sampled.AudioInputStream audioInputStream;
javax.sound.sampled.SourceDataLine sourceDataLine;
float sampleRate = 16000.0F;
int sampleSizeInBits = 16;
int channels = 1;
boolean signed = true;
boolean bigEndian = true;
audioData = new byte[16000*16];
void fillBuffer(double startat,double freq) {
java.nio.ByteBuffer byteBuffer;
java.nio.ShortBuffer shortBuffer;
int byteLength;
byteBuffer = java.nio.ByteBuffer.wrap(audioData);
shortBuffer = byteBuffer.asShortBuffer();
byteLength = audioData.length;
channels = 1;//Java allows 1 or 2
int bytesPerSamp = 2;
int sampLength = byteLength / bytesPerSamp;
for (int cnt = 0; cnt < sampLength; cnt++)
{
double time = cnt / sampleRate;
double sinValue = playFunction(startat/2+time,freq);
shortBuffer.put((short)(16000 * sinValue));
}
}
void draw(double dauer, double start,double freq){
dauer = dauer * 2;
canvas.clear();
double oldy = 100;
canvas.setColor(200,200,200);
canvas.line(0,100,600,100);
canvas.setColor(0,0,0);
for(int x=0; x< 600; x++) {
double newy = 100+100*playFunction(start/2+((double)dauer/2/600*x),freq);
if(start/2+(double)dauer/2/600*x == 0){
canvas.setColor(200,200,200);
canvas.line(x,0,x,200);
canvas.setColor(0,0,0);
}
canvas.line((x-1),(int)(oldy),x,(int)(newy));
oldy = newy;
}
}
void play(double dauer, double startat,double freq){
dauer = dauer * 2;
audioData = new byte[16000*dauer];
try{
fillBuffer(startat,freq);
InputStream byteArrayInputStream = new ByteArrayInputStream(audioData);
audioFormat = new javax.sound.sampled.AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
audioInputStream = new javax.sound.sampled.AudioInputStream(byteArrayInputStream, audioFormat,
audioData.length / audioFormat.getFrameSize());
javax.sound.sampled.DataLine.Info dataLineInfo =
new javax.sound.sampled.DataLine.Info(javax.sound.sampled.SourceDataLine.class, audioFormat);
sourceDataLine = (javax.sound.sampled.SourceDataLine)javax.sound.sampled.AudioSystem.getLine(dataLineInfo);
sourceDataLine.open(audioFormat);
sourceDataLine.start();
playBuffer = new byte[16384];
int cnt;
while ((cnt = audioInputStream.read(playBuffer, 0,playBuffer.length))!= -1)
if (cnt > 0) sourceDataLine.write(playBuffer, 0, cnt);
sourceDataLine.drain();
sourceDataLine.stop();
sourceDataLine.close();
}
catch (Exception e){e.printStackTrace();System.exit(0);}
}
</code>
<code id="4dc58ec2378f5">
double playFunction(double x, double freq){
double sinValue =
Math.sin(2*Math.PI*freq*x);
return (sinValue);
}
public void morseAusgabe() {
String morse = new String();
String morsekette = "";
morse = JOptionPane.showInputDialog(null, "Gib den Text ein!");
for (int i = 0; i < morse.length(); i++) {
String zeichen = morse.substring(i, i+1).toUpperCase();
switch (zeichen) {
case "A":
morsekette = morsekette + ".- ";
break;
case "B":
morsekette = morsekette + "-... ";
break;
case "C":
morsekette = morsekette + "-.-. ";
break;
case "D":
morsekette = morsekette + "-.. ";
break;
case "E":
morsekette = morsekette + ". ";
break;
case "F":
morsekette = morsekette + "..-. ";
break;
case "G":
morsekette = morsekette + "--. ";
break;
case "H":
morsekette = morsekette + ".... ";
break;
case "I":
morsekette = morsekette + ".. ";
break;
case "J":
morsekette = morsekette + ".--- ";
break;
case "K":
morsekette = morsekette + "-.- ";
break;
case "L":
morsekette = morsekette + ".-.. ";
break;
case "M":
morsekette = morsekette + "-- ";
break;
case "N":
morsekette = morsekette + "-. ";
break;
case "O":
morsekette = morsekette + "--- ";
break;
case "P":
morsekette = morsekette + ".--. ";
break;
case "Q":
morsekette = morsekette + "--.- ";
break;
case "R":
morsekette = morsekette + ".-. ";
break;
case "S":
morsekette = morsekette + "... ";
break;
case "T":
morsekette = morsekette + "- ";
break;
case "U":
morsekette = morsekette + "..- ";
break;
case "V":
morsekette = morsekette + "...- ";
break;
case "W":
morsekette = morsekette + ".-- ";
break;
case "X":
morsekette = morsekette + "-..- ";
break;
case "Y":
morsekette = morsekette + "-.-- ";
break;
case "Z":
morsekette = morsekette + "--.. ";
break;
case "0":
morsekette = morsekette + "----- ";
break;
case "1":
morsekette = morsekette + ".---- ";
break;
case "2":
morsekette = morsekette + "..--- ";
break;
case "3":
morsekette = morsekette + "...-- ";
break;
case "4":
morsekette = morsekette + "....- ";
break;
case "5":
morsekette = morsekette + "..... ";
break;
case "6":
morsekette = morsekette + "-.... ";
break;
case "7":
morsekette = morsekette + "--... ";
break;
case "8":
morsekette = morsekette + "---.. ";
break;
case "9":
morsekette = morsekette + "----. ";
break;
case "Ä":
morsekette = morsekette + ".-.- ";
break;
case "Ö":
morsekette = morsekette + "---. ";
break;
case "Ü":
morsekette = morsekette + "..-- ";
break;
case "ß":
morsekette = morsekette + "...--.. ";
break;
case ".":
morsekette = morsekette + ".-.-.- ";
break;
case ":":
morsekette = morsekette + "---... ";
break;
case ",":
morsekette = morsekette + "--..-- ";
break;
case ";":
morsekette = morsekette + "-.-.-. ";
break;
case "?":
morsekette = morsekette + "..--.. ";
break;
case "-":
morsekette = morsekette + "-....- ";
break;
case "_":
morsekette = morsekette + "..--.- ";
break;
case "(":
morsekette = morsekette + "-.--. ";
break;
case ")":
morsekette = morsekette + "-.--.- ";
break;
case "'":
morsekette = morsekette + ".----. ";
break;
case "=":
morsekette = morsekette + "-...- ";
break;
case "+":
morsekette = morsekette + ".-.-. ";
break;
case "/":
morsekette = morsekette + "-..-. ";
break;
case "@":
morsekette = morsekette + ".--.-. ";
break;
case " ":
morsekette = morsekette + "/ ";
break;
default:
morsekette = morsekette + "? ";
}
}
System.out.print(morsekette);
for (int i = 0; i < morsekette.length(); i++) {
String zeichen = morsekette.substring(i, i+1).toUpperCase();
switch (zeichen) {
case ".":
draw(0.2,0,0);
play(0.2,0,1000.0);
break;
case "-":
draw(0.6,0,0);
play(0.6,0,1000.0);
break;
case " ":
draw(0.2,0,0);
play(0.2,0,0.0);
break;
case "/"
draw(0.6,0,0);
play(0.6,0,1000.0);
break;
}
}
}
</code>
<run id="4dc58ec23797a">
morseAusgabe();
</run>
<canvas width="100%"></canvas>