Inteligência Artificial
Criatividade
Você está em: MarMSX >> Cursos >> AI
O termo criatividade possui diversas definições. Encontramos na Wikipedia [1] algumas delas:
- A expressão "pensamento criativo" tem duas características fundamentais, a saber: é autônoma e dirigida para a produção de uma nova forma. (Schuman, 1981)
- Criatividade é um processo que resulta em um produto novo que é aceito como útil, e/ou satisfatório por um número significativo de pessoas em um ponto no tempo. (Stein, 1974)
- Criatividade representa a emergência de algo único e original. (Anderson, 1965)
- Criatividade é o processo de tornar-se sensível a problemas, deficiências, lacunas no conhecimento, desarmonia; identificar a dificuldade, buscar soluções, formulando hipóteses a respeito das deficiências, testar e retestar essas hipóteses, e finalmente, comunicar os resultados. (Torrance, 1965)
- A criatividade é uma sublime dimensão da condição humana. É, entretanto, na capacidade criativa que existe a chave da capacidade de evolução da humanidade. O mérito da expressão criativa é fruto da "complexidade", ou seja, é fruto do contexto social no seu desenvolvimento natural e humano. É muito interessante contemplar os efeitos (...) da capacidade de um indivíduo criativo construir e reconstruir, transformando a nossa realidade. (Sanches, 2003)
Ainda de acordo com a Wikipedia [1], "até o exato momento, não há um conceito único que a descreva, ou seja, não há uma definição exclusiva para o termo criatividade. Porém, estudiosos contribuem para este conceito (...) como um termo multidimensional. Eles seguem comunicando os seus resultados, ora como novas invenções, como a capacidade de análise e síntese, ora como um produto novo, ou como a resolução de problemas, ora como uma ideia nova, ou de uma teoria. Enfim, os componentes criativos se apresentam de formas sempre variadas e em multiplicidade. (...) O fenômeno criatividade se manifesta em todos os setores da vida, seja social, político, estético, científico. É por isto que todas as ciências apresentam uma versão diferenciada no seu conceito, condizentes com as suas próprias ideologias, agregando-lhe a utilidade e individualidade de cada uma".
Criatividade e IA
A proposta de estudos em Inteligência Artificial relativos à criatividade é imitar essa capacidade humana. Entretanto, conforme foi apresentado, o conceito de criatividade é complexo e multidimensional.
Ao longo das últimas décadas, as pesquisas avançaram muito em certos aspectos de criatividade, como, por exemplo, a capacidade de redes neurais profundas de aprender padrões de um determinado artista a partir da análise de suas obras, e depois compor uma música nova no estilo desse artista. Porém, para outros aspectos da criatividade, a AI está apenas engatinhando.
O autor do livro Inteligência Artificial [2] define criatividade como "ação de desenvolver um novo padrão de pensamento que resulte em uma produção única na forma de arte, música e escrita". Entretanto, em se tratando de Inteligência Artificial, o autor argumenta que "uma IA pode simular padrões existentes e até combiná-los para criar o que parece ser uma apresentação única, mas é, na verdade, apenas uma versão matemática baseada em um padrão existente. Para conseguir criar, uma IA teria de possuir autoconhecimento, o que exige uma inteligência intrapessoal".
De acordo com as definições de criatividade apresentadas na seção anterior, podemos acrescentar à definição do autor a necessidade dessa inteligência de uma interação com o meio (social, ambiental), o que exige uma inteligência interpessoal, que segundo o mesmo autor [2] é "é obter, trocar, dar e manipular informações baseadas nas experiências de outros".
Segundo o autor, "Podemos encontrar uma infinidade de artigos, sites, músicas, arte, escritos e todos os tipos de saídas supostamente criativas a partir de uma IA. O problema com a IA é que ela não consegue criar nada". Ele cita o exemplo de Beethoven, no qual tinha sua forma particular de pensar sobre música, e que a criatividade resultante é derivada de seus padrões de pensamento. Dessa forma, qualquer pessoa pode identificar uma obra de Beethoven a partir da identificação desses padrões.
"O que a IA faz na realidade é identificar o padrão de pensamento de Beethoven, a partir de exemplos de música do compositor. A base resultante, é de natureza matemática", explica o autor. Assim, afirma que "ser criativo significa desenvolver um novo padrão de pensamento - algo que ninguém havia visto antes".
Na próxima seção, apresentamos o conceito de criatividade em AI a partir de dois livros publicados nos anos 80, de forma que o leitor possa aprender sobre os primórdios desses estudos e fazer comparações com o atual estágio.
Criatividade nos anos 80
Apresentamos a seguir dois exemplos de programas capazes de "criar", publicados em livros nos anos 1980. O primeiro é um compositor de poesias, enquanto que o segundo um compositor de músicas. Entre um exemplo e outro, apresentamos a seção "faça você mesmo", que deriva do primeiro exemplo apresentado.
Hanshan – Compositor de Poesias
No livro de IA no Spectrum [3], o autor propõe um programa para a criação automática de poesias, o HANSHAN, em homenagem ao poeta chinês Han-Shan (Séc. VIII e IX). As frases utilizadas no programa foram extraídas do livro Chinese Poems (Arthur Waley, Unwin Paperbacks, Londes 1982).
O programa escolhe um entre três padrões de um poema Haiku [4], que é uma forma poética curta japonesa.
- Padrão 1:
- PALAVRA + "..." + PALAVRA
- "..." + PALAVRA
- FRASE
- Padrão 2:
- FRASE
- FRASE + "..."
- FRASE
- Padrão 3:
- PALAVRA
- FRASE
- PALAVRA + "," + FRASE
As palavras e frases curtas são apresentadas a seguir.
Palavras isoladas - W$ - (total 20):
PRECIPITANDO, ARRASTANDO, LENTAMENTE, ATROFIADO, CINZELADO, ESCONSO, RETORCIDO,
FLANQUEADO, DOBRADO, CONTORCIDO, BATIDO, PENDURADO, SINUOSO, RETO, TRANSPARENTE,
TERRENO, CATARATA, ABNEGADO, ADORMECIDO, DESPEDACADO
Frases curtas - S$ - (total 20):
"NA CORRENTE FRIA", "INCLINADO COM ELEGANCIA", "ONDAS DE FRESCURA", "VINDO DAS PROFUNDEZAS",
"SOMBRIO, SOMBRIO", "NA FRIA ESCURIDAO", "TOMO OS TEUS POEMAS", "AFASTO A LANTERNA",
"O MEU CURTO TEMPO ESGOTA", "OS QUE SAO DEIXADOS", "HOMENS DE SABER", "HOMENS DE ACAO",
"APRESSO O PASSO", "POR QUE DESPERDICAR", "QUANDO NOS ENCONTRAREMOS", "POUCO SONO ",
"E MUITO SOFRIMENTO", "POR ESTES POUCOS PASSOS", "AGORA DE MADRUGADA", "FIZ COM LUCRO"
Exemplos de poemas criados aleatoriamente:
AFASTO A LANTERNA
NA CORRENTE FRIA...
APRESSO O PASSO
PORQUE DESPERDICAR
ONDAS DE FRESCURA
AGORA DE MADRUGADA
HOMENS DE SABER
HOMENS DE ACAO
E MUITO SOFRIMENTO
Programa em Basic para a geração de poemas [3]:
5 CLEAR
10 SCREEN 0 : WIDTH 40 : COLOR 15,0,0 : KEY OFF
20 GOSUB 250
30 REM escolher padrao
40 R=INT(RND(-TIME)*3)+1
50 ON R GOSUB 100,150,200
70 PRINT
80 GOTO 40
90 REM ** padrao um **
100 PRINT W$(INT(RND(-TIME)*20)+1);"...";W$(INT(RND(-TIME)*20)+1)
110 PRINT TAB(5);"....";W$(INT(RND(-TIME)*20)+1)
120 PRINT TAB(8);S$(INT(RND(-TIME)*20)+1)
130 RETURN
140 REM ** padrao dois **
150 PRINT S$(INT(RND(-TIME)*20)+1)
160 PRINT TAB(3);S$(INT(RND(-TIME)*20)+1);"..."
170 PRINT TAB(6);S$(INT(RND(-TIME)*20)+1)
180 RETURN
190 ** padrao tres **
200 PRINT TAB(3);W$(INT(RND(-TIME)*20)+1)
210 PRINT S$(INT(RND(-TIME)*20)+1)
220 PRINT TAB(3);W$(INT(RND(-TIME)*20)+1);", ";S$(INT(RND(-TIME)*20)+1)
230 RETURN
240 REM *******************
250 REM ** inicializacao **
280 DIM W$(20) : DIM S$(20)
290 FOR J=1 TO 20
300 READ W$(J)
310 NEXT J
320 FOR J=1 TO 20
330 READ S$(J)
340 NEXT J
350 RETURN
360 REM **** dados ****
370 REM * palavras isoladas *
380 DATA "PRECIPITANDO","ARRASTANDO","LENTAMENTE","ATROFIADO","CINZELADO"
390 DATA "ESCONSO","RETORCIDO","FLANQUEADO","DOBRADO","CONTORCIDO"
400 DATA "BATIDO","PENDURADO","SINUOSO","RETO","TRANSPARENTE"
410 DATA "TERRENO","CATARATA","ABNEGADO","ADORMECIDO","DESPEDACADO"
420 REM * FRASES CURTAS *
430 DATA "NA CORRENTE FRIA"
440 DATA "INCLINADO COM ELEGANCIA"
450 DATA "ONDAS DE FRESCURA"
460 DATA "VINDO DAS PROFUNDEZAS"
470 DATA "SOMBRIO, SOMBRIO"
480 DATA "NA FRIA ESCURIDAO"
490 DATA "TOMO OS TEUS POEMAS"
500 DATA "AFASTO A LANTERNA"
510 DATA "O MEU CURTO TEMPO ESGOTA"
520 DATA "OS QUE SAO DEIXADOS"
530 DATA "HOMENS DE SABER"
540 DATA "HOMENS DE ACAO"
550 DATA "APRESSO O PASSO"
560 DATA "POR QUE DESPERDICAR"
570 DATA "QUANDO NOS ENCONTRAREMOS"
580 DATA "POUCO SONO"
590 DATA "E MUITO SOFRIMENTO"
600 DATA "POR ESTES POUCOS PASSOS"
610 DATA "AGORA DE MADRUGADA"
620 DATA "FIZ COM LUCRO"
Faça você mesmo
Aproveitando o exemplo da seção anterior, podemos recriar a clássica seção "faça você mesmo" da revista Mad brasileira, onde um texto era publicado e dentro desse texto, havia lacunas a ser preenchidas por uma lista de palavras ou nomes. De acordo com a combinação feita pelo leitor, resultava em uma história diferente. Algumas delas, bem engraçadas.
A empresa _________ está criando __________________ para ______________, no qual possui ________________________.
Parallax um novo jogo o MSX pinguins
Konami um aplicativo o MSX 2 gatas
Bit2 uma trilha sonora o Atari um cachorro raivoso
Ocean um bug terrível o PC os personagens do chaves
Mattel um problema o Chevette 84 de rodas presas
Atari um virus as bicicletas um aro empenado
O programa a seguir gera textos automaticamente, de acordo com o diagrama acima.
10 SCREEN 0:COLOR 15,0,0:KEY OFF:WIDTH 40
20 DIM A$(24)
30 FOR I=1 TO 24
40 READ A$(I)
50 NEXT I
60 PRINT"Pressione algo para eu dizer uma frase ..."
70 A$=INPUT$(1)
80 PRINT "A empresa "; A$(RND(-TIME)*6+1); " esta criando "; A$(RND(-TIME)*6+7);
85 PRINT " para "; A$(RND(-TIME)*6+13); ", no qual possui "; A$(RND(-TIME)*6+19); "."
90 PRINT
100 GOTO 60
500 DATA Parallax, Konami, Bit2, Ocean, Mattel, Atari
510 DATA um novo jogo, um aplicativo, uma trilha sonora, um bug terrível, um problema, um virus
520 DATA o MSX, o MSX 2, o Atari, o PC, um Chevette 84, as bicicletas
530 DATA pinguins, gatas, um cachorro raivoso, os personagens do chaves, de rodas presas, um aro empenado
Compositor automático de Música
No livro MSX Música [5], o autor desenvolveu um programa capaz de compor músicas automaticamente. Entretanto, para atingir esse fim, é necessário descobrir e utilizar algumas regras musicais.
Vejamos o que o autor [5] fala sobre a composição musical:
"Compor é organizar sons segundo certas regras ou compor é usar regras para saber que nota deve vir após, antes e junto com outra nota".
"A maioria dos compositores usa regras que não podem ser expressas claramente porque nem os próprios compositores sabem exatamente que regras são essas. Eles compões usando, muitas vezes, a 'intuição' e vão criando, assim, um estilo próprio com regras próprias. Essas regras são reais e existem dentro da cabeça dos compositores, quer eles queiram, quer não, quer elas sejam explícitas e conscientes ou implícitas e inconscientes."
"Algumas dessas regras, de tempos em tempos, tornam-se um consenso ou um estilo de um grupo de compositores. Pode acontecer, nesse caso, de algumas delas serem explicitamente formuladas e colocadas no papel. Temos, então, as regras de harmonia, contrapondo, as regras de composição dodecafônica e muitas outras."
Quanto à capacidade da Inteligência Artificial de compor músicas, veja o que o autor dizia na época (anos 1980):
"E o computador, ele é capaz de compor? Sim, já que existem regras para compor. O computador é absolutamente incapaz de criar, hoje em dia, e provavelmente jamais poderá fazê-lo. O que ele faz bem, é: seguir regras. O computador chegará a ser tão bom compositor quanto um ser humano? Somente se todas as regras de composição forem explicadas. Isso se tais regras puderem ser explicitadas e traduzidas em uma linguagem adequada e precisa para o computador."
No estado atual da arte, as redes neurais artificiais são capazes de analisar milhares de composições humanas e extrair regras a partir dessas composições. Então, compor uma nova música com base nas regras aprendidas.
Qual a solução adotada pelo autor para compor músicas no computador?
A primeira nota é escolhida de forma aleatória. Para as notas seguintes, são usadas regras de composição para a escolha de uma "boa" nota. De forma a atingir tal fim, o autor propõe dois métodos para a escolha da próxima nota:
- Criar uma porção de notas completamente ao acaso e escolher a melhor delas. A melhor nota será a que melhor se adaptar às regras (avaliação).
- Usar as regras para escolher uma nota apenas, uma nota que já se adapte perfeitamente às regras (dedução).
Composição por Avaliação
Nesse método, são escolhidas dez notas ao acaso. Cada nota é avaliada de acordo com as regras definidas, e a nota que obtiver a maior pontuação é a nota escolhida.
A primeira nota da primeira voz é escolhida de forma aleatória, com um número entre 20 e 35. Isto já é uma regra, por mais simples que pareça [5]. A primeira nota da segunda voz deverá estar distante 3 ou 4 semi-tons acima da primeira voz. A primeira nota da terceira voz deverá estar a mesma distância da segunda voz. Isso faz com que a composição comece num acorde maior, menor, diminuto ou aumentado [5].
A distância de um semi-tom é o menor intervalo da escala cromática, representado pelas linhas do diagrama abaixo. Para mais informações, procure o curso de Basic - sons.
C# D# F# G# A#
/ \ / \ / \ / \ / \
C D E - F G A B - C
Por exemplo, se a nota da primeira voz for um ré (representado pela letra D), podemos escolher entre as notas F ou F#.
Após a escolha da primeira nota de cada voz, o autor escolhe a próxima de acordo com quarto regras:
- Melodia - intervalo melódico é a distância entre a nota avaliada e a nota anterior da mesma voz (para mais ou menos).
- Harmonia - intervalo harmônico é a distância entre a nota avaliada e a nota anterior de uma voz diferente (para mais ou menos).
- Cruzamentos - é quando uma voz ultrapassa a outra. Por exemplo, a primeira voz toca 20 e a segunda 30. Caso a primeira voz passe a tocar 35, ela passou a segunda voz.
- Tessitura - se a nota da terceira é maior ou igual a 40.
Regras de melodia:
Regra |
Pontuação |
Intervalo igual a 5 ou 7 semi-tons |
+10 |
Intervalo igual a 2 semi-tons |
+15 |
Intervalo igual a 3 ou 4 semi-tons |
+7 |
Intervalo igual a 0, 1, 8 ou 9 semi-tons |
+5 |
Movimento contrário (voz havia subido, agora desce ou vice-versa) |
+5 |
Regras de harmonia:
Regra |
Pontuação |
Intervalo igual a 3, 4 ou 7 semi-tons |
+5 |
Intervalo igual a 5, 8 ou 9 semi-tons |
+3 |
Intervalo igual a 1 ou 2 semi-tons (em qualquer oitava) |
-10 |
Intervalo igual a 10 ou 11 semi-tons (em qualquer oitava) |
-8 |
Regras de cruzamento:
Regra |
Pontuação |
Não houve cruzamento |
+8 |
Se não cruzou nenhuma (soma de pontuação) |
+16 |
Regras de tessitura:
Regra |
Pontuação |
A nota da terceira voz é menor que 40 |
+2 |
O autor afirma que essas regras não são rígidas, e até sugere ao leitor que faça alterações nas regras.
Programa completo [5]:
5 ' COMP - MSX MUSICA
10 DEFINT A-Z:CLS
30 DIM NA(2),NU(2),DM(2),NE(9),CC(9),MU(63,2),RT(63)
40 R=RND(-TIME)
50 N$="C C#D D#E F F#G G#A A#B "
100 NU(0)=RND(1)*15+20:NU(1)=NU(0)-3-INT(RND(1)*2)
105 NU(2)=NU(1)-3-INT(RND(1)*2)
110 GOSUB 2000
115 PRINT"PREPARANDO A COMPOSICAO..."
117 PRINT
120 FOR NN=0 TO 63
130 MU(NN,0)=NU(0):MU(NN,1)=NU(1):MU(NN,2)=NU(2)
140 PRINT NN;"-";
142 FOR N=0 TO 2
144 PRINT NU(N);MID$(N$,(NU(N) MOD 12)*2+1,2);
146 NEXT N
148 PRINT" TEMPO :";RT(NN)
150 VZ=INT(RND(1)*3)
200 GOSUB 1000:GOSUB 1100
210 DM(VZ)=SGN(NE(MX)-NU(VZ))
220 NU(VZ)=NE(MX)
230 IF RND(1)<.5 AND VZ<2 THEN VZ=VZ+1:GOTO 200
300 NEXT NN
310 PRINT
320 PRINT"PRONTO PARA TOCAR."
330 PRINT"APERTE QUALQUER TECLA."
340 IF INKEY$="" THEN 340
390 PLAY "T120","T120","T120"
400 FOR K=0 TO 1:IN=0:GOSUB 2500:NEXT
450 FOR K=0 TO 1:IN=8:GOSUB 2500:NEXT
455 FOR K=0 TO 1:IN=0:GOSUB 2500:NEXT
460 FOR K=0 TO 1:IN=16:GOSUB 2500:NEXT
580 FOR K=0 TO 1:IN=24:GOSUB 2500:NEXT
585 FOR K=0 TO 1:IN=32:GOSUB 2500:NEXT
590 FOR K=0 TO 3:IN=0:GOSUB 2500:NEXT
595 FOR K=0 TO 1:IN=24:GOSUB 2500:NEXT
600 FOR K=0 TO 1:IN=40:GOSUB 2500:NEXT
620 FOR K=0 TO 1:IN=48:GOSUB 2500:NEXT
710 FOR K=0 TO 1:IN=56:GOSUB 2500:NEXT
790 FOR K=0 TO 1:IN=0:GOSUB 2500:NEXT
900 END
997 '------------------------------------------------
998 ' GERA DEZ POSSIVEIS NOTAS COM VALORES DE 20 A 60
999 '------------------------------------------------
1000 FOR N=0 TO 9:NE(N)=INT(40*RND(1)+20):NEXT N:RETURN
1097 '-------------------------------------------------------------
1098 ' CRIA O CONCEITO PARA CADA UMA DAS NOTAS DE NE(), VZ E' A VOZ
1099 '-------------------------------------------------------------
1100 FOR N=0 TO 9
1110 CC(N)=0
1120 IT=ABS(NE(N)-NU(VZ))
1125 DM=SGN(NE(N)-NU(VZ))
1130 IF IT=5 OR IT=7 THEN CC(N)=CC(N)+10:GOTO 1200
1140 IF IT=2 THEN CC(N)=CC(N)+15:GOTO 1200
1150 IF IT=3 OR IT=4 THEN CC(N)=CC(N)+7:GOTO 1200
1160 IF IT=1 OR IT=8 OR IT=9 OR IT=0 THEN CC(N)=CC(N)+5:GOTO 1200
1200 IF DM<>DM(VZ) THEN CC(N)=CC(N)+5
1220 FOR K=0 TO 2
1230 IF K=VZ THEN 1300
1240 IH=ABS(NE(N)-NU(K))
1250 IF IH=7 OR IH=3 OR IH=4 THEN CC(N)=CC(N)+5:GOTO 1300
1260 IF IH=8 OR IH=9 OR IH=5 THEN CC(N)=CC(N)+3:GOTO 1300
1270 IF IH MOD 12=1 OR IH MOD 12=2 THEN CC(N)=CC(N)-10:GOTO 1300
1280 IF IH MOD 12=10 OR IH MOD 12=11 THEN CC(N)=CC(N)-8:GOTO 1300
1300 NEXT K
1310 IF VZ<2 THEN IF NE(N)>NU(VZ+1) THEN CC(N)=CC(N)+8:GOTO 1400
1320 IF VZ>0 THEN IF NE(N)<NU(VZ-1) THEN CC(N)=CC(N)+8:GOTO 1400
1400 IF VZ=2 AND NE(N)<40 THEN CC(N)=CC(N)+2
1450 NEXT N
1500 MX=0:CX=0
1510 FOR N=0 TO 9
1520 IF CC(N)>CX THEN CX=CC(N):MX=N
1530 NEXT N
1600 RETURN
1997 '--------------------
1998 ' CRIA PADRAO RITMICO
1999 '--------------------
2000 FOR N=0 TO 63
2010 RT(N)=4
2020 NEXT N
2030 FOR N=0 TO 56 STEP 4
2035 IF RND(1)<.3 THEN 2200
2040 X=INT(RND(1)*4+N)
2050 Y=INT(RND(1)*4+N):IF Y=X THEN 2050
2060 Z=INT(RND(1)*4+N):IF Z=Y OR Z=X THEN 2060
2100 RT(X)=RT(X)/2
2110 RT(Y)=RT(Y)*2
2120 RT(Z)=RT(Z)*2
2200 NEXT N
2250 RETURN
2497 '---------------------------
2498 ' TOCA AS NOTAS DE IN A IN+7
2499 '---------------------------
2500 FOR NN=IN TO IN+7
2510 PLAY "L=RT(NN);","L=RT(NN);","L=RT(NN);"
2520 X=MU(NN,0):Y=MU(NN,1):Z=MU(NN,1)
2530 PLAY "N=X;","N=Y;","N=Z;"
2540 NEXT NN
2550 RETURN
Composição por Dedução
A composição por dedução utiliza o conceito de fractais para reproduzir uma frase musical (sequência de notas) em escalas menores.
Por exemplo, seja a sequência de notas a seguir:
Para cada nota dessa sequência, criamos em outro canal uma cópia de toda a sequência em escala reduzida. Segundo [5], devemos respeitar as seguintes regras:
- A nova frase deve preencher exatamente a duração da nota sobre a qual está, nem mais, nem menos.
- A distância harmônica entre a primeira nota da nova frase e a nota de baixo deve ser igual à distância melódica entre a nota de baixo e a nota seguinte na frase original.
A figura a seguir apresenta a repetição do padrão apresentado em escala menor, e em outro canal.
O programa a seguir [5] cria uma composição por dedução.
5 ' FRAC - MSX MUSICA
10 DEFINT A-Z
15 A=RND(-TIME)
20 CLS
30 PRINT"FRACTALS MUSICAIS"
35 PRINT
40 INPUT"NUMERO DE NOTAS";NI
50 DIM N1(NI-1),T(NI-1)
70 FOR N=0 TO NI-1
75 N1(N)=0
77 PRINT"NOTA";N+1;:INPUT N1(N)
80 IF N1(N)=0 THEN N1(N)=RND(3)*20+20
90 PRINT N1(N)
100 PLAY"L1N=N1(N);"
110 T(N)=0
120 PRINT"NO. DE TEMPOS";:INPUT T(N)
130 IF T(N)=0 THEN T(N)=RND(4)*2+1
140 PRINT T(N)
200 NEXT N
210 PRINT
215 INPUT"VALOR DA MENOR FIGURA (1-64)";VF
220 FOR N=0 TO NI-1:FOR I=1 TO T(N):PLAY"L2N=N1(N);":NEXT I:NEXT N
230 PLAY "L=VF;","L=VF;","L=VF;"
240 PLAY "R1R1"
250 SCREEN 2,0,0
260 X=10
310 FOR NA=0 TO NI-1
315 A=N1(NA)
320 DA=N1((NA+1) MOD NI)-N1(NA)
350 FOR NB=0 TO NI-1
360 B=N1(NB)+DA
370 DB=N1((NB+1) MOD NI)-N1(NB)
380 FOR NC=0 TO NI-1
420 C=N1(NC)+DA+DB
500 FOR NV=1 TO T(NA)*T(NB)*T(NC)
510 PLAY "N=A;","N=B;","N=C;"
530 PSET(X,96-A):PSET(X,96-B):PSET(X,96-C)
540 X=X+1
570 NEXT NV
600 NEXT NC
650 NEXT NB
700 NEXT NA
1000 CLS
1010 INPUT"REPETIR";A$
1020 IF LEFT$(A$,1)="S" OR LEFT$(A$,1)="s" THEN 220
1030 INPUT"OUTRO FRACTAL";A$
1040 IF LEFT$(A$,1)="S" OR LEFT$(A$,1)="s" THEN RUN
1050 END
O programa pergunta o número de notas a serem inseridas. Para cada nota, devemos informar o código da notação PLAY do Basic do MSX (ver curso de Basic - sons) e o número de repetições (duração - Ex: 1 curta, 4 mais longa). Depois de inseridas todas as notas, ele pergunta sobre o andamento da música: vai de 1 (lento) até 64 (rápido).
O autor [5] apresenta alguns exemplos para utilizar no programa:
Contatos imediatos do terceiro grau
Número de notas: 5
Notas: 42(1), 44(1), 40(1), 28(1), 35(2)
Andamento: 55
Atirei o pau no gato
Número de notas: 6
Notas: 37(3), 35(1), 34(1), 32(1), 34(1), 35(1)
Andamento: 55
Onde o valor da nota é a própria nota e o valor entre parêntesis a duração da nota.
Referências
1. Criatividade. Em https://pt.wikipedia.org/wiki/Criatividade, em Agosto 2021.
2. Inteligência Artificial para Leigos, J. P. Mueller e L. Massaron. Ed. Alta Books, 2019.
3. Inteligência Artificial no seu Spectrum e Spectrum +, Tim Hartnell, Ed. Presença Lda, Portugal, 1984.
4. Haiku. https://pt.wikipedia.org/wiki/Haiku, em Agosto 2021.
5. MSX Música. José Maurício O. Bussab. Ed. McGraw-Hill, 1987.