Skip to content

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

Merged
merged 20 commits into from
Jul 13, 2025
Merged

Audio Prototyp #12

merged 20 commits into from
Jul 13, 2025

Conversation

LeanderJDev
Copy link
Owner

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

@LeanderJDev LeanderJDev self-assigned this Jul 8, 2025
@LeanderJDev LeanderJDev requested a review from Friedy630 July 8, 2025 15:59
@LeanderJDev
Copy link
Owner Author

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

@Friedy630
Copy link
Collaborator

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.
Da ich halt fast nur Rauschen höre, kann ich zur restlichen Qualität noch nix sagen.

@Friedy630
Copy link
Collaborator

Okay, ich habe etwas rumgespielt, und wenn ich die Thread.Sleep(2) rausnehme oder auf 1 setze, habe ich nur noch sehr wenige Skips.

@Friedy630
Copy link
Collaborator

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.

Copy link
Collaborator

@Friedy630 Friedy630 left a 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.

@LeanderJDev
Copy link
Owner Author

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.

@LeanderJDev
Copy link
Owner Author

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?)

@LeanderJDev
Copy link
Owner Author

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

@LeanderJDev
Copy link
Owner Author

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... ):

@LeanderJDev
Copy link
Owner Author

Ich hab nochmal bisschen mit rumprobiert und würde schon lieber eine andere Lösung finden

@Friedy630
Copy link
Collaborator

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.

@LeanderJDev
Copy link
Owner Author

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)
@LeanderJDev
Copy link
Owner Author

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 (:
Du kannst ja vielleicht nochmal ausprobieren und Anmerkungen machen, ich bin auf jeden Fall erst einmal zufrieden mit dem aktuellen Stand

@LeanderJDev LeanderJDev requested a review from Friedy630 July 12, 2025 16:03
Copy link
Collaborator

@Friedy630 Friedy630 left a 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.

@Friedy630
Copy link
Collaborator

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.

@LeanderJDev LeanderJDev marked this pull request as ready for review July 13, 2025 16:09
@LeanderJDev
Copy link
Owner Author

Für das Rechtsklick will ich auch nochmal über einen Beschleunigungs-basierten Ansatz nachdenken, dass ist halt wirklich knifflig

@LeanderJDev
Copy link
Owner Author

Aber ich merge erstmal

@LeanderJDev LeanderJDev merged commit de38ca1 into main Jul 13, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants