Hmmm, nesto mi tu ne "zvuci" ok. Mozda gresim, davno je bilo, ali koliko se secam elektroakustike, signal da bi se cuo lepo treba da oscilira ispod i iznad "nultog signala" da bi to omogucilo maksimalni opseg membrane na zvucniku. Svaka jednosmerna komponenta signala limitira opseg posto "zakucava" membranu u ne-nulti polozaj i deformise zvuk i u krajnjoj liniji ga utisava. Zasto ovo pricam, zato sto je tvoj arraj popunjen UInt-ima, sto ce reci seo tvoj signal je uvek u pozitivnom opsegu i ima ili fiksnu ili plutajucu jednosmernu komponentu.
A za izbacivanje array-a integera na zvucnike, ja bih licno tu iskoristio malo unmannaged code-a i unsafe metode. To bi ti omogucilo da castujes c# managed int[] u fiksirani int* buffer sto je jedini nacin da nateras GC da ne dira tvoj buffer
Code:
int[] x = { -1, 1, -2, 2, -3, 3 };
fixed (int* px = x)
{
// ovde izbacis bafer na zvucnu
}
Taj pointer posle mozes da bacis na zvucnu karticu kroz Interop kroz API, pogledaj sors ovog primera
A low-level audio player in C#
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić