Строка 1:
Строка 1:
; Исходный проект https://scratch.mit.edu/projects/102685408
; Исходный проект https://scratch.mit.edu/projects/102685408
: дополнительная информация - https://music.stackexchange.com/questions/24893/how-to-decode-this-csv-from-a-midi-file - как читаются csv файлы, перекодированные из midi
: дополнительная информация - https://music.stackexchange.com/questions/24893/how-to-decode-this-csv-from-a-midi-file - как читаются csv файлы, перекодированные из midi
+ : http://flashmusicgames.com/midi/index.html
Данные выглядят следующим образом:
Данные выглядят следующим образом:
Текущая версия на 21:02, 2 марта 2018
Исходный проект https://scratch.mit.edu/projects/102685408
дополнительная информация - https://music.stackexchange.com/questions/24893/how-to-decode-this-csv-from-a-midi-file - как читаются csv файлы, перекодированные из midi
http://flashmusicgames.com/midi/index.html
Данные выглядят следующим образом:
2, 0, MIDI_port, 0
2, 0, Title_t, "Bass Synt"
2, 3072, Note_on_c, 1, 26, 96
2, 3072, Note_on_c, 1, 38, 86
2, 3220, Note_on_c, 1, 38, 0
2, 3220, Note_on_c, 1, 26, 0
2, 3648, Note_on_c, 1, 26, 97
2, 3648, Note_on_c, 1, 38, 96
2, 3788, Note_on_c, 1, 38, 0
2, 3788, Note_on_c, 1, 26, 0
когда щелкнут по задать load значение 0 перейти в x: 0 y: 0 установить эффект яркость в значение 0 задать turbo mode значение false показаться повторять пока не turbo mode = true detect turbo сменить костюм на costume4 создать клон себя самого перейти в x: -60 y: -30 повторить 2 следующий костюм создать клон себя самого установить x в 162 спрятаться определить detect turbo перезапустить таймер повторить 10 сменить костюм на костюм # задать turbo mode значение таймер < 0.1 когда я получу delete screen clones удалить клон когда я получу apple midi перейти в x: 0 y: 0 сменить костюм на costume7 перейти назад на 999 слоев показаться создать клон себя самого спрятаться когда я получу play song спрятаться перейти в x: 0 y: 0 сменить костюм на costume6 перейти назад на 999 слоев показаться создать клон себя самого спрятаться когда щелкнут по сменить костюм на costume1 ждать 0.5 секунд повторять пока не turbo mode = true сменить костюм на costume2 ждать 1 секунд сменить костюм на costume3 ждать 0.25 секунд сменить костюм на costume1 ждать 1 секунд когда я получу load сменить костюм на costume5 перейти в x: 0 y: 0 показаться когда я начинаю как клон установить эффект яркость в значение 0 если костюм # = 5 или костюм # = 6 , то всегда если касается указатель мышки ? , то установить эффект яркость в значение -30 если мышка нажата? , то установить эффект яркость в значение -70 если костюм # = 5 , то передать import иначе если костюм # = 6 , то передать examples передать delete screen clones иначе установить эффект яркость в значение 0 иначе
define Split # On Every / to list set i to 1 set prox to repeat length of # if letter i of # = / then add prox to list set prox to else set prox to join prox letter i of # change i by 1 define Render frame: frame pen up delete all of FrameData delete all of Frame Split item frame of Frames On Every ] to Frame set l to 1 repeat until l > length of Frame Split item l of Frame On Every / to FrameData change l by 1 set l to 1 repeat until l > length of FrameData if lines = false then pen up go to x: item l of FrameData * size - size * 0.7 + x y: item l + 1 of FrameData * size - size * 0.7 + y set lines to item l + 2 of FrameData pen down change l by 3 define Find letter # in chars set i to 1 Get case of letter 1 of # if case = lower then repeat until item i of chars = join letter 1 of # 2 change i by 1 if i > length of chars then set i to 97 stop this script else repeat until item i of chars = letter 1 of # change i by 1 if i > length of chars then set i to 97 stop this script if i < 10 then set i to join 0 i define Get case of # switch costume to Case Checker switch costume to letter 1 of # if not costume # = 1 then set case to upper else set case to lower define Type Text at x: X y: Y thickness: thickness size: size spacing: spacing Reset set size to size set pen size to thickness + bold set pen color to color Encode Text set x to X set y to Y delete all of Imput set c to 1 repeat length of CodedText / 2 add join letter c of CodedText letter c + 1 of CodedText to Imput change c by 2 set c to 1 repeat until c > length of Imput pen up if item c of Imput = 07 then Custom imput: item c + 1 of Imput set pen size to thickness + bold change c by 2 Render frame: item c of Imput change c by 1 change x by thickness + bold + size * 12 * spacing if x > 237 or item c of Imput = 96 then set x to -230 change y by -25 if item c of Imput = 96 then delete c of Imput if y < -180 then wait 2.5 secs clear set x to -230 set y to 120 change x by thickness + bold + size * 12 * spacing pen up define Encode text set CodedText to set c to 1 repeat until c > length of text Find letter letter c of text in chars set CodedText to join CodedText i change c by 1 define Custom imput: imput if imput = 77 then if bold = 0 then Bold: not else Bold: else if imput = 21 then set pen color to else if imput = 68 then set pen color to else if imput = 23 then set pen color to else if imput = 70 then set pen color to else if imput = 19 then set pen color to else if imput = 66 then set pen color to else if imput = 67 then set pen color to else if imput = 20 then set pen color to else if imput = 18 then set pen color to else if imput = 26 then set pen color to else if imput = 69 then set pen color to else if imput = 22 then set pen color to else if imput = 71 then set pen color to else if imput = 24 then set pen color to else if imput = 25 then set pen color to else if imput = 17 then set pen color to else define Reset set pen color to Bold: define Bold: bold? if bold? then set bold to 4 else set bold to 0 when I start as a clone set brightness effect to 0 forever if touching mouse-pointer ? and not costume # = 41 then set brightness effect to -30 if mouse down? then if costume # = 40 then set brightness effect to -70 wait until not mouse down? if timer = 0 then broadcast play song set pause to 0 else if pause = 0 then broadcast play song else if pause = 1 then set pause to 0 else if costume # = 41 then set brightness effect to -70 wait until not mouse down? if action track = track then set action track to 0 else set action track to track else if costume # = 42 then set brightness effect to -70 wait until not mouse down? if item track of muted = 0 then replace item track of muted with 1 replace item track of singles with 0 else replace item track of muted with 0 else if costume # = 43 then set brightness effect to -70 wait until not mouse down? if item track of singles = 0 then replace item track of singles with 1 replace item track of muted with 0 else replace item track of singles with 0 else if costume # = 44 then set brightness effect to -70 set action track to track broadcast stop settings and wait broadcast channel settings and wait wait until not mouse down? else if costume # = 45 or costume # = 46 then set brightness effect to -70 wait until not mouse down? if costume # = 45 then set pause to 1 switch costume to costume6 else broadcast reset timer switch costume to costume8 else else if costume # = 42 and item track of muted = 1 then set brightness effect to -30 else if costume # = 43 and item track of singles = 1 then set brightness effect to -30 else if costume # = 46 and pause = 0 then switch costume to costume8 set brightness effect to 0 else set brightness effect to 0 when I receive display set playing? to 1 set track to 1 set text y to 162 broadcast delete clones show clear set size to 100 % repeat tracks if item track of drummed channels = false then Type join join &a item track + tracks * 2 of chnl var join ( join item track + tracks of chnl var ) at x: -155 y: text y thickness: 2 size: 0.75 spacing: 0.8 else Type join join &a item track + tracks * 2 of chnl var (Percussion) at x: -147 y: text y thickness: 2 size: 0.75 spacing: 0.8 Type join &aTrack track at x: 192 - length of track - 1 * 202 - 194 y: text y thickness: 2 size: 0.75 spacing: 0.8 set pen color to go to x: -240 y: text y - 4 pen down go to x: 240 y: text y - 4 pen up go to x: -235 y: text y switch costume to costume2 create clone of myself go to x: -215 y: text y switch costume to costume5 create clone of myself go to x: -195 y: text y switch costume to costume3 create clone of myself go to x: -175 y: text y switch costume to costume4 create clone of myself change track by 1 change text y by -20 set size to 200 % go to x: 190 y: -175 switch costume to costume1 create clone of myself go to x: 215 y: -175 switch costume to costume8 create clone of myself hide when I receive delete clones delete this clone
[править ] Tune generator
определить load notes добавить элемент bar * 2 + bar + 1 из notes к this bar notes добавить элемент bar * 2 + bar + 2 из notes к this bar notes добавить элемент bar * 2 + bar + 3 из notes к this bar notes определить delete string1 off [this bar notes] задать i значение 0 повторять пока не i > длина списка this bar notes изменить i на 1 Split слить элемент i из this bar notes и / On Every / to high/low если high/low содержит string1 ? , то задать l значение i задать i значение 0 повторять пока не элемент i из high/low = string1 изменить i на 1 удалить i из high/low задать i значение 1 задать new string значение элемент i из high/low повторить длина списка high/low - 1 задать new string значение слить new string и слить / и элемент i из high/low изменить i на 1 заменить элемент l в this bar notes на new string стоп этот скрипт иначе изменить i на 1 определить pick high/low note Split слить note и / On Every / to high/low задать note значение элемент random из high/low определить Split # On Every / to list задать i значение 1 задать prox значение удалить все из list повторить длина # если буква i в # = / , то добавить prox к list задать prox значение иначе задать prox значение слить prox и буква i в # изменить i на 1 когда я получу generate tune generate tune 1 generate tune 2 generate tune 3 generate tune 4 generate tune 5 convert to midi csv определить convert to midi csv удалить все из midi csv удалить все из times задать j значение 1 повторить 5 задать l значение элемент j из Ls добавить элемент l из waits * 1000 к times добавить слить l и , 0, Start_track к midi csv добавить слить l и слить , 0, Program_c, 0, и элемент l из instrument ids - 1 к midi csv добавить слить l и слить , 0, Title_t, " и слить элемент l из titles и " к midi csv задать l значение элемент j из Ls повторить элемент l из repeats задать k значение 1 повторить длина списка слить tune и l Split слить элемент k из слить tune и l и : On Every : to high/low добавить слить l и слить , и слить элемент j из times и слить , Note_on_c, и слить l и слить , и слить элемент 1 из high/low и , 100 к midi csv добавить слить l и слить , и слить элемент j из times + элемент 2 из high/low * 1000 и слить , Note_off_c, и слить l и слить , и слить элемент 1 из high/low и , 0 к midi csv заменить элемент j в times на элемент j из times + элемент 2 из high/low * 1000 изменить k на 1 добавить слить l и , 0, End_track к midi csv изменить j на 1 добавить слить l и , 0, End_file к midi csv заменить элемент 1 в midi csv на элемент 1 из midi csv определить generate tune tune если tune = 5 , то удалить все из tune5 добавить 36:1 к tune5 добавить 41:1 к tune5 добавить 36:1 к tune5 добавить 31:1 к tune5 иначе удалить все из слить tune и tune задать bar значение 0 задать add значение 1 повторить 4 удалить все из this bar notes load notes задать length значение элемент random из lengths задать note значение элемент random из this bar notes pick high/low note добавить слить note и слить : и length к слить tune и tune delete note off [this bar notes] если не length = 1 , то задать note значение элемент random из this bar notes pick high/low note добавить слить note и слить : и length к слить tune и tune delete note off [this bar notes] если length = 0.25 , то задать note значение элемент random из this bar notes pick high/low note добавить слить note и слить : и length к слить tune и tune delete note off [this bar notes] удалить все из this bar notes load notes задать note значение элемент random из this bar notes pick high/low note добавить слить note и слить : и length к слить tune и tune delete note off [this bar notes] изменить bar на 1 изменить add на 1