Estou cansado de
olhar para o passado. Existem muitos guias para recriar a aparência de artefatos históricos, mas muitas vezes esquecemos que esse é um ato criativo. Talvez estejamos muito apegados às nossas telas, damos muita importância à aparência. Em vez disso, vamos tentar
ouvir algo do passado.
A rica literatura sobre arqueoacústica e paisagens sonoras ajuda a recriar o som do lugar
como era (por exemplo, veja
a Catedral Virtual de São Paulo ou
o trabalho de Jeff Veitch sobre a antiga Ostia ). Mas estou interessado em "expressar" os dados em si. Quero definir a sintaxe para representar dados na forma de som, para que esses algoritmos possam ser usados na ciência histórica. Drucker disse que a
famosa frase que “dados” não é realmente o que é dado, mas sim o que é capturado, transformado, ou seja, 'capta'. Ao expressar dados,
reproduzo literalmente
o passado no presente. Portanto, suposições e transformações desses dados vêm à tona. Os sons resultantes são um "desempenho deformado" que faz você ouvir camadas modernas da história de uma nova maneira.
Quero ouvir o significado do passado, mas sei que isso é impossível. No entanto, quando ouço o instrumento, posso imaginar fisicamente o músico; por ecos e ressonâncias, posso distinguir o espaço físico. Eu sinto o baixo, posso me mover no ritmo. A música cobre meu corpo, toda a minha imaginação. Associações com sons, músicas e tons ouvidos anteriormente criam uma profunda experiência temporal, um sistema de relações corporificadas entre mim e o passado. Visualidade? Temos representações visuais do passado há tanto tempo que essas gramáticas quase perderam sua expressividade artística e aspecto performativo.
Nesta lição, você aprenderá como fazer barulho a partir de dados históricos.
A importância desse barulho, bem ... depende de você. Parte do objetivo é tornar seus dados desconhecidos novamente. Traduzindo, recodificando e
restaurando- os, começamos a ver elementos de dados que permaneceram invisíveis durante o exame visual. Essa deformação é consistente com os argumentos apresentados, por exemplo, por Mark Sample sobre a
deformação da sociedade ou Bethany Nouwiski sobre a
"resistência dos materiais" . A pontuação nos leva dos dados à "legenda", das ciências sociais à arte,
da falha à estética . Vamos ver como é.
Conteúdo
Metas e objetivos
Neste tutorial, discutirei três maneiras de gerar som ou música a partir dos seus dados.
Primeiro, usaremos o sistema de algoritmos musicais gratuito e aberto desenvolvido por Jonathan Middleton. Nele, vamos nos familiarizar com os principais problemas e termos. Em seguida, usaremos uma pequena biblioteca Python para "traduzir" os dados para o teclado de 88 teclas e trazer um pouco de criatividade ao trabalho. Por fim, faça o upload dos dados para o programa de processamento de som e música em tempo real do Sonic Pi, para o qual foram publicados muitos tutoriais e recursos de referência.
Você verá como trabalhar com sons nos move da visualização simples para um ambiente realmente eficaz.
As ferramentas
Amostras de dados
Uma pequena introdução à dublagem
A sonificação é um método de traduzir certos aspectos dos dados em sinais de áudio. Em geral, um método pode ser chamado de "pontuação" se atender a determinadas condições. Isso inclui reprodutibilidade (outros pesquisadores podem processar os mesmos dados da mesma maneira e obter os mesmos resultados) e o que pode ser chamado de "inteligibilidade" ou "inteligibilidade", ou seja, quando elementos significativos dos dados originais são sistematicamente refletidos no som resultante (consulte
Hermann, 2008 ). O trabalho de
Mark Last e Anna Usyskina (2015) descreve uma série de experimentos para determinar quais tarefas analíticas podem ser executadas na pontuação dos dados. Seus
resultados experimentais mostraram que mesmo estudantes não treinados (sem treinamento formal em música) podem distinguir dados auditivos e tirar conclusões úteis. Eles descobriram que os ouvintes eram capazes de executar de ouvido as tarefas gerais de mineração de dados, como classificação e agrupamento (em seus experimentos, eles transmitiam dados científicos básicos em uma escala de música ocidental).
Last e Usyskina focaram na série temporal. De acordo com suas descobertas, os dados de séries temporais são particularmente adequados para a pontuação, pois existem paralelos naturais aqui. A música é consistente, tem duração e se desenvolve com o tempo; também com dados de séries temporais (
Last, Usyskina 2015: p. 424 ). Resta comparar os dados com as saídas de áudio correspondentes. Em muitas aplicações, o método de mapeamento de parâmetros é usado para combinar os aspectos dos dados de várias medidas auditivas, como altura, forma variacional e intervalo (início). O problema com essa abordagem é que, se não houver conexão temporária (ou melhor, conexão não linear) entre os pontos de dados da fonte, o som resultante pode acabar sendo "confuso" (
2015: 422 ).
Preenchendo os espaços em branco
Ouvindo o som, uma pessoa preenche os momentos de silêncio com suas expectativas. Considere um vídeo em que o mp3 é convertido para MIDI e volta para mp3; a música é "achatada", para que todas as informações de áudio sejam reproduzidas com um instrumento (o efeito é semelhante a salvar uma página da web como .txt, abri-la no Word e salvá-la novamente no formato .html). Todos os sons (incluindo vocais) são traduzidos para os valores das notas correspondentes e, em seguida, retornam ao mp3.
Isso é barulho, mas você pode entender o ponto:
O que está acontecendo aqui? Se essa música era conhecida por você, você provavelmente entendeu as verdadeiras “palavras”. Mas a música não tem palavras! Se você nunca ouviu isso antes, soa como cacofonia sem sentido (mais exemplos em
Andy Bayo). Esse efeito às vezes é chamado de alucinação auditiva. O exemplo mostra como em qualquer representação de dados podemos ouvir / ver o que, estritamente falando, não é. Preenchemos o vazio com nossas próprias expectativas.
O que isso significa para a história? Se expressarmos nossos dados e começarmos a ouvir padrões de sons ou explosões estranhas, nossas expectativas culturais em relação à música (memórias de fragmentos semelhantes de música ouvidas em certos contextos) irão colorir nossa interpretação. Eu diria que isso é verdade para todas as idéias sobre o passado, mas a pontuação é bem diferente dos métodos padrão, portanto, essa autoconsciência ajuda a identificar ou expressar certos padrões críticos (dados sobre) o passado.
Considere três ferramentas para pontuação de dados e observe como a escolha de uma ferramenta afeta o resultado e como resolver esse problema repensando os dados em outra ferramenta. Por fim, a pontuação não é mais objetiva do que a visualização; portanto, o pesquisador deve estar pronto para justificar sua escolha e torná-la transparente e reproduzível. (Para que ninguém pense que a música de pontuação e gerada por algoritmos é algo novo, direciono o leitor interessado para
Hedges, 1978 ).
Cada seção contém uma introdução conceitual, seguida de uma explicação passo a passo usando dados arqueológicos ou históricos.
Algoritmos musicais
Existe uma ampla gama de ferramentas para expressar dados. Por exemplo, pacotes para o
ambiente estatístico R popular, como
playitbyR e
AudiolyzR . Mas o primeiro não é suportado na versão atual do R (a última atualização ocorreu há vários anos) e, para que o segundo funcione corretamente, é necessária uma configuração séria de software adicional.
Por outro lado, o site
Musicalgorithms é bastante fácil de usar, pois opera há mais de dez anos. Embora o código fonte não tenha sido publicado, é um projeto de pesquisa de longo prazo em música computacional de Jonathan Middleton. Atualmente, está na terceira versão principal (iterações anteriores estão disponíveis na Internet). Vamos começar com algoritmos musicais, porque nos permite baixar e configurar rapidamente nossos dados para liberar a apresentação como arquivos MIDI. Antes de começar, certifique-se de selecionar a
terceira versão .
Site da Musicalgorithms em 2 de fevereiro de 2016Algoritmos musicais realizam uma série de transformações de dados. No exemplo abaixo (por padrão no site), há apenas uma linha de dados, embora pareça várias linhas. Esse padrão consiste em campos separados por vírgulas, que são separadas internamente por espaços.
Nº de vozes, nome da área de texto, dados da área de texto
1, morphBox,
, areaPitch1,2 7 1 8 2 8 1 8 2 8 4 5 9 0 4 5 2 3 5 3 6 0 2 8
, dAreaMap1,2 7 1 8 2 8 1 8 2 8 4 5 9 0 4 5 2 3 5 3 6 0 2 8
, mapArea1.20 69 11 78 20 78 11 78 20 78 40 49 88 1 40 49 20 30 49 30 59 1 20 78
, dMapArea1.1 5 1 5 1 5 1 5 1 5 3 3 6 0 3 3 1 2 3 2 4 0 1 5
, so_text_area1.20 69 11 78 20 78 11 78 20 78 40 49 88 1 40 49 20 30 49 30 59 1 20 78
Esses números representam os dados de origem e suas conversões. Compartilhar o arquivo permite que outro pesquisador repita o trabalho ou continue processando com outras ferramentas. Se você começar do começo, precisará apenas dos dados de origem abaixo (lista de pontos de dados):
Nº de vozes, nome da área de texto, dados da área de texto
1, morphBox,
, área pitch 1,24 72 12 84 21 81 14 81 24 81 44 51 94 01 44 51 24 31 5 43 61 04 21 81
Para nós, a chave é o campo 'areaPitch1' com os dados de entrada, que são separados por espaços. Outros campos serão preenchidos durante o trabalho com várias configurações de algoritmos musicais. Nos dados acima (por exemplo, 24 72 12 84, etc.), os valores são os cálculos iniciais do número de inscrições nas cidades britânicas ao longo da estrada romana (mais tarde praticaremos com outros dados).
Após carregar os dados na barra de menus superior, você pode selecionar várias operações. Na captura de tela, passar o mouse sobre as informações exibe uma explicação do que acontece quando você seleciona a operação de divisão para dimensionar os dados no intervalo de notas selecionadoAgora, ao visualizar várias guias na interface (duração, conversão de altura, conversão de duração, opções de escala), várias transformações estão disponíveis. No mapeamento de afinação, existem várias opções matemáticas para converter dados em um teclado de piano completo de 88 teclas (em uma tradução linear, o valor
médio é traduzido para o C médio, ou seja, 40). Você também pode escolher o tipo de escala: menor ou maior e assim por diante. Nesse ponto, após selecionar várias transformações, você deve salvar o arquivo de texto. Na guia Arquivo → Reproduzir, você pode fazer o download do arquivo midi. Seu programa de áudio padrão deve poder tocar midi (geralmente as notas de piano são usadas por padrão). Ferramentas midi mais sofisticadas são atribuídas em programas de mixagem, como GarageBand (Mac) ou
LMMS (Windows, Mac, Linux). No entanto, o uso do GarageBand e do LMMS está além do escopo deste guia: um tutorial em vídeo do LMMS está disponível
aqui e os tutoriais do GarageBand estão disponíveis online. Por exemplo, um
ótimo guia no Lynda.com.
Acontece que, para os mesmos pontos, existem várias colunas de dados. Digamos, em nosso exemplo da Grã-Bretanha, também queremos expressar o cálculo dos tipos de cerâmica para as mesmas cidades. Em seguida, você pode recarregar a próxima linha de dados, realizar transformações e comparações - e criar outro arquivo MIDI. Como o GarageBand e o LMMS permitem sobrepor vozes, você pode criar sequências musicais complexas.
Captura de tela do GarageBand, onde arquivos midi são temas expressos no diário de John Adams. Na interface do GarageBand (e LMMS), cada arquivo midi é arrastado com o mouse para o local apropriado. O kit de ferramentas de cada arquivo MIDI (ou seja, faixa) é selecionado no menu GarageBand. Os rótulos das faixas foram alterados para refletir as palavras-chave em cada tópico. A área verde à direita é uma visualização das notas em cada faixa. Você pode assistir a esta interface em ação e ouvir música aquiQuais conversões usar? Se você tiver duas colunas de dados, esses são dois votos. Talvez, em nossos dados hipotéticos, faça sentido reproduzir em voz alta a primeira voz em voz alta como a principal: no final, as inscrições nos "falam" de alguma maneira (as inscrições romanas se referem literalmente aos transeuntes: "Oh, você está passando ..."). E a cerâmica é talvez um artefato mais modesto que possa ser comparado com a extremidade inferior da escala ou aumentar a duração das notas, refletindo sua onipresença entre representantes de diferentes classes nessa região.
Não existe uma maneira "certa" de converter dados em som , pelo menos ainda não. Mas mesmo neste exemplo simples, vemos como tons de significado e interpretação aparecem nos dados e em sua percepção.
Mas e quanto tempo? Os dados históricos geralmente têm uma determinada data obrigatória. Portanto, o intervalo de tempo entre dois pontos de dados deve ser considerado. É aqui que nossa próxima ferramenta se torna útil se os pontos de dados estiverem relacionados entre si no espaço de tempo. Estamos começando a passar da pontuação (pontos de dados) para a música (relações entre pontos).
Prática
Na primeira coluna
do conjunto de dados está o número de moedas romanas e o número de outros materiais das mesmas cidades. Informações retiradas do Portable Antiquities Scheme do British Museum. O processamento desses dados pode revelar alguns aspectos da situação econômica ao longo da Watling Street, a principal rota através da Grã-Bretanha romana. Os pontos de dados estão localizados geograficamente de noroeste a sudeste; assim, à medida que o som se reproduz, ouvimos movimentos no espaço. Cada nota representa cada parada no caminho.
- Abra thesonification-roman-data.csv em uma planilha. Copie a primeira coluna em um editor de texto. Exclua as terminações de linha para que todos os dados estejam na mesma linha.
- Adicione as seguintes informações:
Nº de vozes, nome da área de texto, dados da área de texto
1, morphBox,
, areaPitch1,
... para que seus dados sigam imediatamente após a última vírgula (como pltcm ). Salve o arquivo com um nome significativo, por exemplo, coinsounds1.csv
.
- Vá para o site Musicalgorithms (terceira versão) e clique no botão 'Carregar'. Na janela pop-up, clique no botão azul 'Carregar' e selecione o arquivo salvo na etapa anterior. O site fará o upload de seus materiais e, se for bem-sucedido, exibirá uma marca de seleção verde. Se não for esse o caso, verifique se os valores estão separados por espaços e siga imediatamente a última vírgula no bloco de código. Você pode tentar baixar o arquivo de demonstração deste guia .

