Wie Tongenerator in JavaScript programmieren
- DocEmmettBrown
- Santiago 9+30
- Beiträge: 7616
- Registriert: Sa 3. Jan 2015, 02:37
- Standort in der Userkarte: nein
Wie Tongenerator in JavaScript programmieren
Ich möchte gerne was Blödes machen: Ein RSS-Leseprogramm in JavaScript, welches kurze RSS-Nachrichten liest, diese in einem DOS-Fenster anzeigt, wobei Buchstabe für Buchstabe nacheinander in reverser Darstellung gezeigt wird. Während der Darstellung soll der auf diese Weise hervorgehobene Buchstabe als Morsezeichen aus dem Lautsprecher ertönen.
Ich habe ein bißchen im Web gewühlt, aber keinen Hinweis auf ein ActiveXObject gefunden, welches eine simple Tonausgabe (also Tonhöhe, Tonlänge und vielleicht noch Lautstärke) beherrscht und auf welches man mit JScript oder VBS zugreifen könnte. Man könnte es zwar mit einem PowerShell-Krückenscript machen, das vom JavaScript erstellt und dann einfach aufgerufen wird, allerdings wäre dann bei jedem Buchstaben ein schreibender und lesender Plattenzugriff, was alles andere als elegant wäre.
Hat jemand eine Idee?
73 de Daniel
Ich habe ein bißchen im Web gewühlt, aber keinen Hinweis auf ein ActiveXObject gefunden, welches eine simple Tonausgabe (also Tonhöhe, Tonlänge und vielleicht noch Lautstärke) beherrscht und auf welches man mit JScript oder VBS zugreifen könnte. Man könnte es zwar mit einem PowerShell-Krückenscript machen, das vom JavaScript erstellt und dann einfach aufgerufen wird, allerdings wäre dann bei jedem Buchstaben ein schreibender und lesender Plattenzugriff, was alles andere als elegant wäre.
Hat jemand eine Idee?
73 de Daniel
-
- Santiago 3
- Beiträge: 100
- Registriert: Di 25. Nov 2008, 04:07
- Standort in der Userkarte: 73574 Iggingen
Re: Wie Tongenerator in JavaScript programmieren
Es gäbe da 'nen API-Aufruf mit dem Namen Beep. Als Parameter kannste Frequenz und Dauer übergeben. Die Ausgabe läuft dann über den auf dem Mainboard aufgesteckten Piepser (nicht via Soundkarte).
https://msdn.microsoft.com/de-de/librar ... s.85).aspx
http://www.vb-fun.de/vb/api/Beep.htm
Allerdings kannst du in JS und VBS, soweit ich weis, keine API-Aufrufe direkt machen.
Hier ist ein Beispiel, wie man ein eigenes ActiveX-Objekt erstellen kann...
https://social.msdn.microsoft.com/Forum ... =scripting
Diesen Beispiel-Code könnt' man jetzt abändern für die Beep-API...
Oder alternativ mit 'ner Programmiersprache bzw. Entwicklungsumgebung arbeiten...
73
https://msdn.microsoft.com/de-de/librar ... s.85).aspx
http://www.vb-fun.de/vb/api/Beep.htm
Allerdings kannst du in JS und VBS, soweit ich weis, keine API-Aufrufe direkt machen.
Hier ist ein Beispiel, wie man ein eigenes ActiveX-Objekt erstellen kann...
https://social.msdn.microsoft.com/Forum ... =scripting
Diesen Beispiel-Code könnt' man jetzt abändern für die Beep-API...
Oder alternativ mit 'ner Programmiersprache bzw. Entwicklungsumgebung arbeiten...
73
DO3LM
Re: Wie Tongenerator in JavaScript programmieren
Schon mit dem Audio-Element versucht?
https://stackoverflow.com/questions/941 ... le_rich_qa
Gruß, Mamagei
https://stackoverflow.com/questions/941 ... le_rich_qa
Gruß, Mamagei
- DocEmmettBrown
- Santiago 9+30
- Beiträge: 7616
- Registriert: Sa 3. Jan 2015, 02:37
- Standort in der Userkarte: nein
Re: Wie Tongenerator in JavaScript programmieren
Genau das ist das Problem. Weil dann könnte ich's auch gleich mit PowerShell, Java oder anderweitig lösen.Iridium hat geschrieben:Allerdings kannst du in JS und VBS, soweit ich weis, keine API-Aufrufe direkt machen.
Hier ist ein Beispiel, wie man ein eigenes ActiveX-Objekt erstellen kann...
Das ist HTML5 und muß im Browser laufen. (Ginge mit Java sogar schon ab HTML 3.2.) Mir geht es aber ja gerade darum, daß das auf der Kommandozeile (aka DOS-Prompt, aka Eingabeaufforderung) mit JavaScript läuft.Mamagei hat geschrieben:Schon mit dem Audio-Element versucht?
73 de Daniel
Re: Wie Tongenerator in JavaScript programmieren
Hi Daniel,
ich habe vor x Jahren mal einen Tongenerator in VB6 programmiert, finde den Code aber nicht mehr. Beim Stöbern im Netz nach dem Modul was ich damals benutzte bin ich allerdings auf diese Seite gestoßen:
https://www.codeproject.com/Messages/13 ... in-VB.aspx
Am Anfang geht es um VB.Net aber weiter unten hat jemand ein längeres Java-Script gelistet, das einen Ton abspielen können soll. Der Teilthread beginnt mit "convert from Java to VB6 or VBnet".
73 de Peter
ich habe vor x Jahren mal einen Tongenerator in VB6 programmiert, finde den Code aber nicht mehr. Beim Stöbern im Netz nach dem Modul was ich damals benutzte bin ich allerdings auf diese Seite gestoßen:
https://www.codeproject.com/Messages/13 ... in-VB.aspx
Am Anfang geht es um VB.Net aber weiter unten hat jemand ein längeres Java-Script gelistet, das einen Ton abspielen können soll. Der Teilthread beginnt mit "convert from Java to VB6 or VBnet".
73 de Peter
Re: Wie Tongenerator in JavaScript programmieren
Zur Not ein Sound-File abspielen.
Der Code muss selbstverständlich so angepasst werden, dass das OCX erst ganz zum Schluss zerstört wird.
Buchstaben und Zahlen als Sound hinterlegen.
Gruß, Klaus
Code: Alles auswählen
function tone(file) {
var player = new ActiveXObject("WMPlayer.OCX");
player.URL=file;
player.controls.play();
while(player.playState!=1){
WScript.Sleep(100);
}
player.close();
};
Buchstaben und Zahlen als Sound hinterlegen.
Gruß, Klaus
-
- Santiago 6
- Beiträge: 479
- Registriert: Sa 18. Dez 2010, 17:26
- Standort in der Userkarte: Balingen
Re: Wie Tongenerator in JavaScript programmieren
Das hattest Du ja schon bei der Angabe des Zielbetriebsystems und Laufzeitumgebung ja im Eingangspost schon klar und deutlich erwähntDocEmmettBrown hat geschrieben:Mir geht es aber ja gerade darum, daß das auf der Kommandozeile (aka DOS-Prompt, aka Eingabeaufforderung) mit JavaScript läuft.
Ok - einem Fachmann war nach der Angabe "DOS-Fenster" (Hallo Windows 9x/ME?) und "ActiveX" (lange tote Technologie) wohl schon klar, dass es Windows sein soll. Und dass Deine Wahl der Programmiersprache für den Zweck evtl. "etwas" ungünstig ist - warum muss es unbedingt die Krücke WSH sein? Allein die Verarbeitung eines RSS Feeds (XML) dürfte ein Krampf werden und z.B. mit PS um Welten einfacher zu handeln sein.
Für die PS gibt's den Morseteil z.B. schon in fertig: https://gallery.technet.microsoft.com/s ... e-125779c1
- DocEmmettBrown
- Santiago 9+30
- Beiträge: 7616
- Registriert: Sa 3. Jan 2015, 02:37
- Standort in der Userkarte: nein
Re: Wie Tongenerator in JavaScript programmieren
Ich dachte jetzt an eine Lösung, die möglichst mit Bordmitteln läuft. Natürlich kann ich von hinten durch die Brust ins Auge, aber ich suchte nach einer eleganten Lösung.DK7IH hat geschrieben:ich habe vor x Jahren mal einen Tongenerator in VB6 programmiert, finde den Code aber nicht mehr.
Diese Methode kenne ich natürlich schon seit Win95, aber die ist noch umständlicher als der Umweg über die PowerShell, weil die PS den Tongenerator schon eingebaut hat. Da käme ich ganz ohne WAV- oder MP3-Dateien aus.Mamagei hat geschrieben:Zur Not ein Sound-File abspielen.
Sagen wir einfach, es wäre u.a. auch eine nette "Demo" für eine größeres JavaScript-Projekt gewesen.salat hat geschrieben:dass Deine Wahl der Programmiersprache für den Zweck evtl. "etwas" ungünstig ist - warum muss es unbedingt die Krücke WSH sein?
Tja, man könnte natürlich auch gleich die visuelle Darstellung mit PS machen, klar, aber eigentlich wollte ich es bewußt mit JavaScript lösen.salat hat geschrieben:Für die PS gibt's den Morseteil z.B. schon in fertig: https://gallery.technet.microsoft.com/s ... e-125779c1
Aber wie ich anfangs schon sagte: Ich wollte etwas Blödes machen. Wenn's nicht funktioniert, geht davon die Welt nicht unter. Wäre halt einfach ein netter Gag gewesen...
In jedem Fall vielen Dank Euch allen.
73 de Daniel
- DocEmmettBrown
- Santiago 9+30
- Beiträge: 7616
- Registriert: Sa 3. Jan 2015, 02:37
- Standort in der Userkarte: nein
Re: Wie Tongenerator in JavaScript programmieren
Geht aber doch!DocEmmettBrown hat geschrieben: ↑Do 26. Apr 2018, 14:44Wenn's nicht funktioniert, geht davon die Welt nicht unter.
Das winzige Powershell-Scriptchen sieht wie folgt aus:
Code: Alles auswählen
# morse.ps1 - Public Domain
BEGIN { $f = 1000; $l = 100; }
PROCESS {
if (($j = $_.IndexOf("#")) -lt 0) { $j = $_.length; }
$i = $_.Substring(0, $j).Trim(" ");
if ($i.length -gt 0) {
if ($i.Substring(0, 1) -eq "F") { $f = [Double] $i.Substring(1); }
else { if ($i.Substring(0, 1) -eq "L") { $l = [Double] $i.Substring(1); }
for ($n = 0; $n -lt $i.length; $n++) {
switch ($i.Substring($n, 1)) {
"." { [Console]::beep($f, $l); }
"-" { [Console]::beep($f, $l * 3); }
"_" { [Console]::beep($f, $l * 3); }
" " { Start-Sleep -Milliseconds ($l * 3); }
"/" { Start-Sleep -Milliseconds ($l * 7); }
}
}
}
}
}
END { }
Code: Alles auswählen
F800 # Frequenz des Tons in Hz
L100 # Länge eines Dits in ms
#
# Beispielaufruf:
# @echo off
# PowerShell.exe -ExecutionPolicy Bypass -File morse.ps1 0<morse.txt
#
# Beispiel (mehrere Zeilen sind möglich):
-.-.- --- -.-/.-.-.
Bei meinem Rechner bringt es keine Vorteile, kürzere Zeiten als etwa 100 ms zu verwenden. Dafür scheint die Powershell dann doch zu langsam zu sein. Das macht aber nichts; grundsätzlich funktioniert es.
73 de Daniel