Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Anfänger

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
21.07.2003, 12:27 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


zu schreiben ist folgende funktion

C++:
double tonfrequenz(int t);



t ist die anzahl der halbtonschritte die der ton über dem a mit 440 Hz liegen soll. Auf eine Oktave verdoppelt sich immer die Frequenz eine Oktave sind 12 Halbtonschritte.
Das ganze lässt sich also leicht mit einer Exponentialfunktion abbilden

wenn ihrs richtig gemacht habt dann solltet ihr Alle meine Entchen hören können
ich weiss leider nur wie die funktionen dazu unter windows heissen
Ich vermute aber mal das es zumindest analoge funktionen für die anderen Betriebssystem gibt
Ihr bracht ein


C++:
Beep(DWORD Frequenz_des_tones, DWORD dauer_in_ms);


und ein Sleep dem man die dauer in ms übergibt




C++:
#include "windows.h"
int main(){
int beets=150;

Beep((int)tonfrequenz(3),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(5),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(7),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(8),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(10),2*beets);
Sleep(2*beets/5);
Beep((int)tonfrequenz(10),2*beets);
Sleep(2*beets/5);
Beep((int)tonfrequenz(12),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(12),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(12),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(12),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(10),4*beets);
Sleep(4*beets/5);
Beep((int)tonfrequenz(12),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(12),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(12),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(12),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(10),4*beets);
Sleep(4*beets/5);
Beep((int)tonfrequenz(8),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(8),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(8),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(8),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(7),2*beets);
Sleep(2*beets/5);
Beep((int)tonfrequenz(7),2*beets);
Sleep(2*beets/5);
Beep((int)tonfrequenz(10),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(10),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(10),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(10),beets);
Sleep(beets/5);
Beep((int)tonfrequenz(3),4*beets);
Sleep(4*beets/5);
}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.07.2003, 12:52 Uhr
0xdeadbeef
Gott
(Operator)


Welche Stimmung hättens den gerne?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.07.2003, 13:05 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@beefy
na auf a=440 Hz

du kannst mir mal sagen wie das mit dem beep und sleep unter linux geht
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 21.07.2003 um 13:06 Uhr von Heiko editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.07.2003, 13:19 Uhr
typecast
aka loddab
(Operator)


Hallo Heiko
Für das sleep siehe mal auf www.fun-soft.de/forum/showtopic.php?PHPSESSID=&threadid=1143&time=1058783130

Wenn du unter Linux einen ton ausgeben möchtest, dann schreib mal printf '\a'.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.07.2003, 13:27 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Sind alle Klarheiten beseitigt, oder gibts noch Fragen


Ja die gibt es

das mit dem sleep ist ja schon mal ganz schön
Ich hatte eigentlich mehr gefragt falls jemand das lösen will der kein windows hat. Ich werde mir bestimmt nicht extra Linux installieren nur um mal auszuprobieren ob ich das dort auch hinbekomme.


Was genau macht dieses printf '\a'
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.07.2003, 13:38 Uhr
0xdeadbeef
Gott
(Operator)


a ist immer 440 Hz. Ich meinte gleichmäßig, Kirmberger oder so weiter?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.07.2003, 13:47 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Also entweder reden wir völlig aneinander vorbei oder ich hab einfach zu wenig plan von musike

Kirmberger hab ich noch nie gehört. (hat da jeder ton ein fest definierte Frequenz?)

Ich hab mir nur mal selber nen bisschen E-Gitarre beigebracht
Von irgendwelchen Musiktheorien hab ich keine Ahnung

Ich meinte das das "gleichmässig" ansteigen soll, also halt nach ner exponentialfunktion. Das das nicht ganz genau stimmt ist mir schon klar. Aber der Beeper kann sowieso nur ganzzahlige Frequezen da kommt es darauf nicht an. ich habe auch keine Musikergehör so das ich z.b. zwischen fis und ges unterscheiden könnte.

Und jetzt hör auf mich zu verwirren beefy und frag mich mal bitte so das ich deine fragen verstehe?

Danke Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.07.2003, 14:09 Uhr
typecast
aka loddab
(Operator)



Zitat:
Heiko postete
das mit dem sleep ist ja schon mal ganz schön
Ich hatte eigentlich mehr gefragt falls jemand das lösen will der kein windows hat. Ich werde mir bestimmt nicht extra Linux installieren nur um mal auszuprobieren ob ich das dort auch hinbekomme.


Das versteh ich jetzt nicht!

Die Funktion printf schreibt etwas auf den StdOut. Das \a ist ein Sonderzeichen wie \n \t, die du bestimmt aus C/C++ kennst. In der man-page steht dazu: Write a <bell> character.
Jetzt hab ich allerdings noch mal deinen ersten Post gelesen und habe festgestellt, das ich wieder mal habe. Mit printf '\a' kann man ja leider nicht die Tonhöhe einstellen.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.07.2003, 14:27 Uhr
~0xdeadbeef
Gast


OK, das bedeutet, du willst ne gleichmäßige Stimmung. Dann sag das doch. Dementsprechend wäre bei dir Ne Quinte 2^(log_2 440 + 7/12). Deine Funktion sieht so aus:

C++:
#include <math.h>

double tonfrequenz(int ton) {
  return pow(2, log(440)/log(2)+(double)ton/12);
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.07.2003, 14:35 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


auch ne schöne version
ich habs so gemacht:

C++:
double tonfrequenz(int t){return 440*pow(pow(2,1.0/12),t);}



jetzt erklär mir aber mal was nun Kirmberger ist.

Bist du Musiker oder warum kennst du dich damit aus?

Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: