Wiedergabe von Audio-in .Net / C#
Ich bin ein erfahrener MFC-Programmierer der vielen Jahre, die in den letzten Jahren wurde die Entwicklung kommerzieller apps in Objective-C für Mac und iOS - ich bin versucht zu bekommen bis zu beschleunigen mit .Net und C# (bin ich bald aufgefordert sein, zu konvertieren von einem meiner kommerziellen apps vom Mac auf PC).
Nun habe ich gearbeitet mein Weg durch ein paar Bücher und als eine übung, um mehr vertraut mit .Net (und C#) hab ich beschlossen, gehen bei der Umwandlung einer meiner keine kommerzielle apps .Net als Lernübung und alles geht gut (Schnittstelle arbeitet, Daten-Strukturen-alles gut) aber ich brauche, um in der Lage zu spielen audio.
Meinen Mac app generiert den Ton aus einer Reihe von mathematischen Formel - stellen Sie sich eine Welle generator - nicht ganz das gleiche aber ähnlich. Auf dem Mac habe ich generieren die audio als 16-bit signed raw-audio, Core Audio setup audio output routing und bekomme dann einen Rückruf, Wann immer ein neuer Puffer von audio erforderlich ist für das audio-routing (so kann ich generieren die audio-on-the-fly).
Muss ich tun das gleiche auf dem PC. Leider finde ich die MSDN-Dokumentation zu einem Fall von "nicht sehen Können, den Wald vor lauter Bäumen" wie es ist, eine so große Menge an Dokumentation. Finde ich Klassen, lassen Sie mich laden und Abspielen von mp3/wav Dateien etc, aber ich brauche die zum erzeugen der audio-Echtzeit. Kann jemand mich in die richtige Richtung zu finden, etwas, das mir erlauben wird, zu füllen-Puffer auf die Fliegen, wie es spielt Sie?
Thx
- Ich weiß wenig über dieses Thema, aber ich fand diesen Artikel, die Ihnen vielleicht weiterhelfen: channel9.msdn.com/coding4fun/articles/...
- Werfen Sie einen Blick auf diese: Abspielen von Audio aus einem Stream mit C#
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich verwendet dieses Beispiel in mehrere Projekte mit guten Ergebnissen. Es ist im Grunde ein .Net wrapper für Windows-Waveform-Audio-API mit P/Invoke.
Andere Möglichkeiten:
Habe ich eine Klasse angelegt, die spielen können, audio-gegeben
Stream
Derivat als input. Also, wenn Sie sind in der Lage, packen Sie Ihre sound-generator in derStream
kompatible Schnittstelle, es könnte für Sie geeignet sein.Wie ich es gemacht habe - ich habe nicht verwalteten
waveOut*
Methoden aus alten Windows-multimedia-API, und behandelt die Wiedergabe von dort.Andere Optionen, die ich mir bewusst bin - verwenden
waveOut
direkt von dieser: http://windowsmedianet.sourceforge.net/ oder schreiben Sie Ihre eigenen DirectShow source filter, aber das wäre zu kompliziert, da es in c++ geschrieben.Wenn Sie daran interessiert sind, was meine Komponente a versuchen, ich kann stellen Sie Ihnen kostenlos, da ich es beta-getestet (ich habe nur verwendet es in mehreren meiner Projekte).
EDIT:
Da gibt es 6 upvotes auf die Frage, biete ich meine Komponente kostenlos (wenn Sie nützlich finden) hier: http://dl.dropbox.com/u/10020780/SimpleAudioPlayer.zip
Können Sie vielleicht darüber nachdenken 🙂
Benutze ich Audiere um dies zu erreichen und finden, dass es sehr gut funktioniert.
Es ist eine C++ - lib wirklich, aber es gibt eine Satz von Bindungen verfügbar für C#,.
Weitere Infos finden Sie unter die Frage, die ich.
Sollten Sie einen Blick auf FMOD die es ermöglicht diese Art der Bedienung und vieles mehr. Es ist auch cross-Plattform, was kann daran interessiert sein, wenn Sie auch auf einem mac funktioniert.
Alvas.Audio hat 3 audio-Spieler: Spieler
PlayerEx
und RecordPlayer