Инструменты пользователя

Инструменты сайта


msx:basic_dialogue_programming_language:006

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:basic_dialogue_programming_language:006 [2022-09-17 16:14]
GreyWolf
msx:basic_dialogue_programming_language:006 [2023-02-19 16:19] (текущий)
GreyWolf
Строка 6: Строка 6:
 <WRAP group  99%> <WRAP group  99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 У меня под руками оказался жалкий спинет;​ и вскоре я начал писать ноты, вот и все. У меня под руками оказался жалкий спинет;​ и вскоре я начал писать ноты, вот и все.
 <WRAP rightalign>​ <WRAP rightalign>​
Строка 348: Строка 348:
 <WRAP group  99%> <WRAP group  99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 А Вы ноктюрн сыграть могли бы\\ А Вы ноктюрн сыграть могли бы\\
 На флейте водосточных труб? На флейте водосточных труб?
Строка 445: Строка 445:
 <​code>​ <​code>​
 10 PLAY A$,B$,C$ 10 PLAY A$,B$,C$
-20 IF PLAY(0) THEN 20 ELSE READ A$:PLAY A$'​Выполнение программы не продолжится,​ пока музыка не будет сыграна!+20 IF PLAY(0) THEN 20 ELSE READ A$:PLAY A$ 
 +   '​Выполнение программы не продолжится,​ пока музыка не будет сыграна!
 </​code>​ </​code>​
  
Строка 625: Строка 626:
 20 '"​Во саду ли,в огороде"​ (Русская народная песня). 20 '"​Во саду ли,в огороде"​ (Русская народная песня).
 30 FOR I=1 TO 2 30 FOR I=1 TO 2
-40 PLAY"​T100sm800O6L8ffeedddeffeedddR8ccO5bbaaabO6ccO5bbaaa","​T100sm800O4L8dfaedfdfdfaedfaR8aeeg+aeaeaeeg+aee","​O4L8T100sm800daac+dadadaac+dafR8acebacacacebacc"​ +40 PLAY"​T100sm800O6L8ffeedddeffeedddR8ccO5bbaaabO6ccO5bbaaa",​ 
-50 A$="​T100s2m2000O5L16fedfedc+edO4abO5c+dc+defedfedc+eddddcO4BaO5CO4bag+baef+g+ag+abO5cO4baO5cO4bag+bA4"​+   "​T100sm800O4L8dfaedfdfdfaedfaR8aeeg+aeaeaeeg+aee",​ 
 +   "​O4L8T100sm800daac+dadadaac+dafR8acebacacacebacc"​ 
 +50 A$="​T100s2m2000O5L16fedfedc+edO4abO5c+dc+defedfedc+eddddcO4BaO5CO4bag+ 
 +   baef+g+ag+abO5cO4baO5cO4bag+bA4"​
 60 B$="​t100s2m2000O4L16ddffaaeeddffddffddffaaeeddffaaeeeeg+g+aaeeaaeeaaeeeeg+g+ccee"​ 60 B$="​t100s2m2000O4L16ddffaaeeddffddffddffaaeeddffaaeeeeg+g+aaeeaaeeaaeeeeg+g+ccee"​
 70 C$="​t100s2m2000O4L16ddaaR16r16c+c+ddaaddaaddaaR16r16c+c+ddaaaacceebbaaccaaccaacceebbeecc"​ 70 C$="​t100s2m2000O4L16ddaaR16r16c+c+ddaaddaaddaaR16r16c+c+ddaaaacceebbaaccaaccaacceebbeecc"​
Строка 639: Строка 643:
 50 C$="​sm2000t150O3L8f+4f+4r8er8aR8AR8AR8ER8AR8AR8A"​ 50 C$="​sm2000t150O3L8f+4f+4r8er8aR8AR8AR8ER8AR8AR8A"​
 60 PLAY A$,B$,C$ 60 PLAY A$,B$,C$
-70 A$="​O4L8f+ef+dO3aO4df+aL16gf+geL8D4ggB4aO5cO4B4":​B$="​O3L8ac+df+df+df+ac+d4gbO4g4f+f+g4":​C$="​O3L8r8ER8AR8AR8AR8EF+4R8DD4dAD4"​+70 A$="​O4L8f+ef+dO3aO4df+aL16gf+geL8D4ggB4aO5cO4B4":​B$="​O3L8ac+df+df+df+ac+d4gbO4g4f+f+g4":​ 
 +   C$="​O3L8r8ER8AR8AR8AR8EF+4R8DD4dAD4"​
 80 PLAY A$,B$,C$ 80 PLAY A$,B$,C$
-90 A$="​O4L8bO5d4O4bO5l16cdcO4al8bgdgb4aO5cO4b4bO5d4O4bO5cO4B16A16g4":​B$="​O4L8gb4O3bdf+g4df+O4g4O3df+O4g4gO3bgbdf+O4d4":​C$="​O3L8gO4g4O3ddad4gdO4d4dad4gdgdR8ab4"​+90 A$="​O4L8bO5d4O4bO5l16cdcO4al8bgdgb4aO5cO4b4bO5d4O4bO5cO4B16A16g4":​ 
 +   B$="​O4L8gb4O3bdf+g4df+O4g4O3df+O4g4gO3bgbdf+O4d4":​ 
 +   C$="​O3L8gO4g4O3ddad4gdO4d4dad4gdgdR8ab4"​
 100 PLAY A$,B$,C$ 100 PLAY A$,B$,C$
 110 NEXT- 110 NEXT-
Строка 1161: Строка 1168:
 30 FOR I=6 TO 13:READ A:​SOUNDI,​A:​NEXT 30 FOR I=6 TO 13:READ A:​SOUNDI,​A:​NEXT
 40 DATA 31,​7,​16,​16,​16,​250,​5,​14 40 DATA 31,​7,​16,​16,​16,​250,​5,​14
-50 FOR M=5 TO 2 STEP -1:RESTORE 70:FOR J=1 TO 12:FOR I=1 TO 200:​NEXT:​READ A:SOUND 11,A:SOUND 12,​M:​NEXT:​NEXT +50 FOR M=5 TO 2 STEP -1:RESTORE 70:FOR J=1 TO 12:FOR I=1 TO 200:​NEXT:​READ A: 
-60 SOUND 7,&​B00001100:​SOUND 0,78:SOUND 1,6:SOUND 2,78:SOUND 3,6:SOUND 13,14:SOUND 11,11:SOUND 12,0:FOR L=1 TO 1500:​NEXT:​BEEP:​END+   SOUND 11,A:SOUND 12,​M:​NEXT:​NEXT 
 +60 SOUND 7,&​B00001100:​SOUND 0,78:SOUND 1,6:SOUND 2,78:SOUND 3,6:SOUND 13,14: 
 +   SOUND 11,11:SOUND 12,0:FOR L=1 TO 1500:​NEXT:​BEEP:​END
 70 DATA 225,​200,​180,​160,​150,​125,​100,​80,​50,​40,​20,​10 70 DATA 225,​200,​180,​160,​150,​125,​100,​80,​50,​40,​20,​10
 80 SOUND 0,156:SOUND 1,12:SOUND 2,156:SOUND 3,12:SOUND 4,115:SOUND 5,9:RETURN 80 SOUND 0,156:SOUND 1,12:SOUND 2,156:SOUND 3,12:SOUND 4,115:SOUND 5,9:RETURN
Строка 1177: Строка 1186:
 Отметим,​ что во всех примерах программ,​ приведённых в данном разделе,​ рекомендуется перед запуском программы выполнить команду ''​BEEP''​. Последняя инициализирует звуковую микросхему,​ устанавливая её регистры по умолчанию в первоначальное состояние. Отметим,​ что во всех примерах программ,​ приведённых в данном разделе,​ рекомендуется перед запуском программы выполнить команду ''​BEEP''​. Последняя инициализирует звуковую микросхему,​ устанавливая её регистры по умолчанию в первоначальное состояние.
  
-{{anchor:​e064-01}} ​1. //"​Игра в лошадки"//​ (П.И.Чайковский)+  - <​WRAP>​{{anchor:​e064-01}} //"​Игра в лошадки"//​ (П.И.Чайковский)
 \\ {{.examples:​064-01.bas|}} \\ [[+tab|wmsxbpge>​064-01.bas]] \\ {{.examples:​064-01.bas|}} \\ [[+tab|wmsxbpge>​064-01.bas]]
 <​code>​ <​code>​
 NEW NEW
 Ok Ok
-10 PLAY"​s10m1800t200o4l8f+gf+bbbo5c+dc+ddd","​s10m2800o4l8t200ddddddb-b-b-aaa","​s10m2800l8t200o3abag+g+g+gggf+f+f+"​ +10 PLAY"​s10m1800t200o4l8f+gf+bbbo5c+dc+ddd",​ 
-20 PLAY"​v10s1m2800o4l8f+gf+bbbo5c+dc+ddd","​v11s1m2800o4l8ddddddb-b-b-aaa","​s1m2800l8o3abag+g+g+gggf+f+f+"​ +   "​s10m2800o4l8t200ddddddb-b-b-aaa","​s10m2800l8t200o3abag+g+g+gggf+f+f+"​ 
-30 PLAY"​V12o5f+gf+gggd+ed+eeec+dc+dddo4bo5c+o4baaa","​V12o5e-e-e-dddccco4bbbbbbaaag+g+g+ddd","​sm2800o4ccco3bbbaaag+g+g+gggf+f+f+eeef+f+f+"​ +20 PLAY"​v10s1m2800o4l8f+gf+bbbo5c+dc+ddd",​ 
-40 PLAY"​v13o5f+gf+gggd+ed+eeec+dc+dddo4bo5c+o4baaa","​v13o5e-e-e-dddccco4bbbbbbaaag+g+g+ddd","​o4ccco3bbbaaag+g+g+gggf+f+f+eeef+f+f+"​ +   "​v11s1m2800o4l8ddddddb-b-b-aaa","​s1m2800l8o3abag+g+g+gggf+f+f+"​ 
-50 PLAY"​sm500o4a+ba+f+f+f+f+f+f+f+f+f+bo5co4bo5c+c+c+d+ed+eeed+ed+o4bbbbbb","​m3000o4f+f+f+o3bbba+a+a+bbbo4aaabbbbbbbbbbbbeeed+d+d+","​m3000o4c+c+c+o3f+f+f+eeedddd+d+d+o4gggo3f+f+f+gggo4f+f+f+o3bbbaaa"​ +30 PLAY"​V12o5f+gf+gggd+ed+eeec+dc+dddo4bo5c+o4baaa",​ 
-60 PLAY"​o4bbbef+eaaag+g+g+aaaf+gf+bbbo5c+dc+dddo4f+gf+bbbo5c+dc+dddf+gf+ggg","​o4eeedddeeededc+c+c+dddeeeb-b-b-aaadddeeeb-b-b-aaao5e-e-e-ddd","​o3gggg+g+g+aaaeeeeeeaaag+g+g+gggf+f+f+aaag+g+g+gggf+f+f+o4ccco3bbb"​ +   "​V12o5e-e-e-dddccco4bbbbbbaaag+g+g+ddd",​ 
-70 PLAY"​v13o5d+ed+eeec+dc+dddo4bo5c+o4baaaf+gf+gggd+ed+eeeo3bo4c+o3bo4dddag+adddf+gf+ggg","​v13o5ccco4bbbb-b-b-aaag+g+g+ddde-e-dddccco3bbbr8br8aaao4c+c+c+o3f+f+f+o4e-e-e-ddd","​o3aaag+g+g+gggf+f+f+e+e+e+f+f+f+aaagggf+f+f+eeee+e+e+f+f+f+gggdddo4ccco3bbb"​ +   "​sm2800o4ccco3bbbaaag+g+g+gggf+f+f+eeef+f+f+"​ 
-80 PLAY"​o5c+dc+dddf+gf+gggo6c+dc+dddd","​o4gggf+f+f+o5e-e-e-dddgggf+f+f+f+","​o3b-b-b-aaaaaadddeeedddd"​+40 PLAY"​v13o5f+gf+gggd+ed+eeec+dc+dddo4bo5c+o4baaa",​ 
 +   "​v13o5e-e-e-dddccco4bbbbbbaaag+g+g+ddd",​ 
 +   "​o4ccco3bbbaaag+g+g+gggf+f+f+eeef+f+f+"​ 
 +50 PLAY"​sm500o4a+ba+f+f+f+f+f+f+f+f+f+bo5co4bo5c+c+c+d+ed+eeed+ed+o4bbbbbb",​ 
 +   "​m3000o4f+f+f+o3bbba+a+a+bbbo4aaabbbbbbbbbbbbeeed+d+d+",​ 
 +   "​m3000o4c+c+c+o3f+f+f+eeedddd+d+d+o4gggo3f+f+f+gggo4f+f+f+o3bbbaaa"​ 
 +60 PLAY"​o4bbbef+eaaag+g+g+aaaf+gf+bbbo5c+dc+dddo4f+gf+bbbo5c+dc+dddf+gf+ggg",​ 
 +   "​o4eeedddeeededc+c+c+dddeeeb-b-b-aaadddeeeb-b-b-aaao5e-e-e-ddd",​ 
 +   "​o3gggg+g+g+aaaeeeeeeaaag+g+g+gggf+f+f+aaag+g+g+gggf+f+f+o4ccco3bbb"​ 
 +70 PLAY"​v13o5d+ed+eeec+dc+dddo4bo5c+o4baaaf+gf+gggd+ed+eeeo3bo4c+o3bo4dddag+adddf+gf+ggg",​ 
 +   "​v13o5ccco4bbbb-b-b-aaag+g+g+ddde-e-dddccco3bbbr8br8aaao4c+c+c+o3f+f+f+o4e-e-e-ddd",​ 
 +   "​o3aaag+g+g+gggf+f+f+e+e+e+f+f+f+aaagggf+f+f+eeee+e+e+f+f+f+gggdddo4ccco3bbb"​ 
 +80 PLAY"​o5c+dc+dddf+gf+gggo6c+dc+dddd","​o4gggf+f+f+o5e-e-e-dddgggf+f+f+f+",​ 
 +   "​o3b-b-b-aaaaaadddeeedddd"​
 </​code>​ </​code>​
- +</​WRAP>​ 
-{{anchor:​e064-02}} ​2. //"​Лезгинка"//​ (Грузинский народный танец)+  - <​WRAP> ​{{anchor:​e064-02}} //"​Лезгинка"//​ (Грузинский народный танец)
 \\ {{.examples:​064-02.bas|}} \\ [[+tab|wmsxbpge>​064-02.bas]] \\ {{.examples:​064-02.bas|}} \\ [[+tab|wmsxbpge>​064-02.bas]]
 <​code>​ <​code>​
Строка 1221: Строка 1243:
 230 C$="​O4L4R4G+R4BR4O4a4":​PLAY A$,​B$,​C$:​END 230 C$="​O4L4R4G+R4BR4O4a4":​PLAY A$,​B$,​C$:​END
 </​code>​ </​code>​
-{{anchor:​e064-03}} ​3. //"​Менуэт из сонаты 13"// (Й.Гайдн)+</​WRAP>​ 
 +  - <​WRAP>​{{anchor:​e064-03}} //"​Менуэт из сонаты 13"// (Й.Гайдн)
 \\ {{.examples:​064-03.bas|}} \\ [[+tab|wmsxbpge>​064-03.bas]] \\ {{.examples:​064-03.bas|}} \\ [[+tab|wmsxbpge>​064-03.bas]]
 <​code>​ <​code>​
