Seite 1 von 2

BeepingShit - Das so ziemlich unnötigste Programm der Welt

Verfasst: 31.05.2007 17:06
von PureBasic4.0
Hi, Leute

Hatte gerade mal 10 Minuten Zeit und habe zum Spaß mal das hier geproggt.

ES IST WIRKLICH DAS UNNÖTIGSTE PROGRAMM DER WELT! Ich erwarte deshalb auch kein gutes Feedback von euch. Wenn man Lust dazu hat, kann man es als Scherzprog durchgehen lassen. Hier der Code:

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #TrackBar_0
  #CheckBox_0
  #Text_0
  #Text_1
  #Text_2
  #TrackBar_1
  #Text_3
EndEnumeration

Global Tonhoehe
Global Beepen
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 600, 216, "Beeping-Shit - Das so ziemlich unnötigste Programm der Welt © 2007 by Anton Wuerfel",  #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      TrackBarGadget(#TrackBar_0, 90, 40, 370, 30, 0, 2500)
      CheckBoxGadget(#CheckBox_0, 20, 140, 570, 20, "Sound konstant abspielen")
      TextGadget(#Text_0, 100, 20, 350, 20, "Tonhöhe", #PB_Text_Center)
      TextGadget(#Text_1, 20, 170, 100, 20, "Aktuelle Tonhöhe")
      TextGadget(#Text_2, 120, 170, 460, 20, "", #PB_Text_Center | #PB_Text_Border)
      TrackBarGadget(#TrackBar_1, 90, 90, 370, 30, 1, 3, #PB_TrackBar_Ticks)
      TextGadget(#Text_3, 100, 70, 350, 20, "Bereich", #PB_Text_Center)
      
    EndIf
  EndIf
EndProcedure

Procedure Beep()
  Repeat
    Delay(10)
    If Beepen = 1
      Beep_(TonHoehe,1)
    EndIf
    SetGadgetText(#Text_2,Str(Tonhoehe))
  ForEver
EndProcedure

Open_Window_0()
CreateThread(@Beep(),0)
Repeat ; Start of the event loop
Tonhoehe = GetGadgetState(#TrackBar_0) + 2500 * GetGadgetState(#TrackBar_1) - 2500

  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  
  GadgetID = EventGadget() ; Is it a gadget event?
  
  EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  
  If Event = #PB_Event_Gadget
    
    If GadgetID = #TrackBar_0
      If Beepen = 0
        Beep_(Tonhoehe,1)
      EndIf
    ElseIf GadgetID = #CheckBox_0
      Beepen = GetGadgetState(#CheckBox_0)
    EndIf
    
  EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop

End
;

Ich habe mir nicht einmal die Mühe gemacht, die Konstanten zu benennen.

Das Prog ist besoners witzig, wenn man die Oktave auf 1 lässt, die Tonhöhe anklickt (gedrückt halten) und dann ein bisschen mit der Maus wackelt...

Wie immer hafte ich nicht für Schäden, die durch den Einsatz dieses Programms entstehen können. Mit dem Download erkennt ihr diese Belehrung als gültig an ..... blablabla..... Hab ich von irgendeiner Website. Find ich jetzt persönlich für dieses Prog sehr wichtig, weil wenn man es mit der Tonhöhe übertreibt, kann es durchaus sein, dass einem mal der PC Speaker um die Ohren fliegt, wenn man noch so einen alten hat, der extra am Gehäuse befestigt und nicht im Mainboard eingebaut ist.

Verfasst: 31.05.2007 17:16
von Kaeru Gaman
der begriff "Oktave" ist natürlich völlig falsch an dieser stelle.
du solltest das besser in "Bereich" umbenennen...

und damit die funktion etwas sinnvoller ist, änder die berechnung doch mal so:

Code: Alles auswählen

Tonhoehe = GetGadgetState(#TrackBar_0) + 2500 * GetGadgetState(#TrackBar_1) - 2500
btw, den boardspeaker kannst du nicht durchschlagen mit nem system-Beep.

Verfasst: 31.05.2007 17:19
von PureBasic4.0
Kaeru Gaman hat geschrieben: btw, den boardspeaker kannst du nicht durchschlagen mit nem system-Beep.
Möchte ich auch nicht.

Kaeru Gaman hat geschrieben:der begriff "Oktave" ist natürlich völlig falsch an dieser stelle. du solltest das besser in "Bereich" umbenennen.
OK. Die eine Veränderung mache ich noch.

Verfasst: 31.05.2007 17:28
von Kaeru Gaman
is schon klar, war ja nur ne anmerkung.

> ES IST WIRKLICH DAS UNNÖTIGSTE PROGRAMM DER WELT!

nunja, es gibt da noch mehr, die sich mit deinem proggi um den letzten platz streiten... ;)


btw... darf ich dieses topic in ein paar tagen vermülleimern?
wäre nett, wenn nix unnötiges hier rumdümpelt...

Verfasst: 31.05.2007 17:36
von D@nte
Vllt kann ja einer von unseren DrawMania Proggern das gebrauchen, STARGATEs Vorgabe war ja Sounds nur über Beep_ wenn ich das jetzt noch richtig im Hinterkopf hab.
Ansonsten ist es wirklich nur ein nutzloses totnerviger Geräuscherzeuger :allright:

Verfasst: 31.05.2007 17:38
von Leonhard
wehr zu viel Zeit hat ...

Verfasst: 31.05.2007 19:13
von RiSiNG
LOL :mrgreen: Deine Idee ist keineswegs so neu, aber trotzdem toll!

Schaut mal hier:

Bild
Beeper v2.0

Verfasst: 31.05.2007 21:52
von xperience2003
wenn dirs naechste mal langweilig is, schreib doch ma nen synth ...haette definitiv interesse daran :allright:

Verfasst: 01.06.2007 10:58
von PureBasic4.0
Kaeru Gaman hat geschrieben:btw... darf ich dieses topic in ein paar tagen vermülleimern?
Kannste von mir aus auch morgen schon machen ;-)
xperience2003 hat geschrieben:wenn dirs naechste mal langweilig is, schreib doch ma nen synth ...haette definitiv interesse daran
Wenn du mir jetzt noch erzählst, was du unter synth verstehst, könnte ich dir evtl. helfen.

Verfasst: 01.06.2007 12:18
von TomS
Synthesizer.
Im Prinzip, das gleiche, was dein BeepingShit macht. Mit Frequenzen Töne erzeugen, nur dass das dann nicht an den Speaker gesendet wird, sondern in den Buffer geschrieben und dann als Wave-Datei abgespeichert wird.
Mit diversen Manipulationen, sollte man verschiedene Klänge (Instrumente) schaffen können.

Das ist aber ein bißchen schwieriger als nur in Beep_() 2 Werte einzusetzen. Irgendwo lungert hier im Forum noch ein Code rum, der eine Frequenz als Wave abspeichert. Wenn man weiß, was man ändern muss, um den Klang zu filtern, kann man damit bestimmt einen einfachen Synthie bauen.