-
Notifications
You must be signed in to change notification settings - Fork 1
Audio Prototyp #12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Audio Prototyp #12
Conversation
change project name; move to license free music; remove old music from git
Ist genauso ein Protoyp, deswegen eben nicht sonderlich schicker Code, aber man kann eben die Audio Pipeline erstmal testen. Meine Hauptverbesserung wäre das periodische Knacken zu reduzieren |
Ich hab's mir mal angeschaut. Also erstmal: Ich finde der Code sieht sehr ordentlich aus! Hätte bei einem Prototypen schlimmeres erwartet. Ich hab's bei meinem genossen mal auf gut Form verzichten zu können :) Blöd ist nur, das es bei mir nicht funktioniert. Ich habe, auch wenn ich nichts mache, sehr viele Skips. Manchmal gehen die für so eine Sekunde weg, dann erkennt man den Song auch wieder. |
Okay, ich habe etwas rumgespielt, und wenn ich die Thread.Sleep(2) rausnehme oder auf 1 setze, habe ich nur noch sehr wenige Skips. |
Okay also nach zu viel dranrumbasteln hab ich die Skips komplett wegbekommen, habe aber andere Artefakte (kein Poppen). Ich mache bei Gelegenheit mal einen Branch mit meinen Experimenten. Kannst du dir dann auch mal anschauen. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
_sampleIndex wird direkt gesetzt, was wahrscheinlich nie genau genug ist, wegen Timing-Problemen usw.
Bei mir läuft es zurzeit sehr schlecht.
- Die Audio muss noch wesentlich weniger choppy sein.
Witzigerweise gab es bei mir wenig Unterschied zwischen Thread.Sleep( ) mit 1, 2 oder sogar 5. Den Branch würde ich natürlich gerne mal sehen. |
Ansonsten ist mir für das direkte setzen von _sampleIndex noch nichts besseres eingefallen als einen einzelnen Thread für Simulation und Audio zu machen, also Turntable und AudioPlayer gar nicht mehr zu separieren. Das ist aus OOP Sicht nicht so schön, aber ich hab keine bessere Synchronisierung bisher gefunden (außer vielleicht nur die Setup Logik auszulagern und den SampleBuffer direkt aus dem Turntable zu schreiben? / häufigere Funktionsaufrufe machen?) |
Ein großes Problem für die Audioqualität ist halt auch, dass die Samplerate nur 44100 Hz sind und das reicht bei normaler Wiedergabegeschwindigkeit, allerdings wird es schwieriger wenn es langsamer läuft und man dann entsprechend geringere Samplerate hat |
Ich hab mir deinen Branch mal angeschaut und das fand ich so eine ungalante Lösung, dass ich es gar nicht ausprobiert habe. Aber leider muss ich zugeben, dass es verdammt gut funktioniert... ): |
Ich hab nochmal bisschen mit rumprobiert und würde schon lieber eine andere Lösung finden |
Ich hab mittlerweile auch mal probiert, nur eine Thread zu verwenden (FillBuffer schreibt direkt die Samples, best. Anzahl) und die turntablePos immer per ref zu verändern, das hat eigentlich ganz gut funktioniert, und ist auch etwas eleganter. |
Ja, das würde ich final dann wahrscheinlich so implementieren |
immernoch doof, aber ich wollte zwischenstand
Right Click funktioniert noch nicht so ganz (Klingt noch nicht gut)
Ich wäre jetzt so weit mit AudioTest-synctest durch und hab quasi alles gut zum laufen bekommen, der Rechtsklick ist irgendwie komisch, weil mathematisch fragwürdig (Ich teile an einer Stelle durch 4Pi statt 2Pi), aber es hat keine Priorität und funktioniert so, also vielleicht hab ich einfach was falsch verstanden (: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sieht gut aus!
Das einzige was noch stört ist das Knistern während man die Schallplatte zieht. Das muss eigentlich noch weg.
Wir können aber gern schon mergen, das sind ja Feinschliffe, dazu muss es nicht als Prototyp extra sein. Dazu müsstest du es zu einem Pull Request ändern. |
Für das Rechtsklick will ich auch nochmal über einen Beschleunigungs-basierten Ansatz nachdenken, dass ist halt wirklich knifflig |
Aber ich merge erstmal |
Mergen von Git Historien ist verdammt schwer (und vielleicht auch unnötig, naja...)
Diese Pull Request soll tatsächlich noch nicht bestätigt werden, es ist erst Mal nur ein Ort zum Diskutieren