Ton in C mit ANSI C?

... komplette Frage anzeigen

1 Antwort

In wiefern versuchst du denn Töne auszugeben?

Hiermit gibt es einen Standardton der beim booten meist auftaucht:

printf("\\a");


Solltest du aber verschiedene Tönen ausgeben wollen dann suchst du wahrscheinlich nach so was: 

#include <sys/ioctl.h>
#include <unistd.h>
#include <linux/kd.h>
int main(void)
{
int freq[] = { /* C D E F G A B C */
523, 587, 659, 698, 784, 880, 988, 1046 };
int i;

for (i=0; i<8; i++)
{
ioctl(STDOUT_FILENO, KIOCSOUND, 1193180/freq[i]);
usleep(500000);
}
ioctl(STDOUT_FILENO, KIOCSOUND, 0); /*Stop silly sound*/
return 0;
}

Das Programm wird die die 8 Töne ausgeben. 

um einmalig einen Ton auszugeben einfach diese zeile verwenden und bei "freq" die gewünschte Frequenz eingeben.

Der C Ton liegt bei 523. 

 ioctl(STDOUT_FILENO, KIOCSOUND, 1193180/freq]);


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von TeeTier
22.06.2016, 20:37

Ich empfinde es immer als etwas dreist, wenn Leute fremden Code kopieren, und dann suggeriert wird, dass er auf eigenem Mist gewachsen ist.

Zirka 90% deiner Antwort hättest du auch durch einen Link zum Original ersetzen können. Oder der Fairness halber zumindest eine Quellenangabe hinzufügen müssen.

Du solltest fremden Code nicht als deinen eigenen ausgeben! Und ja, genau das hast du hier nämlich getan! (Ohne Quellenangabe MUSS man zwangsläufig davon ausgehen, dass es dein eigener Code ist.)

Ich habe mich beim Lesen deiner Antwort ehrlich gesagt sehr gefreut, dass hier mal jemand Antworten postet, die über Trivialitäten hinaus gehen. Und dann noch so kurz / schick / elegant (auch wenn usleep() inzwischen deprecated ist).

Umso größer ist jetzt meine Enttäuschung.

Wenn ich persönlich hier Code-Snippets veröffentliche, stammen die IMMER aus meiner eigenen Feder ... oder ich setze alternativ einfach nur einen Link, falls jemand anderes ein Problem zufriedenstellend gelöst hat. Dann gebührt dieser Person auch die Ehre. Aber klauen geht gar nicht!

Wirklich, das solltest du dir ganz schnell abgewöhnen! Du erweist dir mit dem Kopieren ohne Quellenangaben selber einen Bärendienst!

1

Was möchtest Du wissen?