3 puntos por GN⁺ 2024-08-11 | 1 comentarios | Compartir por WhatsApp
  • Sonic Pi: usar Ruby como herramienta de composición

  • Contexto

    • El autor originalmente estudió música
    • Mientras trabajaba como desarrollador web, se fue involucrando cada vez más en el trabajo técnico
    • Intentó dedicarse a la música electrónica porque le resultaba difícil tocar varios instrumentos, pero fracasó
    • Recientemente volvió a combinar música y programación a través de Sonic Pi
  • Introducción a Sonic Pi

    • Sonic Pi, creado por Sam Aaron, es un sintetizador de software controlado por código
    • Usa un lenguaje específico de dominio (DSL) que extiende Ruby para mapear conceptos de música y audio
    • Por ejemplo, representa notas con símbolos como :c4 y usa generadores de acordes como chord(:d3, :maj7)
  • Objetivo del proyecto

    • El objetivo era componer un demo usando únicamente Sonic Pi
    • La composición se hizo puramente con código, sin usar MIDI ni muestras externas
  • Ejemplos básicos de código

    • Se configura el BPM con use_bpm 70 y el sintetizador con use_synth :pulse
    • Se reproducen notas y se establecen intervalos de tiempo con código como play :c2, sleep 0.25
    • Se reproduce un patrón con play_pattern_timed [ :c3, :d3, :e3, :g3 ], 0.25
  • Optimización del código

    • Se definen funciones para reducir código repetido
    • La función def arpeggiate(root, is_minor = false) genera un patrón de arpegio
    • Se ejecuta código en paralelo usando bloques in_thread do
  • Ejecución en paralelo

    • Los bloques in_thread do permiten ejecutar dos “instrumentos” en paralelo
    • Por ejemplo, en un hilo se ejecuta un arpegio y en otro una melodía
  • Implementación del coro

    • Se usa ring para combinar varias notas en una sola lista
    • Las notas se reproducen y se configura su duración con algo como play_pattern_timed [ring(:c5, :e5)], 4, sustain: 3.8
    • Se define la función def choral_rings(notes, sus) para simplificar el patrón coral
  • Live loops

    • live_loop se usa para crear bucles que se repiten indefinidamente
    • Se define un bucle como live_loop :harp do y se escribe el código dentro
  • Conclusión

    • Programar no es solo una ciencia, también es arte
    • Escribir código es un acto creativo y una forma de comunicarse con otras personas
    • Sonic Pi permite combinar música y programación para hacer trabajo creativo

Resumen de GN⁺

  • Sonic Pi es una herramienta para componer música con código y usa un DSL que extiende Ruby
  • Este proyecto tiene como objetivo componer un demo usando únicamente Sonic Pi
  • La programación no solo tiene un lado científico, sino también uno artístico, y Sonic Pi lo demuestra muy bien
  • Es un buen ejemplo de cómo se puede combinar música y programación para hacer trabajo creativo
  • Herramientas con funciones similares incluyen TidalCycles y SuperCollider

1 comentarios

 
GN⁺ 2024-08-11
Opiniones de Hacker News
  • Si te interesa el live coding, vale la pena probar Glicol
  • TidalCycles también es recomendable. Elogian la capacidad de Haskell y Ruby para crear DSL
  • El diseño del lenguaje de Glicol se enfoca en una sintaxis inspirada en sintetizadores, la velocidad de composición y la facilidad del diseño de sonido
    • El objetivo es diseñar un DSL que refleje los hábitos de programación existentes, pero sin quedar atado a lenguajes ya existentes
  • Ruby es muy útil porque su sintaxis es casi como inglés
  • He visto una presentación en vivo de Sam Aaron, el creador de Sonic Pi
    • Fue impresionante ver cómo la música evolucionaba cada vez que cambiaba el código
  • Como desarrollador de Ruby, me parece muy interesante que se pueda usar para crear música generada algorítmicamente
    • Por ejemplo, parece que podría usarse para convertir eventos ruidosos de un repositorio de git en música algorítmica
  • Como músico, grabar y hacer loops con un teclado MIDI o instrumentos acústicos ofrece una mejor UX
    • Puedes ingresar lo que sea usando un DSL de Ruby, pero comparado con un teclado de piano la UX no es tan buena
    • No creo que lo usaría para reemplazar Logic
  • Como otro enfoque para programar música, recomiendan scamp para Python
    • El autor ha subido varios videos a YouTube
  • Hace algunos años vi un video en YouTube en el que recreaban el THX Deep Note usando Sonic Pi
    • Al principio no explicaban qué iban a hacer, y poco a poco iban ajustando el sonido hasta terminar creando el Deep Note
    • Es una pena no poder encontrar de nuevo ese video
  • Últimamente he estado pensando en Sonic Pi y viendo algunos videos
    • Lo probé brevemente hace algunos años
  • Los comentarios HTML no funcionan bien. El editor convierte dos guiones en una sola raya larga
  • Le mandan palabras de apoyo al live coder de Sonic Pi alsoknownasrox
  • Es una demo realmente genial
    • Pero en Safari el diseño del sitio se rompe