CSCore - Highperformance Audiobibliothek

    • Release
    • Open Source

    Es gibt 587 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

      CSCore - Highperformance Audiobibliothek



      Name des Programms:

      CSCore - C-Sharp-Sound.

      Beschreibung:
      CSCore ist eine mittlerweile recht umfangreiche Audio-Bibliothek. Sie wurde komplett in C# geschrieben, kann somit aber auch genauso gut in VB.NET verwendet werden.
      Die Architektur ist darauf ausgelegt, dass diese möglichst erweiterbar bleibt und somit dem Benutzer keine Einschränkungen bietet.

      Für eine aktuelle Liste der unterstützen Features etc. besucht bitte die offizielle Projektseite(n):

      github.com/filoe/cscore
      CSCORE - cscore.codeplex.com

      Beispiele:
      Finden sich unter
      github.com/filoe/cscore/tree/master/Samples



      Demovideos:
      [b]
      Spoiler anzeigen


      CSCore goes Hardware:


      Alternativ was noch nirgends gezeigt wurde sieht man hier ab 5:30 ebenfalls eine Demo mit Volume, Pan,... :)


      Der Download befindet sich im Anhang(zusammen mit ein paar Beispielen). Ich gehe nicht davon aus, dass jemand diese Bibliothek ernsthaft verwenden wird, jedoch wäre es trotzdem schön wenn jemand zumindest ein paar Tests damit machen könnte und bei Bugs Fehlern oder vll. sogar positiven Erfahrungen ein entsprechendes Feedback gibt(dabei aber bitte korrekt und nicht beleidigend :)). Wie gesagt die Lib ist noch nicht fertig und somit wird den meisten der Funktionsumfang nicht ausreichen. Außerdem hoffe ich, dass sich möglicherweise noch jemand für das Thema interessiert und vll. sogar mitmachen möchte :thumbsup: . Und wenn nicht... dann war dies einfach nur eine kleine Demo was man alles tolles mit Audio machen kann :thumbsup: :thumbsup: .

      Screenshot:
      Beispiel(Source im Anhang):
      s1.directupload.net/images/130413/kml7vcoo.png




      Verwendete Programmiersprache und IDE:
      Sprache: C# .NET 3.5 Client Profile
      IDE: Visual Studio 2012 Ultimate

      Systemanforderungen:
      .NET 3.5 Client Profile
      Minimum: Windows 2000 Prof/Windows Server 2000
      Empfohlen: Windows Vista+
      Anforderungen richten sich teils auch nach den verwendeten Features

      Download:

      1.4.1 CSCore + Beispiele
      1.4.2 CSCore + Beispiele
      1.4.3 CSCore + Beispiele

      Download auf Codeplex: cscore.codeplex.com/ oder über NuGet :



      Lizenz/Weitergabe:
      MS-PL. Erwähnung ist jedoch sehr sehr wünschenswert und ich denke auch nicht wirklich zu viel verlangt.


      Anhänge nicht downloaden! Download steht oben unter "Download"
      Dateien
      • 1.4.1 CSCore.zip

        (1,39 MB, 545 mal heruntergeladen, zuletzt: )
      • 1.4.2 CSCore.zip

        (1,43 MB, 345 mal heruntergeladen, zuletzt: )
      • 1.4.3 CSCore.zip

        (1,43 MB, 589 mal heruntergeladen, zuletzt: )
      • 1.0 Bin.zip

        (597,37 kB, 194 mal heruntergeladen, zuletzt: )
      • 1.0 Demo.zip

        (595,11 kB, 370 mal heruntergeladen, zuletzt: )
      • 1.1 Bin.zip

        (596,31 kB, 183 mal heruntergeladen, zuletzt: )
      • 3D Visualisierung.zip

        (458,34 kB, 310 mal heruntergeladen, zuletzt: )
      • 1.2 Bin Preview.zip

        (102,35 kB, 157 mal heruntergeladen, zuletzt: )
      • 1.2 Bin.zip

        (109,73 kB, 136 mal heruntergeladen, zuletzt: )
      • Bin 1.3.zip

        (112,06 kB, 123 mal heruntergeladen, zuletzt: )
      • Bin 1.3.1.zip

        (108,79 kB, 122 mal heruntergeladen, zuletzt: )
      • Bin 1.3.2.zip

        (116,34 kB, 225 mal heruntergeladen, zuletzt: )


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

      Dieser Beitrag wurde bereits 48 mal editiert, zuletzt von „thefiloe“ ()

      @rexreb:
      Mein Gott, das sagt der, der Leute für Miniprojekte sucht,
      indem er mit miserabler Grammatik sinnlose Threads erstellt.
      Lern erstmal in Ansätzen Programmieren.

      @thefiloe:
      Sieht super aus, ich würde auch gern mitarbeiten, hab von sowas aber leider
      absolut keine Ahnung. Kann man die fertige Lib ggf. als Bass.dll Alternative
      nutzen?

      Grüße
      "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

      Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
      Ja theoretisch kannst du es als Bass.dll Alternative nutzen. Jedoch hast du halt leider noch nicht den Funktionsumfang von Bass.dll weil diese nunmal auch wesentlich mehr Formate unterstützt usw. Würde aber gern noch mehr Formate implementieren. Ist halt eine Zeitfrage. Aber Grundsätzlich steht das Gerüst recht solide und auch noch etwas mehr :)


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „thefiloe“ ()

      Wirklich saubere Arbeit. Ich glaube es gibt hier definitiv viel zu wenig Leute, die zu schätzen wissen, was du mit dem Projekt eigentlich auf die Beine gestellt hast, Hut ab :) Ich werde mich die Tage mal an einen ISoundProvider für die XGL setzen, der über deine Library geht.

      MfG
      Wunderbare Arbeit!

      Ich freue mich schon wenn da noch mehr kommt :D
      Mfg: Gather
      Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


      Wie gesagt ich werde versuchen neue Features hineinzubringen. Jedoch muss ich nebenbei auch vermehrt noch testen, da es recht viel Code ist können auch Bugs auftreten. Wenn natürlich jemand wie z.B. Krissel das auch einmal ausprobiert und einen Bug findet, bin ich dankbar wenn ihr diesen beschreiben könnt und ihn so schnell wie möglich beheben kann.


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „thefiloe“ ()

      Das ist wirklich Top gelungen :thumbup:
      Wunderbar gemacht, die Visualisierung sieht sehr gut aus. Ein paar zusätzliche optionale grafische 'Spielereien' wären vielleicht noch denkbar. Besonders praktisch finde ich das es nicht nur Wave unterstützt und dass du die Auswahl der Formate noch vergrößerst ^^

      Mir ist grad etwas Seltsames aufgefallen. Wenn ich während des Abspielens meine Tastatur ausm USB-Port nehme, dann hackt das Programm. Sowohl die Wiedergabe als auch die Grafik hackt.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gonger96“ ()

      Gonger96 schrieb:

      Mir ist grad etwas Seltsames aufgefallen. Wenn ich während des Abspielens meine Tastatur ausm USB-Port nehme, dann hackt das Programm. Sowohl die Wiedergabe als auch die Grafik hackt.
      Liegt an DirectSound. Bin an WASPI dran wenn ich mal Zeit hätte. Braucht leider verdammt viel mit Resampler, Comimporten,... usw.
      Außerdem wird nicht nur WAVE unterstützt. Es basiert darauf. Unterstützt wird auch MP3 und FLAC. Der Grund weshalb es hackt ist, dass du bei Visualisierungen eine sehr geringe Latenz wählen muss. Darauf ist auch der DirectSound-Wrapper optimiert worden. Du kommst damit teilweise sogar fast auf 50ms was dann doch extrem schnell ist. Das heißt 1000/50 mal Daten decodieren, fft berechnen, darstellen und Daten den Treibern geben + Format umwandeln usw. Wenn da dein System einen kleinen Lag hat und dieser nur einige wenige ms dauert hört man das. In der Demo läuft es auf ca. 100ms Latenz. Aber wie gesagt, da kann das Programm an sich nichts für sondern halt das System. Einzige Chance die eine Besserung bringen würde sind neuere Schnittstellen wie z.B. WASAPI welche auf Kernelebene läuft.
      Außerdem kann das Problem auf Win8 mit dem USB nicht reproduzieren, kann aber durchaus sein. Wie gesagt. Auf höherer Latenz laufen lassen aber dann ist die Darstellung nicht mehr flüssig, da nur alle 300ms gepuffert wird(z.b.). Die Lib ist jedoch für solche Optimierungen welche ein besseres Pufferingsystem nutzen sehr offen und kann von jedem innerhalb kurzer Zeit hinzugefügt werden.


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „thefiloe“ ()

      Kurze Auflistung was alles dazu gekommen ist:
      • Microaufnahme(WaveIn - FunctionCallback, WindowCallback und EventCallback)
      • WASAPI(Shared- und Exclusive-Mode + EventCallback oder normales "Loopcallback" <- kein Loopback)
      • Resampler(Samplerate, BitsPerSample, Channels verändern; inklusive Support für beliebige ChannelMatrix)
      • Allgemeiner Wrapper für DMO, MediaFoundation und CoreAudioAPI
      • ID3v1 und ID3v2.[2,3,4] Implementation
      • Postcompiler überarbeitet
      • Neue Implementation von WPF Visualisierungen
      • Diverse Bugfixes
      • Veraltete Klasse, Methoden,... entfernt
      • Teilweise Namespaces neu organisiert
      • Paar Spielereien wie z.B. Echo-Effekt
      • etc.

      Download im Startpost Version 1.4 inklusive 2 Beispielen.


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „thefiloe“ ()

      Yihaa :)
      Das rockt!

      WASAPI(Shared- und Exclusive-Mode + EventCallback oder normales "Loopcallback" <- kein Loopback)
      Resampler(Samplerate, BitsPerSample, Channels verändern; inklusive Support für beliebige ChannelMatrix)


      EDIT: hehe. Im aktuellen Release ist die Flac Wiedergabe komplett im Eimer. Genauergesagt würde ich mal auf den Flac Decoder tippen, da auch die Visualizations nur noch Schrott zeigen :D

      tbspace.de/holz/rqcgviphkn.png

      Ich tippe stark darauf, dass die neue WASAPI Routine sich nicht mit den Flac Daten verträgt. Aber warum?
      #define true ((rand() % 2)? true: false) //Happy debugging suckers
      Ich gebe KEINE Hilfe per PN! Es gibt für ALLES nen Forum/Thread!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manawyrm“ ()

      Ich muss zugeben ich brauch das ganze hier nicht. Aber damn ich kann mir vorstellen was für eine Arbeit das ist. :thumbsup: Und sie scheint gut gelungen.
      Hmmm. Der Flac Decoder müsste eigentlich nach wie vor laufen. Kannst du mir vll. mal die Flac-Datei geben? Habe viele verschiedene Flac-Dateien mit verschiedenen Formaten und Encodern getestet. Hatte nie Probleme.

      Btw.: Ganz vergessen. Habe "nebenbei" auch noch ID3v1 und ID3v2.* neu implementiert. Bei ID3v2 werden derzeit 56 von 62 Framearten unterstützt. Die restlichen kommen im nächsten Release.
      Ich habe auch grad noch die Lautstärke für WASAPI implementiert. Und wie gesagt wäre dankbar wenn du mir mal die Flac-Datei geben könntest.

      WASAPI und Flac sollte sich vertragen, da a) Wenn das Format nicht unterstützt wird sollte ne Exception fliegen und b) Flac zu rohem PCM decodiert wird.

      EDIT: Irgendwo im Flac-Decoder muss nen kleiner Fehler sein. Wasapi arbeitet mit einer extrem kleinen Latenz. Das verträgt er nicht. Ich werde mal suchen gehen(mal wieder...). :thumbsup:
      EDIT2: Bug behoben. Danke @Manawyrm. Der Fehler war so simpel, dass ich mich wundere wieso ich den nicht schon früher gesehen habe. Intern puffert der Flacdecoder decodierte Frames welche derzeitig noch nicht benötigt werden -> ansonsten würden ja Daten verloren gehen. Jetzt ist es so, dass beim nächsten mal Lesen die überschüssigen Daten vom letzen mal Lesen wieder übernommen werden. Bei höheren Latenzen(100-300ms) wird dieser Puffer immer zu 100% geleert(oder zumindest in 99,9% der Fälle). Bei sehr geringen Latenzen sind die angeforderten Daten kleiner als ein Frame im Flac Stream und somit wird aus dem Puffer 2 mal gelesen. Jetzt habe ich vergessen den Offset für den Puffer zu aktualisieren und somit wurde immer der ganze Puffer erneut gelesen -> nicht gut :D


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „thefiloe“ ()

      Hallo,

      entschuldige die späte Antwort.

      Der Flac-Decoder läuft jetzt super.
      und ich mag die WPFVisualization.
      a) Daft Punk - Short Circuit sieht dort sehr interessant aus.
      b) tbspace.de/holz/askcjbgmyi.png -- Hier kann man sehr schön sehen, wie das Tonwahlverfahren von modernen Telefonen funktioniert :)

      Wenn du mal wieder Lust hast, etwas mit der WASAPI zu tun, probiere doch mal eine Aufnahmemöglichkeit zu implementieren.
      WASAPI hat den coolen Vorteil, dass man auch Loopback aufnehmen kann :)
      #define true ((rand() % 2)? true: false) //Happy debugging suckers
      Ich gebe KEINE Hilfe per PN! Es gibt für ALLES nen Forum/Thread!
      Ich hab übr. noch ne MP3 Datei, welche die Lib crashed.
      Dateien
      #define true ((rand() % 2)? true: false) //Happy debugging suckers
      Ich gebe KEINE Hilfe per PN! Es gibt für ALLES nen Forum/Thread!
      Ich auch ._. joshua-behrens.de/lucky.rar
      Der Teststream sowie 83.170.104.71:7115/live kacken bei mir auch ab.
      Bei mir funzt anscheinend gar nichts -.-
      xD Nein ich bin doch mal endlich auf 7x64, hab ich vergessen was zu installieren außer .Net 4?