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.
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!
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.
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 16:12 Uhr)
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 10:15 Uhr)
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
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"
Monstelibs? Ncurses müsste dir eigentlich gefallen weil es echt super einfach ist!
Du musst da aber keine Berührungsängste haben, ich mach das ja. Du benutzt es dann einfach nur, mehr nicht.
Ich sehe gar keine Notwendigkeit für ein Menü, da es auch problemlos über eine Terminaleingabe geht ....möchte so was nur in äußersten, unumgänglichen Notfällen installieren - die sehe ich hier allerdings nicht wirklich
ich brauche leider für weitere Versuche auf jeden Fall die integrierte Regiefunktion mit Menü, da ich nie per Kommandozeile arbeite.Ich sehe gar keine Notwendigkeit für ein Menü, da es auch problemlos über eine Terminaleingabe geht
Außerdem müssen mehrere Schritte mit demselben Array im Speicher durchgeführt werden, plus zusätzliche Dateioperationen, und die Arrays im RAM sind ja weg beim Neustart - das wirst du auch merken, wenn wir soweit sind.
Das Menü habe ich dir oben aber ja bereits gepostet, es muss nur einfach in dein Programm mit rein.
Ich fürchte nur fast nach deinem Post:
dir ist noch nicht gar nicht klar, was als nächstes alles gemacht werden muss...
Aber zurück zur Roadmap:
hast du denn inzwischen die ersten 3 Musterwörter erstellt (aufgenommen, "bereinigt", Rausch-Grenzen weggeschnitten, und dann gespeichert) ?
Und existiert inzwischen eine Funktion saveArray, die einen Array im RAM als *.wav file samt header speichert?
Doch ist mir klar nur glaube ich dir ist noch nicht ganz klar wie mächtig die Eingabeaufforderung ist.
Du bekommst ja auch dein Menü, lass mich einfach nur machen.
Nein. Baue noch am Menü. Leider verschlingt die Familie doch ziemlich viel Zeit. Wenn ich ans Programmieren komme ist es oft schon nach 22 Uhr.
es ist nicht "mein Menü", mit dem müssen wir beide arbeiten, ggf. synchron oder per "handshake".
Deshalb mache ich das ja. Wie gesagt, ich selbst könnte ohne, aber da sich das ja mittlerweile zu einem Gemeinschaftsprojekt entwickelt hat bastel ich eben da das Menü. Das mich ncurses da jetzt so heiss gemacht hat konnte ich ja nicht wissen. Finde die Möglichkeiten und die Schlichtheit aber super und kommt so bisschen DOS Feeling auf.
Lesezeichen