Audio Verarbeitung in Windows 8 Store Apps
-
Dienstag, 4. Dezember 2012 13:12
Hallo Zusammen
ich möchte mich gerne an eine "Gitarren-Tuner"-Windows 8 Store App heranwagen und frage mich, welche Möglichkeiten zur Audio-Verarbeitung ich in Verbindung mit Windows 8 Store Apps habe? Kennt ihr irgendwelche Frameworks/APIs zur (Lowlevel-)Audiobearbeitung - vorzugsweise in C#?
Folgende Anforderungen sollte die API möglichst erfüllen:
- Einsatzfähig für Windows 8 Store Apps
- Echtzeitaudioverarbeitung, z.B.:
- - Einlesen von Daten über Mikrofon
- - Ermitteln der Audio-Frequenz der empfangenen Daten in Echtzeit
- - ...
- Optional:
- - Möglichkeiten zur weiteren Audioanalyse, z.B. zur Entwicklung eines Equalizer
- - Recording von Audiosignalen
- - Looping von gespeicherten Audiofiles
- - Ändern der Abspielgeschwindigkeit/Tonhöhe für gespeicherte Audiofiles
- - ...
Vielen Dank schonmal für Eure Vorschläge ;-)
LG
Alle Antworten
-
Dienstag, 4. Dezember 2012 16:37Besitzer
Hallo Visualmatrix,
Hmm. Wenn ich unter diesem Artikel lese: Windows Phone 8 and Windows 8 platform comparison à „Windows Phone 8 now includes support for building C++ games using our new Windows 8 aligned Direct3D app model. The set of native APIs that are common to Windows Phone 8 and Windows 8 are listed in the following table.“ …sehe ich das XAudio2 …wenn man weiter sucht findet man auch etwas wie: IXAudio2SourceVoice::GetFrequencyRatio method (Windows)
Wenn ich mir folgende Seiten anschaue dann lese ich:
http://zetacentauri.com/software_samplitron.htm à „uses the DirectX XAudio2 libraries and should work on…“
http://www.fileguru.com/CheckBeat/screenshot à „CheckBeat was written using XAudio2, so you will need to have the Microsoft DirectX runtime installed“
Also, ich würde sagen dass ein Weg vielleicht mit XAudio2 möglich ist, aber das nicht in C# sondern nur in C++.
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Als Antwort markiert Visualmatrix Mittwoch, 5. Dezember 2012 09:06
-
Dienstag, 4. Dezember 2012 16:38Moderator
-
Dienstag, 4. Dezember 2012 19:02
Also, ich würde sagen dass ein Weg vielleicht mit XAudio2 möglich ist, aber das nicht in C# sondern nur in C++.
Hallo Robert,
danke für die schnelle Antwort. Der Hinweis zu XAudio2 hat mir direkt weitergeholfen...das schaut sehr vielversprechend aus!
Da ich mein Projekt gerne mit C# entwickeln möchte, habe ich noch etwas weitergesucht und bin auf folgende Möglichkeit gestossen, auch mit C# auf XAudio2 zuzugreifen: SharpDX.
Wen es interessiert sollte sich die folgenden Links ansehen:
- http://sharpdx.org/
- http://stackoverflow.com/questions/12547297/playing-a-sound-from-a-generated-buffer-in-a-windows-8-app
Tja, jetzt habe ich für die nächsten Wochen wieder reichlich zu tun, um mich in XAudio2 und SharpDX etwas einzuarbeiten ;-) Ich werde mal versuchen eine kleine Windows 8 Store App mit XAusio2 und SharpDX aufzusetzen. Wenn ich erste Erfolgserlebnisse habe kann ich hier gerne etwas Code dazu posten!
LG
-
Dienstag, 4. Dezember 2012 20:22
Und hier gibt es noch ein kleines Einstiegstutorial zu Windows 8 store App mit SharpDX:
http://english.r2d2rigo.es/2012/05/28/your-first-directx-11-metro-application-using-sharpdx/
-
Mittwoch, 5. Dezember 2012 07:38Besitzer
Wenn ich erste Erfolgserlebnisse habe kann ich hier gerne etwas Code dazu posten!
Hallo Visualmatrix,
Gerne. Ja, es wäre schön und hilfreich, wenn Du posten würdest wie es funktioniert hat, denn dann profitieren unter Umständen andere mit dem gleichen Problem davon.
Danke und Grüße,
Robert
*****************************************************************************************************************************************************
Ich möchte Dich bitte folgendes lesen und die Beiträge die Dir geholfen haben zu bewerten. Vielen Dank.
Nutzen Sie die Bewertungsfunktionen ("Antwort" und "Hilfreich") in den MSDN Foren! Unter anderem können andere später eine Lösung schneller finden. Es ist also wünschenswert, dass die fragenden (Benutzer) die Beiträge anderer Beantworter bewerten. Hier dazu die wichtigsten Anhaltspunkte aus den Forenregelnund FAQs.
Lösungsbeiträge als „Die Antwort“ markieren
Bitte markieren Sie den Beitrag, der zur Lösung geführt hat, als "Die Antwort". Durch Bewerten eines Beitrags als "Die Antwort" können andere Teilnehmer die Lösung schneller finden. Außerdem können Sie dem Benutzer, der die Antwort eingereicht hat, für seinen Beitrag danken und zur Steigerung der Antwortqualität in der Diskussionsgruppe beitragen. [Quelle: Forenregeln]Bitte markiere den/die Beiträge als Antwort, die dir geholfen haben, dein Problem zu lösen. Das ist zum einen eine Anerkennung für die Autoren dieser Beiträge, zum anderen hilft es zukünftigen Lesern, sich in diesem Thread besser zu orientieren und Antworten auf ihre Fragen schneller zu identifizieren.
Wie zeige ich an, dass meine Frage durch einen Beitrag beantwortet wurde?
Wie bewerte ich einen Beitrag als hilfreich? Um einen Beitrag als hilfreich zu bewerten, klicken Sie in einem beliebigen Beitrag auf Als hilfreich bewerten. Sie können Ihre Stimme nur einmal für einen Beitrag abgeben. [Quelle: Häufig gestellte Fragen]Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Mittwoch, 5. Dezember 2012 09:13
Wie bewerte ich einen Beitrag als hilfreich? Um einen Beitrag als hilfreich zu bewerten, klicken Sie in einem beliebigen Beitrag auf Als hilfreich bewerten. Sie können Ihre Stimme nur einmal für einen Beitrag abgeben. [Quelle: Häufig gestellte Fragen]
Hallo Robert
gerne markiere ich Beiträge als "die Antwort" oder als "hilfreich". Für ersteres sehe ich unter den Beiträgen den Button "Als Antwort markieren", für zweiteres kann ich leider keine Möglichkeit finden, um einen Beitrag als hilfreich zu markieren.
---> Sorry, hab die Funktion gerade gefunden :-)- Bearbeitet Visualmatrix Mittwoch, 5. Dezember 2012 09:15
-
Freitag, 7. Dezember 2012 07:26
Hallo
ich habe es inzwischen geschafft, eine kleine Windows 8 Store App mit SharpDX und XAudio2 aufzusetzen. Auch das abspielen einer WAV-Datei funktioniert einwandfrei. Leider finde ich nicht heraus, wie ich ein Input Device (Mikrofon) ansprechen kann, um die Audiosignale von dort einzulesen. Falls hier jemand Erfahrung mit XAudio2/SharpDX hat würde ich mich über weitere Tips sehr freuen!
LG
-
Montag, 10. Dezember 2012 12:15
Hallo zusammen
Nach bisher vielen erfolglosen Versuchen, Audio über ein Mikrofon einzulesen und mit XAudio2 zu verarbeiten musste ich erstmal aufgeben. Dies habe ich bisher noch herausfinden können:
- Audio über XAudio2 (mit SharpDX in C#) einzulesen, scheint nicht möglich zu sein (für Windows 8 Store Apps).
- Mit XAudio2 (+SharpDX) kann ich generelle Audio-Manipulationen, etc. vornehmen, z.B. auch die Frequenz ermitteln, etc.
- Die Aufnhame von Audio von einem Mikrofon kann in Windows 8 Store Apps mit Windows.Media.Capture.MediaCapture erreicht werden.
Leider konnte ich nicht herausfinden, wie ich mit Windows.Media.Capture.MediaCapture ein Audio-Signal aufnehme, um es zur Verarbeitung an XAudio2 weiterzureichen?
Falls noch jemand eine Idee hat, wäre ich sehr froh, wenn mir hier jemand auf die Sprünge helfen könnte! Vielleicht gibt es aber ja auch noch ganz andere Ansätze, um mein Vorhaben zu erreichen (möglichst in C#)!
LG
-
Montag, 10. Dezember 2012 14:32Besitzer
Leider konnte ich nicht herausfinden, wie ich mit Windows.Media.Capture.MediaCapture ein Audio-Signal aufnehme, um es zur Verarbeitung an XAudio2 weiterzureichen? Falls noch jemand eine Idee hat, wäre ich sehr froh, wenn mir hier jemand auf die Sprünge helfen könnte! Vielleicht gibt es aber ja auch noch ganz andere Ansätze, um mein Vorhaben zu erreichen (möglichst in C#)!
Hallo Visualmatrix,
Schau mal im folgenden Beispiel gibt es etwas mit „Recording audio from a capture device connected to the computer“ : Media capture using capture device sample (hat auch C# Code dabei)
Noch zum lesen: Quickstart: capturing video using the MediaCapture API (Windows) à
„The Windows.Media.MediaProperties namespace provides a set of predefined encoding profiles:
•AAC audio (M4A)
•MP3 audio
•Windows Media Audio (WMA)
•MP4 video (H.264 video plus AAC audio)
•Windows Media Video (WMV)
The first three profiles in this list contain audio only. The other two contain video and audio.“
XAudio2 API usage along with streaming Video playback à „…You can easily extrapolate adding a Media Element to this example to mix XAudio2 and the Media Element…“
Ich habe auf einmal geschrieben: „Also, ich würde sagen dass ein Weg vielleicht mit XAudio2 möglich ist, aber das nicht in C# sondern nur in C++“…weil: Loop sound from C# with XAudio2 à „…XAudio2 is certainly your best bet. However it is not supported from C#. You will need to write your app in C++ Cx or create a wrapper around XAudio2 and generate a WinRT component that can be called from your C# application.…“
List of Windows 8 CP audio / video and camera samples – unter XAudio2 alle Beispiele sind nur in C++
Calling the Format SDK, DirectShow, Media Foundation or the WASAPI from managed code (C#, VB.net)
Code to stream or convert MP3/WMA to PCM/WAV in Windows 8 (VB)
Vielleicht auch noch interessant: Neue Wege der App-Entwicklung mit Windows-Runtime
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Bearbeitet Robert BreitenhoferMicrosoft Contingent Staff, Owner Montag, 10. Dezember 2012 14:35 Formatierung


