Portál AbcLinuxu, 13. listopadu 2025 18:51
FILE* f = fopen("/dev/sound/dsp", "w");
fputs("abcdefgh", f);
fclose(f);
[petr@soban ~]$ cat pokus.c
#include <stdio.h>
int main()
{
FILE* f = fopen("/dev/dsp", "w");
fputs("abcdefgh", f);
fclose(f);
return 0;
}
[petr@soban ~]$ gcc pokus.c
[petr@soban ~]$ ./a.out
[petr@soban ~]$
No a v repráčcích to lupne
Jinak co vám nefunguje ? Jakou chybu to vypíše ?
#include stdio.h
#include stdlib.h
#define REPEAT 10000000
int main()
{
FILE* f = fopen("/dev/dsp", "w");
if (f == NULL)
{
printf("Nepovedlo se otevrit soubor.");
return EXIT_FAILURE;
}
for (unsigned int kod = 0; kod < 256; kod++)
for (int i = 0; i < REPEAT; i++)
fputc(kod, f);
fclose(f);
return EXIT_SUCCESS;
}
(cat /dev/dsp > /tmp/zvuk")
Pak ty data zase zapiš zpátky.
Tohle žádný zvuk neudělá právě proto, že konstanta. Rozumná data je časový průběh amplitudy signálu (tedy pro tón o frekvenci x Hz to bude sinusovka s frekvencí x Hz). Konkrétní velikost (byte/2 byte/...) a znaménkovost jednoho samplu stejně jako samplovací frekvenci by mělo jít nastavit či zjistit příslušnými IOCTL na soubor zařízení.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.