Hallo Leute,
ich möchte einen eigene DJ-Player entwickeln. So ähnlich bei zB ein
Pioneer XDJ oder CDJ.
Ich habe bereits einen Prototypen, wo jedoch die DJ-Software auf einem
Raspberry Pi läuft.
Nun frage ich mich wie ich einen RPI professionell ersetzen kann.
Also, was zB Pioneer für einen PC in ihren DJ-Produkten verwendet.
Stellen sie diese selbst her?
Wie nennt man solche PCs, kann man die kaufen (Industrie PCs?)?
Ich kenne noch das Up-Squared Board, was eine Art RPI aus Steroide ist,
oder natürlich so NUC PCs von Intel. Aber ich suche wie gesagt nach
einer besseren Lösung bzw. nach einer professionellen Lösung, ähnlich
wie es zB Pioneer macht.
Am besten wäre es natürlich wenn auf dem PC am Ende Linux drauf laufen
könnte.
Ich hoffe Ihr könnt mir weiterhelfen, kenne mich nicht gut mit so etwas
aus.
LG NIMANS :)
Niklas T. schrieb:> Wie nennt man solche PCs, kann man die kaufen (Industrie PCs?)?
Such dir aus dem Angebot was raus... Industrie-PCs ist eine Variante,
die haben aber eher andere Zielgruppen/Spezifikationen. Ab einer
gewissen Menge oder Geldbetrag kann man sich das auch passend designen
lassen. Ich würd weiter Richtung NUC schauen, viel besser/einfacher
wirds nicht.
Niklas T. schrieb:> Weil der RPI viel zu wenig Leistung.
Was kann denn dein Player so tolles? In einem CDJ ist was mit deutlich
weniger Leistung verbaut. Allerdings ist die Arbeit auf mehrere
getrennte CPUs verteilt (Eine für die zentrale Steuerung, eine für's
Display, eine für das CD-Laufwerk, eine für das Frontpanel und ein DSP
für die Audio-Verarbeitung). Das ist kein Monolith, und es ist auch
nichts von der Stange, sondern selbst entwickelt, speziell für diesen
Anwendungsfall. Und ein klassisches PC-Betriebssystem läuft da auch
nicht drauf.
Gustl B. schrieb:> Hier ein paar Bildchen die man schnell im Internet findet:
Man kann auch ein Service-Manual mit einem Blockschaltbild finden, dem
man deutlich mehr Infos über den Aufbau und die Komponenten entnehmen
kann. Da ich aber nicht weiß, ob das legal ist, hier kein Link. Der
geneigte Leser sollte aber auch in der Lage sein, das mit der
Suchmaschine des geringsten Misstrauens selber zu finden.
> Die Platinen entwickeln die sehr wahrscheinlich selbst oder lassen sie> extra für sich entwickeln. Das kostet Geld, lohnt sich aber bei deren> Preisen und Stückzahlen.
Das würde sich vermutlich auch bei normalen Preisen noch lohnen.
Was du suchst ist ein Single Board Computer (SBC) beziehungsweise System
on Module (SoM). Auch den Raspberry Pi gibt es als solches Modul zum
Einsatz auf eigenen Leiterplatten (Raspberry Pi Compute Module).
Die Raspberry Pi CM sind eigentlich ziemlich gut skalierbar, wenn dir
die Rechenleistung vom größten nicht ausreicht, wirst du für eine
ausreichende Alternative denke ich ziemlich tief in die Tasche greifen
müssen, wenn du nicht in der Lage bist ein solches Embedded System
selbst zu entwickeln.
Würde sagen mein Gerät wird viel weniger können, aber ich habe halt
momentan alles auf einem einzelnen RPI laufen. Also Betriebssystem,
Software, Display, DAC...
Also entweder ich teile das auch auf, aber da müsste ich mich mal
informieren wie so etwas geht, denn momentan kann ich das noch nicht
oder ich hole mir einen stärkeren PC der alles gleichzeitig machen kann.
Diese RPI CMs sind ja nichts anderes als die normalen RPIs nur flach
gebaut(?). Habe einen RPI 4 mit 8 GB Ram und der war auch zu schwach,
aber ich denke vom Prozessor aus. Tiefer in die Tasche zu greifen wäre
kein Problem, hätte aber ein Preislimit bei 300 Euro, wenn es geht viel
lieber bei maximal 200 Euro.
Niklas T. schrieb:> Diese RPI CMs sind ja nichts anderes als die normalen RPIs nur flach> gebaut(?).
Wenn das Dein Niveau der Marktanalyse ist...
> Habe einen RPI 4 mit 8 GB Ram und der war auch zu schwach,> aber ich denke vom Prozessor aus.
Denken und Glauben ist Mist: Wenn Du einen vollstaendiges Linux am
Laufen hast, kannst Du mit Top & Co. schon gucken, wo die
Rechenleistungen verbraten wird. Denn mit 4 x 1.5GHz hast Du schon
richtig Ompf auf der Platine.
>Tiefer in die Tasche zu greifen wäre> kein Problem, hätte aber ein Preislimit bei 300 Euro, wenn es geht viel> lieber bei maximal 200 Euro.
Vielleicht ist Dein Konzept verbesserungsfaehig, z.B. kein
Betriebssystem sondern bare Metal. Aber Du weisst schon, dass z.B.
Pioneer mehrere Ingenieure beschaeftigt und dass sind nicht nur
Marketing-Leute.
Gruesse
Th.
Niklas T. schrieb:> Ich habe bereits einen Prototypen, wo jedoch die DJ-Software auf einem> Raspberry Pi läuft.> Nun frage ich mich wie ich einen RPI professionell ersetzen kann.> Also, was zB Pioneer für einen PC in ihren DJ-Produkten verwendet.> Stellen sie diese selbst her?> Wie nennt man solche PCs, kann man die kaufen (Industrie PCs?)?
Du darfst den Rapsberry Pi auch dafür einsetzen, wenn er deinen
Anforderungen genügt. Und da harkt es leider häufig. Das geht bei der
SD-Karte los und hört bei der Langzeitverfügbarkeit auf.
Ansonsten schau dir mini-ITX-Boards an. Die gibt es in allen möglichen
Geschmacksrichtungen.
Sonst gäbe es natürlich echte Boards für Embedded in allen
Geschmacksrichtungen.
Beispiel:
https://www.congatec.com/de/congatec/pressemitteilungen/article/neues-congatec-com-express-computer-on-module-mit-3-ghz-intelr-coretm-i3-prozessor/
Niklas T. schrieb:> Habe einen RPI 4 mit 8 GB Ram und der war auch zu schwach,
Erzähle etwas mehr über deine Software. Was genau machst du da, welche
Sprache verwendest du? Ich mag nicht so richtig glauben, dass der Pi mit
ein paar Audio Effekten am Anschlag ist.
Andre schrieb:> Erzähle etwas mehr über deine Software. Was genau machst du da, welche> Sprache verwendest du? Ich mag nicht so richtig glauben, dass der Pi mit> ein paar Audio Effekten am Anschlag ist.
Ich benutzte lediglich die OpenSource Software Mixxx.
Aber sobald ich zwei Songs gleichzeitig manipuliere fing es immer an zu
haken.
Und in den Systemanforderungen steht, dass man mindesten 2 Ghz benötigt
Niklas T. schrieb:> Ich benutzte lediglich die OpenSource Software Mixxx.
Das ist ein QT6-Prograemmchen. Qt6 ist nicht bekannt fuer sparsame
Programmierung.
> Aber sobald ich zwei Songs gleichzeitig manipuliere fing es immer an zu> haken.
Dann fehlt Dir ein leistungsfaehiger Massenspeicher, und nein, eine
SD-Karte ist weder Masse noch Leistungsfaehig. -> Suche Dir einen NUC
oder Industrie-PC.
Gruesse
Th.
Im professionellen embedded Bereich verwendet man für sowas gerne COM,
also computer-on-module. Ich weiß nicht wie deine sonstige Hardware
aussieht, kann sein, dass allein das zu entwerfende Carrierboard den
Aufwand sprengt.
Anschauen kannst du es dir aber ja mal:
https://www.aaronn.de/produkte/board-level/computer-on-modules/
Burps schrieb:> und hört bei der Langzeitverfügbarkeit auf.
Ach her je. Schon mal über die Langzeitverfügbarkeit von Schrauben oder
sonstigen Halbzeugen nachgedacht?
Das ist der Teil den hier viele nicht kapieren:
Software schreibt man gegen ein vernünftiges Universal-Betriebssystem in
einer Hochsprache und sucht sich ein Board mit genügend Rechenpower aus.
Wenn ein Raspi nicht reicht nimmt man halt irgendwas mit einem AMD oder
Intel-Prozessor. Und welches Board in zwei Jahren eingebaut wird,
interessiert heute nicht die Bohne. Denn dank Hochsprache und
Betriebssystem spielt die konkrete Hardware einfach keine Rolle mehr.
Spezialisierte Hardware interessiert nur für echte Massenproduktion.
Und wenn man doch irgendeine Spezial-Hardware benötigt, hält man den
Teil so klein wie nur irgendwie möglich und bindet den über USB oder
Ethernet an.
Einer schrieb:> Denn dank Hochsprache und> Betriebssystem spielt die konkrete Hardware einfach keine Rolle mehr.> Spezialisierte Hardware interessiert nur für echte Massenproduktion.
Gerade anders herum.
Ich mache Kleinststückzahlen, extreme Sonderentwicklungen nach
Kundenwunsch, meist für Luftfahrt und da ist Langzeitverfügbarkeit DAS
Ding.
Denn alle Arbeiten, alle Tests, jede Änderung und sei sie noch so klein
muss komplett neu durch die Zulassungen, mit allen Papieren und
gigantischen Aufwand.
Und das verteilt sich dann auf z.B. 6 Geräte.
Je kleiner die Stückzahl um so härter haut das auf den Gerätepreis
durch.
Bei 100K Stk./Jahr ist sind mir 100K für ein Redesign egal.
Wenn es dann danach 2€ billiger zu bauen ist, habe ich sogar 100K durch
das Redesign verdient als Hersteller.
Bei 10 Geräten tut das richtig weh, denn der Kunde sieht nicht ein das
zwei mal zu bezahlen.
Niklas T. schrieb:> Also, was zB Pioneer für einen PC in ihren DJ-Produkten verwendet.> Stellen sie diese selbst her?
Der Trick ist, dass die Software stark für einen Prozessor optimiert ist
und der Prozessor vieles in Hardware kann, was Mixxx in Software leisten
muss.
Effekte, Decoding,... All das kann ein DSP, ohne groß darüber nachdenken
zu müssen.
Grafische Ausgabe ist auch rechenintensiv. Das ganze "headless" ohne
komplette OS-GUI mit ein paar GUI-Elementen auf einem kleinen
SPI-Display zu machen, ist deutlich sparsamer.
Du brauchst also nicht unbedingt einen PC, der Mixxx laufen lassen kann,
sondern Software, die nicht mehr macht, als sie soll. Und dafür reicht
dann auch der Pi aus.
Ansonsten wird man um nen Intel NUC oder so vermutlich nicht
herumkommen.
Sebastian R. schrieb:> Du brauchst also nicht unbedingt einen PC, der Mixxx laufen lassen kann,> sondern Software, die nicht mehr macht, als sie soll. Und dafür reicht> dann auch der Pi aus.
Aber was macht Mixxx denn mehr als die DJ Funkion?
Also abgesehen dass was ein CDJ in Hardware macht.
Meinst du, ich soll ein Programm entwickeln, welches nicht extra auf
einem Betriebssystem laufen muss?? --> ist das so einfach?
Oder bestimmte Funktionen auf die Hardware bringen und dann ein ganz
einfaches DJ Programm suchen/schreiben.
Niklas T. schrieb:> Aber was macht Mixxx denn mehr als die DJ Funkion?> Also abgesehen dass was ein CDJ in Hardware macht
Mixxx ist z.B. nicht wirklich für ARM-Prozessoren optimiert. Das heißt,
einige Befehle und Funktionen, die ein x86 mit sich bringt, müssen aufm
ARM über Umwege ausgeführt werden und das braucht Rechenleistung. Auch
Audio-Decodierung und Grafische Dinge laufen vielleicht nicht über
speziell dafür gedachte Teile des ARM-Prozessors, weil Mixxx nicht weiß,
dass der Prozessor dafür eigene Funktionen hat. Stattdessen wirds
umständlich und rechenintensiv über Software gelöst.
GPU/Grafikbeschleunigung ist bei einem ARM einfach anders.
MP3s wiedergeben und ein sich drehendes Rädchen anzeigen ist eigentlich
nicht aufwendig. Das kann ein billiger M4 mit 120MHz. Aber auch nur,
wenn die Software dafür optimal genutzt wird und genau für den Prozessor
geschrieben wurde.
Mixxx läuft auf vielen Systemen und setzt einige Dinge voraus.
Niklas T. schrieb:> Meinst du, ich soll ein Programm entwickeln, welches nicht extra auf> einem Betriebssystem laufen muss??
Kommt drauf an. Ich glaube nicht, dass auf den CDJs ein Linux drunter
läuft, da wird vieles Bare-Metal sein.
Aber ein einfaches Linux (OpenWrt z.B.) kommt mit seehr wenig
Systemvoraussetzungen klar und bietet eine vielleicht nützliche
Abstraktionsebene wie ein standardisiertes Dateisystem und
standardisierte Dateioperationen.
Niklas T. schrieb:> ist das so einfach?
Für dich? Nein. Definitiv nicht. So leid es mir tut. Die Lösung ist halt
nicht, mehr Leistung einbauen, damit Mixxx läuft, sondern die vorhandene
Leistung so optimal zu nutzen, dass das Gerät tut, was es soll.
Niklas T. schrieb:> Oder bestimmte Funktionen auf die Hardware bringen und dann ein ganz> einfaches DJ Programm suchen/schreiben.
Auch das ist nicht trivial. Ein DSP ist im Prinzip auch erstmal dumm.
Erst mit der richtigen Software kann er sehr effektiv Audio verarbeiten
und z.B. EQ, Effekte, Mixing,... umsetzen.
Theoretisch hat ein oller RasPi 2 mehr als genug Leistung für das, was
du vor hast. Du musst es nur optimal nutzen. Und da wirst du in deinem
Fall nicht wirklich um ein großes Stück eigene Software umher kommen.
Wenn ich ein eigenes Programm speziell für den RPI 4 Prozessor schreibe,
aber auf dem RPI4 Linux Ubuntu oder etwas ähnliches läuft, würde dann
das Betriebssystem selber schon zuviel Leistung wegnehmen?
Wenn ja, gibt es noch mehrere OS wie zB OpenWRT die genau für sowas
gemacht sind?
Mich würde es wundern, wenn für ein "bisserl Audio rechnen" ein RPi
nicht reichen würde...
Hast du das Stromsparzeugs testweise einmal ausgeschalten und mit "top"
mal die CPU Auslastung betrachtet?
Kann gut sein, dass dein Problem damit zu tun hat.
BTW: es gibt sogar ein RPi Howto für mixxx... google hilft :)
https://github.com/fayaaz/mixxx-pi-genhttps://github.com/dennisdebel/pi_dj
73
Geht es denn darum, eine kleine Stückzahl dieses Geräts für den
Eigenbedarf und ggf. ein paar Kumpels zusammenzuklöppeln oder um die
Entwicklung, Herstellung und Inverkehrbringung eines darauf basierenden
kommerziellen Produktes?
Niklas T. schrieb:> Wenn ich ein eigenes Programm speziell für den RPI 4 Prozessor schreibe,> aber auf dem RPI4 Linux Ubuntu oder etwas ähnliches läuft, würde dann> das Betriebssystem selber schon zuviel Leistung wegnehmen?
Wenn das Raspian/Ubuntu/... schon sämtliche Systemlast beanspruchen
würde, wäre das Produkt sicherlich nicht so ein Hit geworden.
Glaub mir, da ist mehr als genug Bums, um deine "popeligen"
Anforderungen umzusetzen. Meinetwegen sogar in Python, was nicht gerade
für Performanz bekannt ist (Interpretersprache halt)
> Wenn ja, gibt es noch mehrere OS wie zB OpenWRT die genau für sowas> gemacht sind?
Jedes OS reicht dafür aus. Es gibt natürlich so Sachen wie Kodi, da
läuft aber auch nur ein Debian drunter.
Weder das Linux noch die Leistung des RasPis sind dein Problem.
Niklas T. schrieb:> ich möchte einen eigene DJ-Player entwickeln. So ähnlich bei zB ein> Pioneer XDJ oder CDJ.
Super viel Erfolg
> Am besten wäre es natürlich wenn auf dem PC am Ende Linux drauf laufen> könnte.>> Ich hoffe Ihr könnt mir weiterhelfen, kenne mich nicht gut mit so etwas> aus.
Evtl. einen Thinkcentre Tiny (Kann man auch aus dem Gehäuse nehmen).
Gibt es gebraucht, haben massig Power und Linux läuft wohl auch drauf.
Das aktuelle Flaggschiff von Pioneer (CDJ 3000) setzt übrigens keinen
DSP mehr ein, dafür mehrere ARM Cores, Renesas RZ irgendwas, und diverse
spezifische ICs für die Peripherie (USB, Netzwerk, etc.).
Spätestens beim Jogwheel wirst Du aber auf etwas fertiges zurückgreifen
müssen.
Die Frage ist, was kannst Du am Ende besser als z.B. ein DDJ 400 mit
eben der Mixxx Software (oder Rekordbox) auf einem Laptop...
Sebastian R. schrieb:> Glaub mir, da ist mehr als genug Bums, um deine "popeligen"> Anforderungen umzusetzen. Meinetwegen sogar in Python, was nicht gerade> für Performanz bekannt ist (Interpretersprache halt)
Stell Dir das mal nicht zu einfach vor. Bei dieser Art von Hardware geht
es hauptsächlich um ein latenzarmes Verhalten. Wenn man Taste XYZ drückt
oder am Jogwheel dreht möchte eine sofortige Reaktion, und nicht erst
nach 1/10 Sekunde. Auch der Bildschirm (Wellenform) möchte
verzögerungsfrei aktualisiert Werden.
Wenn die Wellenformen deckungsgleich sind, muss auch der Sound
deckungsgleich sein, man hört kleine Verschiebungen zwischen zwei Beats
relativ schnell.
Solche Sachen wie Keylock/Keyshift sind auch eher schwer in Python zu
implementieren.
Ich möchte mal behaupten es bedarf schon einer Compilersprache für
diesen Anwendungsfall.
Nein... audio ist "harmlos"...
Bei 2d Grafik kommt's eigentlich nur mehr auf die Treiber an... Ich
finde, das sieht man am schönsten in einem CAD Package bei dem man
OpenGL an und ausschalten kann (ist zwar 3d, aber man sieht den Effekt
schön).
Da ist das Drehen von einem recht einfachen 3d Objekt selbst auf einem
fetten PC nicht ruckelfrei ohne opengl.
Dagegen ist das quasi mit 0% CPU Auslastung flüssig, wenn man's wieder
einschaltet.
Gerade mit Qt habe ich ziemlich gute Erfahrungen in Bezug auf die Grafik
Geschwindigkeit... das nutzt ziemlich die Beschleunigungsfunktionen
ziemlich effizient.
Wie gesagt, bei sowas stören auch oft die Stromsparfunktionen enorm...
Den Scheduler zwingen den Prozess auf einem fixen Core auszuführen kann
auch etwas bei den Latenzen helfen.
Genau so könnte man den scheduler-tick auf 1kHz zu setzen - wenn das
nicht der Fall sein sollte...
Ansonsten müsste so ein Jogwheel an den GPIOs vom RPi eigentlich gut
funktionieren. Bei einem PC-Mainboard müsstest du auf USB oä.
ausweichen... kann man machen (ich würde da so einen usb-logicanalyzer
missbrauchen) - eleganter dürfte es aber über den GPIO gehen.
73
Sebastian R. schrieb:> Wenn das Raspian/Ubuntu/... schon sämtliche Systemlast beanspruchen> würde, wäre das Produkt sicherlich nicht so ein Hit geworden.>> Glaub mir, da ist mehr als genug Bums, um deine "popeligen"> Anforderungen umzusetzen. Meinetwegen sogar in Python, was nicht gerade> für Performanz bekannt ist (Interpretersprache halt)
Mit diesem "langsamen" Python lese ich auf einem RasPi4 einen Strom von
720p-Bildern von einer Logitech C920, mache eine Bewegungserkennung
darauf und schreibe das Ergebnis in einen lokalen Redis-Server -- mit
dauerhaft stabilen 28 bis 30 FPS. Daß das geht und wesentlich
performanter ist als spezialisierte Lösungen in kompilierten Sprachen
wie Zoneminder oder Motion, ist, daß eine Vielzahl von
Python-Bibliotheken in einer kompilierten Sprache geschrieben und
hochoptimiert sind. Nicht zuletzt aus diesem Grund ist Python besonders
dort beliebt, wo es um die Verarbeitung riesiger Datenmengen geht,
Stichworte Big Data, Machine Learning und Co. Inwofern möchte ich Dir
wärmstens ans Herz legen, Deine Kenntnisse alsbald einmal zu erweitern
und sie angelegentlich ein wenig zu aktualisieren. ;-)
Ein T. schrieb:> Mit diesem "langsamen" Python lese ich auf einem RasPi4 einen Strom von> 720p-Bildern von einer Logitech C920, mache eine Bewegungserkennung> darauf und schreibe das Ergebnis in einen lokalen Redis-Server -- mit> dauerhaft stabilen 28 bis 30 FPS.
Und mit welcher Latenz? Für die hier diskutierte Anwendung darf sie
höchstens im unteren einstelligen Millisekunden-Bereich sein.
> Daß das geht und wesentlich performanter ist als spezialisierte Lösungen> in kompilierten Sprachen wie Zoneminder oder Motion, ist, daß eine> Vielzahl von Python-Bibliotheken in einer kompilierten Sprache geschrieben> und hochoptimiert sind.
Mit anderen Worten: Nur die Steuerung wird in Python gemacht. Die
eigentliche Verarbeitung ist gar nicht darin implementiert.
Ein T. schrieb
>> Mit diesem "langsamen" Python lese ich auf einem RasPi4 einen Strom von> 720p-Bildern von einer Logitech C920, mache eine Bewegungserkennung> darauf und schreibe das Ergebnis in einen lokalen Redis-Server -- mit> dauerhaft stabilen 28 bis 30 FPS...
Da scheint was Faul zu sein oder Infos fehlen...
https://www.google.com/search?q=raspi+usb+langsam
Markus M. schrieb:> Bei dieser Art von Hardware geht> es hauptsächlich um ein latenzarmes Verhalten.
Netter Vergleich:
Ich hatte gerade eine ISP bedingte Netzwerkstörung.
Super geile Datentransferraten im Up und Download, aber VIOP,Teams oder
Fernwartung war nahezu unmöglich. (Doof mit Festnetz über IP only)
Auch Whatsapp Tel im Wlan war betroffen.
50Mbit down, 5mbit up, reichen nicht für 8Khz packenden Sprachcodec?
Tja, wenn die Ping Zeiten zwischen 20ms und 2s liegen, werden eben eine
Menge Pakete verworfen, weil ich die Daten entweder rechtzeitig bekomme
oder dann auch nicht mehr brauche.
Das Ohr ist schon ein extrem anspruchsvolles Organ.
Störungen, Jitter, Laufzeitunterschiede,Echos die man nur mit
erheblichen Aufwand gemessen bekommt aber die im Höreindruck ganz
erheblich störend wirken.
Irgendwie schwammig, dumpf, kratzig, verzerrt ...
Man greift zu völlig bekloppten Beschreibungen weil man es einfach nicht
besser ausdrücken kann und auf dem Oszi sieht es eigentlich toll aus.
So bald ein OS ins Spiel kommt ist meist vorbei mit exaktem Timing.
Dann hilft nur noch HW die absurd übertrieben Power hat und SW Skills
vor denen ich neidlos den Hut ziehe.
Oder eben auf bescheidener HW bare metal und hartes Timing und GUI
völlig von einander Trennen.
Toppings schrieb:> Da scheint was Faul zu sein oder Infos fehlen
Vor allem die Info, ob die Bewegungserkennung wirklich in Python
implementiert ist, oder ob das Python da nur als "Klebstoff" zwischen
div. Bibliotheksfunktionen dient.
Weil einen Frame-Pointer aus einer Funktion entgegenzunehmen und an
andere weiterzureichen ist nun wirklich der am wenigsten zeitkritische
Teil an dem ganzen.
Rolf M. schrieb:> Mit anderen Worten: Nur die Steuerung wird in Python gemacht. Die> eigentliche Verarbeitung ist gar nicht darin implementiert.Εrnst B. schrieb:> Vor allem die Info, ob die Bewegungserkennung wirklich in Python> implementiert ist, oder ob das Python da nur als "Klebstoff" zwischen> div. Bibliotheksfunktionen dient.
Hat er doch ganz deutlich geschrieben.
Ein T. schrieb:> Daß das geht und wesentlich> performanter ist als spezialisierte Lösungen in kompilierten Sprachen> wie Zoneminder oder Motion, ist, daß eine Vielzahl von> Python-Bibliotheken in einer kompilierten Sprache geschrieben und> hochoptimiert sind.
Max M. schrieb:> Hat er doch ganz deutlich geschrieben.
Es widerspricht aber der Aussage, dass das in Python gemacht sei. Ich
wollte damit nur darauf hinweisen, dass es eben nicht in Python
implementiert ist, sondern nur von Python aus genutzt wird.
Die Grundaussage war ja, dass Python trotz interpretierter Ausführung
schnell genug sei, um die Aufgaben zu erledigen. Wenn die Implementation
aber in Wirklichkeit in einer Hochsprache erfolgt und von Python aus nur
aufgerufen wird, ist das natürlich keine große Kunst.
Rolf M. schrieb:> Ein T. schrieb:>> Mit diesem "langsamen" Python lese ich auf einem RasPi4 einen Strom von>> 720p-Bildern von einer Logitech C920, mache eine Bewegungserkennung>> darauf und schreibe das Ergebnis in einen lokalen Redis-Server -- mit>> dauerhaft stabilen 28 bis 30 FPS.>> Und mit welcher Latenz? Für die hier diskutierte Anwendung darf sie> höchstens im unteren einstelligen Millisekunden-Bereich sein.
Jedenfalls so, daß ich keinen zeitlichen Versatz zwischen Bewegung und
Anzeige erkennen kann. Das reicht für meinen Anwendungsfall vollkommen
aus. Ein "unterer einstelliger Millisekundenbereich" ist für
Überwachungszwecke und die allermeisten anderen Anwendungsfälle einer
Bewegungserkennung gar nicht nötig.
Was den Anwendungsfall des TO angeht, so bietet so ein Linux eine ganze
Reihe an Möglichkeiten, die die von ihm gewählte Software anscheinend
nicht ansatzweise auszunutzen scheint. So interpretiere ich jedenfalls
den Hinweis, daß erst neuere Versionen der SW imstande zu sein scheinen,
eine moderne Multicore-CPU mittels Parallelisierung auszunutzen. Und
auch sonst... der Audioserver wie Jack für Echtzeit und Low-Latency
wurde IMHO schon genannt, zusätzlich kann man den Prozeß höher
priorisieren (nice(1)) oder ihn sogar mit dem Bootparameter isolcpus und
dem Programm tasksel(1) auf dedizierte CPU-Cores schieben... da geht
schon eine ganze Menge, und Realtime-Kernels für Linux gibt es ja auch
noch.
All das setzt aber zwingend voraus, daß der TO zunächst einmal mißt, was
denn da saturiert wird. Denn letztlich gibt es nur drei Dinge, die man
vor dem Beginn jedweder Optimierungsmaßnahme wissen muß, nämlich erstens
Donald E. Knuths altes und bekanntes "Premature optimization is the root
of all evil", die Ergänzung von Kirk Pepperdine "Measure, don't guess"
sowie drittens das gute alte "Make it work, make it right, make it fast"
von Kent Beck. Wer das nicht beherzigt, hat ohnehin schon verloren --
auch dann, wenn er fettere Hardware auf das Problem schmeißt.
> Mit anderen Worten: Nur die Steuerung wird in Python gemacht. Die> eigentliche Verarbeitung ist gar nicht darin implementiert.
Ja, und? Der Python-Interpreter und ein großer Teil der
Standardbibliotheken ist in nativem Code implementiert. Und Pythons
JIT-Interpreter Pypy ist manchmal sogar performanter als C: [1],
jedenfalls bei einem "carefully crafted example". Deshalb ist das, was
mein Vorposter behauptet hatte -- nämlich, daß Python total langsam sei
-- schlicht und ergreifend: nicht wahr.
[1]
https://morepypy.blogspot.com/2011/02/pypy-faster-than-c-on-carefully-crafted.html
Toppings schrieb:> Ein T. schrieb>> Mit diesem "langsamen" Python lese ich auf einem RasPi4 einen Strom von>> 720p-Bildern von einer Logitech C920, mache eine Bewegungserkennung>> darauf und schreibe das Ergebnis in einen lokalen Redis-Server -- mit>> dauerhaft stabilen 28 bis 30 FPS...>> Da scheint was Faul zu sein oder Infos fehlen...> https://www.google.com/search?q=raspi+usb+langsam
Nö. Hingucken und mitdenken... ;-)
Rolf M. schrieb:> wollte damit nur darauf hinweisen, dass es eben nicht in Python> implementiert ist, sondern nur von Python aus genutzt wird.> Die Grundaussage war ja, dass Python trotz interpretierter Ausführung> schnell genug sei, um die Aufgaben zu erledigen. Wenn die Implementation> aber in Wirklichkeit in einer Hochsprache erfolgt und von Python aus nur> aufgerufen wird, ist das natürlich keine große Kunst.
Ganz genau.
Man kann also eigentlich zusammenfassen:
- Entweder nimmt man Standard Software (z.B. eben Linux + Mixxx) mit
überdimensionierter Hardware um die Latenz gering zu halten, eben z.B.
einen DJ Controller mit Laptop. Der Laptop ist eigentlich völlig
überdimensioniert, aber bekommt es gerade so hin
- Oder spezielle Soft-und Hardware, was dann schon bei einem OS anfängt
welches möglichst schlank und auf Realtime ausgelegt sein sollte und bei
Verteilung der Aufgaben auf mehrere CPUs aufhört
Diese Standalone DJ-Player sind schon relativ anspruchsvoll von der
Technik, auch wenn es ersteinmal nicht so aussieht. Aber es ist eben
doch mehr als nur ein bisschen Audio abspielen und die Wellenform
scrollen.
Dabei werden dann noch die Wellenformen / Beat über das Netzwerk
synchronisiert, bei gesetzten Loops, Beatjumps oder sonstigen Eingriffen
in den Spielfluss muss das ganze auch wirklich jitter-und driftfrei
funktionieren, der vorgegebene Takt muss bei allen Aktionen
berücksichtigt werden etc. sonst läuft der Mix auseinander.
Wenn so ein Player auch nur sporadisch irgendwelche Fehler oder sonstige
Aussetzer hat wird Dir das jeder DJ um die Ohren hauen.
Wer mal eine Idee haben möchte was man aus solchem Equipment herausholen
kann:
https://www.youtube.com/watch?v=Xr7nXWak7Jo
(und er spielt mit 4 Decks die synchronisiert sind)
Nicht ganz meine Musik, dennoch muss man sagen er hat es drauf!
Toppings schrieb:> Lesen gelernt?
Ja, ich schon. Du hingegen...
> Ich beziehe mich auf die lahme USB-Technik im Raspi.> Siehe Link..
Da geht es um USB Version 3. Und eine Logitech C920 hat? Genau. Fazit:
Lesen bildet.
Toppings schrieb:> Es schreibt weiter in Rätseln.. Lahmer Raspi-USB bleibt nunmal lahmer> Raspi-USB. Wird langsam seeeeehr peinlich hier..
Ja, Dein Unwissen tut langsam wirklich schon beim Zugucken weh. Offenbar
kennst Du nichtmal den Unterschied zwischen USB2 und USB3... bitte komm'
wieder, wenn Du Dich wenigstens ein wenig (im Rahmen Deiner
Möglichkeiten eben) schlau gemacht hast, ja?