Text->Tonausgabe / Tonanalyse->Text



  • Du könntest auch deine Daten in eine Wave Datei(oder Stream) schreiben, und dann per PlaySound ausgeben. Was für daten in eine Wave kommen steht auf einer guten Seite beschrieben, dessen Link ich leider nicht hab in Moment, da sind alle Dateietypen beschrieben.
    Google mal danach.



  • Das Problem bei PlaySound() ist dass ich ja die Wave Dateien (600 Hz, 300Hz) erstmal erzeugen oder irgendwo runterladen muss ... dann ist auch noch die Frage wie schnell er die Töne nacheinander abspielt.

    Wenn dann auch noch Prüfsummen des gesendeten Textes oder eine schnellere übertragung durch mehrere Tonfrequenzen dazu kommen (z.B. jeder Buchstabe bekommt seinen eigenen Ton) ist es ein großer vorteil wenn ich die Töne im Programm selbst erzeugen kann.

    Vielleicht solltest du dir mal FMod anschauen - ist recht benutzerfreundlich die Library.

    In der FMod Dokumentation habe ich nichts sinnvolles gefunden. Ich kann die BPM ermitteln oder die Lautstärke. Ich kann mit FMod alle möglichen Audioformate abspielen ... Danke für den Tip aber ich denke das ist nicht das Richtige.

    Wenn du also im vorzeichenbehafteten 8-Bit Waveformat den Soundbuffer mit 256 Bytes, deren Werte einer Sinuskurve mit der Amplitute 128 entsprechen, und du diesen Puffer 440 mal in der Sekunde an die Lautsprecher schickst, hast du den Kammerton.

    okay, interessant den Technischen Hintergrund zu sehen aber weitergebracht hat mich das leider nicht ... 🙄



  • Mit waveOutOpen() Soundkarte zur Ausgabe startklar machen.
    Mit waveOutPrepareHeader() und waveOutWrite() dann deine Waveform ausgeben.
    Bei einem 16-Bit Wavestream musst du quasi an waveOutWrite() nur 16-bit signed Werte übergeben (z.B. signed short) die eine sinus-schwingung mit deiner gewünschten Frequenz beinhalten. Bei mehreren Frequenzen gleichzeitig musst du die dann eben überlagern...



  • geeky hast du dazu einen beispielcode? Ich hab mit sowas noch nie gearbeitet...



  • Schau mal hier nach:
    http://www.c-plusplus.net/forum/viewtopic.php?t=97353&highlight=
    Der Rest steht in der MSDN und im Petzold.

    Ausgeben von Frequenzen (Tönen) ist ganz einfach. Erkennen ist ungleich schwerer, die Schwingungen sind ja nicht mehr "rein", sondern verformt.

    26 und mehr verschiedene Frequenzen sind auch nicht so gut im CB-"Sprachband" unterzubringen.
    Vielleicht ist die DTMF-Analyse was für Dich?

    Blackbird



  • Wenn es dir darum geht, nur einen Chat zu schreiben, also keine sonderlich großen Daten wie Bilder zu übertragen, mach es gleich digital.

    Also Ton an/aus ein paar mal die Sekunde mit Festfrequenz.



  • geeky schrieb:

    Bei einem 16-Bit Wavestream musst du quasi an waveOutWrite() nur 16-bit signed Werte übergeben (z.B. signed short) die eine sinus-schwingung mit deiner gewünschten Frequenz beinhalten. Bei mehreren Frequenzen gleichzeitig musst du die dann eben überlagern...

    Hallo, ich hab ein ähnliches Problem mit der Soundausgabe... kann mir zu dem obigen Zitat jemand nähere Infos geben? Ich hab im Moment leider keinen Plan, wie ich das umsetzen soll. Ich muss eine Tonfolge bestehend aus einzeltönen mit definierter Frequenz und definierter Länge ausgeben und diese auf einem anderen PC auswerten.... Puuh!

    Für jeden Tip bin ich dankbar!

    Gruß
    Thomas



  • haben mal im oc bei uns ein programm für`s psk31 geschrieben , die ein und ausgabe erfolgte über die soundkarte und die mmsystem.dll (standart windows)

    mit der mmsystem lasst sich wunderbar samplefrequenz, ein- und ausgabe, tonfrequenz , bandbreite e.t.c arbeiten!

    gug dir mal mmsystem.dll an...

    PS: warum wird hier *S*T*A*N*D*A*R*T* zensiert? 😃 find ich ja lolig^^



  • ink3n schrieb:

    PS: warum wird hier *S*T*A*N*D*A*R*T* zensiert? 😃 find ich ja lolig^^

    Weil man Standard schreibt.



  • 💡 ! 😃



  • du könntest ja z.b. dtmf nehmen. da haste ja die ziffern 0...9 und a...f so dass du 1 byte als 2 dtmf-signale kodieren kannst. die samples für ein dtmf-signal kannste einmalig berechnen und als array speichern (so ca 100 bytes pro ziffer reichen). die schickste dann mit den waveOutXXX-funktionen zur soundkarte. für richtiges drmf musste dann nur noch das puls/pausen-verhältnis einhalten (infos dazu gibbets im internet). zum dekodieren nimmt man sogenannte 'goertzel-filter' (als software). einfach mal danach googlen, man findet auch source codes dazu 😉



  • das mit dem dtmf ist ne gute Idee, aber zum goertzel-filter finde ich im Internet nichts brauchbares



  • Auf meiner Homepage findes du unter AudioDeme einige Beispiele
    wie man einen Ton erzeugt, abspielt und auf nimmt
    Für die Ton-Analyse solltest du dich mal mit der FFT beschäftigen.

    [url]
    http://members.inode.at/anton.zechner/az/index.html
    [/url]



  • Domio schrieb:

    das mit dem dtmf ist ne gute Idee, aber zum goertzel-filter finde ich im Internet nichts brauchbares

    guckst du: http://www.embedded.com/story/OEG20020819S0057


Anmelden zum Antworten