Witajcie. Mam problem z mikrofonem w aplikacji na WP, a raczej nie z mikrofonem a samymi danymi które otrzymuje.
A więc tak, mam sobie obiekt

Microphone microphone = Microphone.Default;

wywołuje na nim metodę

microphone.GetData(buffer);

gdzie buffer to

byte[] buffer;

Z racji tego, że nagrywam próbki po 100ms dostaję 3200 różnych danych w tablicy. Na początku zacząłem wyświetlać je jako słupki o stałej szerokości a o wysokości równej konkretnemu elementowi tablicy, nie pasowało mi to, że elementy są max 255 bez wartości ujemnych, ale to byte więc czego się spodziewać. Więc zacząłem je zamieniać na

int abuff = System.BitConverter.ToInt16(buffer, i * 2);

dane który otrzymuje w ten sposób wyświetlone w postaci słupków wyglądają już ciekawiej bo dostaje też liczby ujemne. Ale potem postanowiłem zamienić na

int abuff = System.BitConverter.ToInt32(buffer, i * 4);

o dziwo wyglądają bardzo podobnie. Teraz moje pytanie. Co tak naprawdę jest w tej tablicy z 3200 elementami? Na co to zamieniać?
Szukam i eksperymentuje aby wyjść w końcu do przeliczenia tych danych na częstotliwość.
Proszę o jakieś wskazówki bo czuje się jak dzieci we mgle. Załączam screen z przykładowym wykresem dla ToInt16 http://screenshot.sh/mKLFlXJgdJ4rN wyniki dzielone przez max 100.
Tak wygląda ToInt32 wyniki dzielone przez blisko milion, żeby dało się je wyświetlić
http://screenshot.sh/odv8WbPf24rWz

Bardzo proszę o jakieś wskazówki.
BTW wiem, że nie powinienem zamieniać na int tylko double ale, jakoś miałem problemy z wyświetleniem tego i dane były bardzo dziwne, bardzo bardzo niskie wartości np 1.232323E-302.

Z rzeczy ważnych, korzystam z

using System.IO;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;

Nie wiedziałem jak przenieść wątek do innego działu, więc zrobiłem klona z http://4programmers.net/Forum/C_i_.NET/255173-wp8_mikrofon_i_analiza_pobranych_danych