Что нового

Генератор мелодий для встроенного динамика ПК

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
Пока ещё генератором назвать нельзя, но уже легче экспериментировать/манипулировать звуком. Может пригодится для создания мелодии какой-нибудь програмке в качестве завершения какого либо процесса или как многие любят добавить в окно "О программе".

Код:
;  @AZJIO 18.05.2010
#include <GUIConstants.au3>
#NoTrayIcon

Global $text

GUICreate("Генератор мелодий",270,360) ; размер окна
$text = ''
GUICtrlCreateLabel ('Эталон', 5,8,60,20)
$kamerton=GUICtrlCreateCombo ("", 80,5,60,20)
GUICtrlSetData(-1,'330|349|370|392|415|440|466|494|523|554|587|622', '440')
$FrequencyOut=GUICtrlCreateLabel ('', 150,8,60,20)

GUICtrlCreateLabel ('Октава: ', 5,38,60,20)
$oktava0=4
$oktavaL=GUICtrlCreateLabel ($oktava0, 50,38,10,20)
For $i = 1 To 8
	Assign('oktava' & $i, GUICtrlCreateButton ($i, $i*20+50,36,20,20))
Next

GUICtrlCreateLabel ('Длительность', 5,68,74,20)
$Duration=GUICtrlCreateCombo ("", 90,65,50,20)
GUICtrlSetData(-1,'1|2|3|4|5|6|7|8', '4')
GUICtrlCreateLabel ('/10 сек', 150,68,60,20)

$pause=GUICtrlCreateButton ("p", 245,133,20,20)


;Генерация кнопок
For $i = 1 To 12
	Assign('nota' & $i, GUICtrlCreateButton ($i, $i*20-15,110,20,20))
Next
For $i = 1 To 12
	Assign('addnota' & $i, GUICtrlCreateButton ($i, $i*20-15,133,20,20))
Next

$Edit1 = GUICtrlCreateEdit('', 5, 160, 260, 170)
$play=GUICtrlCreateButton ("Воспроизвести", 82,333,100,22)
$Clear=GUICtrlCreateButton ("Очистить", 192,333,60,22)
$Cancel=GUICtrlCreateButton ("Отмена", 10,333,60,22)

GUISetState ()

While 1
	$msg = GUIGetMsg()
	For $i = 1 To 12
		If $msg = Eval('nota' & $i) Then _nota($i)
		If $msg = Eval('addnota' & $i) Then _nota($i,1)
	Next
	For $i = 1 To 8
		If $msg = Eval('oktava' & $i) Then
			$oktava0=$i
			GUICtrlSetData($oktavaL, $i)
		EndIf
	Next
	Select
		Case $msg = $Cancel
			$text=StringRegExpReplace($text, '(?s)(^.*)\r\n(.*)\r\n$', '\1')&@CRLF
			If @Extended=0 Then $text=''
			GUICtrlSetData($Edit1, $text)
		Case $msg = $Clear
			$text=''
			GUICtrlSetData($Edit1, '')
		Case $msg = $play
			$text=GUICtrlRead ($Edit1)
			If $text<>'' Then
				$file = FileOpen(@TempDir&'\Beepfile.au3',2)
				FileWrite($file, $text)
				FileClose($file)
				$sAutoIt_Path = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt", "InstallDir")
				If @error Then ContinueLoop
				Run('"'&$sAutoIt_Path&'\AutoIt3.exe" "'&@TempDir&'\Beepfile.au3"', '', @SW_HIDE)
			EndIf
		Case $msg = $pause
			$Duration0=GUICtrlRead ($Duration)*100
			$text&='Sleep('&$Duration0&')'&@CRLF
			GUICtrlSetData($Edit1, $text)
		Case $msg = -3
			ExitLoop
	EndSelect
WEnd


Func _nota($i,$add=0)
$Duration0=GUICtrlRead ($Duration)*100
$kamerton0=GUICtrlRead ($kamerton)*2^(1/6)/16
$Frequency=Ceiling ($kamerton0*2^$oktava0*2^($i/12))
GUICtrlSetData($FrequencyOut, 'f: '&$Frequency&' Гц')
Beep($Frequency, $Duration0)
If $add=1 Then
$text=GUICtrlRead ($Edit1)
$text&='Beep('&$Frequency&','&$Duration0&')'&@CRLF
GUICtrlSetData($Edit1, $text)
EndIf
EndFunc
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
А вот первая мелодия

