Dabei ist folgendes kleines Progrämmchen rausgekommen, womit man sich Herz-Töne anhören kann.
Bitte verzeiht mir die große Unordnung im Code.Es war ja ein Experiment und ein bisschen Spaß, was am Ende sich zu einem Programm entwickelte ^^
Unten links könnt ihr die Dauer der Töne in Millisekunden angeben. Die Dauer ist nicht sehr präzise, aber die Präszision musste dafür draufgehen, dass das Fenster auch noch ansprechbar ist, während ein Ton gespielt wird.
Also: Desto kleiner die Zahl unten links, desto höher die Tonwiederholfrequenz.
Tip: mal auf "1" stellen.Macht ein Geräusch wie ein gutes altes Analog-Radio
Viel Spaß mit meinem unsinnigen Dingsi
Gr33tz
Tafkadasom2k5
Hier auch ne kompilierte Version:
http://rapidshare.de/files/10921762/Her ... r.exe.html
Code: Alles auswählen
;-Hearts-Ton-Tester (C) bei Tafkadasom2k5 12.01.2006
laenge.l
herz.l
Global lastherz.l
;- Window Constants
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#String_1
#Button_0
#TrackBar_0
#Text_Herz
#check_play
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 332, 106, 445, 190, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Marcs Sound-Blaster V1")
If CreateGadgetList(WindowID())
StringGadget(#String_1, 10, 140, 100, 30, "")
CheckBoxGadget(#check_play,200,140,100,30, "Play")
ButtonGadget(#Button_0, 300, 140, 100, 30, "Stop nerving!!")
TrackBarGadget(#TrackBar_0, 40, 40, 370, 40, 0, 10000)
SetGadgetState(#TrackBar_0,5000)
TextGadget(#Text_Herz, 150, 80, 130, 30, "", #PB_Text_Center | #PB_Text_Border)
EndIf
EndIf
EndProcedure
Procedure PlayMySound(herz.l, laenge.l)
;-Diese 4 Zeilen sind zum Entflackern der Titelleiste bei kleinen Delay-Zeiten
If herz <> lastherz
SetWindowTitle(#Window_0,"Current Herz playing: " + Str(herz) + " Marcs Sound-Blaster V1")
EndIf
lastherz = herz
CreateSound(1,herz,laenge,20000)
PlaySound(1)
;-Ich hätte auch ein einfaches Delay nehmen können anstatt der For-Schleife.
;-Mein Fenster wär dann aber zeitweise 'ne Statue und das is ja ned der Sinn der Sache.. ;-)
For i=0 To (laenge/100) * 90
Delay(1)
WindowEvent()
If herz <> lastherz
SetGadgetText(#Text_Herz,Str(GetGadgetState(#TrackBar_0)))
EndIf
lastherz = herz
If EventGadgetID() = #Button_0
StopSound(1)
EndIf
Next
FreeSound(1)
EndProcedure
InitSound()
Open_Window_0()
SetGadgetText(#String_1,"300")
Repeat
EventID = WindowEvent()
SetGadgetText(#Text_Herz,Str(herz)+ " Herz")
herz = GetGadgetState(#TrackBar_0)
laenge = Val(GetGadgetText(#String_1))
If GetGadgetState(#check_play) = 0
SetWindowTitle(#Window_0,"Marcs Sound-Blaster V1")
EndIf
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
;-Eigentlich 'ne überflüssige Funktion- denkt man erst. Ist sie auch. Wenn man aber den ersten
;-Gehörschaden von den Boxen hat, weil sie zu laut aufgedreht sind, weiß man einen
;-größeren "Notfall-Button" zu schätzen.Ausserderm kann man so die Hz-Zahl des Tons aufschreiben
;-ohne das des Ding weitertüdelt.
If GetGadgetState(#TrackBar_0) <> tester
still = 0
EndIf
If EventGadgetID() = #Button_0
tester = GetGadgetState(#TrackBar_0)
still = 1
EndIf
If GetGadgetState(#check_play) And still = 0
WindowEvent()
herz = GetGadgetState(#TrackBar_0)
laenge = Val(GetGadgetText(#String_1))
PlayMySound(herz, laenge)
EndIf
Delay(1)
Until Quit = 1
