arte computacional com ruby...e amigos!

63
Arte Computacional com Ruby ...e amigos.

Upload: thibusil

Post on 12-Jun-2015

599 views

Category:

Technology


0 download

DESCRIPTION

Apresesentação feita com dupla com Carlos Villela (@cv) para a Ruby Masters Conf 2011.

TRANSCRIPT

Page 1: Arte Computacional com Ruby...e amigos!

Arte Computacional com Ruby...e amigos.

Page 2: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Carlos Villela (@cv)

ThoughtWorks há 6 anos (Londres, Porto Alegre)Ruby desde 2004Java, Ruby, Smalltalk, Io, Ioke, etc...

Twitter, GitHub, Flickr: cvBlog: http://lixo.org

Page 3: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Thiago Bueno (@tbueno)

ThoughtWorks há 1+ ano (Porto Alegre)Ruby desde 2005Java, Ruby, Clojure, etc

Twitter, GitHub, Flickr: tbuenoBlog: http://tbueno.org

Page 4: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

e + 1 = 0iπ

Page 5: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

e + 1 = 0iπIdentidade de Euler

Número de EulerUnidade Imaginária

Page 6: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

e + 1 = 0iπIdentidade de Euler

Número de EulerUnidade Imaginária

Pi

Page 7: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

e + 1 = 0iπIdentidade de Euler

Número de EulerUnidade Imaginária

Pi

1

Page 8: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

e + 1 = 0iπIdentidade de Euler

Número de EulerUnidade Imaginária

Pi

10

Page 9: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

e + 1 = 0iπIdentidade de Euler

Número de EulerUnidade Imaginária

Pi

10

Adição

Page 10: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

e + 1 = 0iπIdentidade de Euler

Número de EulerUnidade Imaginária

Pi

10

Adição

Multiplicação

Page 11: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

e + 1 = 0iπIdentidade de Euler

Número de EulerUnidade Imaginária

Pi

10

Adição

Multiplicação

Exponenciação

Page 12: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

e + 1 = 0iπ

“most beautiful theorem in mathematics”

“greatest equation ever”

Page 13: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

“Beauty depends on size as well as symmetry.” – Aristotle (384 B.C.-322 B.C.), Poetics

Page 14: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

“the mathematician is only complete in so far as he feels within himself the beauty of the true.” – Goethe

Page 15: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

“... who is not at the same time a bit of a poet will never be a full mathematician..”

– O. Spengler, in J. Newman, The World

of Mathematics, Simon & Schuster, 1956

Page 16: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Por que Ruby?

Page 17: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Beleza

Page 18: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Simplicidade

Page 19: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Sintaxe

Page 20: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

“Beauty depends on size as well as symmetry.” - Aristotle (384 B.C.-322 B.C.),

Poetics

Beleza

Page 21: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

“Beauty depends on size as well as symmetry.” - Aristotle (384 B.C.-322 B.C.),

Poetics

Simplicidade

Beleza

Page 22: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

“Beauty depends on size as well as symmetry.” - Aristotle (384 B.C.-322 B.C.),

Poetics

Simplicidade

Beleza

Sintaxe

Page 23: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Matemática e a Arte

Proporção Áurea (Phi)• Aprox.1.6180339887A proporção de a+b para a é a mesma de a para bAlega-se ser a proporção mais esteticamente aplasível ao ser humano.

a b

a+b

Page 24: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Matemática e a Arte

Page 25: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Matemática e a Arte

Page 26: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Matemática e a Arte

Page 27: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Matemática e a Arte

Page 28: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Matemática e a Arte

Nota LogaritmoFrequência

Música Física Matemática

Page 29: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

A Matemática é Sua Amiga

Álgebra• Curvas, retas, transformações

Geometria

• Quadriláteros, círculos...Geometria

• Senos, cosenos, tangentes... Propriedades dos números

• Naturais, inteiros, racionais, primos...

Page 30: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Ver

Page 31: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

ruby-processing

Processing• Linguagem/ambiente de programação para imagens,

