Zum Inhalt
Benutzer:Seboll
Aus ProgrammingWiki
Archivierte Version vom 2011-05-07T18:26:10+00:00.
Aktuelle Version
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);} }
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; } } }
morseAusgabe();
ausführen
Ihr Browser unterstützt Canvas nicht.
Seite
Quelltext
Versionen/Autoren
Konto registrieren
Anmelden
Navigation
Startseite
Letzte Änderungen
Alle Seiten
Einführungskurs
Hilfe
Dateien
Suche
Suchen
Werkzeuge
Links auf diese Seite
Spezialseiten