Строка 1227: Строка 1250:
 Ok Ok
 2 FOR I=1 TO 2 2 FOR I=1 TO 2
-3 PLAY"​sm15000l8t180o4a4a4a4a2o5dc+","​s1m15000l8t180o4f+4f+4f+4f+4f+4f+4","​s1m15000l8t180o4d4d4d4d4d4d4"​+3 PLAY"​sm15000l8t180o4a4a4a4a2o5dc+",​ 
 +  ​"​s1m15000l8t180o4f+4f+4f+4f+4f+4f+4",​ 
 +  ​"​s1m15000l8t180o4d4d4d4d4d4d4"​
 4 PLAY"​o5c+o4bbo5ggo4bbaa4.o5a","​l4o4ggggf+","​l4o4ddddd"​ 4 PLAY"​o5c+o4bbo5ggo4bbaa4.o5a","​l4o4ggggf+","​l4o4ddddd"​
 5 PLAY"​o5agg4.f+","​l8ago5d4c+4","​l8ago4b4a4"​ 5 PLAY"​o5agg4.f+","​l8ago5d4c+4","​l8ago4b4a4"​
Строка 1246: Строка 1271:
 20 PLAY"​sm2000o5f+eeddc+d1","​v15o4g4f+4e4sm2000d4o3a4o4d2","​v15o3a4a4a4o4"​ 20 PLAY"​sm2000o5f+eeddc+d1","​v15o4g4f+4e4sm2000d4o3a4o4d2","​v15o3a4a4a4o4"​
 </​code>​ </​code>​
-{{anchor:​e064-04}} ​4. //"​Итальянская песенка"//​ (П.И.Чайковский)+</​WRAP>​ 
 +  - <​WRAP>​{{anchor:​e064-04}} //"​Итальянская песенка"//​ (П.И.Чайковский)
 \\ {{.examples:​064-04.bas|}} \\ [[+tab|wmsxbpge>​064-04.bas]] \\ {{.examples:​064-04.bas|}} \\ [[+tab|wmsxbpge>​064-04.bas]]
 <​code>​ <​code>​
Строка 1303: Строка 1329:
 450 RETURN 450 RETURN
 </​code>​ </​code>​
-{{anchor:​e064-05}} ​5. Перейдём к сочинению //"​функциональной"//​ музыки [[bibliography#​b22|[22]]].+</​WRAP>​ 
 +  - <​WRAP>​{{anchor:​e064-05}} Перейдём к сочинению //"​функциональной"//​ музыки [[bibliography#​b22|[22]]].
  
 Будем создавать мелодию в до–мажор,​ что соответствует игре только по белым клавишам пианино (все ноты без диезов и бемолей). Более того, используем только 9 клавиш:​ Будем создавать мелодию в до–мажор,​ что соответствует игре только по белым клавишам пианино (все ноты без диезов и бемолей). Более того, используем только 9 клавиш:​
Строка 1347: Строка 1374:
 130 DEF FNPW(X,​K)=1.5+(-1)^K*(X-1.5) 130 DEF FNPW(X,​K)=1.5+(-1)^K*(X-1.5)
 140 DEF FNR(X,​K)=2*INT(1/​(4-X))+INT((X+1)*(K+1)/​16)+1 140 DEF FNR(X,​K)=2*INT(1/​(4-X))+INT((X+1)*(K+1)/​16)+1
-150 DEF FNF(X,​K)=FNF1(FNPW(X,​K))+FNS1(K)*FNF2(FNPW(X,​K))+FNS2(K)*FNF3(FNPW(X,​K))+FNS3(K)*FNF4(FNPW(X,​K))+150 DEF FNF(X,​K)=FNF1(FNPW(X,​K))+FNS1(K)*FNF2(FNPW(X,​K))+ 
 +    ​FNS2(K)*FNF3(FNPW(X,​K))+FNS3(K)*FNF4(FNPW(X,​K))
 160 M$=""​ 160 M$=""​
 170 FOR K=0 TO 3 170 FOR K=0 TO 3
