Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C# - Práce se zvukem (Jak mám uložit do proměnné třeba 5. vzorek ze zvukového souboru?)

Mám zvukový soubor. Zvukový soubor obsahuje pípnutí o frekvenci 1000 Hz. Kdybych chtěl znázornit tenhle zvuk graficky, uviděl bych samé vlnění (sinusoidy). Když si podrobně rozebereme jednu vlnu (sinusoidu), tak zjistíme, že se skládá z mnoha vzorků. Já potřebuju nějak zjistit na jaké pozici jsou jednotlivé vzorky.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
BTW. resp. neviem ci chapem co chces. "pozicia" vzorku X v case je X/Fvzorkovacia sekund. Logicky z…
MM.. 01.10.2014 15:36
MM..
Dejme tomu, že pozice v čase je x (vodorovně) a pozice kterou chci vědět je y (svisle). Nemyslim poz…
Mirek Doležal 01.10.2014 15:50
Mirek Doležal
Ked nezacnes pisat jasne co sa snazis vyrobit z coho, tak ti ani vlastna mati nebude rozumiet. Hodn… nový
MM.. 01.10.2014 15:52
MM..
Myslim pozici na kterou ukazuje šipka v tomhle obrázku: Bez_n_zvu.png nový
Mirek Doležal 01.10.2014 15:55
Mirek Doležal
Precitas si to zo suboru (viz vyssie) alebo si to vypocitas (viz vyssie). Vsetko som uz napisal vyss… nový
MM.. 01.10.2014 15:57
MM..
Ked to chces priamo vzorcom pre X-tu vzorku tak: hodnota = sin(X*2*PI*Fsinusovky/Fvzorkovacia); ten… nový
MM.. 01.10.2014 16:03
MM..
watch nový
MaSo 01.10.2014 16:02
MaSo
Tady je to co chci v pseudokódu SoundPlayer zvuk; int db; zvuk = new SoundPlayer(@"C:\1.wav"); db… nový
Mirek Doležal 01.10.2014 17:43
Mirek Doležal
http://stackoverflow.com/questions/8754111/how-to- read-the-data-in-a-wav-file-to-an-array nový
Wikan 01.10.2014 17:59
Wikan
byte[] data = File.ReadAllBytes(@"C:\1.wav"); nový
Mirek Doležal 01.10.2014 18:17
Mirek Doležal
A? nový
Wikan 01.10.2014 18:21
Wikan
Tak ked to chces takto stylom hura, tak potom si potrebujes este nastudovat toto https://ccrma.stanf… nový
MM.. 01.10.2014 18:22
MM..
Konečně už vim o co jde :D teď jen rozluštit ty čísla podle stránky a pujde to doufám :D nový
Mirek Doležal 01.10.2014 18:41
Mirek Doležal
Tak jo už jsem se naučil číst a zapisovat do wav. Vytvořil jsem třeba náhodný zvuk. dík za radu :) poslední
Mirek Doležal 02.10.2014 17:04
Mirek Doležal
Uz som ten link daval http://msdn.microsoft.com/en-us/library/ff827591.a spx body 1 az 5 su o tom ja… nový
MM.. 01.10.2014 18:04
MM..

BTW. resp. neviem ci chapem co chces.
"pozicia" vzorku X v case je X/Fvzorkovacia sekund. Logicky z toho vyplyva ak mas 1000Hz tak pozicia vzorku v sinusovke je X/(Fvzorkovacia/1000).
Ak sa snazis generovat sinusovku, tak to hlavne nerob dementne jak to robit chces, ale rob to pomocou uhla fi (rotujucej jednotkovej kruznice).
fi=0; //len uplne na zaciatku, pocas generovania zvuku fi nikdy nemenit ani pri zmene frekvencie ani nikdy.
while(neco){
vzorka = sin(fi);
fi += (Fzvuku*2*PI)/Fvzorkovacia;
if(fi>2*PI) fi-=2*PI;
}

Tady je to co chci v pseudokódu

SoundPlayer zvuk;
int db;

zvuk = new SoundPlayer(@"C:\1.wav");

db = zvuk.volumeAT(5000); // do proměnné db se uloží hlasitost vzorku z 5. sekundy ze souboru zvuk

zvuk.volumeAT(6000) = db; // do 6. sekundy souboru zvuk se uloží proměnná db

Uz som ten link daval
http://msdn.microsoft.com/en-us/library/ff827591.a spx
body 1 az 5 su o tom jak nacitat vzorky z wav do pola.

P.S. a ked chces tie hodnoty z pola pouzivat tak si najprv musis otestovat hodnoty channels a bitDepth ktore si si nacital v bode 4 z hlavicky, ptz wav moze byt mono aj stereo a aj 8bit alebo 16bit. A vzorkovacia frekvencia daneho wav je nacitana do premennej sampleRate (wav mozu mat roznu vzorkovaciu frekvenciu takze pri prehravani to nemozes ignorovat)

Zpět do poradny Odpovědět na původní otázku Nahoru