Frage von pasgru, 28

Ton in C mit ANSI C?

Hallo

Ich möchte verschiedene Töne in C mit ANSI C ausgeben. Mit #inlcude funktioniert da nichts.

Bitte um baldige hilfe Danke

Antwort
von Berny96, 16

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]);


Kommentar von TeeTier ,

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!

Kommentar von Berny96 ,

Ich sehe das genau so bloß habe ich schon mit Absicht nirgendswo behauptet es wäre mein Code. Klar, du hast jetzt die Quelle auf schnelle gefunden und fühlst dich irgendwo verpflichtet es zu erläutern doch habe ich es in diesem Fall echt nicht für nötig gehalten es dazu zu sagen da es wirklich keine komplizierte Logik ist. Verstehst du wie ich das meine? Wenn jemand fragt wie man etwas in der Konsole ausgibt dann schreib ich Console.WriteLine direkt und fuege nicht noch den Link hinzu wo man es im Internet findet. Waere die Frage gewesen "Algorithmus zum erstellen von zufaelligen Melodien" und ich im Netz eins gefunden haette haette ich selbstverstaendlich die Quelle mit angegeben. Da aber jediglich eine Funktion gefragt war betrachtete ich es nicht als "Code geklaut" sondern eher "Wissen weitergeleitet". Macht das Sinn? :D

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten