Discusión:Sonar)))

De Casiopea

Introducción

Observaciones

Observación

Destreza coordinada simétrica

Las observaciones realizadas fueron en el contexto de ejercicios de coordinación ante dos actividades: yoga y malabarismo. La particularidad del primer caso es que es una coordinación grupal, que parte de las indicaciones realizadas a viva voz por la instructora; ella da indicaciones y los otros responden moviéndose de acuerdo a lo solicitado. Al ver esto se puede apreciar una sincronía entre todos los participantes, un flujo equilibrado ya que cada postura debe repetirse por ambos lados del cuerpo y una reacción ante el ruido (indicaciones de la profesora). En el caso del malabarismo se puede apreciar otro fenómeno: el ejercicio lúdico solo por placer o paideia. La actividad realizada es libre, empieza en cualquier momento y termina cuando se rompe el flujo del movimiento de los elementos o cuando el jugador decide parar. No es que haya una regla definida, pero es necesario tener ciertas consideraciones para que los trucos resulten, es por eso que es un flujo normado, que usa todo el cuerpo para ser realizado y necesita la coordinación de todo el cuerpo. Es necesario que el cuerpo tenga cierta disposición al ejercicio, coordinación y destreza para ser ejecutado.

TDI2023sonarcroquis01.pngTDI2023sonarcroquis02.pngTDI2023sonarcroquis03.pngTDI2023sonarcroquis04.pngTDI2023sonarcroquis05.pngTDI2023sonarcroquis06.pngTDI2023sonarcroquis07.png

Coreografía sonora progresiva

La observación realizada a una banda de guerra muestra que hay una serie de señales sonoras que emiten las personas participantes que generan un movimiento rítmico, el cual también genera sonido. Este este flujo sonoro depende de la destreza de los participantes y de la coordinación. La banda para generar sonido empieza con los gestos del guaripola, luego en una progresión ascendente van incluyéndose las diversas líneas de instrumentos hasta sonar todos. Visto a la distancia se aprecia una coreografía que va desde el desplazamiento de todos los músicos hasta el movimiento generado por la interpretación del instrumento en cada línea. Esto genera un efecto visual donde convergen distintas capas de movimientos coordinados (piernas elevadas, movimientos de interpretación, desplazamiento de los participantes) liderados por el guaripola. Este flujo se rompe cuando se descoordinan en la interpretación, generando una disonancia en la melodía; cuando esta disonancia es demasiado prolongada, todo la secuencia se rompe y los participantes dejan de tocar. Cada participante vuelve a su lugar de inicio y espera hasta que les den nuevas instrucciones.

TDI2023sonarcroquis010.pngTDI2023sonarcroquis011.pngTDI2023sonarcroquis012.pngTDI2023sonarcroquis013.pngTDI2023sonarcroquis014.png

Esquema de flujo

TDI2023sonaresquemaobservaciones Mesa de trabajo 11.png

Investigación

Theremin

Creado por León Theremin en 1920, es uno de los primeros instrumentos musicales electrónicos creados en la historia. Es una caja con dos antenas, una en la derecha en sentido vertical, sirve para controlar el tono y otra izquierda en sentido horizontal, controlando el volumen; ambas antenas son osciladores de radiofrecuencias. Se ejecuta acercando las manos sin tocar las antenas, con movimientos lentos y gestos particulares con las manos que permiten controlar ambos aspectos del instrumento.

Dato Duo

Dato Duo fue creado por Toon Welling y David Menting, diseñadores de Utrecht, Países Bajos. En su página web es descrito como un instrumento para personas desde 3 a 99 años, para que puedan crear música en conjunto sin tener que ser músicos experimentados. Se concibió como un proyecto para poder tocar música con sus hijos, que posteriormente fue concretado por medio de una campaña de Kickstarter en 2016.

The UFO Controller

Es un sintetizador y controlador MIDI creado por el finés Tommi Koskinen en 2015. Está basado en Arduino, usa cinco sensores ultrasónicos, modificando los sonidos que se emiten por medio de gestos con las manos; dependiendo de la distancia en la que se encuentran las manos de los sensores, estos emitirán variaciones de sonido. Este proyecto fue parte de su tesis The UFO Controler: Gestural Music Performance, para el MA en Sonidos en Nuevos Medios, en la Facultad de Artes, Diseño y Arquitectura de la Universidad de Aalto en Finlandia.

Prototipos

Alfa

El primer prototipo consiste en un octógono de papel de 30 centímetros de diámetro por 10 centímetros de alto. Cuenta con 4 sensores de proximidad que reaccionan al movimiento de las manos, emitiendo un sonido a través de los parlantes incorporados.

Construcción

Materiales

Componentes electrónicos

  • Arduino Uno
  • 4 sensores ultrasónicos hc-sr04
  • Parlante de 8ohms, 0,5w, 60mm
  • Cables jumper
  • Cable de alimentación USB
  • Protoboard

Contenedor

  • Cartón dúplex
  • Pegamento agorex

Circuito

Simulación de armado del prototipo en Tinkercad

Código

Código propuesta Alfa

{
int cm1 = 0;
int cm2 = 0;
int cm3 = 0;
int cm4 = 0;

const int pinSpeaker = 14;
long readUltrasonicDistance(int triggerPin, int echoPin)
{
  pinMode(triggerPin, OUTPUT); // Clear the trigger
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(2); // Sets the trigger pin to HIGH state for 10 microseconds
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW);
  pinMode(echoPin, INPUT);// Reads the echo pin, and returns the sound wave travel time inmicroseconds
  return pulseIn(echoPin, HIGH);
  
}

void setup()
{
 Serial.begin(9600);
 pinMode(2, OUTPUT);
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(pinSpeaker, OUTPUT);
  
}

void loop()
{
 cm1 = 0.01723 * readUltrasonicDistance(2, 3);
 cm2 = 0.01723 * readUltrasonicDistance(4, 5);
 cm3 = 0.01723 * readUltrasonicDistance(6, 7);
 cm4 = 0.01723 * readUltrasonicDistance(8, 9);
 
 Serial.print("cm1: ");
 Serial.print(cm1);
 Serial.println("cm2: ");
 Serial.print(cm2);
 Serial.print("cm3: ");
 Serial.print(cm3);
 Serial.println("cm4: ");
 Serial.print(cm4);

if(cm1 > 60){

 noTone(pinSpeaker);
  
}
  
if(cm1 < 19 && cm1 > 10) {
 tone(pinSpeaker,130,813);// Do1
 delay(1000);
 noTone(pinSpeaker);
}
if(cm1 < 29 && cm1 > 20) {
 tone(pinSpeaker,261,626);// Do2
 delay(1000);
 noTone(pinSpeaker);
}
if(cm1 < 39 && cm1 > 30) {
 tone(pinSpeaker,523,251);// Do3
 delay(1000);
 noTone(pinSpeaker);
}
if(cm1 < 49 && cm1 > 40) {
 tone(pinSpeaker,146,832);// Re1
 delay(1000);
 noTone(pinSpeaker);
}
if(cm1 < 59 && cm1 > 50) {
 tone(pinSpeaker,293,665);// Re2
 delay(1000);
 noTone(pinSpeaker);
}
if(cm2 < 19 && cm2 > 10) {
 tone(pinSpeaker,587,330);// Re3
 delay(1000);
 noTone(pinSpeaker);
}
if(cm2 < 29 && cm2 > 20) {
 tone(pinSpeaker,164,814);// Mi1
 delay(1000);
 noTone(pinSpeaker);
}
if(cm2 < 39 && cm2 > 30) {
 tone(pinSpeaker,329,628);// Mi2
 delay(1000);
 noTone(pinSpeaker);
}
if(cm2 < 49 && cm2 > 40) {
 tone(pinSpeaker,659,255);// Mi3
 delay(1000);
 noTone(pinSpeaker);
}
if(cm2 < 59 && cm2 > 50) {
 tone(pinSpeaker,174,614);// Fa1
 delay(1000);
 noTone(pinSpeaker);
}
if(cm3 < 19 && cm3 > 10) {
 tone(pinSpeaker,349,228);// Fa2
 delay(1000);
 noTone(pinSpeaker);
}
if(cm3 < 29 && cm3 > 20) {
 tone(pinSpeaker,698,456);// Fa3
 delay(1000);
 noTone(pinSpeaker);
}
if(cm3 < 39 && cm3 > 30) {
 tone(pinSpeaker,195,998);// Sol1
 delay(1000);
 noTone(pinSpeaker);
}
if(cm3 < 49 && cm3 > 40) {
 tone(pinSpeaker,391,995);// Sol2
 delay(1000);
 noTone(pinSpeaker);
}
if(cm3 < 59 && cm3 > 50) {
 tone(pinSpeaker,783,991);// Sol3
 delay(1000);
 noTone(pinSpeaker);
}
if(cm4 < 19 && cm4 > 10) {
 tone(pinSpeaker,220,000);// La1
 delay(1000);
 noTone(pinSpeaker);
}
if(cm4 < 29 && cm4 > 20) {
 tone(pinSpeaker,440,000);// La2
 delay(1000);
 noTone(pinSpeaker);
}
if(cm4 < 39 && cm4 > 30) {
 tone(pinSpeaker,880,000);// La3
 delay(1000);
 noTone(pinSpeaker);
}
if(cm4 < 49 && cm4 > 40) {
 tone(pinSpeaker,246,942);// Si1
 delay(1000);
 noTone(pinSpeaker);
}
if(cm4 < 59 && cm4 > 50) {
 tone(pinSpeaker,493,883);// Si2
 delay(1000);
 noTone(pinSpeaker);
}

delay(10);
}
 
</nowiki>

Comentarios

Problemas

  • Emite sonido aunque no esté un sensor siendo accionado por lo que resulta incómodo de utilizar y pierde su propósito.
  • Su tamaño es demasiado grande y posee mucho espacio de sobra
  • No posee ningún tipo de retroalimentación que permita al usuario saber cual de los sensores está activado

Corrección

  • Arreglar el código para que pueda reaccionar solamente cuando se acciona de alguna manera, por ejemplo con un pulsador
  • Agregar pulsadores para que emita sonido cuando son presionados y así uno mueva las manos para modular el sonido

Beta

El segundo prototipo consiste en un hexágono de cartón piedra de 22 centímetros de diámetro por 10 centímetros de alto. Cuenta con 3 sensores de proximidad y 3 pulsadores, distribuidos intercaladamente en cada cara del hexágono. La principal novedad es que se incluyeron dos librerías para Arduino, que permiten mejorar ciertos aspectos del código:

  • ToneAC : Librería creada por Tim Eckel que crea un efecto push/pull entre dos pins de manera alternada que permite duplicar el voltaje diferencial, para así aumentar el volumen emitido por el parlante.
  • New_Ping: También desarrollada por Tim Eckel, permite estabilizar y mejorar el funcionamiento de sensores ultrasónicos de proximidad.

Construcción

Materiales

Componentes electrónicos

  • Arduino Uno
  • 3 sensores ultrasónicos hc-sr04
  • 3 pulsadores
  • Parlante
  • Cables jumper
  • Cable de alimentación USB
  • Protoboard
  • Parlante de 8ohms, 0,5w, 60mm

Contenedor

  • Cartón piedra
  • Pegamento agorex

Circuito

Simulación de armado del prototipo en Tinkercad

Código

Código propuesta Beta

{
#include <NewPing.h> // Librería New_Ping
#include <toneAC.h>  // Librería Tone AC

#define TRIGGER_PIN_1 2
#define ECHO_PIN_1 3
#define TRIGGER_PIN_2 4
#define ECHO_PIN_2 5
#define TRIGGER_PIN_3 6
#define ECHO_PIN_3 7
#define BUTTON_PIN_1 11
#define BUTTON_PIN_2 12
#define BUTTON_PIN_3 13


int scale[] = {261, 293, 329, 349, 392, 440, 493, 523};

NewPing sonar1(2, 3);
NewPing sonar2(4, 5);
NewPing sonar3(6, 7);

void setup() {
  Serial.begin(9600);
  pinMode(11, INPUT_PULLUP);
  pinMode(12, INPUT_PULLUP);
  pinMode(13, INPUT_PULLUP);
  
}

void loop() {

  int duration1 = 0;
  int duration2 = 0;
  int duration3 = 0;

  if (digitalRead(11) == LOW) {
    duration1 = sonar1.ping_cm();
    if (duration1 >= 5 && duration1 <= 85) {
      int note = getNoteForDistance(duration1);
      if (note != -1) {
        playTone(0, 100);
      }
    }
  }

  if (digitalRead(12) == LOW) {
    duration2 = sonar2.ping_cm();
    if (duration2 >= 5 && duration2 <= 85) {
      int note = getNoteForDistance(duration2);
      if (note != -1) {
        playTone(0, 100);
      }
    }
  }

  if (digitalRead(13) == LOW) {
    duration3 = sonar3.ping_cm();
    if (duration3 >= 5 && duration3 <= 85) {
      int note = getNoteForDistance(duration3);
      if (note != -1) {
        playTone(0, 100);
      }
    }
  }

}

int getNoteForDistance(int distance) {
  if (distance > 85){
    noToneAC();
  }
  if (distance >= 5 && distance < 15) {
    toneAC(261, 1000);
    delay(100);
    noToneAC();
    return 0;
  } 
  else if (distance >= 15 && distance < 25) {
    toneAC(293, 1000);
    delay(100);
    noToneAC();
    return 1;
  } 
  else 
    if (distance >= 25 && distance < 35) {
    toneAC(329, 1000);
    delay(100);
    noToneAC();
    return 2;
  } else 
    if (distance >= 35 && distance < 45) {
    toneAC(349, 1000);
    delay(100);
    noToneAC();
    return 3;
  } 
  else 
    if (distance >= 45 && distance < 55) {
    toneAC(392, 1000);
    delay(100);
    noToneAC();
    return 4;
  } 
  else 
    if (distance >= 55 && distance <= 65) {
    toneAC(440, 1000);
    delay(100);
    noToneAC();
    return 5;
  }
  else 
    if (distance >= 65 && distance <= 75) {
    toneAC(493, 1000);
    delay(100);
    noToneAC();
    return 6;
  }
  else
   if (distance >= 75 && distance <= 85) {
    toneAC(523, 1000);
    delay(100);
    noToneAC();
    return 7;
  } 
  else {
    return -1;
  }
}


void playTone(int note, int duration) { // Reproducir el tono con la frecuencia y duración especificadas
  toneAC(note, duration);
  delay(100);
  noToneAC();
}

Comentarios

Problemas

  • Es difícil crear una dinámica de juego con el dispositivo como está, ya su sonido se ve opacado con la interacción del otro. Cuando un jugador acciona el botón y mueve su mano, inmediatamente ahoga el sonido de los otros participantes por lo que solo suena quién mantiene un movimiento más prolongado.

Corrección

  • Modificar el sonido que emite a través del código para que sea más atractivo, ya sea modificando el delay o la frecuencias de las notas
  • Crear alguna especie de polifonía, para que se escuchen voces distintas entre cada sensor

Propuesta Final

Flujo

Mecánica de juego

Para que se emita sonido hay que poner las manos dentro del rango del sensor y apretar el botón simultáneamente

Los sensores ultrasónicos son aquellos que emiten una onda sonora inaudible por uno de los terminales, la cual rebota en los objetos y devuelve un eco, el cual es recibido por otro terminal, midiendo el tiempo de recepción de aquella onda; cuanto más se demora en recibir la onda rebotada, más lejos están los objetos. Usando ese principio, la mecánica del juego se basa en activar con una mano el sensor por medio de la pulsación del botón que lo acompaña, poniendo la mano al alcance del sensor simultáneamente, emitiendo un sonido. El sonido emitido está dentro de una escala diatónica y cada sensor se encuentra en distintas octavas (tercera, cuarta y quinta octava). El rango sensible de cada sensor está entre 5 cms y 85 cms, teniendo cada nota 10 cms de distancia. No emite sonido si la mano está fuera de ese rango. El área de juego comprende los 150 cms de diámetro.

Alcances de los sensores

Reglas

sonar))) es un juego colaborativo y exploratorio, que está pensado para personas mayores de 10 años, jugando hasta 3 personas. Siempre se empieza con una exploración inicial del dispositivo ya que es necesario que el usuario se familiarice con la mecánica del juego. No es un juego competitivo, no tiene partidas definidas y nadie gana; se gana cuando se es capaz de dominar el dispositivo y poder coordinarse entre todos para crear una melodía. Dicho lo anterior, es necesario también explicar que aunque no haya reglas definidas, si hay que mantenerse dentro del rango de acción de 5 a 85 cms para poder jugar.El juego finaliza cuando se decide dejar de interactuar con el dispositivo, pero cada partida tiene una duración variable entre 5 y 10 minutos.

