#cs
 AutoIt Version: 3.2.3.0 (beta)
 Autor: Vinschni
 Script Funktion:
	Zum Erstellen und Bearbeiten von Beep-Tönchen Reihen.
#ce
#include <GuiConstants.au3>
#include <File.au3>
#include <GuiListView.au3>
#Include <GuiStatusBar.au3>
#Include <GuiStatusBar.au3>
#Include <Array.au3>
#Include <GuiTab.au3>
#Include <Misc.au3>

#NoTrayIcon

HotKeySet("^z", "Rueckgaengig")
If Not FileExists(@MyDocumentsDir & "\Eigene Beep Komponist Projekte\" & @MDAY & "." & @MON & "." & @YEAR) Then DirCreate(@MyDocumentsDir & "\Eigene Beep Komponist Projekte\" & @MDAY & "." & @MON & "." & @YEAR)
$dateiordnerdatum = @MDAY & "." & @MON & "." & @YEAR
$Dateidateidatum = @HOUR & "." & @MIN & "." & @SEC
Global $fh = @MyDocumentsDir & "\Eigene Beep Komponist Projekte\" & $dateiordnerdatum & "\Beep Code " & $Dateidateidatum & ".bc"
Global $fht = @MyDocumentsDir & "\Eigene Beep Komponist Projekte\" & $dateiordnerdatum & "\Notentext " & $Dateidateidatum & ".txt"
Global $fhl = @TempDir & "\Länge " & $Dateidateidatum & ".tmp"
$zeilenanzahl = 0

Global $hauptfenster, $StatusBar1, $msg
Local $a_PartsRightEdge[3] = [90, 330, -1]
Local $a_PartsText[3] = [$Dateidateidatum & ".bc ", "LeN: ", ""]

#Region Hauptfenster-Gui
$hauptfenster = GUICreate("Beep Komponist 2.1.0 ", 467, 290, -1, -1)
GUISetBkColor(0xFFFFFF)
$StatusBar1 = _GUICtrlStatusBarCreate($hauptfenster, $a_PartsRightEdge, $a_PartsText)
_GUICtrlStatusBarSetIcon($StatusBar1, 0, "shell32.dll", 70)
_GUICtrlStatusBarSetIcon($StatusBar1, 1, "shell32.dll", 168)
$Fortschritt = _GUICtrlStatusBarCreateProgress($StatusBar1, 2, $PBS_SMOOTH)
$Groupnotenlangen = GUICtrlCreateGroup("Notenlängen", 8, 8, 121, 233)
$ganzenote = GUICtrlCreateRadio("Ganze Note", 16, 24, 89, 17)
$halbenote = GUICtrlCreateRadio("Halbe Note", 16, 72, 89, 17)
$viertelnote = GUICtrlCreateRadio("Viertel Note", 16, 120, 89, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$achtelnote = GUICtrlCreateRadio("Achtel Note", 16, 168, 97, 17)
$sechzentelnote = GUICtrlCreateRadio("Sechzentel Note", 16, 192, 105, 17)
$punktierteviertel = GUICtrlCreateRadio("Punktierte Viertel", 16, 96, 105, 17)
$punktiertehalbe = GUICtrlCreateRadio("Punktierte Halbe", 16, 48, 105, 17)
$punktierteachtelnote = GUICtrlCreateRadio("Punkierte Achtel", 16, 144, 105, 17)
$zweiundreisigstelnote = GUICtrlCreateRadio("32stel Note", 16, 216, 105, 17)
$Group1 = GUICtrlCreateGroup("Modus", 336, 0, 121, 57)
$testmodus = GUICtrlCreateCheckbox("Testmodus", 344, 16, 105, 17)
$halbelangemodus = GUICtrlCreateCheckbox(" 50% Notenlänge ", 344, 35, 105, 17)
$GroupPausen = GUICtrlCreateGroup("Pausen", 338, 61, 121, 177)
$ganzepause = GUICtrlCreateButton("Ganze Pause", 346, 77, 105, 25, 0)
$halbepause = GUICtrlCreateButton("Halbe Pause", 346, 109, 105, 25, 0)
$viertelpause = GUICtrlCreateButton("Viertel Pause", 346, 141, 105, 25, 0)
$achtelpause = GUICtrlCreateButton("Achtel Pause", 346, 173, 105, 25, 0)
$sechzentelpause = GUICtrlCreateButton("Sechzentel Pause", 346, 205, 105, 25, 0)
$MenuDatei = GUICtrlCreateMenu("&Datei")
$MenuItemNeu = GUICtrlCreateMenuitem("Neu", $MenuDatei)
$Teilstrich3 = GUICtrlCreateMenuitem ("",$MenuDatei,1)
$MenuItemOffnen = GUICtrlCreateMenuitem("Öffnen", $MenuDatei)
$MenuItemSpeichernunter = GUICtrlCreateMenuitem("Speichern unter...", $MenuDatei)
$MenuItemExportalsBk = GUICtrlCreateMenuitem("Exportieren als *.bk", $MenuDatei)
$Teilstrich1 = GUICtrlCreateMenuitem ("",$MenuDatei,5)
$MenuItemquit = GUICtrlCreateMenuitem("Beenden", $MenuDatei)
$MenuBearbeiten = GUICtrlCreateMenu("&Bearbeiten")
$MenuItemRueckgaenig = GUICtrlCreateMenuitem("Rückgänig   STRG+Z", $MenuBearbeiten)
$Teilstrich3 = GUICtrlCreateMenuitem ("",$MenuBearbeiten,1)
$MenuItemAllesLoeschen = GUICtrlCreateMenuitem("Alles löschen", $MenuBearbeiten)
$MenuAnsicht = GUICtrlCreateMenu("&Ansicht")
$MenuItemstatussichtbar = GUICtrlCreateMenuitem("Statusleiste", $MenuAnsicht)
GUICtrlSetState(-1,$GUI_CHECKED)
$MenuAbspielen = GUICtrlCreateMenu("&Abspielen")
$MenuItemabspielen = GUICtrlCreateMenuitem("Aktuelles abspielen", $MenuAbspielen)
$MenuItemsonstigesabspielen = GUICtrlCreateMenuitem("Andere *.bc oder *.bk abspielen", $MenuAbspielen)
$MenuItemalteVersAbspielen = GUICtrlCreateMenuitem("Eine Beep-Datei früherer BK Vers. abspielen", $MenuAbspielen)
$MenuTools = GUICtrlCreateMenu("&Tools")
$MenuItemBeepaktivdeaktiv = GUICtrlCreateMenuitem("Beep aktiviert/deaktiviert", $MenuTools)
$MenuItemBeepOrdneroeffnen = GUICtrlCreateMenuitem("Projekte Ordner öffnen", $MenuTools)
$MenuItemNotentextoCilp = GUICtrlCreateMenuitem("Notentext-Datei in Zwischenablage kopieren", $MenuTools)
$MenuInfo = GUICtrlCreateMenu("&Info")
$MenuItemHilfe = GUICtrlCreateMenuitem("Hilfe", $MenuInfo)
$MenuItemUber = GUICtrlCreateMenuitem("Über...", $MenuInfo)
$Teilstrich2 = GUICtrlCreateMenuitem ("",$MenuInfo,1)
$MenuItemVersHinweis = GUICtrlCreateMenuitem("Vers. Hinweis", $MenuInfo)
$ToeneTab = GUICtrlCreateTab(136, 6, 193, 233)
$ToeneTabSheet0 = GUICtrlCreateTabItem("c - h ")
GUISetFont(-1, 800, 0, "MS Sans Serif")
$c0 = GUICtrlCreateButton("c", 140, 38, 80, 20, 0)
$cis0 = GUICtrlCreateButton("cis/des", 140, 70, 80, 20, 0)
$dis0 = GUICtrlCreateButton("dis/es", 140, 134, 80, 20, 0)
$e0 = GUICtrlCreateButton("e", 140, 166, 80, 20, 0)
$f0 = GUICtrlCreateButton("f", 140, 198, 80, 20, 0)
$g0 = GUICtrlCreateButton("g", 236, 70, 80, 20, 0)
$gis0 = GUICtrlCreateButton("gis/as", 236, 102, 80, 20, 0)
$a0 = GUICtrlCreateButton("a", 236, 134, 80, 20, 0)
$ais0 = GUICtrlCreateButton("ais/b", 236, 166, 80, 20, 0)
$h0 = GUICtrlCreateButton("h", 236, 198, 80, 20, 0)
$d0 = GUICtrlCreateButton("d", 140, 102, 80, 20, 0)
$fis0 = GUICtrlCreateButton("fis/ges", 236, 38, 80, 20, 0)
$ToeneTabSheet1 = GUICtrlCreateTabItem("c' - h'")
$c1 = GUICtrlCreateButton("c'", 140, 38, 80, 20, 0)
$cis1 = GUICtrlCreateButton("cis'/des'", 140, 70, 80, 20, 0)
$dis1 = GUICtrlCreateButton("dis'/es'", 140, 134, 80, 20, 0)
$e1 = GUICtrlCreateButton("e'", 140, 166, 80, 20, 0)
$f1 = GUICtrlCreateButton("f'", 140, 198, 80, 20, 0)
$g1 = GUICtrlCreateButton("g'", 236, 70, 80, 20, 0)
$gis1 = GUICtrlCreateButton("gis'/as'", 236, 102, 80, 20, 0)
$a1 = GUICtrlCreateButton("a'", 236, 134, 80, 20, 0)
$ais1 = GUICtrlCreateButton("ais'/b'", 236, 166, 80, 20, 0)
$h1 = GUICtrlCreateButton("h'", 236, 198, 80, 20, 0)
$d1 = GUICtrlCreateButton("d'", 140, 102, 80, 20, 0)
$fis1 = GUICtrlCreateButton("fis'/ges'", 236, 38, 80, 20, 0)
$ToeneTabSheet2 = GUICtrlCreateTabItem("c'' - h''")
$h2 = GUICtrlCreateButton("h''", 236, 198, 80, 20, 0)
$ais2 = GUICtrlCreateButton("ais''/b''", 236, 166, 80, 20, 0)
$a2 = GUICtrlCreateButton("a''", 236, 134, 80, 20, 0)
$gis2 = GUICtrlCreateButton("gis''/as''", 236, 102, 80, 20, 0)
$g2 = GUICtrlCreateButton("g''", 236, 70, 80, 20, 0)
$c2 = GUICtrlCreateButton("c''", 140, 38, 80, 20, 0)
$cis2 = GUICtrlCreateButton("cis''/des''", 140, 70, 80, 20, 0)
$d2 = GUICtrlCreateButton("d''", 140, 102, 80, 20, 0)
$dis2 = GUICtrlCreateButton("dis''/es''", 140, 134, 80, 20, 0)
$e2 = GUICtrlCreateButton("e''", 140, 166, 80, 20, 0)
$f2 = GUICtrlCreateButton("f''", 140, 198, 80, 20, 0)
$fis2 = GUICtrlCreateButton("fis''/ges''", 236, 38, 80, 20, 0)
$ToeneTabSheet3 = GUICtrlCreateTabItem("c''' - h'''")
$h3 = GUICtrlCreateButton("h'''", 236, 198, 80, 20, 0)
$ais3 = GUICtrlCreateButton("ais'''/b'''", 236, 166, 80, 20, 0)
$a3 = GUICtrlCreateButton("a'''", 236, 134, 80, 20, 0)
$gis3 = GUICtrlCreateButton("gis'''/as'''", 236, 102, 80, 20, 0)
$g3 = GUICtrlCreateButton("g'''", 236, 70, 80, 20, 0)
$c3 = GUICtrlCreateButton("c'''", 140, 38, 80, 20, 0)
$cis3 = GUICtrlCreateButton("cis'''/des'''", 140, 70, 80, 20, 0)
$d3 = GUICtrlCreateButton("d'''", 140, 102, 80, 20, 0)
$dis3 = GUICtrlCreateButton("dis'''/es'''", 140, 134, 80, 20, 0)
$e3 = GUICtrlCreateButton("e'''", 140, 166, 80, 20, 0)
$f3 = GUICtrlCreateButton("f'''", 140, 198, 80, 20, 0)
$fis3 = GUICtrlCreateButton("fis'''/ges'''", 236, 38, 80, 20, 0)
_GUICtrlStatusBarResize($StatusBar1)
GUISetState(@SW_SHOW)
#EndRegion Hauptfenster-Gui

While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = $c0
			_write(130, "c klein")
		Case $msg = $cis0
			_write(138, "cis klein/des klein")
		Case $msg = $d0
			_write(146, "d klein")
		Case $msg = $dis0
			_write(155, "dis klein/es klein")
		Case $msg = $e0
			_write(164, "e klein")
		Case $msg = $f0
			_write(174, "f klein")
		Case $msg = $fis0
			_write(184, "fis klein/ges klein")
		Case $msg = $g0
			_write(195, "g klein")
		Case $msg = $gis0
			_write(207, "gis klein/as klein")
		Case $msg = $a0
			_write(220, "a klein")
		Case $msg = $ais0
			_write(233, "ais klein/b klein")
		Case $msg = $h0
			_write(246, "h klein")
		Case $msg = $c1
			_write(262, "c'")
		Case $msg = $cis1
			_write(277, "cis'/des'")
		Case $msg = $d1
			_write(293, "d'")
		Case $msg = $dis1
			_write(311, "dis'/es'")
		Case $msg = $e1
			_write(330, "e'")
		Case $msg = $f1
			_write(349, "f'")
		Case $msg = $fis1
			_write(370, "fis'/ges'")
		Case $msg = $g1
			_write(392, "g'")
		Case $msg = $gis1
			_write(415, "gis'/as'")
		Case $msg = $a1
			_write(440, "a'")
		Case $msg = $ais1
			_write(466, "ais'/b'")
		Case $msg = $h1
			_write(493, "h'")
		Case $msg = $c2
			_write(523, "c''")
		Case $msg = $cis2
			_write(554, "cis''/des''")
		Case $msg = $d2
			_write(587, "d''")
		Case $msg = $dis2
			_write(622, "dis''/es''")
		Case $msg = $e2
			_write(659, "e''")
		Case $msg = $f2
			_write(698, "f''")
		Case $msg = $fis2
			_write(740, "fis''/ges''")
		Case $msg = $g2
			_write(784, "g''")
		Case $msg = $gis2
			_write(831, "gis''/as''")
		Case $msg = $a2
			_write(880, "a''")
		Case $msg = $ais2
			_write(932, "ais''/b''")
		Case $msg = $h2
			_write(988, "h''")
		Case $msg = $c3
			_write(1046, "c''")
		Case $msg = $cis3
			_write(1108, "cis'''/des'''")
		Case $msg = $d3
			_write(1174, "d'''")
		Case $msg = $dis3
			_write(1244, "dis'''/es'''")
		Case $msg = $e3
			_write(1318, "e'''")
		Case $msg = $f3
			_write(1396, "f'''")
		Case $msg = $fis3
			_write(1479, "fis'''/ges'''")
		Case $msg = $g3
			_write(1567, "g'''")
		Case $msg = $gis3
			_write(1661, "gis'''/as'''")
		Case $msg = $a3
			_write(1760, "a'''")
		Case $msg = $ais3
			_write(1864, "ais'''/b'''")
		Case $msg = $h3
			_write(1975, "h'''")
		Case $msg = $ganzepause
			FileWrite($fh, "|G")
			FileWrite($fht, "Ganze Pause" & @CRLF)
			_GUICtrlStatusBarSetText($StatusBar1, "LeN: Ganze Pause", 1)
		Case $msg = $halbepause
			FileWrite($fh, "|H")
			FileWrite($fht, "Halbe Pause" & @CRLF)
			_GUICtrlStatusBarSetText($StatusBar1, "LeN: Halbe Pause", 1)
		Case $msg = $viertelpause
			FileWrite($fh, "|V")
			FileWrite($fht, "Viertel Pause" & @CRLF)
			_GUICtrlStatusBarSetText($StatusBar1, "LeN: Viertel Pause", 1)
		Case $msg = $achtelpause
			FileWrite($fh, "|A")
			FileWrite($fht, "Achtel Pause" & @CRLF)
			_GUICtrlStatusBarSetText($StatusBar1, "LeN: Achtel Pause", 1)
		Case $msg = $sechzentelpause
			FileWrite($fh, "|S")
			FileWrite($fht, "Sechzentel Pause" & @CRLF)
			_GUICtrlStatusBarSetText($StatusBar1, "LeN: Sechzentel Pause", 1)
		Case $msg = $MenuItemNeu
			FileClose($fh)
			FileDelete($fhl)
			$dateiordnerdatum = @MDAY & "." & @MON & "." & @YEAR
			$Dateidateidatum = @HOUR & "." & @MIN & "." & @SEC
			Global $fh = @MyDocumentsDir & "\Eigene Beep Komponist Projekte\" & $dateiordnerdatum & "\Beep Code " & $Dateidateidatum & ".bc"
			Global $fht = @MyDocumentsDir & "\Eigene Beep Komponist Projekte\" & $dateiordnerdatum & "\Notentext " & $Dateidateidatum & ".txt"
			Global $fhl = @TempDir & "\Länge " & $Dateidateidatum & ".tmp"
			_GUICtrlStatusBarSetText($StatusBar1, "LeN: ", 1)
			_GUICtrlStatusBarSetText($StatusBar1, $Dateidateidatum & ".bc ",0)
		Case $msg = $MenuItemOffnen
			FileClose($fh)
			$fh = FileOpenDialog("Eine *.bc Datei öffnen:", @MyDocumentsDir & "\Eigene Beep Komponist Projekte\", "Beep Kompositionen (*.bc)", 1 + 8)
			FileClose($fh)
			_GUICtrlStatusBarSetText($StatusBar1, "LeN: ", 1)
		Case $msg = $MenuItemSpeichernunter
			$speicherort = FileSaveDialog("*.bc Datei speichern unter:", @MyDocumentsDir & "\Eigene Beep Komponist Projekte\", "Beep Kompositionen (*.bc)", "Beep Code " & @HOUR & ":" & @MIN & ".bc")
			Dim $Dateiinhalt
			If Not FileCopy($fh, $speicherort) Then
				MsgBox(8192 + 16, "Error", " ERROR: Fehler beim Einlesen oder Speichern der Beep Code-Datei!")
			EndIf
		Case $msg = $MenuItemExportalsBk
			$speicherort = FileSaveDialog("Beep Komposition exportieren nach:", @MyDocumentsDir & "\Eigene Beep Komponist Projekte\", "Beep Kompositionen (*.bk)", 2, "Beep Komposition von " & @UserName & " am" & @MDAY & "." & @MON & "." & @YEAR & ".bk")
			If Not FileCopy($fh, $speicherort, 1 + 8) Then
				MsgBox(8192 + 16, "Error", " ERROR: Fehler beim Einlesen oder Exportieren der Beep Code-Datei!")
			EndIf
		Case $msg = $MenuItemquit
			Exit
		Case $msg = $MenuItemsonstigesabspielen
			Abspielen(1)
		Case $msg = $MenuItemabspielen
			Abspielen(0)
		Case $msg =$MenuItemalteVersAbspielen
			$abspielDatei = FileOpenDialog("Bitte wählen sie hier die gewünschte Beep-Datei:", @DesktopCommonDir, "Beep Kompositionen (*.bk;*.bc)")
			If FileExists($abspielDatei) Then
				Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $abspielDatei & '"', '', @SW_HIDE)
			Else
				MsgBox(8192 + 16, "Error", " ERROR: Fehler beim Lesen der Beep Code-Datei!: " & @error)
			EndIf
		Case $msg = $MenuItemRueckgaenig
			Rueckgaengig()
		Case $msg = $MenuItemAllesLoeschen
			If  Not FileExists($fh) and FileExists($fhl) Then
				MsgBox(8192 + 16, "Error", " ERROR: Was es nicht gibt kann man nicht löschen! Logisch, oder?")
			Else
				FileDelete($fh)
				FileDelete($fht)
				FileDelete($fhl)
				FileClose($fh)
				FileDelete($fhl)
				$dateiordnerdatum = @MDAY & "." & @MON & "." & @YEAR
				$Dateidateidatum = @HOUR & "." & @MIN & "." & @SEC
				Global $fh = @MyDocumentsDir & "\Eigene Beep Komponist Projekte\" & $dateiordnerdatum & "\Beep Code " & $Dateidateidatum & ".bc"
				Global $fht = @MyDocumentsDir & "\Eigene Beep Komponist Projekte\" & $dateiordnerdatum & "\Notentext " & $Dateidateidatum & ".txt"
				Global $fhl = @TempDir & "\Länge " & $Dateidateidatum & ".tmp"
				_GUICtrlStatusBarSetText($StatusBar1, "LeN: ", 1)
				_GUICtrlStatusBarSetText($StatusBar1, $Dateidateidatum & ".bc ",0)
			EndIf
		Case $msg = $MenuItemstatussichtbar 
			If BitAnd(GUICtrlRead($MenuItemstatussichtbar),$GUI_CHECKED) = $GUI_CHECKED Then
				GUICtrlSetState($MenuItemstatussichtbar,$GUI_UNCHECKED)
				_GuiCtrlStatusBarShowHide($StatusBar1, @SW_HIDE)
			Else
				GUICtrlSetState($MenuItemstatussichtbar,$GUI_CHECKED)
				_GuiCtrlStatusBarShowHide($StatusBar1, @SW_SHOW)
			EndIf
		Case $msg =	$MenuItemBeepaktivdeaktiv
			If RegRead("HKEY_CURRENT_USER\Control Panel\Sound", "Beep") = "yes" Then
				If MsgBox(8192 + 4, "Beep-Töne aktivieren/deaktivieren", "Auf diesem PC sind Beep-Töne aktiviert. Möchten sie Beep-Töne deaktivieren? (Dies hat zur Folge das, wenn sie dieses Programm nutzen keine Beep-Töne zu hören sein werden. Windows XP wird auch keine Beep-Töne mehr verwenden.) Diese Maßnahme können sie an gleicher Stelle gefahrlos wieder rückgänig machen.") = 6 Then
					Regwrite("HKEY_CURRENT_USER\Control Panel\Sound", "Beep","REG_SZ", "no")
					EnvUpdate()
					MsgBox(8192 + 64, "Hinweis", "Beep-Töne erfolgreich deaktiviert. Die Änderung wird erst nach einem Systemneustart wirksam.", 4)
				Else
				EndIf
			ElseIf RegRead("HKEY_CURRENT_USER\Control Panel\Sound", "Beep") = "no" Then
				If MsgBox(8192 + 4, "Beep-Töne aktivieren/deaktivieren", "Auf diesem PC sind Beep-Töne deaktiviert. Möchten sie Beep-Töne aktivieren? (Dies hat zur Folge das, wenn sie dieses Programm nutzen Beep-Töne zu hören sein werden. Windows XP wird auch Beep-Töne verwenden.) Diese Maßnahme können sie an gleicher Stelle gefahrlos wieder rückgänig machen.") = 6 Then
					Regwrite("HKEY_CURRENT_USER\Control Panel\Sound", "Beep","REG_SZ", "yes")
					EnvUpdate()
					MsgBox(8192 + 64, "Hinweis", "Beep-Töne erfolgreich aktiviert. Die Änderung wird erst nach einem Systemneustart wirksam.", 4)
				Else
				EndIf
			EndIf
		Case $msg = $MenuItemNotentextoCilp
			_ClipPutFile($fht)
		Case $msg = $MenuItemBeepOrdneroeffnen
			Run(@WindowsDir & "\explorer.exe", @MyDocumentsDir & "\Eigene Beep Komponist Projekte\"& $dateiordnerdatum)
		Case $msg = $MenuItemHilfe
			MsgBox(0, "Hilfe", "Mit dem Beep Komponist lässt sich bis jetzt der Systemlautsprecher, oder je nach Treiber & Hardware der normale Lautsprecher, beides, oder keins von beiden." & " Eine kurze Einführung: Wenn der Beep Komponist gestartet wurde können sie sofort loslegen und durch die Kombination von Notenlänge und Tonhöhe sowie Pausen ein Liedchen erstellen." & " Dieses können sie dan als Beep Komposition (*.bk) exportieren, abspielen oder wieder löschen. In den Eigenen Dateien wird ein ordner angelegt, in welchem sie nach Datum sortiert die verschiedenen von ihnen erstellten Dateien finden." & " Zu jeder Beep Code Datei wird nach eine Notentext datei erstellt, das sie danach noch sehen können was sie eingegeben haben." & "Unten links im Fenster auf der Statusleiste können sie den Namen der aktuell geöffneten Beep Datei sehen. Zum Stopen eines gerade laufenden Liedes die LEERTASTE kurz gedrückt halten."& @CRLF & @CRLF & "Begriffe: LeN = Letzte eingegebene Note")
		Case $msg = $MenuItemUber
			MsgBox(64, "Über...", "Programm Name: Beep Komponist" & @CRLF & "Programm Version : 2.1.0 " & @CRLF & @CRLF & "Autor&Copyright: Vinschni")
		Case $msg = $MenuItemVersHinweis
			MsgBox(64,"Hinweis", "Ab der Version 2.1.0 des Beep Komponists kommt ein neues Dateischreibsystem zum Einsatz, worauf sich alte Beep Kompositionen nur noch über einen Menüunterpunkt im Abspielen-Menü wiedergeben lassen. Für ältere Beep Kompositionen ist keine Fortschrittsanzeige implentiert. Bitte versuchen sie nicht mit dieser Version alte Dateien zu Editieren, dies führt unweigerlich zu Fehlern.")
		Case $msg = $GUI_EVENT_CLOSE
			FileDelete($fhl)
			ExitLoop
		Case Else
			;;;
	EndSelect
WEnd
Func Rueckgaengig()
	Dim $a[1]
		If Not _FileReadToArray($fh, $a) Then
			MsgBox(8192 + 16, "Error", " ERROR: Fehler beim Zurücknehmen der letzten Eingabe!")
		Else
			$a = StringSplit($a[1], "|")
			_ArrayPop($a)
			$s = _ArrayToString($a,"|", 1)
			FileDelete($fh)
			FileWrite($fh, $s)
			_FileWriteToLine($fht,$zeilenanzahl,"",1)
			_FileWriteToLine($fhl,$zeilenanzahl,"",1)
			$zeilenanzahl = $zeilenanzahl - 1
			_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & FileReadLine($fht,$zeilenanzahl),1)
		EndIf
EndFunc
Func Abspielen($anderesabspielen)
	Dim $fhinarray, $fhlinarray
	If $anderesabspielen = 1 Then
		$abspielDatei = FileOpenDialog("Bitte wählen sie hier die gewünschte Beep-Datei:", @DesktopCommonDir, "Beep Kompositionen (*.bk;*.bc)")
		If Not _FileReadToArray($abspielDatei, $fhinarray) Then
			MsgBox(8192 + 16, "Error", " ERROR: Fehler beim Einlesen der Beep Code-Datei!")
		Else
			For $x = 1 To $fhinarray[0]
				$a = StringSplit($fhinarray[1], "|")
			Next
			$b = 2
			$h = $a[0] - 1
			$FortschrittProzent = 100 / $h
			$FortschrittProzentkomplett = 0
			While $b <= $a[0]
				If StringIsAlpha($a[$b]) = 1 Then
					Switch $a[$b]
						Case "G"
							$FortschrittProzentkomplett = $FortschrittProzentkomplett + $FortschrittProzent
							GUICtrlSetData($Fortschritt, $FortschrittProzentkomplett)
							Sleep(1000)
						Case "H"
							$FortschrittProzentkomplett = $FortschrittProzentkomplett + $FortschrittProzent
							GUICtrlSetData($Fortschritt, $FortschrittProzentkomplett)
							Sleep(500)
						Case "V"
							$FortschrittProzentkomplett = $FortschrittProzentkomplett + $FortschrittProzent
							GUICtrlSetData($Fortschritt, $FortschrittProzentkomplett)
							Sleep(250)
						Case "A"
							$FortschrittProzentkomplett = $FortschrittProzentkomplett + $FortschrittProzent
							GUICtrlSetData($Fortschritt, $FortschrittProzentkomplett)
							Sleep(125)
						Case "S"
							$FortschrittProzentkomplett = $FortschrittProzentkomplett + $FortschrittProzent
							GUICtrlSetData($Fortschritt, $FortschrittProzentkomplett)
							Sleep(63)
						Case Else
							MsgBox(8192 + 16, "Error", " ERROR: Fehler beim Einlesen der Beep Code-Datei!")
					EndSwitch
				Else
					$c = StringSplit($a[$b], ",")
					$FortschrittProzentkomplett = $FortschrittProzentkomplett + $FortschrittProzent
					GUICtrlSetData($Fortschritt, $FortschrittProzentkomplett)
					Beep($c[1], $c[2])
				EndIf
				$b = $b + 1
				If _IsPressed("20") Then
					$b = $a[0]
				EndIf
			WEnd
			$anderesabspielen = 0
			GUICtrlSetData($Fortschritt, "0")
		EndIf
	Else
		If Not _FileReadToArray($fh, $fhinarray) Then
			MsgBox(8192 + 16, "Error", " ERROR: Fehler beim Einlesen der Beep Code-Datei!")
		EndIf
		For $x = 1 To $fhinarray[0]
				$a = StringSplit($fhinarray[1], "|")
			Next
			$b = 2
			$h = $a[0] - 1
			$FortschrittProzent = 100 / $h
			$FortschrittProzentkomplett = 0
			While $b <= $a[0]
				If StringIsAlpha($a[$b]) = 1 Then
					Switch $a[$b]
						Case "G"
							$FortschrittProzentkomplett = $FortschrittProzentkomplett + $FortschrittProzent
							GUICtrlSetData($Fortschritt, $FortschrittProzentkomplett)
							Sleep(2000)
						Case "H"
							$FortschrittProzentkomplett = $FortschrittProzentkomplett + $FortschrittProzent
							GUICtrlSetData($Fortschritt, $FortschrittProzentkomplett)
							Sleep(1000)
						Case "V"
							$FortschrittProzentkomplett = $FortschrittProzentkomplett + $FortschrittProzent
							GUICtrlSetData($Fortschritt, $FortschrittProzentkomplett)
							Sleep(500)
						Case "A"
							$FortschrittProzentkomplett = $FortschrittProzentkomplett + $FortschrittProzent
							GUICtrlSetData($Fortschritt, $FortschrittProzentkomplett)
							Sleep(250)
						Case "S"
							$FortschrittProzentkomplett = $FortschrittProzentkomplett + $FortschrittProzent
							GUICtrlSetData($Fortschritt, $FortschrittProzentkomplett)
							Sleep(125)
						Case Else
							MsgBox(8192 + 16, "Error", " ERROR: Fehler beim Einlesen der Beep Code-Datei!")
					EndSwitch
				Else
					$c = StringSplit($a[$b], ",")
					$FortschrittProzentkomplett = $FortschrittProzentkomplett + $FortschrittProzent
					GUICtrlSetData($Fortschritt, $FortschrittProzentkomplett)
					Beep($c[1], $c[2])
				EndIf
				$b = $b + 1
			WEnd
			$anderesabspielen = 0
			GUICtrlSetData($Fortschritt, "0")
	EndIf
EndFunc   ;==>Abspielen
Func Laengeschreiben($Laenge)
	FileWrite($fhl, $Laenge & @CRLF)
EndFunc   ;==>Laengeschreiben
Func _write($note, $NotealsText)
	If GUICtrlRead($halbelangemodus) = $GUI_CHECKED Then

		If GUICtrlRead($testmodus) = $GUI_CHECKED Then
			Select
				Case GUICtrlRead($ganzenote) = $GUI_CHECKED
					Beep($note, 1000)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Ganze Note", 1)
				Case GUICtrlRead($punktiertehalbe) = $GUI_CHECKED
					Beep($note, 750)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Punktierte Halbe Note", 1)
				Case GUICtrlRead($halbenote) = $GUI_CHECKED
					Beep($note, 500)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Halbe Note", 1)
				Case GUICtrlRead($punktierteviertel) = $GUI_CHECKED
					Beep($note, 375)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Punktierte Viertel Note", 1)
				Case GUICtrlRead($viertelnote) = $GUI_CHECKED
					Beep($note, 250)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Viertel Note", 1)
				Case GUICtrlRead($punktierteachtelnote) = $GUI_CHECKED
					Beep($note, 188)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Punktierte Achtel Note", 1)
				Case GUICtrlRead($achtelnote) = $GUI_CHECKED
					Beep($note, 125)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Achtel Note", 1)
				Case GUICtrlRead($sechzentelnote) = $GUI_CHECKED
					Beep($note, 63)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Sechzentel Note", 1)
				Case GUICtrlRead($zweiundreisigstelnote) = $GUI_CHECKED
					Beep($note, 33)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Zweiundreisigstel Note", 1)
			EndSelect
		Else
			Select
				Case GUICtrlRead($ganzenote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",1000 ")
					Beep($note, 1000)
					FileWrite($fht, $NotealsText & ", Ganze Note" & @CRLF)
					Laengeschreiben(1000)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Ganze Note", 1)
				Case GUICtrlRead($punktiertehalbe) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",750 ")
					Beep($note, 750)
					FileWrite($fht, $NotealsText & ", Punktierte Halbe Note" & @CRLF)
					Laengeschreiben(750)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Punktierte Halbe Note", 1)
				Case GUICtrlRead($halbenote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",500 ")
					Beep($note, 500)
					FileWrite($fht, $NotealsText & ", Halbe Note" & @CRLF)
					Laengeschreiben(500)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Halbe Note", 1)
				Case GUICtrlRead($punktierteviertel) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",375 ")
					Beep($note, 375)
					FileWrite($fht, $NotealsText & ", Punktierte Viertel Note" & @CRLF)
					Laengeschreiben(375)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Punktierte Viertel Note", 1)
				Case GUICtrlRead($viertelnote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",250 ")
					Beep($note, 250)
					FileWrite($fht, $NotealsText & ", Viertel Note" & @CRLF)
					Laengeschreiben(250)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Viertel Note", 1)
				Case GUICtrlRead($punktierteachtelnote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",188 ")
					Beep($note, 188)
					FileWrite($fht, $NotealsText & ", Punktierte Achtel Note" & @CRLF)
					Laengeschreiben(188)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Punktierte Achtel Note", 1)
				Case GUICtrlRead($achtelnote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",125 ")
					Beep($note, 125)
					FileWrite($fht, $NotealsText & ", Achtel Note" & @CRLF)
					Laengeschreiben(125)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Achtel Note", 1)
				Case GUICtrlRead($sechzentelnote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",63 ")
					Beep($note, 63)
					FileWrite($fht, $NotealsText & ", Sechzentel Note" & @CRLF)
					Laengeschreiben(63)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Sechzentel Note", 1)
				Case GUICtrlRead($zweiundreisigstelnote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",33 ")
					Beep($note, 33)
					FileWrite($fht, $NotealsText & ", Zweiundreisigstel Note" & @CRLF)
					Laengeschreiben(33)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Zweiundreisigstel Note", 1)
			EndSelect
		EndIf

	Else
		If GUICtrlRead($testmodus) = $GUI_CHECKED Then
			Select
				Case GUICtrlRead($ganzenote) = $GUI_CHECKED
					Beep($note, 2000)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Ganze Note", 1)
				Case GUICtrlRead($punktiertehalbe) = $GUI_CHECKED
					Beep($note, 1500)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Punktierte Halbe Note", 1)
				Case GUICtrlRead($halbenote) = $GUI_CHECKED
					Beep($note, 1000)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Halbe Note", 1)
				Case GUICtrlRead($punktierteviertel) = $GUI_CHECKED
					Beep($note, 750)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Punktierte Viertel Note", 1)
				Case GUICtrlRead($viertelnote) = $GUI_CHECKED
					Beep($note, 500)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Viertel Note", 1)
				Case GUICtrlRead($punktierteachtelnote) = $GUI_CHECKED
					Beep($note, 250)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Punktierte Achtel Note", 1)
				Case GUICtrlRead($achtelnote) = $GUI_CHECKED
					Beep($note, 125)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Achtel Note", 1)
				Case GUICtrlRead($sechzentelnote) = $GUI_CHECKED
					Beep($note, 63)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Sechzentel Note", 1)
				Case GUICtrlRead($zweiundreisigstelnote) = $GUI_CHECKED
					Beep($note, 33)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Zweiundreisigstel Note", 1)
			EndSelect
		Else
			Select
				Case GUICtrlRead($ganzenote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",2000 ")
					Beep($note, 2000)
					FileWrite($fht, $NotealsText & ", Ganze Note" & @CRLF)
					Laengeschreiben(2000)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Ganze Note", 1)
				Case GUICtrlRead($punktiertehalbe) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",1500 ")
					Beep($note, 1500)
					FileWrite($fht, $NotealsText & ", Punktierte Halbe Note" & @CRLF)
					Laengeschreiben(1500)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Punktierte Halbe Note", 1)
				Case GUICtrlRead($halbenote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",1000 ")
					Beep($note, 1000)
					FileWrite($fht, $NotealsText & ", Halbe Note" & @CRLF)
					Laengeschreiben(1000)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Halbe Note", 1)
				Case GUICtrlRead($punktierteviertel) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",750 ")
					Beep($note, 750)
					FileWrite($fht, $NotealsText & ", Punktierte Viertel Note" & @CRLF)
					Laengeschreiben(750)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Punktierte Viertel Note", 1)
				Case GUICtrlRead($viertelnote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",500 ")
					Beep($note, 500)
					FileWrite($fht, $NotealsText & ", Viertel Note" & @CRLF)
					Laengeschreiben(500)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Viertel Note", 1)
				Case GUICtrlRead($punktierteachtelnote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",376 ")
					Beep($note, 376)
					FileWrite($fht, $NotealsText & ", Punktierte Achtel Note" & @CRLF)
					Laengeschreiben(250)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Punktierte Achtel Note", 1)
				Case GUICtrlRead($achtelnote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",250 ")
					Beep($note, 250)
					FileWrite($fht, $NotealsText & ", Achtel Note" & @CRLF)
					Laengeschreiben(125)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Achtel Note", 1)
				Case GUICtrlRead($sechzentelnote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",126 ")
					Beep($note, 126)
					FileWrite($fht, $NotealsText & ", Sechzentel Note" & @CRLF)
					Laengeschreiben(63)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Sechzentel Note", 1)
				Case GUICtrlRead($zweiundreisigstelnote) = $GUI_CHECKED
					FileWrite($fh, "|" & $note & ",33 ")
					Beep($note, 33)
					FileWrite($fht, $NotealsText & ", Zweiunddreißigtel Note" & @CRLF)
					Laengeschreiben(33)
					_GUICtrlStatusBarSetText($StatusBar1, "LeN: " & $NotealsText & ", Zweiundreisigstel Note", 1)
			EndSelect
		EndIf
	EndIf
	$zeilenanzahl= $zeilenanzahl + 1
EndFunc   ;==>_write