Java Soundausgabe mit Java

|Bastion|

Lieutenant
Registriert
Juni 2009
Beiträge
660
Hi,

wie kann ich einen Morsecode per Java als kleine Geräusche ausgeben? Bis jetzt hab ich es schon so, das man in ein Textfeld die Wörter eingibt und es dann alles in einen Morse Code umwandelt.
Code:
public void morseAusgabe() {
 String morse = new String(); 
 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":
    System.out.print(".- ");
    break;
   case "B":
    System.out.print("-... ");
    break;
   case "C":
    System.out.print("-.-. ");
    break;
   case "D":
    System.out.print("-.. ");
    break;
   case "E":
    System.out.print(". ");
    break;
   case "F":
    System.out.print("..-. ");
    break;
   case "G":
    System.out.print("--. ");
    break;
   case "H":
    System.out.print(".... ");
    break;
   case "I":
    System.out.print(".. ");
    break;
   case "J":
    System.out.print(".--- ");
    break;
   case "K":
    System.out.print("-.- ");
    break;
   case "L":
    System.out.print(".-.. ");
    break;
   case "M":
    System.out.print("-- ");
    break;
   case "N":
    System.out.print("-. ");
    break;
   case "O":
    System.out.print("--- ");
    break;
   case "P":
    System.out.print(".--. ");
    break;
   case "Q":
    System.out.print("--.- ");
    break;
   case "R":
    System.out.print(".-. ");
    break;
   case "S":
    System.out.print("... ");
    break;
   case "T":
    System.out.print("- ");
    break;
   case "U":
    System.out.print("..- ");
    break;
   case "V":
    System.out.print("...- ");
    break;
   case "W":
    System.out.print(".-- ");
    break;
   case "X":
    System.out.print("-..- ");
    break;
   case "Y":
    System.out.print("-.-- ");
    break;
   case "Z":
    System.out.print("--.. ");
    break;
   case "0":
    System.out.print("----- ");
    break;
   case "1":
    System.out.print(".---- ");
    break;
   case "2":
    System.out.print("..--- ");
    break;
   case "3":
    System.out.print("...-- ");
    break;
   case "4":
    System.out.print("....- ");
    break;
   case "5":
    System.out.print("..... ");
    break;
   case "6":
    System.out.print("-.... ");
    break;
   case "7":
    System.out.print("--... ");
    break;
   case "8":
    System.out.print("---.. ");
    break;
   case "9":
    System.out.print("----. ");
    break;
   case "Ä":
    System.out.print(".-.- ");
    break;
   case "Ö":
    System.out.print("---. ");
    break;
   case "Ü":
    System.out.print("..-- ");
    break;
   case "ß":
    System.out.print("...--.. ");
    break;
   case ".":
    System.out.print(".-.-.- ");
    break;
   case ":":
    System.out.print("---... ");
    break;
   case ",":
    System.out.print("--..-- ");
    break;
   case ";":
    System.out.print("-.-.-. ");
    break;
   case "?":
    System.out.print("..--.. ");
    break;
   case "-":
    System.out.print("-....- ");
    break;
   case "_":
    System.out.print("..--.- ");
    break;
   case "(":
    System.out.print("-.--. ");
    break;
   case ")":
    System.out.print("-.--.- ");
    break;
   case "'":
    System.out.print(".----. ");
    break;
   case "=":
    System.out.print("-...- ");
    break;
   case "+":
    System.out.print(".-.-. ");
    break;
   case "/":
    System.out.print("-..-. ");
    break;
   case "@":
    System.out.print(".--.-. ");
    break;
   case " ":
    System.out.print("/ ");
    break;
   default:
    System.out.print("? ");
  }
 }
}

Grüße

Lyssas
 
Such doch mal nach OpenAL und Java. Da wird sich sicher reichlich finden lassen :)
 
Erstmal würde ich das Morsealphabet in eine eigene Klasse auslagern und eine Map dafür verwenden. Dann fällt schonmal diese elend-lange switch/case Schleife weg.

Für das eigentliche Problem ist auch die java-sound api geeignet
 
@2fast Hunter

Wie könnte sowas dann aussehen?

@ AlrikvomFluss

Wie würde ich dann die java sound api umsetzen und wie würde das aussehen. Nur so als Muster. da ich schon viele Beispiele mit Java Sound Api gesehen hab aber ich hab nicht gewusst wie ich das bei mir einbinden kann
 
Keine Ahnung. Ich habe damit auch noch nix gemacht. Deswegen meinte ich ja: Selber suchen ;P
 
Ich glaube, für einfache Morse-Signal ist eine Schnittstelle wie OpenAL, die ja eigentlich für 3D Sound konzipiert ist, etwas Overkill... Da reicht MIDI
 
Ok ich les mir das mal durch vlt hab ich ja noch ein paar fragen.

Ok also iwie versteh ich da nur bahnhof. Kannst du mir mal iwie sagen wie ich das bei mir umsetzen könnte? Du sagtest ja schon das mein Code etwas komisch ist den man auch vereinfachen kann.
Ergänzung ()

Also es wär mir einfach lieb wenn mir noch einer mal ein kleines Codeschnipsel geben würde wie ich meinen hier gezeigten Code iwie in Sound umwandeln kann. So nur nen Ansatz, muss ja nicht alles sein
 
Zuletzt bearbeitet:
Jo das ist mir schon klar aber wie bind ich das dann bei mir ein? Wie sag ich dem das der bei z.B. - ein anderen Piepton als bei . macht? Deshalb wollte ich mal einén kleinen Anfang haben damit ich weiß wo ich anfangen kann.

Aber ich danke dir schonmal wie auch allen anderen die sich mit mir schwierigen Fall Mühe geben ^^
 
Das ist ja dann aber PHP oder? Ich soll das nämlich in Java machen. Oder gibts das so auch?
Ergänzung ()

Ah ne das basiert auf deinem zweiten Link. Ich probier das mal umzusetzen.
 
Das war einfach nur so hingeleiert, Pseudocode. Steht ja auch drüber. Ob PHP oder Java tut hier nichts zur Sache :) Es gibt sicherlich mehrere Möglichkeiten dein Problem anzugehen, das war nur ein Vorschlag.
 
Naja also ich dachte mir das jetzt so.

Code:
void start()
Sequencer sequencer;
sequencer = MidiSystem.getSequencer(); 
if (zeichen == -) 
try {
    File Midi1 = new File("seq1.mid");
    Sequence mySeq = MidiSystem.getSequence(Midi1);
    sequencer.setSequence(mySeq);
} catch (Exception e) {
   // Handle error and/or return
}
else if (zeichen == .)
{
    sequencer.open();
}
void stop()

Das worauf es sich bezieht siehst du ja oben. Vlt weißt du wie das ungefähr funktioniert. Jetzt bräuchte ich bloß noch 2 Töne hochladen. Könnten die Töne dann einfach bei seq.midi rein. Dort einfach dann den Link http://../seq.midi einfügen?
 
Zurück
Oben