midiprolog.pro
来自「visual prolog7.1学习的极好源代码」· PRO 代码 · 共 41 行
PRO
41 行
DOMAINSlistaInteiros = integer*PREDICATESnondeterm nota (string,integer).nondeterm tempo (string,integer).nondeterm insereElLista(integer,listaInteiros,listaInteiros).nondeterm concatena (listaInteiros,listaInteiros,listaInteiros).nondeterm contaElementos (listaInteiros,integer).nondeterm inicio.nondeterm criaArqMIDI(listaInteiros).nondeterm parar(char,listaInteiros).cabecalhoPrincipal (listaInteiros).cabecalhoTrack (listaInteiros).eventosConfig(listaInteiros)fimArquivo (listaInteiros).transInt4Bytes(integer,listaInteiros).volume(integer,integer).DATABASEarquivoMIDI(listaInteiros). %criado para o caso de se desejar modificar o formato ou a ppqCLAUSES%inicio inicia a lista do Arquivo MIDI formato 0 com o cabe鏰lho principal e o lable do trackinicio:- cabecalhoPrincipal(Mthd),cabecalhoTrack(Mtrk),concatena(Mthd,Mtrk,Cab),asserta(arquivoMIDI(Cab)),criaArqMIDI([]).criaArqMIDI(Mus):- write("Entre com uma nota musical de do5 a si5",'\n',"nota-> "), readln(Nota),nota(Nota,N1),nl, write("Entre com a figura musical da nota ", Nota,'\n',"figura musical-> "), readln(Figura),tempo(Figura,F1),nl, write("Entre com o volume da nota ", Nota,'\n',"volume(0 a 127)-> "), readInt(Volume),volume(Volume,VolumeCerto), concatena(Mus,[0,144,N1,VolumeCerto,F1,128,N1,0],MusNova),nl, write("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"),nl, write("Musica Atual = ",MusNova),nl, write("Deseja parar ?",'\n',"(s/n)-> "), readChar(C),nl, parar(C,MusNova).%para simplificar, esta se adotando que o track musical, incluindo os 4 Bytes do fim de track, n鉶 ultrapassem o valor 255.%Caso isto ocorra, dever-se-
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?