none
C# Console Audio Recoriding --> Compare to Console.Beep() RRS feed

  • Frage

  • Hello everyone

    I have programmed a morse code application where you can write a sentence and it will be played in morse code with Console.Beep sounds. Console.Beep(600,200) for the long parts and Console.Beep(600,100) for the short ones. Now, I want to write a application, that will record the morse code (Beep sounds) and convert them back to alphabetical text. So It should record the audio and "read" it... 

    You guys got any ideas? I have no experiance with audio recording yet. 

    Thanks...

    PS: The following, is my Code of the morse programm. 

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Threading;
    
    namespace HowToMurphy
    {
        class Program
        {
            static void Main(string[] args)
            {
                bool online = true;
                
                do
                {
                    Console.Clear();
    
                    Console.WriteLine("Geben Sie einen beliebigen Text ein [A-Z] / [1-9]:");
                    string letter = Console.ReadLine();
    
                    foreach (char c in letter.ToUpper())
                    {
                        Thread.Sleep(300);
                            switch (c)
                            {
                                case 'A':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    break;
    
                                case 'B':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'C':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'D':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'E':
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'F':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'G':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'H':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'I':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'J':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    break;
    
                                case 'K':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    break;
    
                                case 'L':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'M':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    break;
    
                                case 'N':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'O':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    break;
    
                                case 'P':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'Q':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    break;
    
                                case 'R':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'S':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    break;
    
                                case 'T':
                                    Console.Beep(600, 200);
                                    break;
    
                                case 'U':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    break;
    
                                case 'V':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    break;
    
                                case 'W':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    break;
    
                                case 'X':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    break;
    
                                case 'Y':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    break;
    
                                case 'Z':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    break;
                                case '1':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    break;
                                case '2':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    break;
                                case '3':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    break;
                                case '4':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 200);
                                    break;
                                case '5':
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    break;
                                case '6':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    break;
                                case '7':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    break;
                                case '8':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    Console.Beep(600, 100);
                                    break;
                                case '9':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 100);
                                    break;
                                case '0':
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    Console.Beep(600, 200);
                                    break;
                                case ' ':
                                    Thread.Sleep(300);
                                    break;
                                default:
                                    Console.WriteLine("Nur Buchstaben oder Zahlen erlaubt!");
                                    Console.ReadKey();
                                    Environment.Exit(0);
                                    break;
                            }
                    }
                }
                while (online);
    
                Console.ReadKey();
            }
        }
    }
    

    Donnerstag, 21. Januar 2016 13:36

Antworten

  • Hallo Roger,

    im deutschen Forum schreiben wir auf Deutsch.

    Zunächst musst du dir bewusst werden dass das interpretieren eines Geräuschs um ein vielfaches komplexer ist als das erzeugen. Einfache Töne sollten noch machbar sein, sind aber auch schon nicht mehr ganz so einfach.

    Schritt 1 wäre erstmal eine Aufnahme anzufertigen. Es gibt im Internet diverse Beispiele fürs einlesen der Mikrofondaten. Die Windows eigenen Methoden sind manchmal etwas komplexer, weshalb ich dazu tendieren würde ein Projekt zu suchen welches das vereinfacht. Ich hörte schon ein paar mal etwas von CSCore, getestet habe ich es aber selbst noch nicht.

    Schritt 2 wäre nun das Analysieren der Daten. Du könntest u.A. auf die Frequenz achten und dann immer an Lautstärkesprüngen eine Stoppuhr benutzen um die Zeit heraus zu bekommen. Aber wie gesagt, das ist etwas komplexer als es klingt, da man auch gewisse Toleranzen beachten muss.
    Das Verarbeiten selbst sollte als Byte-Stream mit am einfachsten gehen. Hier hast du entsprechende Daten sodass du weiß das meinetwegen 8 Bytes die Daten für 1ms Aufnahme enthalten. Nun gilt es diese in einer Schleife zu verarbeiten.

    PS: Warum hast du das im App-Entwickler-Forum gepostet wenn du bisher eine Konsolenanwendung hast?


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Donnerstag, 21. Januar 2016 14:43

Alle Antworten

  • Hallo Roger,

    im deutschen Forum schreiben wir auf Deutsch.

    Zunächst musst du dir bewusst werden dass das interpretieren eines Geräuschs um ein vielfaches komplexer ist als das erzeugen. Einfache Töne sollten noch machbar sein, sind aber auch schon nicht mehr ganz so einfach.

    Schritt 1 wäre erstmal eine Aufnahme anzufertigen. Es gibt im Internet diverse Beispiele fürs einlesen der Mikrofondaten. Die Windows eigenen Methoden sind manchmal etwas komplexer, weshalb ich dazu tendieren würde ein Projekt zu suchen welches das vereinfacht. Ich hörte schon ein paar mal etwas von CSCore, getestet habe ich es aber selbst noch nicht.

    Schritt 2 wäre nun das Analysieren der Daten. Du könntest u.A. auf die Frequenz achten und dann immer an Lautstärkesprüngen eine Stoppuhr benutzen um die Zeit heraus zu bekommen. Aber wie gesagt, das ist etwas komplexer als es klingt, da man auch gewisse Toleranzen beachten muss.
    Das Verarbeiten selbst sollte als Byte-Stream mit am einfachsten gehen. Hier hast du entsprechende Daten sodass du weiß das meinetwegen 8 Bytes die Daten für 1ms Aufnahme enthalten. Nun gilt es diese in einer Schleife zu verarbeiten.

    PS: Warum hast du das im App-Entwickler-Forum gepostet wenn du bisher eine Konsolenanwendung hast?


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Donnerstag, 21. Januar 2016 14:43
  • Erstmal vielen Dank für die Antwort.

    Ich wusst nicht, in welchem Forum ich mit einer Console Anwendung posten sollte. Vielen Dank nochmal

    Werde es probieren und mich melden, wenns geklappt hat.

    MfG

    Donnerstag, 21. Januar 2016 16:28