- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 241

Thema: wav Dateien: Programieren von Wiedergabe und Aufnahme

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    für die Spracherkennung brauchst du doch jede Menge Vergleichsdaten, und die müssen nunmal möglichst optimal sein.
    Die FFT kann ja auch nur vergleichen, was in etwa vergleichbar ist.
    Schlechte Basisdaten => falsche Ergebnisse.

    Da du ja deine Vergleichsdatenbank erstmal selber per Micro aufnehmen und dann analysieren und optimieren musst, und das Wort für Wort mit wiederkehrenden Algorithmen, alle nach dem selben Muster erstellt, bietet sich doch ein Menü mit diesen festen Regiefunktionen geradezu an, oder nicht?

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Ich sage es mal so. Als jemand der gerne im Terminal arbeitet wäre meine Antwort eigentlich

    Code:
    da sich das Menü sehr einfach durch Startparameter umgehen lässt. Wie der Zufall aber nun mal so spielt musste ich, um mein System auf dem neuen Motherboard wieder ins laufen zu bringen, eine RescueCD verwenden. Da ich keine hatte und CDs ja echt out sind, habe ich das Ganze natürlich auf einen USB-Stick gemacht. Das mache ich normalerweise mit dd, wo ich dann einfach das iso auf den Stick schiebe. Aber bei der war ein install dabei. Okay versuche ich mal. Schau an, da war ein Menü im Terminal und sofort musste ich an dich denken. Mal kurz nach geforscht wie das erstellt wurde und so auf Ncurses gestolpert.

    Und das hat mich so gereizt das ich da jetzt am bauen bin. So kommt die Jungfrau zum Kind, nichwahr?

    Ah um das zu compilieren brauchst du libncurses-dev (glaube ich). Kannst ja mal im Packetmanager schauen. In geany muss noch

    Code:
    -lncurses
    dazu.

  3. #3
    HaWe
    Gast
    ogott - bitte nicht ncurses! O.o

    Zenity ist doch perfekt!

    und das Menü sind doch nur 10 zeilen, zur Abfrage einfach auf Tasteneingabe mit Enter warten!

    Und ich will doch nicht jedesmal das Programm neu starten mit verschiedenen Parametern, für einfache wiederkehrende Funktionen - viel zu viel Aufwand und viel zu unflexibel !
    wav sound bearbeiten muss interaktiv im Programm selber möglich sein!

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Ich bin ja schon am Bauen also ganz ruhig! Und ja ncurses. Find ich grade voll lustig. Macht mir Spass.

    Es gibt aber grundlegende Unterschiede in der Auffassung. Was du Aufwand nennst finde ich einfach schneller und praktischer.

  5. #5
    HaWe
    Gast
    ich habe einfach Berührungsängste was Monsterlibs angeht und möchte so was nur in äußersten, unumgänglichen Notfällen installieren - die sehe ich hier allerdings nicht wirklich: was soll ncurses können, was normale printf/sprintf-Befehle nicht können?

    - - - Aktualisiert - - -

    Die Menüabfrage ist ja auch total simpel:
    Code:
    // Terminal: move cursor
    #define cursup    "\033[A"
    #define curshome  "\033[0;0H"
    #define cls_cons  "\033[2J"
    
    FILE  * fp;
    int32_t input[];
    
    void printMenu() {
       printf( cls_cons );
       printf( curshome );
    
       printf(" \n   
       0  Soundfile *.csv in Programm öffnen / laden  \n
       1  Soundfile *.wav in Programm öffnen / laden \n
       2  Soundfile *.wav öffnen / abspielen + Plot   \n
       3  Sound aufnehmen per Micro / SoundCard \n
       4  akt. Sound (Array im RAM) abspielen + Plot \n
       5  akt. Sound optimieren (noise/cut) \n
       6  akt. Sound (im RAM) als *.wav File speichern unter...  \n
       7  akt. Sound an FFT + Plot  \n
       8  akt. Sound cross correlation mit 1 wav File  \n
       9  akt. Sound cross correlation mit allen *.wav Files (auto) \n\n
       
       q  Quit \n\n"
    }
    
    int main() {
       //...init dies
       //...init das
       int ch='\0';
    
       while (ch!='q') {
          ch='\0';
          printMenu();
    
          ch=getchar();
    
          if ch=='q' exit(0);
    
          else
          if ch=='0' {fp=FileOpenDialog("*.csv");   // wrapper um popen mit Zenity
                      getArrayfromFile(input, SHRT_MAX, fp); }
    
          else
          if ch=='1' { fp=FileOpenDialog("*.wav");   // wrapper um popen mit Zenity
                      getArrayfromFile(input, SHRT_MAX, fp); 
                      eraseWavHeader(input, SHRT_MAX); }  
    
          else
          if ch=='2' { fp=FileOpenDialog("*.wav");
                      playWaveFile( fp );   // wrapper um popen mit Zenity
                      plotArray(input, SHRT_MAX ); }  
          else
          if ch=='3' {recordArray(input, SHRT_MAX );  } // von Micro
    
          else
          if ch=='4' {playArray(input, SHRT_MAX ); 
                      plotArray(input, SHRT_MAX ); }
          else
          if ch=='5' {optimizeArray(input, SHRT_MAX);  // (Nachfolger von analyseArray)
                      plotArray(input, SHRT_MAX ); }   
    
          else
          if ch=='6' {buildWavFileArray(input, waveBuffer, SHRT_MAX );  // wav Header vor das Wort setzen
                      FileSaveDialog(fp, "*.wav"); }   // wrapper um popen mit Zenity, als wav file speichern
    
          else
          if ch=='7' {;} // FFT, folgt
    
          else
          if ch=='8' {;} // FFT, folgt
    
          else
          if ch=='9' {;} // FFT, folgt
    
       }
    }
    Geändert von HaWe (21.06.2016 um 15:12 Uhr)

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    ncurses kann menüs mit tastaturnavigation bereitstellen, schonmal versuch tastatureingaben sauber abzufangen und dann in nagivation umzusetzen !? glaub mir, da bricht man sich deutlich mehr einen dran ab als mit tinyalsa :P

    und menüs im stil "eingabe 1-10" die dann den ganzen bildschirm dauernd scrollen lassen sind schon ein augenschmerz, da lob ich mir ein halbwegs festehendes Fenster

    ABER .. das ist mal wieder eine Geschmacksfrage und über Geschmack streitet man sich nicht, ich kann zumindest die Argumentation von Hirnfrei insoweit verstehen.

    PS: Berührungsängste sind die Ängste die man unbedingt überwinden muss!
    Ohne Berühung keine Chance für Erfolg oder Misserfolg,
    ohne Erfolg oder Misserfolg keine Erfahrung,
    ohne Erfahrung kein Fortschritt

    PPS: Auf ewig alten Schienen fahren lohnt sich nicht, man muss auch mal ein wenig anderen Menschen (oder deren Code) vertrauen entgegen bringen, vor allem wenn es zum Standard geworden ist ... auch ich zähle mich mittlerweilen was den Programmierstil angeht zu den ewig alten und muss zusehen dass ich bei den ganzen Biliotheken für Dinge die ich mal Bare Metal programmiert habe anpasse und das Rad nicht jedes mal neu erfinde.
    Geändert von Ceos (21.06.2016 um 09:15 Uhr)
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #7
    HaWe
    Gast
    ja, wenn wir jetzt Super-Menüs bräuchten: verstehe ich ja.
    Brauchen wir aber gar nicht.
    ch=getchar() reicht, es müssen ja nur wenige Standardfunktionen wiederholt aufgerufen werden können,
    um eine kleine wav-Datenbank zu erstellen und deren sounds zu optimieren,
    und um dann, wenn man sie hat,
    aktuelle wav-arrays mit dieser Datenbank cross-correlieren zu können.

    Die wrapper um popen mit Zenity sind dann allerdings wirklich Gold wert.


    ps,
    #define cursup "\033[A"
    #define curshome "\033[0;0H"
    #define cls_cons "\033[2J"


    stellt übrigens das Menü auf dem Screen zur Verfügung, ohne zu scrollen (s. Code oben)

    und da handle ich nach dem Motto "KISS"

Ähnliche Themen

  1. Video Aufnahme (+12std.)
    Von highdef im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 8
    Letzter Beitrag: 03.06.2011, 10:08
  2. led ein/aus programieren
    Von anthony im Forum PIC Controller
    Antworten: 6
    Letzter Beitrag: 15.07.2008, 17:44
  3. hex-dateien in bin-dateien umwandeln
    Von roboterheld im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 02.10.2007, 20:25
  4. Richtiges Drehen einer Flasche/Dose zur Aufnahme
    Von ähM_Key im Forum Mechanik
    Antworten: 2
    Letzter Beitrag: 06.10.2006, 15:43
  5. Automatische Audio-Aufnahme
    Von the_Ghost666 im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 11.09.2005, 20:27

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen