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
;~ Zweck: Einfacheres erstellen von Beeptönchenreihen.
;~ Autor: vinschni
#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
$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
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