Beep Komponist

  • Hallo, zusammen
    ich hab eine gui gemacht, mit welcher sich musik machen lässt, zwar nur mit beep, aber so ist es unabhänig von den am PC angeschlossenen Lautsprechern. Ich hab die Buttons zu den passenden frequenzen mit den jeweiligen Noten versehen, so lassen sich Lieder nachspielen:

    Spoiler anzeigen
    [autoit]

    ;~ Zweck: Einfacheres erstellen von Beeptönchenreihen.
    ;~ Autor: vinschni

    [/autoit] [autoit][/autoit] [autoit]

    #include <GuiConstants.au3>
    #include <File.au3>
    $Datei = @ScriptDir & "\beep.ini"

    [/autoit] [autoit][/autoit] [autoit]

    GuiCreate("Beep Komponist 0.1", 335, 245,-1,-1 )
    GUISetBkColor(0xFFFFFF)
    $Pausen = GuiCtrlCreateGroup("Pausen", 10, 10, 120, 140)
    $Tone = GuiCtrlCreateGroup("Töne", 140, 10, 190, 230)
    $c1 = GuiCtrlCreateButton("c'", 150, 30, 80, 20)
    $cis1 = GuiCtrlCreateButton("cis'", 150, 60, 80, 20)
    $d1 = GuiCtrlCreateButton("d'", 150, 90, 80, 20)
    $dis1 = GuiCtrlCreateButton("dis'", 150, 120, 80, 20)
    $e1 = GuiCtrlCreateButton("e'", 150, 150, 80, 20)
    $f1 = GuiCtrlCreateButton("f'", 150, 180, 80, 20)
    $fis1 = GuiCtrlCreateButton("fis'", 150, 210, 80, 20)
    $c2 = GuiCtrlCreateButton("c''", 240, 180, 80, 20)
    $h1 = GuiCtrlCreateButton("h'", 240, 150, 80, 20)
    $g1 = GuiCtrlCreateButton("g'", 240, 30, 80, 20)
    $gis1 = GuiCtrlCreateButton("gis'", 240, 60, 80, 20)
    $a1 = GuiCtrlCreateButton("a'", 240, 90, 80, 20)
    $ais1 = GuiCtrlCreateButton("ais'", 240, 120, 80, 20)
    $ganzepause = GuiCtrlCreateButton("Ganze Pause", 20, 30, 90, 20)
    $halbepause = GuiCtrlCreateButton("Halbe Pause", 20, 60, 90, 20)
    $virtelpause = GuiCtrlCreateButton("Viertel Pause", 20, 90, 90, 20)
    $achtelpause = GuiCtrlCreateButton("Achtel Pause", 20, 120, 90, 20)
    $quit = GuiCtrlCreateButton("Schließen", 10, 220, 120, 20)
    $incode = GuiCtrlCreateButton("In Code umwandeln", 10, 180, 120, 20)
    $iniloeschen = GuiCtrlCreateButton(".ini löschen", 10, 200, 120, 20)
    $abspielen = GuiCtrlCreateButton("Abspielen", 10, 160, 120, 20)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GuiSetState()
    While 1
    $msg = GuiGetMsg()
    Select

    Case $msg = $c1
    Beep(264)
    FileWrite($Datei, "Beep(264)"& @CRLF)
    Case $msg = $cis1
    Beep(278)
    FileWrite($Datei, "Beep(278)"& @CRLF)

    Case $msg = $d1
    Beep(297)
    FileWrite($Datei, "Beep(297)"& @CRLF)

    Case $msg = $dis1
    Beep(313)
    FileWrite($Datei, "Beep(313)"& @CRLF)

    Case $msg = $e1
    Beep(330)
    FileWrite($Datei, "Beep(330)"& @CRLF)

    Case $msg = $f1
    Beep(352)
    FileWrite($Datei, "Beep(352)"& @CRLF)

    Case $msg = $fis1
    Beep(374)
    FileWrite($Datei, "Beep(374)"& @CRLF)

    Case $msg = $c2
    Beep(528)
    FileWrite($Datei, "Beep(528)"& @CRLF)

    Case $msg = $h1
    Beep(495)
    FileWrite($Datei, "Beep(495)"& @CRLF)

    Case $msg = $g1
    Beep(396)
    FileWrite($Datei, "Beep(396)"& @CRLF)

    Case $msg = $gis1
    Beep(418)
    FileWrite($Datei, "Beep(418)"& @CRLF)

    Case $msg = $a1
    Beep(440)
    FileWrite($Datei, "Beep(440)" & @CRLF)

    Case $msg = $ais1
    Beep(467)
    FileWrite($Datei, "Beep(467)"& @CRLF)

    Case $msg = $ganzepause
    FileWrite($Datei, "Sleep(1000)"& @CRLF)

    Case $msg = $halbepause
    FileWrite($Datei, "Sleep(500)"& @CRLF)

    Case $msg = $virtelpause
    FileWrite($Datei, "Sleep(250)"& @CRLF)

    Case $msg = $achtelpause
    FileWrite($Datei, "Sleep(125)"& @CRLF)

    Case $msg = $quit
    Exit

    Case $msg = $incode
    $Codedat = @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3"
    FileCopy($Datei, @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3")
    _FileWriteToLine($Codedat, 0, "Code erstellt durch Beep Komponist 0.1")
    Case $msg = $iniloeschen
    FileDelete($Datei)

    Case $msg = $abspielen


    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case Else
    ;;;
    EndSelect
    WEnd
    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    Leider hab ich ein Problem. Ich würde es gern so einrichten, dass sich das zweite argument von beep(), also die länge des Tones je nach länge des klicks auf die Buttons regeln lässt, so kann man die Länge des gespielten Tones individuell bestimmen. Wie kann ich dass am geschicktesten machen?
    Und auch das mit dem abspielen, gibt es eine möglichkeit in einem Script scripts auszuführen die vom ersten script generiert wurden?

    Viele grüße Vinschni

    Einmal editiert, zuletzt von Vinschni (7. Januar 2007 um 15:09)

  • Viertel korrigiert.
    @huggy Ich habs noch mal getestet, was meinst du mit bei mir beept nichts? Mach mal die Lautsprecher an, bei machen PC's geht beep nicht über den Systemlautsprecher sondern über die normalen.

    Vinschni

    PS: Weiß jemand was zur beep-Ausgabe, in der Anleitung steht nicht viel. An meinem PC geht beep über den Systemlautsprecher. Ich habs bei nem Freund getestet, bei dem Funktionierts nur über die normalen Lautsprecher.

    Einmal editiert, zuletzt von Vinschni (7. Januar 2007 um 15:20)

    • Offizieller Beitrag

    Hi,

    also bei mir geht es auch. Wenn du deinen entsprechenden Part gegen diesen tauschst, dann sollte er auch deine Datei abspielen:

    Spoiler anzeigen
    [autoit]

    Case $msg = $incode
    Global $Codedat = @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3"
    FileCopy($Datei, @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3")
    _FileWriteToLine($Codedat, 0, "Code erstellt durch Beep Komponist 0.1")
    IniWrite(@ScriptDir & "\beep1.ini", "File", "Path", '"' & $Codedat & '"')
    Case $msg = $iniloeschen
    FileDelete($Datei)
    Case $msg = $abspielen
    $path = IniRead(@ScriptDir & "\beep1.ini", "File", "Path", "Not Found!")
    If FileExists($path) Then Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $path & '"', '', @SW_HIDE)
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop

    [/autoit]

    So long,

    Mega

    • Offizieller Beitrag

    Hallo!

    Beep funktioniert generel nur über den Systemlautsprecher! Es gibt aber Systeme bei denen wird das Signal auf die Soundkarte weitergeleitet. Sollte mal gar kein Ton zu hören sein liegt es wahrscheinlich daran das an dem Anschluß auf dem Mainboard weder ein Systemlautsprecher noch die Verbindung zur Soundkarte vorhanden ist!

  • Toll, jetzt kann man es sogar abspielen :klatschen:

    Spoiler anzeigen
    [autoit]

    ;~ Zweck: Einfacheres erstellen von Beeptönchenreihen.
    ;~ Autor: vinschni, th.meger

    #include <GuiConstants.au3>
    #include <File.au3>
    $Datei = @ScriptDir & "\beep.ini"

    GuiCreate("Beep Komponist 0.1", 335, 245,-1,-1 )
    GUISetBkColor(0xFFFFFF)
    $Pausen = GuiCtrlCreateGroup("Pausen", 10, 10, 120, 140)
    $Tone = GuiCtrlCreateGroup("Töne", 140, 10, 190, 230)
    $c1 = GuiCtrlCreateButton("c'", 150, 30, 80, 20)
    $cis1 = GuiCtrlCreateButton("cis'", 150, 60, 80, 20)
    $d1 = GuiCtrlCreateButton("d'", 150, 90, 80, 20)
    $dis1 = GuiCtrlCreateButton("dis'", 150, 120, 80, 20)
    $e1 = GuiCtrlCreateButton("e'", 150, 150, 80, 20)
    $f1 = GuiCtrlCreateButton("f'", 150, 180, 80, 20)
    $fis1 = GuiCtrlCreateButton("fis'", 150, 210, 80, 20)
    $c2 = GuiCtrlCreateButton("c''", 240, 180, 80, 20)
    $h1 = GuiCtrlCreateButton("h'", 240, 150, 80, 20)
    $g1 = GuiCtrlCreateButton("g'", 240, 30, 80, 20)
    $gis1 = GuiCtrlCreateButton("gis'", 240, 60, 80, 20)
    $a1 = GuiCtrlCreateButton("a'", 240, 90, 80, 20)
    $ais1 = GuiCtrlCreateButton("ais'", 240, 120, 80, 20)
    $ganzepause = GuiCtrlCreateButton("Ganze Pause", 20, 30, 90, 20)
    $halbepause = GuiCtrlCreateButton("Halbe Pause", 20, 60, 90, 20)
    $virtelpause = GuiCtrlCreateButton("Viertel Pause", 20, 90, 90, 20)
    $achtelpause = GuiCtrlCreateButton("Achtel Pause", 20, 120, 90, 20)
    $quit = GuiCtrlCreateButton("Schließen", 10, 220, 120, 20)
    $incode = GuiCtrlCreateButton("In Code umwandeln", 10, 180, 120, 20)
    $iniloeschen = GuiCtrlCreateButton(".ini löschen", 10, 200, 120, 20)
    $abspielen = GuiCtrlCreateButton("Abspielen", 10, 160, 120, 20)




    GuiSetState()
    While 1
    $msg = GuiGetMsg()
    Select

    Case $msg = $c1
    Beep(264)
    FileWrite($Datei, "Beep(264)"& @CRLF)
    Case $msg = $cis1
    Beep(278)
    FileWrite($Datei, "Beep(278)"& @CRLF)

    Case $msg = $d1
    Beep(297)
    FileWrite($Datei, "Beep(297)"& @CRLF)

    Case $msg = $dis1
    Beep(313)
    FileWrite($Datei, "Beep(313)"& @CRLF)

    Case $msg = $e1
    Beep(330)
    FileWrite($Datei, "Beep(330)"& @CRLF)

    Case $msg = $f1
    Beep(352)
    FileWrite($Datei, "Beep(352)"& @CRLF)

    Case $msg = $fis1
    Beep(374)
    FileWrite($Datei, "Beep(374)"& @CRLF)

    Case $msg = $c2
    Beep(528)
    FileWrite($Datei, "Beep(528)"& @CRLF)

    Case $msg = $h1
    Beep(495)
    FileWrite($Datei, "Beep(495)"& @CRLF)

    Case $msg = $g1
    Beep(396)
    FileWrite($Datei, "Beep(396)"& @CRLF)

    Case $msg = $gis1
    Beep(418)
    FileWrite($Datei, "Beep(418)"& @CRLF)

    Case $msg = $a1
    Beep(440)
    FileWrite($Datei, "Beep(440)" & @CRLF)

    Case $msg = $ais1
    Beep(467)
    FileWrite($Datei, "Beep(467)"& @CRLF)

    Case $msg = $ganzepause
    FileWrite($Datei, "Sleep(1000)"& @CRLF)

    Case $msg = $halbepause
    FileWrite($Datei, "Sleep(500)"& @CRLF)

    Case $msg = $virtelpause
    FileWrite($Datei, "Sleep(250)"& @CRLF)

    Case $msg = $achtelpause
    FileWrite($Datei, "Sleep(125)"& @CRLF)

    Case $msg = $quit
    Exit

    Case $msg = $incode
    Global $Codedat = @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3"
    FileCopy($Datei, @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3")
    _FileWriteToLine($Codedat, 0, "Code erstellt durch Beep Komponist 0.2")
    IniWrite(@ScriptDir & "\beep1.ini", "File", "Path", '"' & $Codedat & '"')

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $iniloeschen
    FileDelete($Datei)

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $abspielen
    $path = IniRead(@ScriptDir & "\beep1.ini", "File", "Path", "Not Found!")
    If FileExists($path) Then Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $path & '"', '', @SW_HIDE)
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case Else
    ;;;
    EndSelect
    WEnd

    [/autoit]


    Gibt es eine Funktion die eine Zeit zurückgibt wie lange auf einen Button geklickt wurde? (Damit man diese Zeit als Länge für einen Beepton nehmen könnte, so währen sie nicht immer gleich lang?)

    @th.meger Danke :kiss:, aber was bedeuten aber diese ' im Run Teil? Ich habe die schon bei einigen Scripten gesehen, aber in was unterrscheiden sie sich zu " ?
    bernd670 Weißt du ob man an der Lautstärke des Syslautsprechers auch was machen kann bzw. ob der für ein beepkonzert überhaupt ausgelegt ist?


    Vinschni

    • Offizieller Beitrag

    Die Lautstärke des Systemlautsprecher ist zumindest Softwaremässig nicht möglich! Einfache Melodien sind vllt. noch mögich aber ein richtiges Konzert wird es wohl nie werden. Dafür ist der Systemlautsprecher auch nicht gedacht. Normalerweise ist der gedacht um Informationen über das System auszugeben, um z.B. Anzeigen ob ein Speicherdefekt vorliegt! Diese Beep-Codes kann man in der Boardbeschreibung nachlesen!

    • Offizieller Beitrag

    Hi,

    ich denke nicht, dass du die Lautstärke des Beeps steuern kannst. Es sei denn, der Sound wird mit über die Soundkarte geschickt.

    Die Zeit wie lang ein Button gedrückt wurde, kann auch nur sehr umständlich ermitteln. (Fenster aktiv, MouseDown usw.) würde ich also auch eher verneinen. Wie wäre es, wenn du die Zeit eigeben läßt, oder einen Slider anbietest?

    Die ' " Zeichen stehen für Literalgruppierungen - wenn du also ein " in einen String mit einbauen willst, dann kannst du """ oder '"' schreiben. Das braucht wenn, wenn man z.B. einen Parameter mit Leerzeichen als einen Parameter übergeben will.

    So long,

    Mega

  • @th.meger jetzt... mir war dass sonst nämlich nie klar
    peethebee ich werds mal versuchen
    bernd670 Danke, nochmal zu dem konzert, mir ging es um die Belastbarkeit, da er ja normal nur einzelne Töne ausgibt, gibt es bei z.B. mehreren minuten Beeps eine "Überlastung" oder einen schnelleren Verschleiß, oder ist dass egal, kann man wie bei einem normalen Lautsprecher so lange "beepen" wie man will?

    Vinschni

    Einmal editiert, zuletzt von Vinschni (7. Januar 2007 um 16:58)

  • Währe es vielleicht auch alternativ möglich mit vier radiobuttons(ganze, halbe, viertel, achtel Note) die länge nach jedem Buttonklick abzufragen? Da man mit der _isPressed Methode ja einen Teil für jeden Button schreiben müsste.

    Vinschni

    • Offizieller Beitrag

    Überlasten kann man ihn nicht!

  • Muss man den extra anschließen den lautsprecher? oO

    Ich hab mir das system selber zusammengeschraubt, wenn ich das vergessen habe weiß ich warum :)


    Hör auch kein "beep" beim booten :))

  • Ich möchte die Radiobuttons in ein seperates kleines GUIfenster packen, das paralell zum anderen geöffnet ist. Ich hab verschiedene GUI-Stile durchprobiert, konnte aber nichts gescheites hinkriegen, es wird nämlich wenn ich überhaupt ein Fenster öffnet nur das kleine Fenster geöffnet, das Hauptfenster nicht mehr.

    Spoiler anzeigen
    [autoit]

    GuiCreate("Notenlängen", 80, 115,-1, -1 ,$WS_EX_TOOLWINDOW)

    [/autoit] [autoit][/autoit] [autoit]

    $Radio_1 = GuiCtrlCreateRadio("Ganze Note", 18, 0, 100, 20)
    $Radio_2 = GuiCtrlCreateRadio("Halbe Note", 18, 20, 100, 20)
    $Radio_3 = GuiCtrlCreateRadio("Viertel Note", 18, 40, 100, 20)
    $Radio_4 = GuiCtrlCreateRadio("Achtel Note", 18, 60, 100, 20)

    [/autoit]
    Spoiler anzeigen
    [autoit]

    ;~ Zweck: Einfacheres erstellen von Beeptönchenreihen.
    ;~ Autor: vinschni

    [/autoit] [autoit][/autoit] [autoit]

    #include <GuiConstants.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Datei = @ScriptDir & "\beep.ini"

    [/autoit] [autoit][/autoit] [autoit]

    GuiCreate("Beep Komponist 0.1", 335, 245,-1,-1 )
    GUISetBkColor(0xFFFFFF)
    $Pausen = GuiCtrlCreateGroup("Pausen", 10, 10, 120, 140)
    $Tone = GuiCtrlCreateGroup("Töne", 140, 10, 190, 230)
    $c1 = GuiCtrlCreateButton("c'", 150, 30, 80, 20)
    $cis1 = GuiCtrlCreateButton("cis'", 150, 60, 80, 20)
    $d1 = GuiCtrlCreateButton("d'", 150, 90, 80, 20)
    $dis1 = GuiCtrlCreateButton("dis'", 150, 120, 80, 20)
    $e1 = GuiCtrlCreateButton("e'", 150, 150, 80, 20)
    $f1 = GuiCtrlCreateButton("f'", 150, 180, 80, 20)
    $fis1 = GuiCtrlCreateButton("fis'", 150, 210, 80, 20)
    $c2 = GuiCtrlCreateButton("c''", 240, 180, 80, 20)
    $h1 = GuiCtrlCreateButton("h'", 240, 150, 80, 20)
    $g1 = GuiCtrlCreateButton("g'", 240, 30, 80, 20)
    $gis1 = GuiCtrlCreateButton("gis'", 240, 60, 80, 20)
    $a1 = GuiCtrlCreateButton("a'", 240, 90, 80, 20)
    $ais1 = GuiCtrlCreateButton("ais'", 240, 120, 80, 20)
    $ganzepause = GuiCtrlCreateButton("Ganze Pause", 20, 30, 90, 20)
    $halbepause = GuiCtrlCreateButton("Halbe Pause", 20, 60, 90, 20)
    $virtelpause = GuiCtrlCreateButton("Viertel Pause", 20, 90, 90, 20)
    $achtelpause = GuiCtrlCreateButton("Achtel Pause", 20, 120, 90, 20)
    $quit = GuiCtrlCreateButton("Schließen", 10, 220, 120, 20)
    $incode = GuiCtrlCreateButton("In Code umwandeln", 10, 180, 120, 20)
    $iniloeschen = GuiCtrlCreateButton(".ini löschen", 10, 200, 120, 20)
    $abspielen = GuiCtrlCreateButton("Abspielen", 10, 160, 120, 20)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GuiSetState()
    While 1
    $msg = GuiGetMsg()
    Select

    Case $msg = $c1
    Beep(264)
    FileWrite($Datei, "Beep(264)"& @CRLF)
    Case $msg = $cis1
    Beep(278)
    FileWrite($Datei, "Beep(278)"& @CRLF)

    Case $msg = $d1
    Beep(297)
    FileWrite($Datei, "Beep(297)"& @CRLF)

    Case $msg = $dis1
    Beep(313)
    FileWrite($Datei, "Beep(313)"& @CRLF)

    Case $msg = $e1
    Beep(330)
    FileWrite($Datei, "Beep(330)"& @CRLF)

    Case $msg = $f1
    Beep(352)
    FileWrite($Datei, "Beep(352)"& @CRLF)

    Case $msg = $fis1
    Beep(374)
    FileWrite($Datei, "Beep(374)"& @CRLF)

    Case $msg = $c2
    Beep(528)
    FileWrite($Datei, "Beep(528)"& @CRLF)

    Case $msg = $h1
    Beep(495)
    FileWrite($Datei, "Beep(495)"& @CRLF)

    Case $msg = $g1
    Beep(396)
    FileWrite($Datei, "Beep(396)"& @CRLF)

    Case $msg = $gis1
    Beep(418)
    FileWrite($Datei, "Beep(418)"& @CRLF)

    Case $msg = $a1
    Beep(440)
    FileWrite($Datei, "Beep(440)" & @CRLF)

    Case $msg = $ais1
    Beep(467)
    FileWrite($Datei, "Beep(467)"& @CRLF)

    Case $msg = $ganzepause
    FileWrite($Datei, "Sleep(1000)"& @CRLF)

    Case $msg = $halbepause
    FileWrite($Datei, "Sleep(500)"& @CRLF)

    Case $msg = $virtelpause
    FileWrite($Datei, "Sleep(250)"& @CRLF)

    Case $msg = $achtelpause
    FileWrite($Datei, "Sleep(125)"& @CRLF)

    Case $msg = $quit
    Exit

    Case $msg = $incode
    Global $Codedat = @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3"
    FileCopy($Datei, @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3")
    _FileWriteToLine($Codedat, 0, "Code erstellt durch Beep Komponist 0.1")
    IniWrite(@ScriptDir & "\beep1.ini", "File", "Path", '"' & $Codedat & '"')
    Case $msg = $iniloeschen
    FileDelete($Datei)
    Case $msg = $abspielen
    $path = IniRead(@ScriptDir & "\beep1.ini", "File", "Path", "Not Found!")
    If FileExists($path) Then Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $path & '"', '', @SW_HIDE)
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case Else
    ;;;
    EndSelect
    WEnd

    [/autoit]


    @huppy Ein Systemlautsprecher gehört normal an jeden PC :schild4:, aber ich denk ohne ist es auch nicht so schlimm.

    • Offizieller Beitrag

    Hi,

    guck doch mal hier:

    http://www.autoitscript.com/forum/index.php?showtopic=30069&hl=beep&st=80

    Länge könntest du auch so machen:

    Spoiler anzeigen
    [autoit]

    ;~ Zweck: Einfacheres erstellen von Beeptönchenreihen.
    ;~ Autor: vinschni

    [/autoit] [autoit][/autoit] [autoit]

    #include <GuiConstants.au3>
    #include <File.au3>
    $Datei = @ScriptDir & "\beep.ini"

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("Beep Komponist 0.1", 335, 245, -1, -1)
    GUISetBkColor(0xFFFFFF)
    $Pausen = GUICtrlCreateGroup("Pausen", 10, 10, 120, 140)
    $Tone = GUICtrlCreateGroup("Töne", 140, 10, 190, 230)
    $c1 = GUICtrlCreateButton("c'", 150, 30, 80, 20)
    $cis1 = GUICtrlCreateButton("cis'", 150, 60, 80, 20)
    $d1 = GUICtrlCreateButton("d'", 150, 90, 80, 20)
    $dis1 = GUICtrlCreateButton("dis'", 150, 120, 80, 20)
    $e1 = GUICtrlCreateButton("e'", 150, 150, 80, 20)
    $f1 = GUICtrlCreateButton("f'", 150, 180, 80, 20)
    $fis1 = GUICtrlCreateButton("fis'", 150, 210, 80, 20)
    $c2 = GUICtrlCreateButton("c''", 240, 180, 80, 20)
    $h1 = GUICtrlCreateButton("h'", 240, 150, 80, 20)
    $g1 = GUICtrlCreateButton("g'", 240, 30, 80, 20)
    $gis1 = GUICtrlCreateButton("gis'", 240, 60, 80, 20)
    $a1 = GUICtrlCreateButton("a'", 240, 90, 80, 20)
    $ais1 = GUICtrlCreateButton("ais'", 240, 120, 80, 20)
    $ganzepause = GUICtrlCreateButton("Ganze Pause", 20, 30, 90, 20)
    $halbepause = GUICtrlCreateButton("Halbe Pause", 20, 60, 90, 20)
    $virtelpause = GUICtrlCreateButton("Virtel Pause", 20, 90, 90, 20)
    $achtelpause = GUICtrlCreateButton("Achtel Pause", 20, 120, 90, 20)
    $quit = GUICtrlCreateButton("Schließen", 10, 220, 120, 20)
    $incode = GUICtrlCreateButton("In Code umwandeln", 10, 180, 120, 20)
    $iniloeschen = GUICtrlCreateButton(".ini löschen", 10, 200, 120, 20)
    $abspielen = GUICtrlCreateButton("Abspielen", 10, 160, 120, 20)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select

    Case $msg = $c1
    FileWrite($Datei, "Beep(264," & _length () & ")" & @CRLF)
    Case $msg = $cis1
    FileWrite($Datei, "Beep(278," & _length () & ")" & @CRLF)
    Case $msg = $d1
    Beep(297)
    FileWrite($Datei, "Beep(297)" & @CRLF)
    Case $msg = $dis1
    Beep(313)
    FileWrite($Datei, "Beep(313)" & @CRLF)

    Case $msg = $e1
    Beep(330)
    FileWrite($Datei, "Beep(330)" & @CRLF)

    Case $msg = $f1
    Beep(352)
    FileWrite($Datei, "Beep(352)" & @CRLF)

    Case $msg = $fis1
    Beep(374)
    FileWrite($Datei, "Beep(374)" & @CRLF)

    Case $msg = $c2
    Beep(528)
    FileWrite($Datei, "Beep(528)" & @CRLF)

    Case $msg = $h1
    Beep(495)
    FileWrite($Datei, "Beep(495)" & @CRLF)

    Case $msg = $g1
    Beep(396)
    FileWrite($Datei, "Beep(396)" & @CRLF)

    Case $msg = $gis1
    Beep(418)
    FileWrite($Datei, "Beep(418)" & @CRLF)

    Case $msg = $a1
    Beep(440)
    FileWrite($Datei, "Beep(440)" & @CRLF)

    Case $msg = $ais1
    Beep(467)
    FileWrite($Datei, "Beep(467)" & @CRLF)

    Case $msg = $ganzepause
    FileWrite($Datei, "Sleep(1000)" & @CRLF)

    Case $msg = $halbepause
    FileWrite($Datei, "Sleep(500)" & @CRLF)

    Case $msg = $virtelpause
    FileWrite($Datei, "Sleep(250)" & @CRLF)

    Case $msg = $achtelpause
    FileWrite($Datei, "Sleep(125)" & @CRLF)

    Case $msg = $quit
    Exit
    Case $msg = $incode
    Global $Codedat = @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3"
    FileCopy($Datei, @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3")
    _FileWriteToLine($Codedat, 0, "Code erstellt durch Beep Komponist 0.1")
    IniWrite(@ScriptDir & "\beep1.ini", "File", "Path", '"' & $Codedat & '"')
    Case $msg = $iniloeschen
    FileDelete($Datei)
    Case $msg = $abspielen
    $path = IniRead(@ScriptDir & "\beep1.ini", "File", "Path", "Not Found!")
    If FileExists($path) Then Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $path & '"', '', @SW_HIDE)
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case Else
    ;;;
    EndSelect
    WEnd
    Func _length ()
    Return InputBox("Tonlänge", "Wie lang soll der Ton sein (in Ms)? ", 1000)
    EndFunc ;==>_length

    [/autoit]

    Extra GUI geht natürlich auch.

    So long,

    Mega

  • :weinen: Das im englischen Forum hab ich noch gar nicht gesehen. Gibt's eigentlich irgentwas auf was die noch nicht gekommen sind??

    @th.meger Danke, dass ist eine gute Idee, nur wenn man längere Stücke machen möchte ist dass eher unhandlich. Kannst du mir sagen wie ich das kleine GUI-Fenster mit dem gßen gemeinsam öffnen kann, also wie als kleines Toolboxfenster wie man es aus Entwicklungsumgebungen für Progsprachen kennt?

  • Also, ich hab es jetzt hingekriegt dass auch das kleine Notenlängenfenster angezigt wird. Ich wollte es dann auch einbinden und hab dass am Ton "c'" versucht, ich habs mit der if Schleife versucht, dass geht aber noch weniger als mit der SelectCase Varinate, kann mir jemand sagen was ich da am geschicktesten nehmen soll? Ich hab nämlich dass Gefühl dass dere Script gar nicht in SelectCase reinkommt!?

    Spoiler anzeigen
    [autoit]

    ;~ Zweck: Einfacheres erstellen von Beeptönchenreihen.
    ;~ Autor: vinschni, th.meger

    [/autoit] [autoit][/autoit] [autoit]

    #include <GuiConstants.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Datei = @ScriptDir & "\beep.ini"
    ;~ Hauptfenstergui
    $hauptfenster = GuiCreate("Beep Komponist 0.1", 335, 245,-1,-1 )
    $hauptfensterpos = WinGetPos($hauptfenster, "")
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetBkColor(0xFFFFFF)
    $Pausen = GuiCtrlCreateGroup("Pausen", 10, 10, 120, 140)
    $Tone = GuiCtrlCreateGroup("Töne", 140, 10, 190, 230)
    $c1 = GuiCtrlCreateButton("c'", 150, 30, 80, 20)
    $cis1 = GuiCtrlCreateButton("cis'", 150, 60, 80, 20)
    $d1 = GuiCtrlCreateButton("d'", 150, 90, 80, 20)
    $dis1 = GuiCtrlCreateButton("dis'", 150, 120, 80, 20)
    $e1 = GuiCtrlCreateButton("e'", 150, 150, 80, 20)
    $f1 = GuiCtrlCreateButton("f'", 150, 180, 80, 20)
    $fis1 = GuiCtrlCreateButton("fis'", 150, 210, 80, 20)
    $c2 = GuiCtrlCreateButton("c''", 240, 180, 80, 20)
    $h1 = GuiCtrlCreateButton("h'", 240, 150, 80, 20)
    $g1 = GuiCtrlCreateButton("g'", 240, 30, 80, 20)
    $gis1 = GuiCtrlCreateButton("gis'", 240, 60, 80, 20)
    $a1 = GuiCtrlCreateButton("a'", 240, 90, 80, 20)
    $ais1 = GuiCtrlCreateButton("ais'", 240, 120, 80, 20)
    $ganzepause = GuiCtrlCreateButton("Ganze Pause", 20, 30, 90, 20)
    $halbepause = GuiCtrlCreateButton("Halbe Pause", 20, 60, 90, 20)
    $virtelpause = GuiCtrlCreateButton("Viertel Pause", 20, 90, 90, 20)
    $achtelpause = GuiCtrlCreateButton("Achtel Pause", 20, 120, 90, 20)
    $quit = GuiCtrlCreateButton("Schließen", 10, 220, 120, 20)
    $incode = GuiCtrlCreateButton("In Code umwandeln", 10, 180, 120, 20)
    $iniloeschen = GuiCtrlCreateButton(".ini löschen", 10, 200, 120, 20)
    $abspielen = GuiCtrlCreateButton("Abspielen", 10, 160, 120, 20)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Notenlängengui
    $toolfenster =GuiCreate("Notenlängen", 130, 100,$hauptfensterpos[0] +342, $hauptfensterpos[1] +0 , -1, -1, $hauptfenster)
    GUISetState(@SW_SHOW,$toolfenster)
    $GanzeNote = GuiCtrlCreateRadio("Ganze Note", 18, 0, 100, 20 )
    GUICtrlSetState($GanzeNote, $GUI_CHECKED)
    $HalbeNote = GuiCtrlCreateRadio("Halbe Note", 18, 20, 100, 20)
    $ViertelNote = GuiCtrlCreateRadio("Viertel Note", 18, 40, 100, 20)
    $AchtelNote = GuiCtrlCreateRadio("Achtel Note", 18, 60, 100, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GUISwitch($hauptfenster)
    GUISetState(@SW_SHOW)
    ;~ Radiobuttonstatusvariabeln
    $GanzeNotestatus = GUICtrlGetState($GanzeNote)
    $HalbeNotestatus = GUICtrlGetState($HalbeNote)
    $ViertelNotestatus = GUICtrlGetState($ViertelNote)
    $AchtelNotestatus = GUICtrlGetState($AchtelNote)

    [/autoit] [autoit][/autoit] [autoit]

    GuiSetState()
    While 1
    $msg = GuiGetMsg()
    Select

    Case $msg = $c1
    Select
    Case $GanzeNotestatus = "GUI_CHECKED"
    FileWrite($Datei, "Beep(264,1000)"& @CRLF)
    Beep(264,1000)

    Case $HalbeNotestatus = "GUI_CHECKED"
    FileWrite($Datei, "Beep(264,500)"& @CRLF)
    Beep(264,500)

    Case $ViertelNotestatus = "GUI_CHECKED"
    FileWrite($Datei, "Beep(264, 250)"& @CRLF)
    Beep(264, 250)

    Case $AchtelNotestatus = "GUI_CHECKED"
    FileWrite($Datei, "Beep(264, 125)"& @CRLF)
    Beep(264, 125)
    EndSelect


    FileWrite($Datei, "Beep(264)"& @CRLF)
    Case $msg = $cis1
    Beep(278)
    FileWrite($Datei, "Beep(278)"& @CRLF)

    Case $msg = $d1
    Beep(297)
    FileWrite($Datei, "Beep(297)"& @CRLF)

    Case $msg = $dis1
    Beep(313)
    FileWrite($Datei, "Beep(313)"& @CRLF)

    Case $msg = $e1
    Beep(330)
    FileWrite($Datei, "Beep(330)"& @CRLF)

    Case $msg = $f1
    Beep(352)
    FileWrite($Datei, "Beep(352)"& @CRLF)

    Case $msg = $fis1
    Beep(374)
    FileWrite($Datei, "Beep(374)"& @CRLF)

    Case $msg = $c2
    Beep(528)
    FileWrite($Datei, "Beep(528)"& @CRLF)

    Case $msg = $h1
    Beep(495)
    FileWrite($Datei, "Beep(495)"& @CRLF)

    Case $msg = $g1
    Beep(396)
    FileWrite($Datei, "Beep(396)"& @CRLF)

    Case $msg = $gis1
    Beep(418)
    FileWrite($Datei, "Beep(418)"& @CRLF)

    Case $msg = $a1
    Beep(440)
    FileWrite($Datei, "Beep(440)" & @CRLF)

    Case $msg = $ais1
    Beep(467)
    FileWrite($Datei, "Beep(467)"& @CRLF)

    Case $msg = $ganzepause
    FileWrite($Datei, "Sleep(1000)"& @CRLF)

    Case $msg = $halbepause
    FileWrite($Datei, "Sleep(500)"& @CRLF)

    Case $msg = $virtelpause
    FileWrite($Datei, "Sleep(250)"& @CRLF)

    Case $msg = $achtelpause
    FileWrite($Datei, "Sleep(125)"& @CRLF)

    Case $msg = $quit
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $incode
    Global $Codedat = @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3"
    FileCopy($Datei, @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3")
    _FileWriteToLine($Codedat, 0, "Code erstellt durch Beep Komponist 0.1")
    IniWrite(@ScriptDir & "\beep1.ini", "File", "Path", '"' & $Codedat & '"')
    Case $msg = $iniloeschen
    FileDelete($Datei)
    Case $msg = $abspielen
    $path = IniRead(@ScriptDir & "\beep1.ini", "File", "Path", "Not Found!")
    If FileExists($path) Then Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $path & '"', '', @SW_HIDE)
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop

    If $msg[1] = $toolfenster Then
    Exit

    GUISwitch($toolfenster)
    GUIDelete()

    ElseIf $msg[1] = $hauptfenster Then
    Exit
    GUISwitch($hauptfenster)
    GUIDelete()
    Exit
    EndIf
    Case Else
    ;;;
    EndSelect
    WEnd

    [/autoit]


    Wie mach ich dass am besten?


    Grüße Vinschni

    Einmal editiert, zuletzt von Vinschni (9. Januar 2007 um 19:57)

    • Offizieller Beitrag

    Hi,

    Spoiler anzeigen
    [autoit]

    ;~ Zweck: Einfacheres erstellen von Beeptönchenreihen.
    ;~ Autor: vinschni, th.meger

    [/autoit] [autoit][/autoit] [autoit]

    #include <GuiConstants.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Datei = @ScriptDir & "\beep.ini"
    ;~ Hauptfenstergui
    $hauptfenster = GUICreate("Beep Komponist 0.1", 335, 245, -1, -1)
    $hauptfensterpos = WinGetPos($hauptfenster, "")
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetBkColor(0xFFFFFF)
    $Pausen = GUICtrlCreateGroup("Pausen", 10, 10, 120, 140)
    $Tone = GUICtrlCreateGroup("Töne", 140, 10, 190, 230)
    $c1 = GUICtrlCreateButton("c'", 150, 30, 80, 20)
    $cis1 = GUICtrlCreateButton("cis'", 150, 60, 80, 20)
    $d1 = GUICtrlCreateButton("d'", 150, 90, 80, 20)
    $dis1 = GUICtrlCreateButton("dis'", 150, 120, 80, 20)
    $e1 = GUICtrlCreateButton("e'", 150, 150, 80, 20)
    $f1 = GUICtrlCreateButton("f'", 150, 180, 80, 20)
    $fis1 = GUICtrlCreateButton("fis'", 150, 210, 80, 20)
    $c2 = GUICtrlCreateButton("c''", 240, 180, 80, 20)
    $h1 = GUICtrlCreateButton("h'", 240, 150, 80, 20)
    $g1 = GUICtrlCreateButton("g'", 240, 30, 80, 20)
    $gis1 = GUICtrlCreateButton("gis'", 240, 60, 80, 20)
    $a1 = GUICtrlCreateButton("a'", 240, 90, 80, 20)
    $ais1 = GUICtrlCreateButton("ais'", 240, 120, 80, 20)
    $ganzepause = GUICtrlCreateButton("Ganze Pause", 20, 30, 90, 20)
    $halbepause = GUICtrlCreateButton("Halbe Pause", 20, 60, 90, 20)
    $virtelpause = GUICtrlCreateButton("Viertel Pause", 20, 90, 90, 20)
    $achtelpause = GUICtrlCreateButton("Achtel Pause", 20, 120, 90, 20)
    $quit = GUICtrlCreateButton("Schließen", 10, 220, 120, 20)
    $incode = GUICtrlCreateButton("In Code umwandeln", 10, 180, 120, 20)
    $iniloeschen = GUICtrlCreateButton(".ini löschen", 10, 200, 120, 20)
    $abspielen = GUICtrlCreateButton("Abspielen", 10, 160, 120, 20)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Notenlängengui
    $toolfenster = GUICreate("Notenlängen", 130, 100, $hauptfensterpos[0] + 342, $hauptfensterpos[1] + 0, -1, -1, $hauptfenster)
    GUISetState(@SW_SHOW, $toolfenster)
    $GanzeNote = GUICtrlCreateRadio("Ganze Note", 18, 0, 100, 20)
    GUICtrlSetState($GanzeNote, $GUI_CHECKED)
    $HalbeNote = GUICtrlCreateRadio("Halbe Note", 18, 20, 100, 20)
    $ViertelNote = GUICtrlCreateRadio("Viertel Note", 18, 40, 100, 20)
    $AchtelNote = GUICtrlCreateRadio("Achtel Note", 18, 60, 100, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GUISwitch($hauptfenster)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select

    Case $msg = $c1
    _write(264)
    Case $msg = $cis1
    Beep(278)
    FileWrite($Datei, "Beep(278)" & @CRLF)

    Case $msg = $d1
    Beep(297)
    FileWrite($Datei, "Beep(297)" & @CRLF)

    Case $msg = $dis1
    Beep(313)
    FileWrite($Datei, "Beep(313)" & @CRLF)

    Case $msg = $e1
    Beep(330)
    FileWrite($Datei, "Beep(330)" & @CRLF)

    Case $msg = $f1
    Beep(352)
    FileWrite($Datei, "Beep(352)" & @CRLF)

    Case $msg = $fis1
    Beep(374)
    FileWrite($Datei, "Beep(374)" & @CRLF)

    Case $msg = $c2
    Beep(528)
    FileWrite($Datei, "Beep(528)" & @CRLF)

    Case $msg = $h1
    Beep(495)
    FileWrite($Datei, "Beep(495)" & @CRLF)

    Case $msg = $g1
    Beep(396)
    FileWrite($Datei, "Beep(396)" & @CRLF)

    Case $msg = $gis1
    Beep(418)
    FileWrite($Datei, "Beep(418)" & @CRLF)

    Case $msg = $a1
    Beep(440)
    FileWrite($Datei, "Beep(440)" & @CRLF)

    Case $msg = $ais1
    Beep(467)
    FileWrite($Datei, "Beep(467)" & @CRLF)

    Case $msg = $ganzepause
    FileWrite($Datei, "Sleep(1000)" & @CRLF)

    Case $msg = $halbepause
    FileWrite($Datei, "Sleep(500)" & @CRLF)

    Case $msg = $virtelpause
    FileWrite($Datei, "Sleep(250)" & @CRLF)

    Case $msg = $achtelpause
    FileWrite($Datei, "Sleep(125)" & @CRLF)

    Case $msg = $quit
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $incode
    Global $Codedat = @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3"
    FileCopy($Datei, @DesktopDir & "\Beep Komposition " & @MIN & @SEC & ".au3")
    _FileWriteToLine($Codedat, 0, "Code erstellt durch Beep Komponist 0.1")
    IniWrite(@ScriptDir & "\beep1.ini", "File", "Path", '"' & $Codedat & '"')
    Case $msg = $iniloeschen
    FileDelete($Datei)
    Case $msg = $abspielen
    $path = IniRead(@ScriptDir & "\beep1.ini", "File", "Path", "Not Found!")
    If FileExists($path) Then Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $path & '"', '', @SW_HIDE)
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop

    If $msg[1] = $toolfenster Then
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    GUISwitch($toolfenster)
    GUIDelete()

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $msg[1] = $hauptfenster Then
    Exit
    GUISwitch($hauptfenster)
    GUIDelete()
    Exit
    EndIf
    Case Else
    ;;;
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _write($note)
    Select
    Case GUICtrlRead($GanzeNote) = $GUI_CHECKED
    FileWrite($Datei, "Beep(" & $note & ",1000)" & @CRLF)
    Beep(264, 1000)

    Case GUICtrlRead($HalbeNote) = $GUI_CHECKED
    FileWrite($Datei, "Beep(" & $note & ",500)" & @CRLF)
    Beep(264, 500)

    Case GUICtrlRead($ViertelNote) = $GUI_CHECKED
    FileWrite($Datei, "Beep(" & $note & ",250)" & @CRLF)
    Beep(264, 250)

    Case GUICtrlRead($AchtelNote) = $GUI_CHECKED
    FileWrite($Datei, "Beep(" & $note & ",125)" & @CRLF)
    Beep(264, 125)
    EndSelect
    EndFunc ;==>_write

    [/autoit]

    P.S.: Kannst mich ruhig rausnehmen, ist ja dein Skript!

    So long,

    Mega