animações e projetos multimídia• MIDI, OpenGL, Arduino...

ruby-processing• É um wrapper Ruby do framework • Beleza do Ruby + as bibliotecas gráficas do Java

Page 32: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

ruby-processing

Page 33: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

ruby-processing posição e ângulo de uma “raiz”

Page 34: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

ruby-processing

PI, Cos e Sen

Page 35: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

ruby-processing

Chamadas Recursivas

Page 36: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

ruby-processing

Desenha “folhas”

Page 37: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

ruby-processing

Page 38: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Context-free Art

Geração de imagens através de uma gramática livre de contexto e regras não determinísticas

Escrito em C++ e Objective-C

Parcialmente re-escrito com uma DSL em Ruby para o ruby-processing

Page 39: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Context-free Art

Page 40: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Context-free Art

Page 41: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Visualização de Dados - Exemplo Real

Base de Dados de 100 corais de Johann S. BachSalvos em um arquivo Lisp

(1 ((st 8) (pitch 67) (dur 4) (keysig 1) (timesig 12) (fermata 0))((st 12) (pitch 67) (dur 8) (keysig 1) (timesig 12) (fermata 0)) ((st 20) (pitch 74) (dur 4) (keysig 1) (timesig 12) (fermata 0))((st 24) (pitch 71) (dur 6) (keysig 1) (timesig 12) (fermata 0)) ((st 30) (pitch 69) (dur 2) (keysig 1) (timesig 12) (fermata 0))((st 32) (pitch 67) (dur 4) (keysig 1) (timesig 12) (fermata 0)) ((st 36) (pitch 67) (dur 6) (keysig 1) (timesig 12) (fermata 0))((st 42) (pitch 69) (dur 2) (keysig 1) (timesig 12) (fermata 0)) ((st 44) (pitch 71) (dur 4) (keysig 1) (timesig 12) (fermata 0))((st 48) (pitch 69) (dur 8) (keysig 1) (timesig 12) (fermata 1)) ((st 56) (pitch 71) (dur 4) (keysig 1) (timesig 12) (fermata 0))((st 60) (pitch 74) (dur 8) (keysig 1) (timesig 12) (fermata 0)) ((st 68) (pitch 72) (dur 4) (keysig 1) (timesig 12) (fermata 0))((st 72) (pitch 71) (dur 4) (keysig 1) (timesig 12) (fermata 0)) ((st 76) (pitch 69) (dur 8) (keysig 1) (timesig 12) (fermata 0))((st 84) (pitch 67) (dur 8) (keysig 1) (timesig 12) (fermata 1))

Page 42: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Visualização de Dados - Exemplo Real

Uso de Ruby devido à facilidade para parsing de stringsRuby + JRuby + Processing

Reconhecimento de padrõesTransformação de música em imagem

Page 43: Arte Computacional com Ruby...e amigos!
Page 44: Arte Computacional com Ruby...e amigos!
Page 45: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Ouvir

Page 46: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Básico do básico

C = 261.626 HzD = 293.665 HzE = 329.628 HzF = 349.228 HzG = 391.995 HzA = 440.000 HzB = 493.883 Hz

C D E F G A B = escala C Maior

Page 47: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Básico do básico

C# = 277.183 HzD# = 311.127 HzE# = 349.228 HzF# = 369.994 HzG# = 415.305 HzA# = 466.164 HzB# = 523.251 Hz

Page 48: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Básico do básico

C♭ = 246.942 Hz

D♭ = 277.183 Hz

E♭ = 311.127 Hz

F♭ = 329.628 Hz

G♭ = 369.994 Hz

A♭ = 415.305 Hz

B♭ = 466.164 Hz

Page 49: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Básico do básico

C D E F G A B = C maiorC G D A E = pentatônica em CF G A C D = pentatônica em FC E♭ F F♯ G B♭ C = Blues!

Page 50: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

MIDI, OSC

Protocolos de comunicação como quaisquer outrosUbíquos• Ok, OSC nem tanto...SimplesLatência é o fator mais importante• Antigamente, hardware/cabos especiais• Hoje, Ethernet, USB e até Wi-Fi

Page 51: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

OSC

UDPSimplesPequenos pacotesBaixa latênciahttps://github.com/maca/ruby-oschttps://github.com/aberant/osc-ruby

Page 52: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

OSC

Suporte nativo no MonomeQuartz ComposerÓtimo para iniciantes!

Page 53: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

MIDI

Padrão indústriaSuporte pelo OSGarageBand, Logic, Reason, Ableton Live!, etcMuita coisa legada• Meio gambiarrento• Protocolo ainda bastante atrelado a hardware

Page 54: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Midiator

Biblioteca Ruby para iteração com MIDIhttps://github.com/bleything/midiator• gem install midiatorExtremamente simplesMulti-plataforma• Software synth incluído para a versão Mac

Page 55: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Midiatorrequire 'rubygems'require 'midiator' midi = MIDIator::Interface.newmidi.use :dls_synth

include MIDIator::Notes

2.times do [C3, D3, E3, C3].each{ |note| midi.play note, 0.5 }end

2.times do midi.play E3, 0.5 midi.play F3, 0.5 midi.play G3, 1 end

2.times do [G3, A3, G3, F3].each { |note| midi.play note, 0.250 } midi.play E3, 0.5 midi.play C3, 1end

2.times do midi.play C3, 0.5 midi.play G3, 0.5 midi.play C3, 1.0end

Mac Only!

Page 56: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Archaeopteryx

Gerador de MIDI real-time, usando live codinggithub.com/gilesbowkett/archaeopteryxSequenciador de batidas que permite a criação de ritmos como Drum’n’Bass, Techno e Ambient Probabilidade para gerar comportamentos randômicos e “improvisações”

Page 57: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

A seguir, algumas palavras soltas...

...para você se divertir no Google

Page 58: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

sierpinski - chiptunes - mandelbrot - fibonacci - fractals - hypercube - game of life - arduino - monome - chuck - circuit bending - escher - sistemas de particulas - supercollider - pure data - quartz composer - reactable - c’74 max

Page 59: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Livros

The Computational Beauty of NatureGödel, Escher, Bach: An Eternal Golden BraidProgramming Interactivity: A Designer's Guide to Processing, Arduino, and OpenframeworksProcessing: A Programming Handbook for Visual Designers and Artists

Page 60: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Websites - Matemática e Arte

http://www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibInArt.html • Proporção áurea e Números de Fibonacci nas artes,

arquitetura e música.http://www.2dcurves.com/• Coleção de curvas matemáticashttp://www.cut-the-knot.org/manifesto/index.shtml• Manifesto matemática-arte

Page 61: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Websites - Visuais

http://www.complexification.net/• Exemplos de obras feitas com Processing (incluindo a

imagem da capa desta apresentação)http://openprocessing.org• Agregador de animações feitas com Processing(incluindo a

imagem mostrada no último slide desta apresentação)http://www.contextfreeart.org/• Site sobre context-free art

Page 62: Arte Computacional com Ruby...e amigos!

© 2011 ThoughtWorks, Ltd. All rights reserved.

Websites - Áudio

http://upload.wikimedia.org/wikipedia/commons/9/97/Fibonacci.ogg• Composição musical feita com os números de Fibonaccihttp://botverse.com/music-and-mathematics-finding-the-natural-and-the-pentathonic-scales/5http://thinkzone.wlonk.com/Music/12Tone.htm• Explicação matemática para as escalas musicais

Page 63: Arte Computacional com Ruby...e amigos!

Entre em contatoCarlos [email protected]

Thiago [email protected]

Obrigado!”Mathematics, as much as music or any other art, is one of the means by

which we rise to a complete self-consciousness. The significance of Mathematics resides precisely in the fact that it is an art; by informing us of the nature of our own minds it informs us of much that depends on our

minds.” - J.W.N.Sullivan (1886-1937), Aspects of Science, 1925.