Строка 1359: Строка 1387:
 250 PLAY M$ 250 PLAY M$
 </​code>​ </​code>​
- +</​WRAP>​ 
-{{anchor:​e064-06}} ​6. Программа //"​Музыкальный//​ редактор"​ [[bibliography#​b22|[22]]] служит для перевода нотной записи в буквенную. После запуска программы на экране рисуется нотный стан. По нему можно перемещать указатель. Установка ноты производится+  - <​WRAP>​{{anchor:​e064-06}} Программа //"​Музыкальный//​ редактор"​ [[bibliography#​b22|[22]]] служит для перевода нотной записи в буквенную. После запуска программы на экране рисуется нотный стан. По нему можно перемещать указатель. Установка ноты производится
 нажатием на клавишу управления курсором <​key>​→</​key>​. После установки исправить ноту //​нельзя//​ (это недостаток редактора,​ однако для его устранения нужно значительно усложнить программу). До установки можно перемещать указатель по вертикали. Название ноты будет автоматически формироваться по положению на нотном стане. Можно придать ноте бемоль (знак «-») или диез (знак «+»), а также длительность,​ задаваемую одной цифрой (1 — целая, 2 — половинная,​ 4 — четверть,​ 8 — восьмая). Если длительность не указана,​ то подразумевается четверть. Порядок ввода фиксирован:​после длительности вводить знаки «-» и «+» нельзя. нажатием на клавишу управления курсором <​key>​→</​key>​. После установки исправить ноту //​нельзя//​ (это недостаток редактора,​ однако для его устранения нужно значительно усложнить программу). До установки можно перемещать указатель по вертикали. Название ноты будет автоматически формироваться по положению на нотном стане. Можно придать ноте бемоль (знак «-») или диез (знак «+»), а также длительность,​ задаваемую одной цифрой (1 — целая, 2 — половинная,​ 4 — четверть,​ 8 — восьмая). Если длительность не указана,​ то подразумевается четверть. Порядок ввода фиксирован:​после длительности вводить знаки «-» и «+» нельзя.
  
Строка 1415: Строка 1443:
 400 END 400 END
 </​code>​ </​code>​
-…в заключение данной главы приведём весьма полезную таблицу:​ 
  
 +В заключении данной главы приведем весьма полезную таблицу:​
 ^  Октава ​ ^  Название ноты и её номер в команде N  ^^^^^^^^^^^^ ^  Октава ​ ^  Название ноты и её номер в команде N  ^^^^^^^^^^^^
 ^  1  |C|C#​|D|D#​|E|F|F#​|G|G#​|A|A#​|B| ^  1  |C|C#​|D|D#​|E|F|F#​|G|G#​|A|A#​|B|
Строка 1436: Строка 1464:
 ^  9  |C| ^  9  |C|
 ^:::|96| ^:::|96|
 +</​WRAP>​
 +  - <​WRAP>​ {{anchor:​e064-07}} __//​Дополнение.//​__
 +\\ //"​Соловей"//​ (музыка народная)
 +\\ {{.examples:​064-07.bas|}} \\ [[+tab|wmsxbpge>​064-07.bas]]
 +<​code>​
 +10 SOUND7,&​B10001000:​ SOUND8,​15:​SOUND1,​0
 +20 J=RND(1)*25:​U=RND(1)*15:​E=RND(1)*20:​FORC=0TOJ:​FORI=0TO20:​SOUND0,​I:​
 +   ​NEXT:​NEXT:​FORC=0TOU:​FORI=0TO45:​SOUND0,​I:​NEXT:​NEXT:​FORC=0TOE:​FORI=30TO
 +   ​0STEP-1:​SOUND0,​I:​NEXT:​NEXT
 +30 GOTO 20
 +</​code>​
 +</​WRAP>​
  
 {{anchor:​examples6}} {{anchor:​examples6}}
msx/basic_dialogue_programming_language/006.1663420445.txt.gz · Последние изменения: 2022-09-17 16:14 — GreyWolf