Код:
Beep(588,250)
Beep(660,250)
Beep(699,250)
Beep(660,250)
Beep(588,400)
Sleep(100)
Beep(524,250)
Beep(467,250)
Beep(440,500)
Sleep(1250)
Beep(588,250)
Beep(660,250)
Beep(699,250)
Beep(660,250)
Beep(588,400)
Sleep(100)
Beep(699,250)
Beep(784,250)
Beep(880,500)
Sleep(1000)
Beep(588,250)
Beep(588,250)
Beep(933,400)
Sleep(100)
Beep(880,400)
Sleep(100)
Beep(784,350)
Sleep(400)
Beep(880,400)
Sleep(100)
Beep(784,250)
Beep(699,250)
Beep(660,250)
Beep(699,400)
Sleep(100)
Beep(588,250)
Beep(660,250)
Beep(699,250)
Beep(699,250)
Beep(699,250)
Beep(784,250)
Beep(880,400)
Sleep(100)
Beep(660,250)
Beep(699,250)
Beep(588,500)
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
AZJIO
Я так понимаю ты разбираешься в музыке? :smile:
Так может лучше вместо цифр (1-12) сделать ноты (до, ре, ми...)? :smile:
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
SECTOR
Мне по цифрам даже легче, во первых генерировать кнопки удобней. Во вторых на всякий случай добавил сдвиг тона (эталон). В общем даже если добавить лейблы сверху над цифрами, для тех кто знает ноты это особого удобства не даст.
Ты меня натолкнул на идею, сделать функцию в которую передавать ноту, октаву, длительность. При таком раскладе даже программа не нужна, всё будет рассчитываться в функции.

Код:
Beep(1865,400)
Beep(1245,400)
Beep(2218,400)
Beep(1976,600)
Beep(2218,200)
Beep(1976,200)
Beep(1865,200)
Beep(1662,200)
Beep(1480,200)
Beep(1662,400)
Beep(1662,400)
Beep(1109,400)
Beep(1976,400)
Beep(1865,600)
Beep(1976,200)
Beep(1865,200)
Beep(1662,200)
Beep(1480,200)
Beep(1397,200)
Beep(1480,400)
Beep(1865,400)
Beep(1245,400)
Beep(2218,400)
Beep(1976,600)
Beep(2218,200)
Beep(1976,200)
Beep(1865,200)
Beep(1662,200)
Beep(1480,200)
Beep(1662,400)
Beep(1662,400)
Beep(1109,400)
Beep(1976,400)
Beep(1865,200)
Beep(1976,200)
Beep(1865,200)
Beep(1976,200)
Beep(2218,200)
Beep(1976,200)
Beep(1865,200)
Beep(1662,200)
Beep(1865,400)

Обновил генератор мелодий, теперь при редактировании в поле Edit данные сохраняются в переменную.

Вот как перенести из MIDI-файла



-------------------------------------------------------------------

Ну вот, с функцией сделал.

Код:
_Beep(3,5,250,0)
_Beep(5,5,250,0)
_Beep(6,5,250,0)
_Beep(5,5,250,0)
_Beep(3,5,400,100)
_Beep(1,5,250,0)
_Beep(11,4,250,0)
_Beep(10,4,500,1250)
_Beep(3,5,250,0)
_Beep(5,5,250,0)
_Beep(6,5,250,0)
_Beep(5,5,250,0)
_Beep(3,5,400,100)
_Beep(6,5,250,0)
_Beep(8,5,250,0)
_Beep(10,5,500,1000)
_Beep(3,5,250,0)
_Beep(3,5,250,0)
_Beep(11,5,400,100)
_Beep(10,5,400,100)
_Beep(8,5,650,100)
_Beep(10,5,400,100)
_Beep(8,5,250,0)
_Beep(6,5,250,0)
_Beep(5,5,250,0)
_Beep(6,5,400,100)
_Beep(3,5,250,0)
_Beep(5,5,250,0)
_Beep(6,5,250,0)
_Beep(6,5,250,0)
_Beep(6,5,250,0)
_Beep(8,5,250,0)
_Beep(10,5,400,100)
_Beep(5,5,250,0)
_Beep(6,5,250,0)
_Beep(3,5,500,0)


