Export translations
Jump to navigation
Jump to search
Settings
Group
''a posteriori'' sonification
Inclusion, diversity and student assessment
Main Page
Real-time sonification
Sonification in practice
Technical analysis of existing solutions for the creation of sonification tools
The SoundScapes approach to STEAM education
Unplugged activities
What is sonification
Language
aa - Afar
ab - Abkhazian
abs - Ambonese Malay
ace - Achinese
acm - Iraqi Arabic
ady - Adyghe
ady-cyrl - Adyghe (Cyrillic script)
aeb - Tunisian Arabic
aeb-arab - Tunisian Arabic (Arabic script)
aeb-latn - Tunisian Arabic (Latin script)
af - Afrikaans
aln - Gheg Albanian
alt - Southern Altai
am - Amharic
ami - Amis
an - Aragonese
ang - Old English
ann - Obolo
anp - Angika
ar - Arabic
arc - Aramaic
arn - Mapuche
arq - Algerian Arabic
ary - Moroccan Arabic
arz - Egyptian Arabic
as - Assamese
ase - American Sign Language
ast - Asturian
atj - Atikamekw
av - Avaric
avk - Kotava
awa - Awadhi
ay - Aymara
az - Azerbaijani
azb - South Azerbaijani
ba - Bashkir
ban - Balinese
ban-bali - Balinese (Balinese script)
bar - Bavarian
bbc - Batak Toba
bbc-latn - Batak Toba (Latin script)
bcc - Southern Balochi
bci - Baoulé
bcl - Central Bikol
bdr - West Coast Bajau
be - Belarusian
be-tarask - Belarusian (Taraškievica orthography)
bew - Betawi
bg - Bulgarian
bgn - Western Balochi
bh - Bhojpuri
bho - Bhojpuri
bi - Bislama
bjn - Banjar
blk - Pa'O
bm - Bambara
bn - Bangla
bo - Tibetan
bpy - Bishnupriya
bqi - Bakhtiari
br - Breton
brh - Brahui
bs - Bosnian
btm - Batak Mandailing
bto - Iriga Bicolano
bug - Buginese
bxr - Russia Buriat
ca - Catalan
cbk-zam - Chavacano
cdo - Mindong
ce - Chechen
ceb - Cebuano
ch - Chamorro
cho - Choctaw
chr - Cherokee
chy - Cheyenne
ckb - Central Kurdish
co - Corsican
cps - Capiznon
cpx - Pu–Xian Min
cpx-hans - Pu–Xian Min (Simplified Han script)
cpx-hant - Pu–Xian Min (Traditional Han script)
cpx-latn - Pu–Xian Min (Latin script)
cr - Cree
crh - Crimean Tatar
crh-cyrl - Crimean Tatar (Cyrillic script)
crh-latn - Crimean Tatar (Latin script)
crh-ro - Dobrujan Tatar
cs - Czech
csb - Kashubian
cu - Church Slavic
cv - Chuvash
cy - Welsh
da - Danish
dag - Dagbani
de - German
de-at - Austrian German
de-ch - Swiss High German
de-formal - German (formal address)
dga - Dagaare
din - Dinka
diq - Zazaki
dsb - Lower Sorbian
dtp - Central Dusun
dty - Doteli
dv - Divehi
dz - Dzongkha
ee - Ewe
egl - Emilian
el - Greek
eml - Emiliano-Romagnolo
en - English
en-ca - Canadian English
en-gb - British English
eo - Esperanto
es - Spanish
es-419 - Latin American Spanish
es-formal - Spanish (formal address)
et - Estonian
eu - Basque
ext - Extremaduran
fa - Persian
fat - Fanti
ff - Fula
fi - Finnish
fit - Tornedalen Finnish
fj - Fijian
fo - Faroese
fon - Fon
fr - French
frc - Cajun French
frp - Arpitan
frr - Northern Frisian
fur - Friulian
fy - Western Frisian
ga - Irish
gaa - Ga
gag - Gagauz
gan - Gan
gan-hans - Gan (Simplified Han script)
gan-hant - Gan (Traditional Han script)
gcr - Guianan Creole
gd - Scottish Gaelic
gl - Galician
gld - Nanai
glk - Gilaki
gn - Guarani
gom - Goan Konkani
gom-deva - Goan Konkani (Devanagari script)
gom-latn - Goan Konkani (Latin script)
gor - Gorontalo
got - Gothic
gpe - Ghanaian Pidgin
grc - Ancient Greek
gsw - Alemannic
gu - Gujarati
guc - Wayuu
gur - Frafra
guw - Gun
gv - Manx
ha - Hausa
hak - Hakka Chinese
haw - Hawaiian
he - Hebrew
hi - Hindi
hif - Fiji Hindi
hif-latn - Fiji Hindi (Latin script)
hil - Hiligaynon
hno - Northern Hindko
ho - Hiri Motu
hr - Croatian
hrx - Hunsrik
hsb - Upper Sorbian
hsn - Xiang
ht - Haitian Creole
hu - Hungarian
hu-formal - Hungarian (formal address)
hy - Armenian
hyw - Western Armenian
hz - Herero
ia - Interlingua
id - Indonesian
ie - Interlingue
ig - Igbo
igl - Igala
ii - Sichuan Yi
ik - Inupiaq
ike-cans - Eastern Canadian (Aboriginal syllabics)
ike-latn - Eastern Canadian (Latin script)
ilo - Iloko
inh - Ingush
io - Ido
is - Icelandic
it - Italian
iu - Inuktitut
ja - Japanese
jam - Jamaican Creole English
jbo - Lojban
jut - Jutish
jv - Javanese
ka - Georgian
kaa - Kara-Kalpak
kab - Kabyle
kai - Karekare
kbd - Kabardian
kbd-cyrl - Kabardian (Cyrillic script)
kbp - Kabiye
kcg - Tyap
kea - Kabuverdianu
kg - Kongo
khw - Khowar
ki - Kikuyu
kiu - Kirmanjki
kj - Kuanyama
kjh - Khakas
kjp - Eastern Pwo
kk - Kazakh
kk-arab - Kazakh (Arabic script)
kk-cn - Kazakh (China)
kk-cyrl - Kazakh (Cyrillic script)
kk-kz - Kazakh (Kazakhstan)
kk-latn - Kazakh (Latin script)
kk-tr - Kazakh (Turkey)
kl - Kalaallisut
km - Khmer
kn - Kannada
ko - Korean
ko-kp - Korean (North Korea)
koi - Komi-Permyak
kr - Kanuri
krc - Karachay-Balkar
kri - Krio
krj - Kinaray-a
krl - Karelian
ks - Kashmiri
ks-arab - Kashmiri (Arabic script)
ks-deva - Kashmiri (Devanagari script)
ksh - Colognian
ksw - S'gaw Karen
ku - Kurdish
ku-arab - Kurdish (Arabic script)
ku-latn - Kurdish (Latin script)
kum - Kumyk
kus - Kʋsaal
kv - Komi
kw - Cornish
ky - Kyrgyz
la - Latin
lad - Ladino
lb - Luxembourgish
lbe - Lak
lez - Lezghian
lfn - Lingua Franca Nova
lg - Ganda
li - Limburgish
lij - Ligurian
liv - Livonian
lki - Laki
lld - Ladin
lmo - Lombard
ln - Lingala
lo - Lao
loz - Lozi
lrc - Northern Luri
lt - Lithuanian
ltg - Latgalian
lus - Mizo
luz - Southern Luri
lv - Latvian
lzh - Literary Chinese
lzz - Laz
mad - Madurese
mag - Magahi
mai - Maithili
map-bms - Basa Banyumasan
mdf - Moksha
mg - Malagasy
mh - Marshallese
mhr - Eastern Mari
mi - Māori
min - Minangkabau
mk - Macedonian
ml - Malayalam
mn - Mongolian
mnc - Manchu
mnc-latn - Manchu (Latin script)
mnc-mong - Manchu (Mongolian script)
mni - Manipuri
mnw - Mon
mo - Moldovan
mos - Mossi
mr - Marathi
mrh - Mara
mrj - Western Mari
ms - Malay
ms-arab - Malay (Jawi script)
mt - Maltese
mus - Muscogee
mwl - Mirandese
my - Burmese
myv - Erzya
mzn - Mazanderani
na - Nauru
nah - Nāhuatl
nan - Minnan
nap - Neapolitan
nb - Norwegian Bokmål
nds - Low German
nds-nl - Low Saxon
ne - Nepali
new - Newari
ng - Ndonga
nia - Nias
niu - Niuean
nl - Dutch
nl-informal - Dutch (informal address)
nmz - Nawdm
nn - Norwegian Nynorsk
no - Norwegian
nod - Northern Thai
nog - Nogai
nov - Novial
nqo - N’Ko
nrm - Norman
nso - Northern Sotho
nv - Navajo
ny - Nyanja
nyn - Nyankole
nys - Nyungar
oc - Occitan
ojb - Northwestern Ojibwa
olo - Livvi-Karelian
om - Oromo
or - Odia
os - Ossetic
pa - Punjabi
pag - Pangasinan
pam - Pampanga
pap - Papiamento
pcd - Picard
pcm - Nigerian Pidgin
pdc - Pennsylvania German
pdt - Plautdietsch
pfl - Palatine German
pi - Pali
pih - Norfuk / Pitkern
pl - Polish
pms - Piedmontese
pnb - Western Punjabi
pnt - Pontic
prg - Prussian
ps - Pashto
pt - Portuguese
pt-br - Brazilian Portuguese
pwn - Paiwan
qqq - Message documentation
qu - Quechua
qug - Chimborazo Highland Quichua
rgn - Romagnol
rif - Riffian
rki - Arakanese
rm - Romansh
rmc - Carpathian Romani
rmy - Vlax Romani
rn - Rundi
ro - Romanian
roa-tara - Tarantino
rsk - Pannonian Rusyn
ru - Russian
rue - Rusyn
rup - Aromanian
ruq - Megleno-Romanian
ruq-cyrl - Megleno-Romanian (Cyrillic script)
ruq-latn - Megleno-Romanian (Latin script)
rw - Kinyarwanda
ryu - Okinawan
sa - Sanskrit
sah - Yakut
sat - Santali
sc - Sardinian
scn - Sicilian
sco - Scots
sd - Sindhi
sdc - Sassarese Sardinian
sdh - Southern Kurdish
se - Northern Sami
se-fi - Northern Sami (Finland)
se-no - Northern Sami (Norway)
se-se - Northern Sami (Sweden)
sei - Seri
ses - Koyraboro Senni
sg - Sango
sgs - Samogitian
sh - Serbo-Croatian
sh-cyrl - Serbo-Croatian (Cyrillic script)
sh-latn - Serbo-Croatian (Latin script)
shi - Tachelhit
shi-latn - Tachelhit (Latin script)
shi-tfng - Tachelhit (Tifinagh script)
shn - Shan
shy - Shawiya
shy-latn - Shawiya (Latin script)
si - Sinhala
simple - Simple English
sjd - Kildin Sami
sje - Pite Sami
sk - Slovak
skr - Saraiki
skr-arab - Saraiki (Arabic script)
sl - Slovenian
sli - Lower Silesian
sm - Samoan
sma - Southern Sami
smn - Inari Sami
sms - Skolt Sami
sn - Shona
so - Somali
sq - Albanian
sr - Serbian
sr-ec - Serbian (Cyrillic script)
sr-el - Serbian (Latin script)
srn - Sranan Tongo
sro - Campidanese Sardinian
ss - Swati
st - Southern Sotho
stq - Saterland Frisian
sty - Siberian Tatar
su - Sundanese
sv - Swedish
sw - Swahili
syl - Sylheti
szl - Silesian
szy - Sakizaya
ta - Tamil
tay - Tayal
tcy - Tulu
tdd - Tai Nuea
te - Telugu
tet - Tetum
tg - Tajik
tg-cyrl - Tajik (Cyrillic script)
tg-latn - Tajik (Latin script)
th - Thai
ti - Tigrinya
tk - Turkmen
tl - Tagalog
tly - Talysh
tly-cyrl - Talysh (Cyrillic script)
tn - Tswana
to - Tongan
tok - Toki Pona
tpi - Tok Pisin
tr - Turkish
tru - Turoyo
trv - Taroko
ts - Tsonga
tt - Tatar
tt-cyrl - Tatar (Cyrillic script)
tt-latn - Tatar (Latin script)
tum - Tumbuka
tw - Twi
ty - Tahitian
tyv - Tuvinian
tzm - Central Atlas Tamazight
udm - Udmurt
ug - Uyghur
ug-arab - Uyghur (Arabic script)
ug-latn - Uyghur (Latin script)
uk - Ukrainian
ur - Urdu
uz - Uzbek
uz-cyrl - Uzbek (Cyrillic script)
uz-latn - Uzbek (Latin script)
ve - Venda
vec - Venetian
vep - Veps
vi - Vietnamese
vls - West Flemish
vmf - Main-Franconian
vmw - Makhuwa
vo - Volapük
vot - Votic
vro - Võro
wa - Walloon
wal - Wolaytta
war - Waray
wls - Wallisian
wo - Wolof
wuu - Wu
wuu-hans - Wu (Simplified Han script)
wuu-hant - Wu (Traditional Han script)
xal - Kalmyk
xh - Xhosa
xmf - Mingrelian
xsy - Saisiyat
yi - Yiddish
yo - Yoruba
yrl - Nheengatu
yue - Cantonese
yue-hans - Cantonese (Simplified Han script)
yue-hant - Cantonese (Traditional Han script)
za - Zhuang
zea - Zeelandic
zgh - Standard Moroccan Tamazight
zh - Chinese
zh-cn - Chinese (China)
zh-hans - Simplified Chinese
zh-hant - Traditional Chinese
zh-hk - Chinese (Hong Kong)
zh-mo - Chinese (Macau)
zh-my - Chinese (Malaysia)
zh-sg - Chinese (Singapore)
zh-tw - Chinese (Taiwan)
zu - Zulu
Format
Export for off-line translation
Export in native format
Export in CSV format
Fetch
{{DISPLAYTITLE:Sonificação em tempo real}}<languages/> A sonificação em tempo real é uma técnica fascinante que pode promover significativamente o envolvimento dos alunos nas áreas STEAM. A sonificação em tempo real significa que não conseguimos perceber o intervalo de tempo entre a aquisição dos dados e o som correspondente produzido pelo nosso dispositivo de sonificação, devido à rapidez do processo. Além disso, os métodos para criar representações sonoras dos dados são definidos simultaneamente com a recolha de dados (em «tempo real»). Antes de começarmos, queremos salientar que a qualidade do som, que é subjetiva e, por isso, depende do gosto do utilizador, deve ser tal que, no mínimo, não o incomode. Pelo contrário, se fosse suficientemente apelativo para atrair a sua atenção, seria melhor. Por outro lado, ao tentar criar algo «agradável», corre-se o risco de gerar resultados sonoros que não cumprem o objetivo de descrever bem o comportamento dos dados de entrada. É, portanto, necessário encontrar um equilíbrio: o som deve ser suficientemente agradável e, ao mesmo tempo, exaustivamente informativo. <span id="Real-time_sonification_devices"></span> == Dispositivos de sonificação em tempo real == [[File:Microbit.jpg|thumb|right|alt=View of the micro:bit on the both sides |O microcontrolador BBC micro:bit]] Para criar um dispositivo de sonificação em tempo real, é útil recorrer a um microcontrolador. Estes são como «computadores pequenos e simples» com uma única unidade de processamento. No entanto, não são computadores. A sua arquitetura é muito mais simples e não conseguem executar um sistema operativo. Ainda assim, podem ser programados para executar um único programa de cada vez, o qual pode realizar várias tarefas, mas de forma sequencial, de acordo com a ordem das instruções listadas no programa. Existem vários tipos de microcontroladores, sendo o [https://www.arduino.cc/ Arduino (arduino.cc)] o mais popular. Para começar, o projeto SoundScapes sugere a utilização do microcontrolador [https://microbit.org/ BBC micro:bit]. Esta ferramenta é muito simples de utilizar, versátil e inclui vários sensores incorporados prontos a usar, eliminando a necessidade de construir um circuito elétrico específico para o seu funcionamento. O micro:bit pode ser programado online com o [https://makecode.microbit.org/ Makecode] (utilizando o [https://www.google.com/chrome/ navegador Chrome] para uma melhor compatibilidade) em Python, JavaScript ou blocos. <span id="Sonification_with_micro:bit"></span> == Sonificação com o micro:bit == Antes de se iniciar na sonificação com o micro:bit, deve primeiro familiarizar-se com o ambiente de programação [https://makecode.microbit.org/ Makecode]. Na página principal, existem vários tutoriais, como o «Flashing Heart», o «Name Tag», etc., entre os quais pode escolher para começar. Se se registar na plataforma, os seus projetos serão guardados na sua conta e poderá aceder-lhes a partir de qualquer dispositivo, desde que inicie sessão. Caso contrário, eles são guardados como cookies; no entanto, poderá perdê-los se limpar a cache do navegador. <span id="Sound_notions_in_micro:bit"></span> === Noções básicas sobre som no micro:bit === No [https://makecode.microbit.org/#editor editor Makecode], existe uma biblioteca útil e apelativa dedicada à música, especialmente para jovens estudantes. Esta [https://makecode.microbit.org/reference/music biblioteca musical] oferece vários comandos/blocos que facilitam a geração de sons e a criação de melodias. Existem muitos blocos e combinações de blocos que pode utilizar para gerar diferentes tipos de sons. Aqui apresentamos-lhe os blocos mais básicos e avançamos para exemplos mais complexos. É um bom exercício brincar com os diferentes blocos e ouvir o que acontece para se familiarizar com eles. [[File:Soundscapes makecode music.png |centre|800 px|alt=Makecode editor music category]] <span id="Generate_a_single_tone"></span> ==== Gerar um único tom ==== O código seguinte gera um único tom com uma frequência pré-definida (Dó central) e uma duração de 1 batida quando o botão A é pressionado, ou um som contínuo de Mi central quando o botão B é pressionado. É possível alterar a frequência dos tons clicando nos campos de entrada brancos com os valores «Dó central» e «Mi central». A partir das setas do menu suspenso, também é possível alterar a duração do tom «Dó central» e definir se o som é reproduzido sequencialmente com outros blocos de comando, em segundo plano ou em loop <ref name="code" group="Note"> Clique no botão «Simulador» na barra superior para interagir com um micro:bit virtual e testar o código. Pode editar o código clicando em «Editar» no canto superior direito.</ref>. <HTML> <div style="position:relative;height:0;padding-bottom:40%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:_3PbcX84vRRuJ" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div> </html> <span id="Play_a_melody"></span> ==== Tocar uma melodia ==== Para tocar uma melodia, utilize o bloco seguinte e clique nele para criar a melodia: [[File:Soundscapes makecode melody.png |centre|500 px|alt=Play melody block]] O código de exemplo a seguir reproduz duas melodias com valores de bpm diferentes para os botões A e B e interrompe todos os sons quando A e B são pressionados simultaneamente. É possível alterar as melodias clicando nos campos de entrada brancos com as notas musicais coloridas. Tal como no exemplo anterior, também é possível alterar a duração da batida e definir se o som é reproduzido sequencialmente com outros blocos de comando, em segundo plano ou em loop <ref name="code" group="Note"/>. <HTML> <div style="position:relative;height:0;padding-bottom:40%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:_YoTh7YLWvFbm" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div> </html> <span id="Manipulate_frequency_change,_waveform,_volume_and_duration"></span> ==== Controlar a alteração da frequência, a forma de onda, o volume e a duração ==== Também é possível gerar sons mais complexos manipulando a variação de frequência, a forma de onda, o volume e a duração com o seguinte bloco: [[File:Soundscapes makecode complex sounds.png |centre|500 px|alt=Complex sounds block]] O exemplo seguinte reproduz dois sons complexos sequencialmente de forma contínua <ref name="code" group="Note"/>: <html> <div style="position:relative;height:0;padding-bottom:40%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:_gE8UsCAhe2dR" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div> </html> <span id="Sonification_of_a_Boolean"></span> === Sonificação de um valor booleano === Na ciência da computação, um tipo de dados booleano, ou lógico, é uma primitiva fundamental que pode assumir um de dois valores possíveis: verdadeiro ou falso, frequentemente representados por 1 ou 0. Para ilustrar este conceito, vamos sonificar o tipo de dados mais simples: o booleano. Exemplos comuns de sensores que produzem dados booleanos incluem sensores de presença, sensores de contacto, interruptores e botões. O código a seguir implementa a sonificação de um sensor booleano utilizando o micro:Bit, com foco específico no botão A. Quando o botão é pressionado, ouvimos a nota C e, quando é solto, a nota muda para F. Este feedback auditivo fornece uma representação clara do estado do botão, melhorando a nossa compreensão dos dados booleanos num contexto prático <ref name="code" group="Note"/>. <HTML> <div style="position:relative;height:0;padding-bottom:50%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:_4LULCW5kwiPi" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div> </html> '''Explicação detalhada do código:''' Os blocos são avaliados sequencialmente, de cima para baixo, dentro do bloco de loop '''forever''', que repete a seguinte sequência de avaliação até que algo interrompa o programa: # Define a variável '''X''' com o estado do botão ('''true''' ou '''false''', dependendo se o botão está pressionado no momento da avaliação do bloco rosa '''botão A é pressionado''') # '''Se''' a variável/condição '''X''' for '''true''' (o botão foi pressionado), '''tom de toque (Hz) Dó central''', caso contrário, '''tom de toque (Hz) Mi central''' <span id="Sonification_of_a_range_of_values_(using_input_sensors)"></span> === Sonificação de um intervalo de valores (utilizando sensores de entrada) === A maioria dos sensores fornece um intervalo de valores, e não apenas 0 ou 1; nesse caso, devemos primeiro determinar quais são os valores mínimo e máximo possíveis antes de definir o mapeamento para a sonificação. Esta entrada variável do sensor pode provir do sensor de luminosidade, do acelerómetro, do magnetómetro, da intensidade do som captado pelo microfone ou de outros sensores ligados ao micro:bit através dos pinos. Estes dados podem ser facilmente recolhidos pelo microcontrolador. <span id="Change_pith_with_fixed_rhythm"></span> ==== Alterar a frequência com ritmo fixo ==== Neste exemplo, mostramos como mapear o '''nível de luminosidade''' para um intervalo de frequências. O sensor de luz interno do micro:bit fornece um valor entre 0 (escuro) e 255 (muito claro). Chamamos a esta variável de valor de entrada '''x'''. Também definimos as variáveis '''x-Min''' e '''x-Max''' com os valores mínimo e máximo do nosso sensor. Com o objetivo de sonificar o nível de luz medido, iremos mapear o valor do nível de luz para uma altura entre 200 Hz (valor mínimo) e 2000 Hz (valor máximo), reproduzida a um ritmo fixo <ref name="code" group="Note"/>. <HTML> <div style="position:relative;height:0;padding-bottom:70%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:S29417-89547-25165-22076" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div> </html> '''Explicação detalhada do código:''' Os blocos dentro do bloco '''on start''' são executados sequencialmente, antes de qualquer outra coisa no programa, quando o micro:bit é ligado. # Defina a variável '''x-Min''' para o valor mais baixo possível medido para o nível de luminosidade, '''0'''. # Defina a variável '''x-Max''' para o valor mais alto possível medido para o nível de luminosidade, '''255'''. Os blocos dentro do bloco '''forever''' são avaliados sequencialmente num ciclo, de cima para baixo, após a sequência '''on start''': <div lang="en" dir="ltr" class="mw-content-ltr"> # Set the '''x''' variable to the measured '''light level''' # Play a one 1 beat tone with a frequency resulting from mapping the '''x''' value (in the '''x-Min''' to '''x-Max''' range) to the chosen frequency range in the '''map''' block. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ==== Change rhythm with fixed pitch ==== </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Another option is to maintain a fixed pitch while varying the rhythm based on the light level. We can achieve this by playing a short-duration note and introducing pauses that vary in length, ranging from 1000 ms (for dark conditions) to 20 ms (for very bright conditions). This approach allows for a dynamic auditory representation of the changing light levels <ref name="code" group="Note"/>. </div> <HTML> <div style="position:relative;height:0;padding-bottom:70%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:_F4g6Y9Fd6WRW" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div> </html> '''Explicação detalhada do código:''' Os blocos dentro do bloco '''on start''' são executados sequencialmente, antes de qualquer outra coisa no programa, quando o micro:bit é ligado. # Defina a variável '''x-Min''' para o valor mais baixo possível medido para o nível de luminosidade, '''0'''. # Defina a variável '''x-Max''' para o valor mais alto possível medido para o nível de luminosidade, '''255'''. Os blocos dentro do bloco '''forever''' são avaliados sequencialmente num ciclo, de cima para baixo, após a sequência '''on start''': # Define a variável '''x''' com o '''nível de luz''' medido # Reproduz um tom D agudo durante 1 batida. # Faz uma pausa cuja duração é calculada a partir da correspondência entre o valor de '''x''' (no intervalo entre '''x-Min''' e '''x-Max''') e o intervalo de tempo selecionado no bloco '''map'''. '''Lembrete:''' Pode substituir o bloco de entrada '''nível de luz''' por qualquer outro [https://makecode.microbit.org/reference/input bloco de entrada] do micro:bit (ou por quaisquer outros sensores ligados ao micro:bit através dos pinos) que forneçam um intervalo de valores. Certifique-se apenas de redefinir os valores '''x-Min''' e '''x-Max''' em conformidade, uma vez que o [https://makecode.microbit.org/reference/input/acceleration acelerómetro] e a direção da [https://makecode.microbit.org/reference/input/compass-heading bússola], por exemplo, funcionam num intervalo diferente. <span id="Using_external_input_sensors"></span> ==== Utilização de sensores de entrada externos ==== Para utilizar um sensor digital/analógico externo num micro-pino ou, por exemplo, através do protocolo I2C (todos estes blocos podem ser encontrados nas categorias avançadas), pode utilizar os mesmos programas, bastando substituir o bloco de entrada «nível de luz» pelo bloco correspondente, da seguinte forma: [[File:Soundscapes realtime digitalread.png|350 px|center|Pino de leitura digital]] [[File:Soundscapes realtime analogread.png|350 px|center|Pino de leitura analógica]] [[File:Soudnscapes realtime i2c.png|700 px|center|i2c]] '''Preste atenção ao número do pino ou ao endereço I²C!''' <span id="Multiple_inputs_mapped_to_a_single_sound"></span> === Várias entradas mapeadas para um único som === Os sistemas de sonificação servem frequentemente para fornecer mais do que uma informação. Podemos mapear tantas variáveis quantos os parâmetros sonoros que conseguimos controlar, desde que o som não se torne confuso devido às múltiplas camadas sonoras reproduzidas simultaneamente. Se considerarmos que uma orquestra filarmónica pode ter mais de cem elementos, temos alguma margem para sobrepor vários sons. Ao contrário dos estímulos visuais, onde não podemos exceder um determinado número, geralmente inferior ao dos estímulos áudio. Por fim, tal como na orquestra, os sons têm de ser cuidadosamente organizados em conjunto, no caso de um grande número. O seguinte transforma em som o '''nível de luz''' mapeado para o tom central, com uma pausa definida pela '''rumo da bússola''' mapeada para milésimos de segundo <ref name="code" group="Note">.</ref> <HTML> <div style="position:relative;height:0;padding-bottom:40%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:_4w40bdb7LTjV" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div> </html> <span id="The_SoundScapes_sonification_extension_for_micro:bit"></span> === A extensão de sonificação SoundScapes para micro:bit === Em todos os exemplos anteriores, os números foram mapeados para um intervalo contínuo de frequências, o que é ótimo! Mas será que soa bem? Para melhorar a experiência auditiva, pode mapear os números para uma escala musical. A [https://makecode.microbit.org/pkg/davidnsousa/sonification extensão de sonificação SoundScapes para MakeCode micro:bit] torna este tipo de mapeamento fácil e acessível. A seguir, explicamos como instalar a extensão: [[File:Install-sonification-extension.gif |600 px|center|Instalar a extensão do registador de dados]] <span id="Map_and_play_directly_from_a_micro:bit_sensor"></span> ==== Mapear e tocar diretamente a partir de um sensor micro:bit ==== Para mapear e reproduzir dados diretamente a partir de um sensor do micro:bit, pode utilizar o bloco seguinte, que inclui um menu suspenso para selecionar o sensor. O intervalo de entrada é selecionado automaticamente de forma a corresponder aos valores mínimo e máximo que podem ser obtidos dos sensores do micro:bit. <HTML><div style="position:relative;height:0;padding-bottom:40%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:S46900-26939-17526-29927" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div></HTML> Embora o trabalho árduo se passe nos bastidores, isso torna mais desafiante para si inovar na sonificação :) Este exemplo é equivalente ao exemplo de sonificação em tempo real que utiliza a função de sonificação '''map''' para um único valor, conforme se segue. <span id="Map_and_play_a_single_value_on_a_music_scale"></span> ==== Mapeie e reproduza um único valor na escala musical ==== A função '''map''' devolve um número inteiro ao mapear um valor num determinado intervalo [low, high] para uma escala musical especificada num número especificado de oitavas. Por exemplo, o exemplo seguinte mapeia o valor do '''nível de luz''' no intervalo [0,255] para o Dó central maior numa oitava e reproduz-o durante 500 ms indefinidamente: <HTML><div style="position:relative;height:0;padding-bottom:40%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:S52170-83121-65302-12966" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div></HTML> Também é possível utilizar outros sensores (incluindo sensores externos ligados ao micro:bit através de pinos) e diferentes intervalos de entrada. Isto é útil para a sonificação em tempo real, quando se sonifica os dados ao mesmo tempo que se recolhem. Por exemplo, o exemplo seguinte mapeia o valor do nível de luz no intervalo [0,255] para o Dó central em tom maior, numa oitava, e reproduz-o durante 500 ms indefinidamente: <HTML><div style="position:relative;height:0;padding-bottom:40%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:S52170-83121-65302-12966" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div></HTML> Também é possível utilizar outros sensores (incluindo sensores externos ligados ao micro:bit através de pinos) e diferentes intervalos de entrada. Isto é útil para a sonificação em tempo real, quando se sonifica os dados ao mesmo tempo que se recolhem. <span id="Map_and_play_on_a_custom_scale"></span> ==== Mapear e reproduzir numa escala personalizada ==== Pode criar facilmente as suas próprias escalas musicais com matrizes e utilizá-las como entrada para as funções de mapeamento, de modo a mapear e reproduzir qualquer valor numérico na sua escala personalizada. A matriz de entrada deve conter as relações de frequência em relação à frequência fundamental. Por exemplo, o código seguinte mapeia o valor do «nível de luz» no intervalo [0,255] para a nota C central com uma oitava acima e reproduz-a durante 500 ms: <HTML><div style="position:relative;height:0;padding-bottom:70%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:S52429-19885-94270-50677" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div></html> onde «harmonic» é uma matriz de números que contém as relações de frequência da escala harmónica. Uma vez que cada tom da escala harmónica está exatamente a uma oitava de distância do tom anterior, alterar o número da oitava, neste caso específico, apenas irá ampliar o intervalo da série harmónica. <span id="Sonification_via_MIDI_(The_micro:bit_as_a_MIDI_instrument)"></span> === Sonificação via MIDI (O micro:bit como instrumento MIDI) === O som produzido pelo altifalante (buzzer) do micro:bit tem pouca potência e não reproduz frequências baixas. O micro:bit também é muito limitado na sua capacidade de gerar vários sons simultaneamente e sons com timbres mais complexos. No último exemplo, utilizámos um «truque» para sonificar valores de várias entradas. Utilizámos a pausa (duração do silêncio entre sons consecutivos) como saída de sonificação. Inteligente, mas o que realmente gostaríamos seria de vários sons a tocar simultaneamente e a expressar várias camadas de dados. Podemos obter melhor qualidade de som e tocar mais instrumentos ao mesmo tempo utilizando o protocolo MIDI. O MIDI é um protocolo que facilita a comunicação em tempo real entre instrumentos musicais eletrónicos. MIDI significa Musical Instrument Digital Interface e foi desenvolvido no início dos anos 80 para armazenar, editar, processar e reproduzir sequências de eventos digitais associados a instrumentos eletrónicos de produção sonora, especialmente aqueles que utilizam a escala cromática de 88 notas de um teclado de piano. Podemos, de forma aproximada mas simples, entender o MIDI como o sucessor avançado dos «piano rolls», que, há mais de um século, eram papéis perfurados ou cilindros com pinos, nos quais as execuções musicais eram gravadas (em tempo real) ou anotadas (em tempo de passo). Esses rolos de papel eram então reproduzidos automaticamente por instrumentos mecânicos especialmente concebidos, os pianos mecânicos (pianolas) ou máquinas de música, utilizando-os como o seu «programa». <span id="Setup_the_MIDI"></span> ==== Configurar o MIDI ==== O vídeo a seguir explica em detalhe como ligar o micro:bit à sua DAW (Estação de Trabalho de Áudio Digital) ou sintetizador digital através de MIDI no Windows: <html> <center> <br> <iframe width="560" height="315" src="https://www.youtube.com/embed/Gfp9Ve_YUhg?si=jllM2VKnhaePNBS2&start=24" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> </center> </html> '''Instruções passo a passo (ver o vídeo):''' # Instale a [https://makecode.microbit.org/pkg/microsoft/pxt-midi MIDI Extension] para o Makecode. # Crie um [programa muito básico [https://makecode.microbit.org/_RKp9zi8Jw11L] utilizando a extensão MIDI] para testar a sua configuração. # Instale o [https://projectgus.github.io/hairless-midiserial/ Hairless MIDI], abra-o e, no menu suspenso da porta serial, selecione a porta COM (porta USB) à qual o micro:bit está ligado. # Instale o [https://www.tobias-erichsen.de/software/loopmidi.html loopMIDI], abra-o e clique no botão '''+''' no canto inferior esquerdo para criar uma nova porta virtual. # Volte à janela do HairlessMIDI e, no menu suspenso de saída MIDI, selecione '''loopMIDI port''' # Pode ser necessário desligar e ligar novamente o micro:bit para que funcione. # Está pronto para tocar! '''Como funciona:''' O micro:bit envia mensagens MIDI através de comunicação série. Estas mensagens são então recebidas pelo Hairless MIDI, que as reencaminha para o LoopMIDI. Atuando como uma porta MIDI virtual, o LoopMIDI torna as mensagens MIDI acessíveis a software de computador/aplicações web (como DAWs ou sintetizadores digitais) que recebem essas mensagens e geram os sons correspondentes, completando a ligação. Existem inúmeras estações DAW gratuitas (e algumas de código aberto e multiplataforma), como o [https://lmms.io/ LMMS], que pode descarregar e configurar para reproduzir entrada MIDI. O método mais fácil é tocar diretamente a partir do navegador através de uma aplicação web como [https://midi.city/ midi.city], o [https://onlinesequencer.net/ Online Sequencer] e muitas outras que pode descobrir online. Em princípio, aplicações web como o midi.city detetam facilmente o seu instrumento MIDI (o micro:bit, neste caso) e estará pronto para tocar depois de conceder ao navegador permissões para aceder ao seu dispositivo (o que lhe será solicitado). O MIDI é uma ferramenta poderosa para a sonificação, pois permite controlar uma vasta gama de parâmetros sonoros, tais como a altura do som, o volume e o timbre. Esta configuração permite que vários micro:bits enviem dados MIDI para um único sintetizador, possibilitando a sonificação sincronizada de vários fluxos de dados. Também permite que um único micro:bit envie dados MIDI através de vários canais MIDI. '''Nota:''' No Linux, instale o [http://www.varal.org/ttymidi/ ttymidi] em vez do hairlesMIDI e do loopMIDI. <span id="Sensor_data_over_MIDI"></span> ==== Dados do sensor via MIDI ==== Os exemplos anteriores que utilizam dados de sensores podem ser adaptados para enviar dados via MIDI com a extensão Makecode MIDI, o que significa que os sons não serão reproduzidos no micro:bit, mas sim através de um software de computador ou aplicação web devidamente configurado. O exemplo seguinte mapeia o '''nível de luz''' para notas MIDI e envia-as através do canal MIDI 1 <ref name="code" group="Note">.</ref> <HTML> <div style="position:relative;height:0;padding-bottom:60%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:_gdURLxbmvCqo" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div> </html> '''Explicação detalhada do código:''' Os blocos dentro do bloco '''on start''' são executados sequencialmente, antes de qualquer outra coisa no programa, quando o micro:bit é ligado. # Mostrar um ícone elegante de nota musical no ecrã LED apenas para melhorar a aparência. # Defina a variável '''Instrument_1''' como '''canal MIDI 1'''. Assim, quaisquer alterações na variável '''Instrument_1''' correspondem a ações no canal MIDI 1. # '''midi use raw serial''' é o que fará com que o micro:bit "comunique" com o dispositivo de saída MIDI. Os blocos dentro do bloco '''forever''' são avaliados sequencialmente num ciclo, de cima para baixo, após a sequência '''on start''': # Defina a variável '''Note''' como uma nota MIDI, mapeando o intervalo de valores possíveis do '''nível de luz''' para o intervalo MIDI escolhido, de 40 a 85 (entre 0 e 128), utilizando o bloco '''map'''. # Defina o volume do som do '''Instrument_1''' (no canal MIDI 1) para 100. # Reproduza a nota MIDI '''Note''' (nível de luz medido mapeado para MIDI) com '''Instrument_1''' (no canal MIDI 1). # Faça uma pausa de 250 ms. # Pare de reproduzir a nota MIDI '''Note'''. # Faça uma pausa de 100 ms. <span id="Using_multiple_MIDI_channels"></span> ==== Utilização de vários canais MIDI ==== Este exemplo mapeia o '''nível de luz''' para MIDI e utiliza vários canais MIDI, permitindo escolher entre tocar as notas com um botão ou agitando o micro:bit <ref name="code" group="Note">.</ref> <HTML> <div style="position:relative;height:0;padding-bottom:75%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://makecode.microbit.org/#pub:_it6bszWsMeyq" frameborder="0" sandbox="allow-popups allow-forms allow-scripts allow-same-origin"></iframe></div> </html> '''Explicação detalhada do código:''' A lógica por trás deste exemplo é muito semelhante à do exemplo anterior. No entanto, um canal MIDI adicional, o canal 10 (poderia ter sido qualquer outro número entre 1 e 16), é definido «no início» como a variável «Instrument_2». Assim, quaisquer alterações nesta variável traduzem-se em ações no canal MIDI 10. O mapeamento do nível de luz para o MIDI continua definido dentro do loop, mas os blocos relacionados com '''Instrument_1''' e as '''pausas''' foram movidos para o bloco de entrada '''ao premir o botão B'''. O bloco de entrada '''ao agitar''' apenas repete o mesmo código para '''Instrument_2'''. Note que, quando toca uma nota, independentemente do instrumento escolhido, uma nota musical aparece e desaparece do ecrã LED. <span id="Notes"></span> ==Notas== <references group="Note" />
Navigation menu
Personal tools
English
Create account
Log in
Namespaces
Translate
English
Views
Language statistics
Message group statistics
Export
More
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
Special pages
Printable version