Depois de clicar em 'Carregar', esta caixa de diálogo aparece na tela principal. Em seguida, clique em 'Carregar arquivo CSV'. Selecione seu arquivo, ele aparecerá no campo. Em seguida, clique no botão 'Carregar' na parte inferior.
- Clique em 'Pitch Input' e você verá os valores dos seus dados. Não selecione opções adicionais nesta página no momento (portanto, os valores padrão se aplicam).
- Clique em 'Duração da entrada'. Não selecione nenhuma opção aqui ainda . Essas opções farão várias transformações dos seus dados com uma alteração na duração de cada nota. Até você se preocupar com essas opções, siga em frente.
- Clique em 'Mapeamento de afinação'. Essa é a escolha mais importante, pois converte (ou seja, dimensiona) seus dados brutos nas teclas do teclado. Deixe o
mapping
no valor 'division' (outros parâmetros são tradução modular ou logarítmica). O parâmetro Range
de 1 a 88 usa todo o comprimento do teclado de 88 teclas; assim, o valor mais baixo corresponderá à nota mais profunda do piano e o valor mais alto à nota mais alta. Em vez disso, você pode limitar a música a um intervalo em torno do meio C e inserir um intervalo de 25 a 60. A saída mudará da seguinte forma: 31,34,34,34,25,28,30,60,28,25,26,26,25,25,60,25,25,38,33,26,25,25,25
. Estes não são seus números, mas as notas no teclado.