Esquema del juego

TDI2023sonaresquemaflujodejuego-02.png

Aspectos formales

Materialidad y circuito

Caja

La caja posee dos componentes: una cubierta y una tapa inferior donde se encaja la placa de arduino. Fue diseñada en Autodesk Inventor e impresa en 3D con filamento PLA negro de 1,75mm. Se decidió por esta forma hexagonal irregular ya que los sensores tienen que estas dispuestos de manera que su ángulo de alcance no choque con el del otro sensor, ya que si esto ocurriese no funcionaría apropiadamente. Esta forma también ayuda al encuentro entre los jugadores, permitiendo que se miren los gestos, las manos y las expresiones cuando van jugando.

Tiempos de impresión:

  • Tapa: 18 horas
  • Base: 5 horas
Impresión sin montar
TDI 2023 sonar impresión 3d1.jpgTDI 2023 sonar impresión 3d2.jpg
Planos

Cubierta



Base


Circuito

No se realizaron cambios al circuito en sí, pero si se modificaron los componentes para poder mejorar la apariencia y disminuir el tamaño del dispositivo en el mayor grado posible.

Circuito de la propuesta final simulado en Tinkercad

Circuito en Tinkercad

Componentes

  • Arduino Uno
  • Módulo shield con protoboard de 170 pins
  • 3 Sensores ultrasónicos de proximidad
  • 3 pulsadores de chasis de 12mm
  • Cables jumper
  • Parlante de 8ohms, 0,5w, 60mm

Código

Se hicieron diversas modificaciones que permitieron que el juego mejorara mucho en su dinámica: Se ajustó el delay para que al activarse los sensores, todos pudiesen escucharse, sin que alguno tomara mayor protagonismo que los otros. También se configuró para que cada sensor está en distintas escalas, habiendo previamente determinado su frecuencia en hertz:

  • Primer sensor: DO5 - RE5 - MI5 - FA5 - SOL5 - LA5 - SI5 - DO6
  • Segundo sensor: DO4 - RE4 - MI4 - FA4 - SOL4 - LA4 - SI4 - DO3
  • Tercer sensor: DO3 - RE3 - MI3 - FA3 - SOL3 - LA3 - SI3 - DO4

El repositorio del proyecto sonar))) está disponible en Github, junto con las librerías ToneAC y New_Ping

Empaque

Presentación

Fotografías finales

TDI2023FINALFotos sonar 01.pngTDI2023FBVFINALFotos sonar 02.pngTDI2023FBVFINALFotos sonar 03.pngTDI2023FBVFINALFotos sonar 04.png

Prueba de Usuario