Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
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}} |