Clique no campo 'Intervalo' e insira 25. Os valores abaixo serão alterados automaticamente. No campo 'para', defina 60. Se você for para outro campo, os valores serão atualizados
- Clique em 'Mapeamento de duração'. Como na conversão de altura, aqui o programa assume o intervalo de tempo especificado e usa vários parâmetros matemáticos para converter esse intervalo em notas. Se você passar o mouse sobre
i
, verá quais números correspondem a notas inteiras, quartos, oitavos e assim por diante. Deixe os padrões por enquanto.
- Clique em 'Opções de escala'. Aqui começamos a trabalhar com o que corresponde, em certo sentido, ao aspecto "emocional". Geralmente, a escala maior é percebida como "alegre" e a menor - como "triste"; uma discussão detalhada deste tópico pode ser encontrada aqui . Por enquanto, deixe 'scale by: major'. Deixe 'escala' em C.
Então, anunciamos uma coluna de dados! Clique em 'Salvar' e depois em 'Salvar CSV'.
Caixa de diálogo 'Salvar'Você obterá algo como este arquivo:
Nº de vozes, nome da área de texto, dados da área de texto
1, morphBox,
, área pitch 1,80 128 128 128 1 40 77 495 48 2 21 19 1 1 500 1 3 190 115 13 5 1 3
, dAreaMap1,2 7 1 8 2 8 1 8 2 8 4 5 9 0 4 5 2 3 5 3 6 0 2
, mapArea1.31 34 34 34 25 28 30 60 28 25 26 26 25 25 60 25 25 38 33 26 25 25 25
, dMapArea1.1 5 1 5 1 5 1 5 1 5 3 3 6 0 3 3 1 2 3 2 4 0 1
, so_text_area1.32 35 35 35 25 28 30 59 28 25 27 27 25 25 59 25 25 39 33 27 25 25 25
Os dados originais permaneceram no campo 'areaPitch1' e, em seguida, os mapeamentos criados vão além. O site permite gerar em um arquivo MIDI até quatro vozes por vez. Dependendo de quais instrumentos você deseja usar posteriormente, você pode optar por gerar um arquivo MIDI por vez. Vamos começar a música: clique em 'Play'. Aqui você escolhe o ritmo e o instrumento. Você pode ouvir seus dados em um navegador ou salvar como um arquivo MIDI com o botão azul 'Salvar arquivo MIDI'.
Vamos voltar ao início e carregar as duas colunas de dados neste modelo:
Nº de vozes, nome da área de texto, dados da área de texto
2, morphBox,
, areaPitch1,
, areaPitch2,
Aqui estamos na página com os parâmetros 'pitch input'. Na parte superior da janela, especifique dois votos, agora em qualquer página com os parâmetros duas janelas para dois votos abertos. Como antes, carregamos os dados no formato CSV, mas o arquivo deve ser formatado para que os valores 'areaPitch1' e 'areaPitch2' sejam indicados lá. Os dados da primeira voz aparecerão à esquerda e a segunda - à direitaSe tivermos vários votos, o que deve ser destacado? Observe que, com essa abordagem, nossa dublagem não leva em consideração a distância entre pontos no mundo real. Se você considerar, isso afetará bastante o resultado. Obviamente, a distância não precisa estar ligada à geografia - pode estar ligada ao tempo. A ferramenta a seguir indicará explicitamente esse fator na pontuação.
Configuração do Python brevemente
Esta seção do manual exigirá Python. Se você não experimentou esse idioma, precisará gastar algum tempo para
conhecer a linha de comando . Consulte também
o guia de instalação rápida dos módulos .
O Python já está instalado em Macs. Você pode verificar: pressione COMMAND e um espaço, insira o
terminal
na caixa de pesquisa e clique no aplicativo do terminal. O
$ type python —version
mostrará qual versão do Python você instalou. Neste artigo, estamos trabalhando com o Python 2.7, o código não foi testado no Python 3.
Os usuários do Windows precisam instalar o Python por conta própria: comece
nesta página , embora seja um pouco mais complicado do que aquilo que diz. Primeiro, você precisa baixar o arquivo
.msi
(Python 2.7). Execute o instalador, ele será instalado em um novo diretório, por exemplo,
C:\Python27\
. Então você precisa registrar esse diretório nos caminhos, ou seja, informe ao Windows onde procurar o Python ao executar o programa Python. Existem várias maneiras de fazer isso. Talvez a maneira mais fácil de encontrar o
Powershell
no seu computador (digite 'powershell' na barra de pesquisa do Windows). Abra o Powershell e, no prompt de comando, cole este todo:
[Environment] :: SetEnvironmentVariable ("Caminho", "$ env: Caminho; C: \ Python27 \; C: \ Python27 \ Scripts \", "Usuário")
Se nada acontecer pressionando Enter, o comando funcionou. Para verificar, abra um prompt de comando (aqui estão
10 maneiras de fazer isso ) e digite
python --version
. Você deve ver uma resposta indicando o
Python 2.7.10
ou uma versão semelhante.
A última peça do quebra-cabeça é um programa chamado
Pip
. Os usuários de Mac podem instalá-lo com o comando no terminal
sudo easy_install pip
. Usuários do Windows terão um pouco mais complicado. Primeiro, clique com o botão direito do mouse e salve o arquivo
neste link (se você clicar no link, o código
get-pip.py será aberto no navegador). Mantenha em algum lugar à mão. Abra um prompt de comando no diretório em que você salvou o
get-pip.py
. Em seguida, digite
python get-pip.py
no prompt de comando
python get-pip.py
.
Quando você tiver o código Python que deseja executar, cole-o em um editor de texto e salve o arquivo com a extensão
.py
. Este é um arquivo de texto, mas a extensão do arquivo diz ao computador para usar o Python para interpretá-lo. É iniciado a partir da linha de comando, onde o nome do intérprete é indicado primeiro e, em seguida, o nome do arquivo:
python my-cool-script.py
.
MIDITime
MIDITime é um pacote Python desenvolvido pela
Reveal News (anteriormente chamado de Center for Investigative Journalism). Repositório
no Github . O MIDITime foi projetado especificamente para processar séries temporais (ou seja, uma sequência de observações coletadas ao longo do tempo).
Embora os algoritmos musicais tenham uma interface mais ou menos intuitiva, a vantagem aqui é de código aberto. Mais importante, a ferramenta anterior não pode levar em consideração os dados, levando em consideração o tempo histórico. MIDITime permite agrupar informações sobre esse fator.
Suponha que tenhamos um diário histórico ao qual um
modelo temático foi aplicado. A saída resultante pode conter entradas do diário na forma de linhas e nas colunas haverá uma contribuição percentual de cada tópico. Nesse caso,
ouvir os valores ajudará a entender esses padrões de pensamento do diário que é impossível transmitir na forma de gráfico. Ouvir explosões imediatamente discerníveis ou repetir padrões musicais que não são visíveis no gráfico.
Configurando MIDITime
Instalação com um comando
pip :
$ pip install miditime
para papoulas;
$ sudo pip install miditime
no Linux;
> python pip install miditime
no Windows (se a instrução não funcionar, você pode tentar
este utilitário para instalar o Pip).
Prática
Considere um exemplo de script. Abra um editor de texto, copie e cole este código:
Salve o script como
music1.py
. Em um terminal ou linha de comando, execute:
$ python music1.py
Um novo arquivo
myfile.mid
será criado no
myfile.mid
Você pode abri-lo para ouvir usando o Quicktime ou o Windows Media Player (e adicionar ferramentas no GarageBand ou
LMMS ).
Music1.py
importa miditime (lembre-se de instalá-lo antes de executar o script:
pip install miditime
). Então define o ritmo. Todas as notas são listadas separadamente, onde o primeiro número é a hora de início da reprodução, a altura (ou seja, a própria nota!), Com que intensidade ou ritmo a nota é tocada (ataque) e sua duração. Em seguida, as notas são gravadas na faixa e a faixa em si é gravada no arquivo
myfile.mid
.
Brinque com o script, adicione mais notas. Aqui estão as notas para a música 'Baa Baa Black Sheep':
D, D, A, A, B, B, B, B, A
Baa, Baa, preto, ovelha, você tem lã?
Você pode escrever instruções para o computador tocar uma melodia (aqui está um
diagrama para ajudar)?
A propósito . Existe um formato de arquivo de texto especial para descrever a música chamada
Notação ABC . Está além do escopo deste artigo, mas você pode escrever um script para pontuação, digamos, em planilhas, comparando os valores das anotações na notação ABC (se você já usou a construção IF - THEN no Excel, tem uma idéia de como fazer isso), e, em sites
como esse, a notação ABC é convertida em um arquivo .mid.
Carregando seus próprios dados
Este arquivo contém uma amostra do modelo de tema do diário de John Adams para o site da
Macroscope . Somente os sinais mais fortes foram deixados aqui, arredondando os valores nas colunas para duas casas decimais. Para inserir esses dados no script Python, você precisa formatá-los de uma maneira especial. O mais difícil é com o campo de data.
Para este tutorial, vamos deixar os nomes das variáveis e o restante inalterado no script de exemplo. Um exemplo é projetado para processar dados de terremotos; portanto, aqui "magnitude" pode ser representada como nossa "contribuição do tópico". my_data = [
{'event_date': <objeto de data e hora>, 'magnitude': 3,4},
{'event_date': <objeto de data e hora>, 'magnitude': 3.2},
{'event_date': <objeto de data e hora>, 'magnitude': 3,6},
{'event_date': <objeto de data e hora>, 'magnitude': 3.0},
{'event_date': <objeto de data e hora>, 'magnitude': 5.6},
{'event_date': <objeto de data e hora>, 'magnitude': 4.0}
]
Expressões regulares podem ser usadas para formatar os dados e, ainda mais fácil, planilhas. Copie o elemento com o valor de contribuição do tema para uma nova planilha e deixe as colunas esquerda e direita. No exemplo abaixo, coloquei-o na coluna D e preencha o restante:
Em seguida, copie e cole os elementos imutáveis, preenchendo a coluna inteira. O item com a data deve estar no formato (ano, mês, dia). Depois de preencher a tabela, você pode copiá-la e colá-la em um editor de texto, fazendo parte da matriz
my_data
, por exemplo:
my_data = [
{'event_date': datetime (1753,6,8), 'magnitude': 0,0024499630},
{'event_date': datetime (1753,6,9), 'magnitude': 0,0035766320},
{'event_date': datetime (1753,6,10), 'magnitude': 0,0022171550},
{'event_date': datetime (1753,6,11), 'magnitude': 0,0033220150},
{'event_date': datetime (1753,6,12), 'magnitude': 0,0046445900},
{'event_date': datetime (1753,6,13), 'magnitude': 0,0035766320},
{'event_date': datetime (1753,6,14), 'magnitude': 0,0042241550}
]
Observe que não há vírgula no final da última linha.
O script final será mais ou menos assim se você usar o exemplo da página da Miditime (os fragmentos de código abaixo são interrompidos por comentários, mas devem ser inseridos juntos como um único arquivo em um editor de texto):
from miditime.MIDITime import MIDITime from datetime import datetime import random mymidi = MIDITime(108, 'johnadams1.mid', 3, 4, 1)
Os valores após MIDITime são definidos como
MIDITime(108, 'johnadams1.mid', 3, 4, 1)
, aqui:
- número de batimentos por minuto (108),
- arquivo de saída ('johnadams1.mid'),
- o número de segundos na música para representar um ano na história (3 segundos por ano civil; portanto, as entradas do diário por 50 anos são dimensionadas para uma melodia de 50 × 3 segundos, ou seja, dois minutos e meio),
- oitava básica para música (C médio é geralmente representado como C5, então aqui 4 corresponde a uma oitava menor que a referência),
- e o número de oitavas para comparar alturas.
Agora passamos os dados para o script, carregando-os na matriz
my_data
:
my_data = [ {'event_date': datetime(1753,6,8), 'magnitude':0.0024499630}, {'event_date': datetime(1753,6,9), 'magnitude':0.0035766320},
... aqui inserimos todos os dados e não esquecemos de
remover a vírgula no final da última linha de
event_date
, e após os dados colocar o colchete final em uma linha separada:
{'event_date': datetime(1753,6,14), 'magnitude':0.0042241550} ]
depois insira o tempo:
my_data_epoched = [{'days_since_epoch': mymidi.days_since_epoch(d['event_date']), 'magnitude': d['magnitude']} for d in my_data] my_data_timed = [{'beat': mymidi.beat(d['days_since_epoch']), 'magnitude': d['magnitude']} for d in my_data_epoched] start_time = my_data_timed[0]['beat']
Este código define o tempo entre diferentes entradas do diário; se as entradas do diário estiverem próximas uma da outra a tempo, as notas correspondentes também estarão mais próximas. Finalmente, determinamos como os dados se comparam com a altura. Os valores iniciais são indicados como uma porcentagem no intervalo de 0,01 (ou seja, 1%) a 0,99 (99%), portanto, definimos
scale_pct
entre 0 e 1. Se não tivermos porcentagens, usaremos as mais baixas e as mais altas valores. Assim, inserimos o seguinte código:
def mag_to_pitch_tuned(magnitude): scale_pct = mymidi.linear_scale_pct(0, 1, magnitude)
e o último fragmento para salvar dados em um arquivo:
Salve este arquivo com um novo nome e extensão
.py
.
Para cada coluna nos dados de origem, criamos um script exclusivo e não se esqueça
de alterar o nome do arquivo de saída ! Você pode fazer upload de arquivos MIDI individuais no GarageBand ou no LMMS para instrumentação. Aqui está o
diário completo
de John Adams .
Sonic pi
Processar midi exclusivo no GarageBand ou em outro editor de música significa passar da cópia simples para a arte musical. Esta seção final do artigo não é um guia completo para o uso do
Sonic Pi , mas uma introdução a um ambiente que permite codificação e reprodução em tempo real de dados na forma de música (consulte o
vídeo para obter um exemplo de codificação com
reprodução em tempo real). Os tutoriais incorporados ao programa mostrarão como usar um computador como instrumento musical (você insere o código Ruby no editor embutido e o intérprete toca o resultado imediatamente).
Por que isso é necessário? Como você pode entender neste guia, ao ler os dados, você começa a tomar decisões sobre como converter os dados em som. Essas decisões refletem decisões implícitas ou explícitas sobre quais dados são importantes. Há um continuum de "objetividade", se você quiser. Por um lado, dados históricos expressos, por outro - uma idéia do passado, são tão emocionantes e pessoais quanto qualquer palestra pública bem feita. A sondagem permite realmente ouvir os dados armazenados nos documentos: esse é um tipo de histórico público. A performance musical dos nossos dados ... imagine!
Aqui, proponho um trecho de código para importar dados, que é apenas uma lista de valores armazenados como csv. Agradecimentos à bibliotecária da Universidade George Washington, Laura Vrubel, que fez o upload de seus experimentos sobre as operações da biblioteca no
gist.github.comExistem dois temas
nesta amostra (o modelo temático gerado a partir
da relação jesuíta ). Na primeira linha, os cabeçalhos são 'topic1' e 'topic2'.
Prática
Siga os tutoriais integrados do Sonic Pi até se familiarizar com a interface e os recursos (todos esses tutoriais são compilados
aqui ; você também pode ouvir
uma entrevista com Sam Aaron, criador do Sonic Pi). Em seguida, copie o seguinte código em um novo buffer (janela do editor) (novamente, fragmentos separados devem ser coletados em um script):
require 'csv' data = CSV.parse(File.read("/path/to/your/directory/data.csv"), {:headers => true, :header_converters => :symbol}) use_bpm 100
Lembre-se de que o
path/to/your/directory/
é o local real dos seus dados no computador. Verifique se o arquivo é realmente chamado
data.csv
ou edite esta linha no código.
Agora carregue esses dados na composição da música:
As primeiras linhas carregam as colunas de dados; depois, indicamos qual amostra de som queremos usar (piano) e depois tocamos o primeiro tópico (tópico1) de acordo com os critérios especificados: para a força da nota (ataque), um valor aleatório menor que 0,5 é selecionado; para deterioração - um valor aleatório menor que 1; para amplitude, um valor aleatório inferior a 0,25.
Vê uma linha multiplicada por cem (
*100
)? Ele pega nosso valor de dados (decimal) e o transforma em um número inteiro. Nesse fragmento, o número é diretamente equiparado a uma nota. Se a nota mais baixa é 88 e a nota mais alta é 1, essa abordagem é um pouco problemática: na verdade, não mostramos nenhum tom aqui! Nesse caso, você pode usar Musicalgorithms para exibir a altura e depois passar esses valores de volta ao Sonic Pi. Além disso, como esse código é Ruby mais ou menos padrão, você pode usar os métodos usuais de normalização de dados e, em seguida, fazer uma comparação linear de seus valores com um intervalo de 1 a 88. Para começar, é bom ver
o trabalho de Steve Lloyd sobre a transmissão de dados meteorológicos com o Sonic Pi.
E a última coisa a observar aqui: o valor de 'rand' (aleatório) permite adicionar um pouco de "humanidade" à música em termos de dinâmica. Fazemos o mesmo para 'topic2'.
Você também pode especificar o ritmo (batimentos por minuto), loops, amostras e outros efeitos que o Sonic Pi suporta. A localização do código afeta a reprodução: por exemplo, se colocado na frente do bloco de dados acima, ele será reproduzido primeiro. Por exemplo, se você use_bpm 100
inserir o seguinte após uma linha :
... você recebe uma pequena introdução musical. O programa aguarda 2 segundos, reproduz a amostra 'ambi_choir' e aguarda outros 6 segundos antes de começar a reproduzir nossos dados. Se você quiser adicionar um pouco de uma bateria sinistra em toda a melodia, coloque-o ao lado (na frente dos seus próprios dados):
O código é bem direto: a amostra em loop 'bd_boom' com o efeito sonoro do reverb a uma certa velocidade. A pausa entre os ciclos é de 2 segundos.Quanto à "codificação em tempo real", isso significa que você pode fazer alterações no código enquanto reproduz essas alterações . Não gosta do que ouve? Mude o código imediatamente!A exploração do Sonic Pi pode começar com este workshop . Veja também o relatório de Laura Vrubel sobre a participação no seminário, que também descreve seu trabalho nesta área e o trabalho de seus colegas.Nada de novo sob o sol
E repito: não é necessário pensar que, com nossa abordagem algorítmica, estamos na vanguarda da ciência. Em 1978, foi publicado um artigo científico sobre os “jogos de dados musicais” do século XVIII, em que rolos de dados determinavam a recombinação de peças de música escritas anteriormente. Robin Newman estudou e codificou alguns desses jogos para o Sonic Pi . Para notação musical, Newman usa uma ferramenta que pode ser descrita como Markdown + Pandoc e, para converter em notas, Lilypond . Portanto, todos os tópicos do nosso blog The Programming Historian têm uma longa história!Conclusão
Ao expressar, vemos que nossos dados geralmente refletem tanto a história quanto sua interpretação em nosso desempenho. Isso se deve em parte à novidade e à natureza artística necessárias para converter dados em som. Mas isso distingue muito a interpretação sonora da visualização tradicional. Talvez os sons gerados nunca cheguem ao nível de "música"; mas se eles ajudarem a mudar nossa compreensão do passado e influenciarem os outros, então o esforço vale a pena. Como diria Trevor Owens, "soar é uma descoberta do novo, não uma justificação do conhecido ".Termos
- MIDI : . , ( ). . MIDI- , .
- MP3 : , .
- : ( C . .)
- :
- : ( , , . .)
- :
- Amplitude : grosso modo, volume da nota