Func _Beep($nota,$oktava=4,$Duration=200,$pause=0)
	$Frequency=Ceiling (440*2^($nota/12+$oktava+1/6-4))
	Beep($Frequency, $Duration)
	If $pause<>0 Then Sleep($pause)
EndFunc

Можно ещё константы добавить типа
Код:
$C=1 ; до
$Cp=2 ; до-диез
$D=3 ; ре
$Dp=4 ; ре-диез

и т.д.
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Прикольно получилось :smile:
 

Fever

Скриптер
Сообщения
308
Репутация
112
хех...жаль на ноутбуке не послушать=((
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
Код:
_Beep(5,5,150)
_Beep(7,5,150)
_Beep(11,5,150)
_Beep(7,5,150)
_Beep(11,5,150)
_Beep(12,5,150)
_Beep(11,5,500,100)
_Beep(7,5,150,150)
_Beep(7,5,150)
_Beep(5,5,300,150)
_Beep(7,5,300)
_Beep(5,5,75,75)
_Beep(7,5,300)
_Beep(5,5,75,75)
_Beep(7,5,100,150)
_Beep(7,5,75,75)
_Beep(8,5,75,75)
_Beep(8,5,150,150)
_Beep(8,5,200,400)

_Beep(5,5,150)
_Beep(7,5,150)
_Beep(11,5,150)
_Beep(7,5,150)
_Beep(11,5,150)
_Beep(12,5,150)
_Beep(11,5,450)
_Beep(12,5,100)
_Beep(11,5,50)
_Beep(7,5,150,150)
_Beep(7,5,150)
_Beep(5,5,300,150)
_Beep(7,5,300)
_Beep(5,5,75,75)
_Beep(7,5,300)
_Beep(5,5,75,75)
_Beep(5,5,200,100)
_Beep(7,5,75,75)
_Beep(8,5,75,75)
_Beep(8,5,150,150)
_Beep(8,5,200,400)


_Beep(7,3,150,150)
_Beep(7,3,200,100)
_Beep(5,3,100,50)
_Beep(7,3,250,50)
_Beep(5,3,100,50)
_Beep(7,3,200,100)
_Beep(7,3,250,500)

_Beep(5,3,100,50)
_Beep(7,3,150,150)
_Beep(7,3,200,100)
_Beep(5,3,100,50)
_Beep(7,3,250,50)
_Beep(5,3,100,50)
_Beep(7,3,200,100)
_Beep(7,3,250,50)

_Beep(8,3,50,100)
_Beep(8,3,50,100)
_Beep(8,3,50,100)
_Beep(8,3,50,100)

_Beep(7,3,150,150)
_Beep(7,3,200,100)
_Beep(5,3,100,50)
_Beep(7,3,250,50)
_Beep(5,3,100,50)
_Beep(7,3,200,100)
_Beep(7,3,250,500)

_Beep(5,3,100,50)
_Beep(7,3,150,150)
_Beep(7,3,200,100)
_Beep(5,3,100,50)
_Beep(7,3,250,50)
_Beep(5,3,100,50)
_Beep(7,3,200,100)
_Beep(7,3,250,50)

Func _Beep($nota,$oktava=4,$Duration=200,$pause=0)
	$Frequency=Ceiling (440*2^($nota/12+$oktava+1/6-4))
	Beep($Frequency, $Duration)
	If $pause<>0 Then Sleep($pause)
EndFunc



Код:
; вариация 1
_Beep(5,5,130)
_Beep(7,5,130)
_Beep(11,5,130)
_Beep(7,5,130)
_Beep(11,5,130)
_Beep(12,5,130)
_Beep(11,5,450,70)
_Beep(7,5,130,130)
_Beep(7,5,130)
_Beep(5,5,250,130)
_Beep(7,5,260)
_Beep(5,5,65,65)
_Beep(7,5,260)
_Beep(5,5,65,65)
_Beep(7,5,86,130)
_Beep(7,5,65,65)
_Beep(8,5,65,65)
_Beep(8,5,130,130)
_Beep(8,5,170,350)

_Beep(5,5,130)
_Beep(7,5,130)
_Beep(11,5,130)
_Beep(7,5,130)
_Beep(11,5,130)
_Beep(12,5,130)
_Beep(11,5,390)
_Beep(12,5,86)
_Beep(11,5,43)
_Beep(7,5,130,130)
_Beep(7,5,130)
_Beep(5,5,250,130)
_Beep(7,5,260)
_Beep(5,5,65,65)
_Beep(7,5,260)
_Beep(5,5,65,65)
_Beep(5,5,170,86)
_Beep(7,5,65,65)
_Beep(8,5,65,65)
_Beep(8,5,130,130)
_Beep(8,5,170,350)


; вариация 2
_Beep(7,3,130,130)
_Beep(7,3,170,86)
_Beep(5,3,86,43)
_Beep(7,3,217,43)
_Beep(5,3,86,43)
_Beep(7,3,170,86)
_Beep(7,3,216,434)

_Beep(5,3,86,43)
_Beep(7,3,130,130)
_Beep(7,3,170,86)
_Beep(5,3,86,43)
_Beep(7,3,217,43)
_Beep(5,3,86,43)
_Beep(7,3,170,86)
_Beep(7,3,217,43)

_Beep(8,3,43,86)
_Beep(8,3,43,86)
_Beep(8,3,43,86)
_Beep(8,3,43,86)

_Beep(7,3,130,130)
_Beep(7,3,170,86)
_Beep(5,3,86,43)
_Beep(7,3,217,43)
_Beep(5,3,86,43)
_Beep(7,3,170,86)
_Beep(7,3,216,434)

_Beep(5,3,86,43)
_Beep(7,3,130,130)
_Beep(7,3,170,86)
_Beep(5,3,86,43)
_Beep(7,3,217,43)
_Beep(5,3,86,43)
_Beep(7,3,170,86)
_Beep(7,3,217,43)

_Beep(8,3,520)

; вариация 3
_Beep(12,3,390)
_Beep(7,4,390)
_Beep(6,4,520)
_Beep(5,4,450)
_Beep(3,4,330)

_Beep(12,3,390)
_Beep(7,4,390)
_Beep(6,4,520)
_Beep(5,4,450)
_Beep(3,4,330)

_Beep(5,3,390)
_Beep(12,3,390)
_Beep(11,3,520)
_Beep(10,3,450)
_Beep(8,3,330)

_Beep(5,3,390)
_Beep(12,3,390)
_Beep(11,3,520)
_Beep(10,3,450)
_Beep(8,3,330)

Func _Beep($nota,$oktava=4,$Duration=200,$pause=0)
	$Frequency=Ceiling (440*2^($nota/12+$oktava+1/6-4))
	Beep($Frequency, $Duration)
	If $pause<>0 Then Sleep($pause)
EndFunc
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
Код:
; группа Europe

Global $t=1.3 ; коэффициент темпа
Global $f=0.5 ; коэффициент частоты
HotKeySet('{ESC}', "_Quit") ;по желанию выход по ESC

_Beep(12,5,50)
_Beep(3,6,50)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(7,6,100)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(7,6,100)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(7,6,100)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(7,6,100)

_Beep(12,5,50)
_Beep(3,6,50)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(7,6,200)


_Beep(2,6,50)
_Beep(5,6,50)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(8,6,100)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(8,6,100)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(8,6,100)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(8,6,100)

_Beep(2,6,50)
_Beep(5,6,50)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(8,6,200)


_Beep(3,6,50)
_Beep(7,6,50)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(10,6,100)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(10,6,100)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(10,6,100)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(10,6,100)

_Beep(3,6,50)
_Beep(7,6,50)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(10,6,200)



_Beep(8,5,100)
_Beep(10,5,100)
_Beep(12,5,100)
_Beep(8,5,100)
_Beep(10,5,100)
_Beep(12,5,100)
_Beep(8,5,100)
_Beep(10,5,100)
_Beep(12,5,100)
_Beep(10,5,100)
_Beep(8,5,100)
_Beep(7,5,100)
_Beep(10,5,100)
_Beep(8,5,100)
_Beep(7,5,100)
_Beep(3,5,100)
_Beep(5,5,600)
_Beep(8,5,90,10)
_Beep(8,5,90,10)
_Beep(8,5,190,10)
_Beep(7,5,50)
_Beep(8,5,50)
_Beep(7,5,100)
_Beep(5,5,200)
_Beep(3,5,190,10)
_Beep(3,5,390,10)
_Beep(2,5,390,10)
_Beep(12,4,390,10)
_Beep(10,4,390,10)

_Beep(12,5,390,10)
_Beep(10,5,100)
_Beep(7,5,100)
_Beep(10,5,100)
_Beep(7,5,200)
_Beep(12,5,100)
_Beep(10,5,100)
_Beep(7,5,100)
_Beep(9,5,100)
_Beep(5,5,100)
_Beep(7,5,190,10)
_Beep(7,5,100)
_Beep(5,5,100)
_Beep(3,5,100)
_Beep(12,4,100)
_Beep(5,5,100)
_Beep(12,4,100)
_Beep(3,5,100)
_Beep(5,5,890,10)



_Beep(12,5,50)
_Beep(3,6,50)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(7,6,100)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(7,6,100)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(7,6,100)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(7,6,100)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(12,5,50)
_Beep(3,6,50)
_Beep(7,6,200)


_Beep(2,6,50)
_Beep(5,6,50)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(8,6,100)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(8,6,100)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(8,6,100)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(8,6,100)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(2,6,50)
_Beep(5,6,50)
_Beep(8,6,200)


_Beep(3,6,50)
_Beep(7,6,50)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(10,6,100)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(10,6,100)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(10,6,100)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(10,6,100)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(3,6,50)
_Beep(7,6,50)
_Beep(10,6,200)


_Beep(8,5,100)
_Beep(10,5,100)
_Beep(12,5,100)
_Beep(8,5,100)
_Beep(10,5,100)
_Beep(12,5,100)
_Beep(8,5,100)
_Beep(10,5,100)
_Beep(12,5,100)
_Beep(10,5,100)
_Beep(8,5,100)
_Beep(7,5,100)
_Beep(10,5,100)
_Beep(8,5,100)
_Beep(7,5,100)
_Beep(3,5,100)
_Beep(5,5,600)
_Beep(8,5,90,10)
_Beep(8,5,90,10)
_Beep(8,5,190,10)
_Beep(7,5,100)

_Beep(8,5,50)
_Beep(7,5,50)
_Beep(5,5,200)
_Beep(3,5,200)

_Beep(12,5,390,10)
_Beep(10,5,390,10)
_Beep(3,5,390,10)
_Beep(5,5,390,10)
_Beep(7,5,1590,10)
_Beep(9,5,600)
_Beep(12,5,200)
_Beep(9,5,800)

Func _Beep($nota,$oktava=4,$Duration=200,$pause=0)
	$Frequency=Ceiling (440*2^($nota/12+$oktava+1/6-4))
	Beep($Frequency*$f, $Duration*$t)
	If $pause<>0 Then Sleep($pause*$t)
EndFunc

Func _Quit()
    Exit
EndFunc

Добавил коэффициенты частоты и темпа. Динамик на некоторых частотах забивает у меня, поэтому пришлось частоту изменить коэффициентом.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
я во всем этом не секу вообще ничего ;D
ни слуха, ни умений и все прочее... но тут подумал, а нельзя ли скармливать скрипту-идентификатору какой-нибудь муз. файл, скажем mp3, а он бы выдавал подобный скрипт-проигрыватель, с уже предустновленными цифрами в _Beep ? :whistle:
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
Kaster
Над переводом MP3 в MIDI бьются уже многие, реального пока нету. Можно конвертировать синусоидальную волну, но не треки, где звучат множество инструментов, каждый из которых содержит свой тембр, соответственно комбинацию складывающихся грамоник.
Я вот пытался разобраться с форматом MIDI, чтоб найти способ хотя бы упрощения конвертирования, скачиваю редакторы и смотрю, в каких из них можно скопировать таблицу мета-событий в текстовый файл, чтоб далее обработать скриптом (регулярным выражением). Там указывается время воспроизведения нот по реальному времени и по долям такта, высота и продолжительность звучание. Последнее не понадобится так как пищалка не многоканальное устройство и начало следующей ноты обязательно обрывает предыдущую.
Сейчас в миди коллекциях практически можно найти любые треки. Вот описание, ссылка
 

rollex

Новичок
Сообщения
66
Репутация
1
Тема шикарная ;D

Код:
; В траве сибел кузнечик. Да, мне медведь ухо оттоптал =)

Global $t=1.3 ; коэффициент темпа
Global $f=0.5 ; коэффициент частоты
HotKeySet('{ESC}', "_Quit") ;по желанию выход по ESC

_Beep(5,4,300) ; в тра-
_Beep(7,4,300) ; ве
_Beep(5,4,300) ; си-
_Beep(7,4,300) ; дел
_Beep(5,4,300) ; куз-
_Beep(9,4,200) ; не-
_Beep(9,4,200,250) ; чик

_Beep(5,4,300) ; сов-
_Beep(7,4,300) ; сем
_Beep(5,4,300) ; как
_Beep(7,4,300) ; о-
_Beep(5,4,300) ; гу-
_Beep(9,4,200) ; ре-
_Beep(9,4,200,250) ; чик

; а дальше я забыл...

_Beep(5,4,300) ; сов-
_Beep(6,5,300) ; сем
_Beep(5,4,300) ; как
_Beep(6,5,300) ; о-
_Beep(5,4,300) ; гу-
_Beep(9,5,200) ; ре-


Func _Beep($nota,$oktava=4,$Duration=200,$pause=0)
    $Frequency=Ceiling (440*2^($nota/12+$oktava+1/6-4))
    Beep($Frequency*$f, $Duration*$t)
    If $pause<>0 Then Sleep($pause*$t)
EndFunc

Func _Quit()
    Exit
EndFunc
Простите, не удержался :whistle:
 

ziggy17

Новичок
Сообщения
8
Репутация
0
ну держите в продолжение темы "Happy Birthday"

Код:
;C
Beep(261.6,200)
Sleep(20)
;C
Beep(261.6,200)
Sleep(20)
;D
Beep(293.7,400)
;C
Beep(261.6,400)
;F
Beep(349.2,400)
;E
Beep(329.6,400)
Sleep(400)
 

asdf8

Скриптер
Сообщения
564
Репутация
152
Мог бы, кто нибудь, подобрать мелодию, которая звучит перед объявлениями в аэропорту?
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
В любом случае её слышать надо. Эту?
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
asdf8
Вроде так
Код:
Global $nTempo=1
Global $iTone=0
HotKeySet("{ESC}", "_Quit")

_Beep(12,4,280)
_Beep(4,5,280)
_Beep(7,5,280)
_Beep(12,5,1000)

Func _Beep($iNote,$iOctave=4,$iDuration=200,$iPause=0)
	$iFrequency=440*2^(($iNote+$iTone)/12+$iOctave+1/6-4)
	Beep($iFrequency, $iDuration/$nTempo)
	If $iPause<>0 Then Sleep($iPause/$nTempo)
EndFunc

Func _Quit()
    Exit
EndFunc

Но конечно на пищалке не звучит как хотелось бы.
Можно ещё на октаву сдвинуть $iTone=-12
 

Dimmak

Знающий
Сообщения
185
Репутация
9
Подскажите, пожалуйста, как получить список доступных миди входов-выходов и задать определенный порт в _midiOutOpen () в Win 7?
:scratch:
Вопрос решен. AZJIO спасибо в очередной раз! :beer:
http://www.autoitscript.com/forum/topic/115869-beep/
 
Верх