C (99) Programozás : Gyors sípolások - HOGYAN?
C-ben szeretném rövid időtartamokra gyors egymásutánban - rövid késleltetésekkel - megszólaltatni a "belső hangszórót". Pl.: adott frekvencián egymásután 10×-er 50 msec.-os várakozásokkal elválasztva 50 msec. ideig sípoltatni a gépet.
Csak ugye a helyzet az, hogy az alapértelmezett Beep() és Sleep() parancs ezekhez meglehetősen lassúak és akadnak, úgyhogy a gyakorlatban képtelenség ezredmásodpercre pontosan kivitelezni azt, amit én szeretnék.
Angol fórumokon olvastam azt az ajánlást, hogy generáljak valós időben egy WAV szekvenciát és azt küldjem rá a hangkártya driver-re, de ez így nekem C-ben elsőre nagyon bonyolultnak tűnik! :(
Nincs erre valami kezelhetőbb, nem annyira bonyolult módszer???
Amúgy assembly kódokkal is próbálkoztam, de az még sikertelenebb volt : vagy szólt, vagy nem szólt, vagy csak egy pillanatig szólt, vagy teljesen beragadt a hangszóró -- hozzáteszem UGYANANNÁL a programnál.
Ötlet? Vagy esetleg meglévő példakód???
És mielőtt elfelejteném, Windows 7-et használok (az van a gépen, nem én raktam rá, amúgy ilyenek miatt jobban szeretem az XP-t), illetve itt van példaként egy a saját kérdésemhez hasonló problémaleírás angolban - csak az a nagy különbség, hogy nekem ezt valós időben kéne megoldanom lehetőleg fájlírogatások nélkül : [link]
Előre is köszönöm (előrevivő válaszokért természetesen meglesz a pontjutalom)!
Na most a Windows nem valós idejű oprendszer, tehát valós idejűség sosem lesz garantálva.
Ezen túl: elképzelésem sincs, én is csak guglizni tudnék. A pontok nem érdekelnek.
"elképzelésem sincs, én is csak guglizni tudnék. A pontok nem érdekelnek."
Ha nincs elképzelésed, kérlek FELESLEGESEN NE jelöltesd megválaszoltnak a kérdésem SEMMITMONDÓ válasz beküldése által!
Ezenfelül félreértelmezted a valós idő itteni jelentését : a hangkártyára kiküldött bájttömböt közvetlenül, késleltetés nélkül szeretném PCM adatként megszólaltatni, NEM pedig WAV fájlba menteni és külső programmal lejátszatni.
A Google-t pedig még én is ismerem, csak eddig egy Audio API-t sem volt szerencsém találni, ahol számomra érthető/kivitelezhető módon leírták volna a fájlok lefordítását.
Egyébként meg nem igazán szeretném, ha a programomhoz DLL fájlokat kéne bepakolgatni, ezért jó lenne egy nem külső API-tól függő megoldás.
Jaja, csak aztán valahogy mégis vannak programok, amiknek ez sikerül - ld.: [link]
???
Netán szigorúan őrzött haditiok, hogy ezek a programok hogy tudnak kommunikálni és adatokat küldeni a hangkártyára?
Bizonyára, legalábbis a számomra - merthogy ez a kérdés jövő héten sem lesz már megválaszolva arra mérget veszek!
Illetve még egy kérdés, ha szabad:
Mi a lyó ....... értelme volt kiszedni Win 7-ből a belső hangszóró elérhetőségét ??!!
Merthogy az, ami még XP-n vígan működött, az már nem csak nekem, de a DOS-BOX-on kívül SENKINEK és SEMMINEK nem sikerül.
Pl. Ld.:
void SOUND () {
BX = AX; // frekvencia
DX = 0x12;
AX = 0x34DC;
$DIV BX
BL = AL;
AL = 0xB6;
$OUT 0x43,AL
AL = BL;
$OUT 0x42,AL
AL = AH;
$OUT 0x42,AL
$IN AL,0x61
AL |= 3;
$OUT 0x61,AL
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!