• Настойчивость разработчика может определить график выполнения задания, но не сроки его завершения.

Metronome for Sound.PlayMusic

Программа — музыкальный метроном.

Вы можете скопировать указанный ниже код программы в IDE MS Small Basic и запустить:

' Metronome for Sound.PlayMusic()
' Copyright (c) 2014 Nonki Takahashi. All rights reserved.
'
GraphicsWindow.Title = "Metronome for Sound.PlayMusic()"
GraphicsWindow.BackgroundColor = "LightGray"
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(10, 14, "Tempo")
oTempo = Controls.AddTextBox(60, 10)
c4 = 0
tempo = 150  ' [quarter note/min]
Controls.SetTextBoxText(oTempo, tempo)
param = "x=10;y=40;"
Controls_AddLamp()
oLamp = retval
Controls.TextTyped = OnTextTyped
msec = 60000 / tempo / 2
Timer.Interval = msec
Timer.Tick = OnTick
While "True"
  Sound.PlayMusic("O4CDEFGFED")
EndWhile
Sub OnTextTyped
  tempo = Controls.GetTextBoxText(oTempo)
  Timer.Interval = 60000 / tempo / 2
EndSub
Sub OnTick
  Stack.PushValue("param", param)
  param = "lamp=" + oLamp + ";"
  Controls_LampToggle()
  param = Stack.PopValue("param")
EndSub
Sub Controls_AddLamp
  ' Controls | Add Lamp
  ' param["x"], param["y"] - position of lamp
  ' return retval - lamp id
  savedColor = GraphicsWindow.BrushColor
  savedPen = GraphicsWindow.PenWidth
  GraphicsWindow.PenWidth = 0
  nLamp = lamp["num"] + 1
  lamp["num"] = nLamp
  x = param["x"]
  y = param["y"]
  GraphicsWindow.BrushColor = "White"
  lamp[nLamp]["rw"] = Shapes.AddRectangle(21, 7)
  Shapes.Move(lamp[nLamp]["rw"], x + 3, y + 3)
  GraphicsWindow.BrushColor = "DimGray"
  lamp[nLamp]["rg"] = Shapes.AddRectangle(21, 7)
  Shapes.Move(lamp[nLamp]["rg"], x, y)
  GraphicsWindow.BrushColor = "#330000"
  lamp[nLamp]["rk"] = Shapes.AddRectangle(20, 6)
  Shapes.Move(lamp[nLamp]["rk"], x + 2, y + 2)
  GraphicsWindow.BrushColor = "Red"
  lamp[nLamp]["rr"] = Shapes.AddRectangle(20, 6)
  Shapes.Move(lamp[nLamp]["rr"], x + 2, y + 2)
  Shapes.HideShape(lamp[nLamp]["rr"])
  lamp[nLamp]["on"] = "False"
  retval = "Lamp" + nLamp
  GraphicsWindow.PenWidth = savedPen
  GraphicsWindow.BrushColor = savedColor
EndSub
Sub Controls_LampOn
  ' Controls | Lamp On
  ' param["lamp"] - the lamp id to be on
  Sound.PlayClick()
  iLamp = Text.GetSubTextToEnd(param["lamp"], 5)
  Shapes.ShowShape(lamp[iLamp]["rr"])
  lamp[iLamp]["on"] = "True"
EndSub
Sub Controls_LampOff
  ' Controls | Lamp Off
  iLamp = Text.GetSubTextToEnd(param["lamp"], 5)
  Shapes.HideShape(lamp[iLamp]["rr"])
  lamp[iLamp]["on"] = "False"
EndSub
Sub Controls_LampToggle
  ' Controls | Lamp Toggle
  ' param["lamp"] - the lamp id to be toggled
  iLamp = Text.GetSubTextToEnd(param["lamp"], 5)
  If lamp[iLamp]["on"] Then
    Controls_LampOff()
  Else
    Controls_LampOn()
  EndIf
EndSub

Страница этой программы на сайте SmallBasic: http://smallbasic.com/program/?VPW885


Поделиться: