Hacer un instrumento musical con un reproductor de casetes



Cassette Synthesizer



Me gustan los proyectos musicales inusuales. Por ejemplo, he lanzado un álbum basado en grabaciones realizadas por la NASA durante la misión Apollo 12. Y recientemente usé mi propio corazón para controlar el tempo de la música. Puedes encontrar los resultados de mis experimentos musicales aquí .



Recientemente hice un sintetizador controlado por MIDI a partir de un viejo reproductor de casetes que recuerda al Walkman de Sony. Para hacer esto, necesitaba una placa Arduino y algo de código. Lo que sucedió se puede llamar un "sintetizador de casete".



Un sintetizador de casete funciona reproduciendo un sonido monótono (una nota) previamente grabado en una cinta de casete. El tono se puede controlar, depende de la velocidad de la cinta. El proyecto Onde Magnétique me llevó a la idea de crear un sintetizador de casete , y los creadores de este proyecto se inspiraron en la idea de Mellotron .





Aquí hay un video que me muestra tocando un sintetizador de casete usando un teclado MIDI.



Lo bueno de este sintetizador es que produce un sonido muy "analógico" al cambiar de nota. Es decir, el tono a menudo cambia suavemente al pasar de una nota a otra, el sonido, como resultado, resulta ser muy interesante (es decir, en la música que se reproduce en este sintetizador, a menudo se encuentra el efecto de portamento ). Además, absolutamente cualquier sonido se puede grabar en cinta, por lo que mi sintetizador resultó ser bastante versátil.



Crear un sintetizador de casetes



De hecho, crear un sintetizador de este tipo es muy sencillo. Encontré un buen video sobre cómo modificar un reproductor de casetes para que la velocidad de reproducción del casete se pueda controlar usando un regulador de voltaje. He modificado mi reproductor existente de forma similar. También creé, basado en un navegador, un controlador MIDI simple diseñado para obtener las notas deseadas modificando el voltaje.



Las instrucciones a continuación se enfocan en el hardware del sintetizador, representado por el reproductor y el Arduino, y el software, que es reproducido por el controlador MIDI.



Materiales



  • Reproductor de cassette GE 3-5362A ($ 15, mucho en eBay)
  • Arduino ($ 23).
  • DAC MCP4725 ($ 11).
  • 3,5 ($8).
  • ( , $5).
  • , ($25, ).


GE 3-5362A



Tenga en cuenta que no es necesario utilizar el reproductor GE 3-5362A. Cualquier reproductor que admita velocidad de reproducción variable servirá. Si va a hacer un sintetizador de casete basado en otro reproductor, solo necesita averiguar su estructura interna y dónde soldar los cables correspondientes.



Comencemos abriendo el cuerpo del jugador. Para hacer esto, debe desatornillar los cuatro tornillos ubicados en la parte posterior del dispositivo. No necesita hacer mucho esfuerzo aquí, simplemente desenrosque los tornillos y abra la carcasa con cuidado. Tenga en cuenta que la parte posterior y frontal de la unidad están conectadas mediante cables que suministran energía a los componentes electrónicos del reproductor. No corte estos cables.





Reproductor desmontado que ya ha sido modificado



Para convertir el reproductor en un sintetizador de casetes, necesitamos soldarle dos componentes nuevos. El primero es un cable conectado alVin, con el que podemos controlar la velocidad de reproducción de la cinta mediante un regulador de voltaje. El segundo es un divisor de audio conectadoLine in, que nos permitirá grabar sonidos en un casete (esto es útil para quienes no tienen grabadora).



Si no sabe cómo soldar, no se preocupe. Es simple. Mira este video De él aprenderá a soldar cables a almohadillas.



Conexión a Vin y organización del control de velocidad de la cinta



Busque la rueda etiquetada Reproducción de velocidad variable en el dispositivo. Aquí es donde soldaremos un par de cables. Prefiero usar el cable rojo para el más y el cable marrón o verde para el menos. Por lo tanto, soldamos el cable rojo a la almohadilla VS + y el otro cable de color a la almohadilla ubicada inmediatamente debajo de B +.





Cables soldados al pad VS + y al pad ubicado cerca de B +



Tenga en cuenta que uso cables con conectores hembra en un extremo en situaciones como esta. Es muy conveniente conectarles algo.



Conexión a Line in para organizar la grabación de sonido en un casete



Ahora necesita encontrar las almohadillas MIC- y MIC +, a las que están soldados los cables rojo y negro del micrófono. Simplemente puede desoldar estos cables y soldar los cables del cable de audio a estas almohadillas. Rojo a MIC +, negro a MIC-.





Cables soldados a MIC- y MIC +



Grabación de sonido monótono en un casete



¡Ahora puede insertar el casete en el reproductor y grabar sonido en él conectándose a Line in! Puede grabar el sonido de cualquier nota. Como regla general, puede comenzar a experimentar con la nota "C". La grabación debe ser lo suficientemente larga: 30 minutos aproximadamente (aquí, por cierto, una cinta con un bucle de cinta sería útil). Tenga en cuenta que solo es necesario grabar un tono en el casete, ya que es el tono de este tono el que cambiaremos controlando la velocidad de reproducción de la grabación.





Grabación de sonido en un cassette con el OP-1



Preparando el Arduino para su uso como interfaz MIDI



El Arduino actúa como intermediario entre la interfaz MIDI y el convertidor D / A, que es responsable de cambiar el voltaje. El teclado MIDI está conectado a la computadora. Las señales del teclado las recibe un programa que se ejecuta en Chrome. Se dirige al servidor, que envía datos sobre el cambio de voltaje al Arduino, y el Arduino transmite las señales correspondientes al convertidor de digital a analógico, que controla la velocidad de reproducción de la cinta en el reproductor.





Conexión del convertidor D / A MCP4725 al Arduino



Primero, debe conectar el MCP4725 al Arduino usando el diagrama anterior. El MCP4725 es un convertidor de digital a analógico que se puede controlar desde Arduino. El terminal OUT del convertidor debe estar conectado al cable rojo que soldamos previamente al reproductor. El otro cable debe estar conectado al pin GND en el Arduino.



El código que se comunica entre la computadora y el Arduino se comunica con el dispositivo, enviándole información sobre cómo cambiar el voltaje. Por ejemplo, si el Arduino recibe un comandodac.setVoltage(newVolts, 1), el MCP4725 emitirá voltajenewVolts. Aquí está el código:



#include <Wire.h>
#include <Adafruit_MCP4725.h>

Adafruit_MCP4725 dac;
String sdata = ""; //   .
bool started = false;
void setup(void) {
  Serial.begin(9600);

  //  Adafruit MCP4725A1  -  0x62 ( )  0x63 ( ADDR   VCC)
  //  MCP4725A0  -  0x60  0x61
  //  MCP4725A2  -  0x64  0x65
  dac.begin(0x62);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);

  Serial.println("Begin");
}

void loop(void) {
  if (started == false) {
    started = true;
    dac.setVoltage(0, 1);
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
  }
  byte ch;
  if (Serial.available()) {
    ch = Serial.read();
    sdata += (char)ch;
    if (ch == '\n') {
      sdata.trim();
      if (sdata.indexOf("voltage") > -1) {
        sdata.remove(0, 7);
        float newVal = sdata.toFloat();
        //  
        float newVoltage = round(910.0 * newVal);
        if (newVoltage > 4095) {
          newVoltage = 4095;
        }
        uint16_t newVolts = uint16_t(newVoltage);
        dac.setVoltage(newVolts, 1);
        Serial.print("volts: ");
        Serial.println(newVolts);
      } else {
        Serial.println("?");
      }
      sdata = "";
    }
  }
}


Servidor utilizado para enviar comandos a Arduino



Para controlar el Arduino, puede usar un servidor simple que envía comandos a la placa que cambian el voltaje. El código correspondiente se puede encontrar aquí . Necesita Golang para ejecutar el servidor . A continuación, le indicamos cómo poner su servidor en funcionamiento:



$ git clone https://github.com/schollz/tape-synth
$ cd tape-synth
$ go build
$ ./tape-synth -com ARDUINOCOM


Si está utilizando Linux, deberá utilizar el comando para organizar el trabajo con el puerto USB sudo. ARDUINOCOMEs un puerto COM para una placa Arduino conectada a una computadora a través de USB. Esto es común en Windows COM4.



La página se utiliza para administrar el servidor index.html. Para abrirlo en Chrome, debe ir a la dirección localhost:8080. A continuación, puede conectar un teclado MIDI y enviar comandos de Arduino (Chrome es el navegador más popular que admite MIDI ).



Construyendo el sistema y tocando el sintetizador



Para reproducir el sintetizador de casete, debe iniciar el servidor, conectar un teclado MIDI e ir a Chrome en localhost:8080. ¡Ahora puedes encender el reproductor y empezar a jugar! La nota que se toca en el teclado debe ser tocada por el jugador.



Configuración del sintetizador



Estamos ante un sistema mecánico que cambia el tono cambiando la velocidad de la cinta. Por lo tanto, nuestro sintetizador necesita afinarse. Para hacer esto, necesita abrir index.htmly editar las propiedades del objeto voltageMap. A cada nota se le debe asignar un voltaje (entre 0 y 3) correspondiente a su tono.



var voltageMap = {
    "C": 0,
    "C#": 0.7,
    "D": 0.9,
    "D#": 1.2,
    "E": 1.4,
    "F": 1.62,
    "F#": 1.85,
    "G": 2.25,
    "G#": 2.6,
    "A": 3.0,
    "A#": 0,
    "B": 0,
}


Salir



Si he explicado algo de manera incomprensible (sospecho que lo es), hágame preguntas en Twitter o Instagram .



¿Estás pensando en construir tu propio sintetizador de casetes?










All Articles