Conky & Ubuntu - Musikvisualisierung (Musikbars)?

7

Ich habe vor ein paar Tagen angefangen, mit Conky zu spielen und habe dies erreicht:

( Hinweis: Obwohl ich es von Grund auf neu geschrieben habe, habe ich mich von diesem Foto inspirieren lassen , dem Autor für seine Kreativität zu verdanken )

Wie Sie sehen können, habe ich zwischen der Digitaluhr ("21:20") und der Verbindungsstatistik freien Speicherplatz.

Jetzt würde ich gerne das haben, was ich "Musikbars" nannte. Das heißt, animierte Balken, die sich nach dem Ton bewegen, der gerade von meinem Musik-Player (im Moment Clementine) abgespielt wird. Dank einiger Skripte und des Befehls qbus konnte ich den aktuellen Titel, den Künstler, das Jahr usw. bereits anzeigen.

Ich muss jedoch Hauptfragen stellen:

  • Wie würde ich die tatsächlichen Musikdaten erhalten (ich denke, es heißt Amplituden)?
  • Wie würde ich das ziemlich reibungslos animieren?

Ich verwende Conky und Lua mit Kairografie, aber Animation scheint wirklich etwas kompliziert zu sein, da ich keinen Weg gefunden habe, Lua / Kairografie "neu zu streichen". Dies zwingt mich, das update_interval in .conkyrc zu reduzieren, um etwas zu erreichen, das einer Animation "nahe" kommt.

Wenn Sie einen sehr kleinen Wert auf update_interval setzen, verbraucht conky leider viele CPU-Ressourcen, da nicht nur alle (zum Beispiel) 50 Millisekunden neu gezeichnet werden, sondern auch Variablen neu berechnet und Skripte bei Bedarf erneut ausgeführt werden.

Daher suche ich für die Animation nach einer Möglichkeit, eine reibungslose Animation zu erstellen (10 fps wären ausreichend), ohne dass Conky die CPU-Ressourcen aufzehrt.

Es wäre großartig, wenn mir jemand Ideen geben könnte. Es muss nicht unbedingt in LUA sein, und wenn es eine gute Alternative zu Conky gibt (sollte etwas Leichtes sein), lassen Sie es mich bitte wissen!

- -

Vielen Dank für die Ideen und Vorschläge!

Eti
quelle
1
Dies ist meiner Meinung nach nahezu unmöglich. Sie müssen die von Ihrem Player wiedergegebenen Audiodaten abfangen und puffern und dann analysieren, um die gewünschten Informationen zu erhalten.
Zetah
Solange es in Bezug auf die Leistung akzeptabel ist (Conky sollte leicht bleiben), macht es mir nichts aus, komplizierte Dinge zu tun. :-) Ich fange jedoch an zu denken, dass das Hauptproblem die eigentliche Animation ist ...
Eti
Ich benutze kein Conky, aber nach meinem Dafürhalten bezweifle ich, dass es mehr als einen Zyklus pro Sekunde ausführen kann, während es verwendbar ist. Abgesehen davon müssen Sie PSD für gepuffertes Signal durchführen und es für Bins mitteln, die in Ihren Balken angezeigt werden. Es hat nichts mit Amplitude zu tun und tut mir leid, aber ich würde es einfach vergessen
zetah
@zetah In der Tat, aber ich denke, Kairografie (die wie ich von Conky verwendet werden kann) ermöglicht ziemlich fortgeschrittenes 2D-Zeichnen. Wenn ich nur einen Weg finden könnte, Kairo innerhalb eines Conky-Intervalls mehrmals neu zeichnen zu lassen, wären viele Probleme gelöst!
Eti

Antworten:

1

Ich denke, es ist möglich, mit PulseAudio. Ich weiß nicht, wie ich es vollständig angehen soll , aber hier ist ein Dienstprogramm , das mir dabei hilft, die Amplituden zu ermitteln. Ich nehme an, Sie könnten dann etwas finden, um dies in Conky-Diagramme umzuwandeln.

Vadim Peretokin
quelle
Das ist etwas Nützliches! Danke für deinen Beitrag. Ja, das in Bars zu verwandeln sollte keine große Sache sein. Mein Hauptanliegen ist jedoch das Aktualisierungsintervall ... Wenn sich die Balken nur einmal pro Sekunde bewegen, würde das wohl nicht besonders außergewöhnlich aussehen. :)
Eti
1
Nein, aber Sie können entweder den Autor fragen oder ihn selbst ändern, um kürzere Intervalle zu überprüfen. Mit diesem Code wird nur einmal pro Sekunde geprüft: if (now <time (NULL)) {now = time (NULL); Vorerst eine Funktion, die die zweite Genauigkeit zurückgibt : cplusplus.com/reference/clibrary/ctime/time oder Sie könnten den Scheck vollständig entfernen, obwohl ich nicht sicher bin, wie schnell er dann prüfen würde (könnte die ganze Zeit prüfen und verschwenden Ihre CPU)
Vadim Peretokin
1

Ich weiß, dass es eine Weile her ist, seit Sie dies gepostet haben, aber ich habe neulich einen großartigen CLI-Visualizer gefunden: https://github.com/dpayne/cli-visualizer

Damit ist Ihr Problem mit dem Aktualisierungsintervall natürlich nicht gelöst, aber Sie finden es möglicherweise trotzdem genauso interessant wie ich.

Rαωs
quelle