Computer (Beep) Melodie

  • Hi,

    ich habe mal aus Langeweile ein Programm geschrieben,
    mitdem ihr aus den Computer-Tönen (nicht die Lautsprecher)
    eine Melodie abspielen lassen könnt. :D

    Sinnlos, aber lustig.^^

    Computer-Melodie Code
    [autoit]


    #include <EditConstants.au3>

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

    $c_ton = 264

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

    $3c = "Beep($c_ton*3,60/$zeit*1000)"
    $3cis = "Beep($c_ton*25/24*3,60/$zeit*1000)"
    $3d = "Beep($c_ton*9/8*3,60/$zeit*1000)"
    $3es = "Beep($c_ton*6/5*3,60/$zeit*1000)"
    $3e = "Beep($c_ton*5/4*3,60/$zeit*1000)"
    $3f = "Beep($c_ton*4/3*3,60/$zeit*1000)"
    $3fis = "Beep($c_ton*25/18*3,60/$zeit*1000)"
    $3g = "Beep($c_ton*3/2*3,60/$zeit*1000)"
    $3as = "Beep($c_ton*8/5*3,60/$zeit*1000)"
    $3a = "Beep($c_ton*5/3*3,60/$zeit*1000)"
    $3b = "Beep($c_ton*9/5*3,60/$zeit*1000)"
    $3h = "Beep($c_ton*15/8*3,60/$zeit*1000)"

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

    $2c = "Beep($c_ton*2,60/$zeit*1000)"
    $2cis = "Beep($c_ton*25/24*2,60/$zeit*1000)"
    $2d = "Beep($c_ton*9/8*2,60/$zeit*1000)"
    $2es = "Beep($c_ton*6/5*2,60/$zeit*1000)"
    $2e = "Beep($c_ton*5/4*2,60/$zeit*1000)"
    $2f = "Beep($c_ton*4/3*2,60/$zeit*1000)"
    $2fis = "Beep($c_ton*25/18*2,60/$zeit*1000)"
    $2g = "Beep($c_ton*3/2*2,60/$zeit*1000)"
    $2as = "Beep($c_ton*8/5*2,60/$zeit*1000)"
    $2a = "Beep($c_ton*5/3*2,60/$zeit*1000)"
    $2b = "Beep($c_ton*9/5*2,60/$zeit*1000)"
    $2h = "Beep($c_ton*15/8*2,60/$zeit*1000)"

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

    $c = "Beep($c_ton,60/$zeit*1000)"
    $cis = "Beep($c_ton*25/24,60/$zeit*1000)"
    $d = "Beep($c_ton*9/8,60/$zeit*1000)"
    $es = "Beep($c_ton*6/5,60/$zeit*1000)"
    $e = "Beep($c_ton*5/4,60/$zeit*1000)"
    $f = "Beep($c_ton*4/3,60/$zeit*1000)"
    $fis = "Beep($c_ton*25/18,60/$zeit*1000)"
    $g = "Beep($c_ton*3/2,60/$zeit*1000)"
    $as = "Beep($c_ton*8/5,60/$zeit*1000)"
    $a = "Beep($c_ton*5/3,60/$zeit*1000)"
    $b = "Beep($c_ton*9/5,60/$zeit*1000)"
    $h = "Beep($c_ton*15/8,60/$zeit*1000)"

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

    GUICreate("Computer-Melodie", 240,100)

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

    $3c_button = GUICtrlCreateButton("c",0,0, 20, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $3cis_button = GUICtrlCreateButton("c2",20,0, 20, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)
    $3d_button = GUICtrlCreateButton("d",40,0, 20, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $3es_button = GUICtrlCreateButton("d2",60,0, 20, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)
    $3e_button = GUICtrlCreateButton("e",80,0, 20, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $3f_button = GUICtrlCreateButton("f",100,0, 20, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $3fis_button = GUICtrlCreateButton("f2",120,0,0, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)
    $3g_button = GUICtrlCreateButton("g",140,0,0, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $3as_button = GUICtrlCreateButton("g2",160,0,0, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)
    $3a_button = GUICtrlCreateButton("a",180,0,0, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $3b_button = GUICtrlCreateButton("h",200,0,0, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $3h_button = GUICtrlCreateButton("h2",220,0,0, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)

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

    $2c_button = GUICtrlCreateButton("c",0,20, 20, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $2cis_button = GUICtrlCreateButton("c2",20,20, 20, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)
    $2d_button = GUICtrlCreateButton("d",40,20, 20, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $2es_button = GUICtrlCreateButton("d2",60,20, 20, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)
    $2e_button = GUICtrlCreateButton("e",80,20, 20, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $2f_button = GUICtrlCreateButton("f",100,20, 20, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $2fis_button = GUICtrlCreateButton("f2",120,20,0, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)
    $2g_button = GUICtrlCreateButton("g",140,20,0, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $2as_button = GUICtrlCreateButton("g2",160,20,0, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)
    $2a_button = GUICtrlCreateButton("a",180,20,0, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $2b_button = GUICtrlCreateButton("h",200,20,0, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $2h_button = GUICtrlCreateButton("h2",220,20,0, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)

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

    $c_button = GUICtrlCreateButton("c",0,40, 20, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $cis_button = GUICtrlCreateButton("c2",20,40, 20, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)
    $d_button = GUICtrlCreateButton("d",40,40, 20, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $es_button = GUICtrlCreateButton("d2",60,40, 20, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)
    $e_button = GUICtrlCreateButton("e",80,40, 20, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $f_button = GUICtrlCreateButton("f",100,40, 20, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $fis_button = GUICtrlCreateButton("f2",120,40,0, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)
    $g_button = GUICtrlCreateButton("g",140,40,0, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $as_button = GUICtrlCreateButton("g2",160,40,0, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)
    $a_button = GUICtrlCreateButton("a",180,40,0, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $b_button = GUICtrlCreateButton("h",200,40,0, 20)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $h_button = GUICtrlCreateButton("h2",220,40,0, 20)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x808080)

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

    $input = GUICtrlCreateInput("", 0, 60, 220)

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

    $wait_button = GUICtrlCreateButton("P",220,60, 20, 20)

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

    GUICtrlCreateLabel("BPM:", 160, 83)

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

    $zeit_input = GUICtrlCreateInput("60", 190, 80, 50, -1, $ES_NUMBER)
    $wait = "Sleep(60/$zeit*1000)"

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

    $test_button = GUICtrlCreateButton("Abspielen",0,80,130, 20)

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

    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit

    ;~ 3
    Case $3c_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$3c & ")

    Case $3cis_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$3cis & ")

    Case $3d_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$3d & ")

    Case $3es_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$3es & ")

    Case $3e_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$3e & ")

    Case $3f_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$3f & ")

    Case $3fis_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$3fis & ")

    Case $3g_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$3g & ")

    Case $3as_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$3as & ")

    Case $3a_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$3a & ")

    Case $3b_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$3b & ")

    Case $3h_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$3h & ")
    ;~ End 3

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


    ;~ 2
    Case $2c_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$2c & ")

    Case $2cis_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$2cis & ")

    Case $2d_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$2d & ")

    Case $2es_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$2es & ")

    Case $2e_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$2e & ")

    Case $2f_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$2f & ")

    Case $2fis_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$2fis & ")

    Case $2g_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$2g & ")

    Case $2as_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$2as & ")

    Case $2a_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$2a & ")

    Case $2b_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$2b & ")

    Case $2h_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$2h & ")
    ;~ End 2

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


    ;~ 1
    Case $c_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$c & ")

    Case $cis_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$cis & ")

    Case $d_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$d & ")

    Case $es_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$es & ")

    Case $e_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$e & ")

    Case $f_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$f & ")

    Case $fis_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$fis & ")

    Case $g_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$g & ")

    Case $as_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$as & ")

    Case $a_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$a & ")

    Case $b_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$b & ")

    Case $h_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$h & ")
    ;~ End 1

    Case $wait_button
    GUICtrlSetData($input, GUICtrlRead($input) & "$wait & ")

    Case $test_button

    $zeit = GUICtrlRead($zeit_input)
    If $zeit = "" or 0 Then
    $zeit = 60
    Endif
    $playarray = StringSplit(GUICtrlRead($input), " & ", 1)
    For $i = 1 to $playarray[0] - 1
    Execute(Execute($playarray[$i]))
    Next

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

    EndSwitch
    WEnd

    [/autoit]

    Erklärung:

    • Die Buttons (Weiß & Grau) sind die Klaviatur.
    • Der Button "P" neben dem Textfeld bedeutet einen Pauseschritt.
    • In dem Textfeld wird die Melodie eingetragen, nachTastendruck.
    • Bei BPM (Beats per Minute) wird die Abspielgeschwindigkeit eingetragen.


    ACHTUNG!
    Während dem Abspielen einer Melodie kann es sein, dass dieser Vorgang nicht
    gestoppt werden kann! Warum auch immer..

    Viel Spaß damit. :P


    MfG
    qixx

  • Das wird (bei meinem) auf die Lautsprecher übertragen!
    mfg tobi_girst

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • bei mir wirds nicht übertragen (auch notebook)
    und das der sich nciht beenden lässt liegt wohl daran das der in ner schleife hängt ^^
    glaub ich zumindest ^^ aber sonst scheints ja lustig zu sein ^^

  • lol...sowas wollt ich mir auch mal basteln^^

    schau dir mal arrays an, damit kannste dein Skript locker um 60 % kürzen

  • Ich bin mir mit Arrays leider noch nicht so
    sicher, wie das funktioniert.^^
    Ich bin schon dabei das zu lernen, aber das
    scheint sehr komplex.

    Melodie für's Programm


    Ich habe mal eine Melodie erstellt.
    Diese einfach in das Textfeld kopieren und starten. :P
    Vielleicht kennt es ja jemand. (Frontliner - Spacer)
    Leider sind 1-2 falsche Töne drin. :D

    $3c & $as & $2as & $2es & $wait & $2as & $3c & $3es & $3c & $as & $2as & $2es & $2g & $3f & $3es & $3d & $3c & $2c & $3c & $2g & $wait & $2g & $3c & $3es & $3d & $b & $3d & $2b & $3d & $3es & $3d & $2b & $3c & $as & $2as & $2es & $wait & $2as & $3c & $3es & $3c & $as & $2as & $2es & $2g & $2as & $2b & $3c & $3d & $g & $3d & $2g & $wait & $3d & $2h & $2g & $2h & $h & $2h & $2g & $2es & $2g & $2as & $2b


    Wenn ihr Melodien erstellt, könnt ihr diese
    ja hier posten. ;)


    MfG
    qixx

  • Er kann natürlich nach jedem Ton ne If abfrage einbauen ob der button gedruckt wurde...
    Allerdings nicht sonderlich geistreich ^^

  • Er kann natürlich nach jedem Ton ne If abfrage einbauen ob der button gedruckt wurde...
    Allerdings nicht sonderlich geistreich ^^

    Ja, so habe ich das sonst auch gemacht, aber davon will ich abkommen! :D
    Außerdem könnte man damit keinen Ton beenden, sollte man z.B. die BPM
    auf 1 gestellt haben.. Dann wird der Ton noch 1 Minute weiterlaufen. xD


    MfG
    qixx