Haciendo bateria musical con arduino ¿Alguien me ayuda?

Inicio Foros Técnica Midi y demás Haciendo bateria musical con arduino ¿Alguien me ayuda?

Viendo 8 entradas - de la 1 a la 8 (de un total de 8)
  • Autor
    Entradas
  • #19507
    vj_dareus
    Participante

    Buenas, hace un tiempo que me compré una placa arduino, gracias a "Mudo" que me dijo algo de ella y a los pocos dias la tenia en mi casa. Me costó cerca de 40 € con los gastos de envio, etc, es una Duemilanove.

    Despues de probar varias cositas, relacionadas con leds, se me antojó cumplir un pequeño sueño de montarme una bateria. Hace mucho que quiero tocar una, aunque sea electronica y los sonidos se reproduzcan por el ordenador, mejor, ahorro en espacio. Así que me busque por google algo relacionado con este tema que funcionara sobre arduino y encontre el siguiente esquema:

    Hice el montaje en una placa protoboard, pero solo con un piezo, en el pin 0 analogico y puse el siguiente codigo:

    /*
    * Ardrumo sketch
    *
    * Use with the Ardrumo software here:
    * http://code.google.com/p/ardrumo/
    * This is designed to let an Arduino act as a drum machine
    * in GarageBand (sorry, Mac OS X only).
    */

    #define LEDPIN 13 // status LED pin
    #define PIEZOTHRESHOLD 5 // analog threshold for piezo sensing
    #define PADNUM 6 // number of pads

    int val;

    void setup() {
    pinMode(LEDPIN, OUTPUT);
    Serial.begin(57600); // set serial output rate
    }

    void loop() {

    // Loop through each piezo and send data
    // on the serial output if the force exceeds
    // the piezo threshold
    for(int i = 0; i < PADNUM; i++) {
    val = analogRead(i);
    if( val >= PIEZOTHRESHOLD ) {
    digitalWrite(LEDPIN,HIGH); // indicate we’re sending MIDI data
    Serial.print(i);
    Serial.print(",");
    Serial.print(val);
    Serial.println();
    digitalWrite(LEDPIN,LOW);
    }
    }
    }

    El problema está en que al poco de hacer todo esto me di cuenta de que es necesario un programa que interprete esas señales, llamado ardrumo (solo para mac) y ademas otro programa mas que no se ni cual es ya de lo mareado que me tienen. Yo tengo windows xp, y la experiencia de instalar mac en un pc no me fué muy alla, porque apenas logre que funcionara una version, que daba problemas y que encima acabé perdiendo el disco.

    Me pregunto si no se podria modificar este codigo para que mande notas midi y asignarlas sencillamente a cualquier otro programa en el que pueda cargar los sonidos de la bateria y dependiendo de la presion suenen mas alto o mas bajo.

    Si a alguien se le ocurre algo se lo agradeceria muchisimo, estoy deseando hacer ruido. Gracias y saludos a todos/as.

    Pos: la web de donde saqué toda la informacion es: http://code.google.com/p/ardrumo/

    #19512
    mudo
    Participante


    http://todbot.com/blog/2006/10/29/spook … l-arduino/
    http://www.spikenzielabs.com/SpikenzieL … itKit.html

    Yo he empezado pero hay varios inconvenientes con el uso de piezos.

    Es una lastima que no estés por barna y te pases por el hangar… o si?

    😉

    #19515
    vj_dareus
    Participante

    jeje,, estoy a 1000 km mas o menos, que pena. Conozco los dos enlaces que me has facilitado, en el primero seria necesario preparar el conectar y por otro lado buscarme un adaptador midi-usb, por lo que me saldria carisimo, ya que el portatil no tiene ese puerto, en el caso del segundo tengo todos los componentes, pero el diseño de la placa no lo tengo nada claro, no se como conectar los componentes porque no lo veo nada claro. Ahora estoy probando cositas con s2midi, el driver de roland, midiyoke, etc, pero no logro hacer mucho. ¿arduino no puede enviar señales midi igual que un controlador como uc-33 por el puerto usb? he probado varios codigos que supuestamente envian señales midi sin tener que pulsar ningun boton ni nada, solo cargandolo en arduino y cuando el programa "midi monitor" no detecta absolutamente nada, tambien he probado con el midiyoke, que me crea dos puertos virtuales y tampoco, el s2midi mas de lo mismo y ahora voy a probar a quitarlo todo, como recomiendan en un foro, e instalar solo el driver de roland, porque ahora acabo de intentar instalarlo y me dice que no se puede utilizar el puerto com4. No se, si consigo avanzar un poco mas os cuento como me va. Saludos.

    #19516
    vj_dareus
    Participante

    Mirar lo que me sale al intentar instalar el driver de roland:

    por otro lado, en el administrador de dispositivos no tengo el "Usb Serial Port" que piden en el tutorial que estoy leyendo: http://wiki.medialab-prado.es/images/4/ … y_MIDI.pdf

    lo dejo por hoy, mañana continuare.

    Perdon, no copié bien el enlace, me dice "Cannot use the selected COM port" y no me da a elegir otro, solo puedo pulsar cancelar.

    #19518
    vj_dareus
    Participante

    Bien, hay pequeñas novedades. He conseguido instalar el driver de roland en un portatil viejo, le he puesto en la configuracion que trabaje con el puerto com3, al igual que en el "usb serial port" que solo sale cuando conecto arduino. Ahora supuestamente deberia poder enviar señales midi al ordenador, pero no se que hacer ahora exactamente. He descargado un piano y le digo que utilice Roland como entrada midi y no hace nada absolutamente. El codigo que he utilizado es este:

    /*———————————————————*/
    /* Simple MIDI example */
    /* Vincenzo Pacella – http://www.shaduzlabs.com */
    /*———————————————————*/
    /* DataByte1 Data Byte2 */
    /* ————- ———— ————— */
    #define NOTE_OFF 0x80// Key number Note Off velocity
    #define NOTE_ON 0x90// Key number Note on velocity
    #define POLY_KEY_P 0xA0// Key number Amount of pressure
    #define CONTROL_CHG 0xB0// Controller Controller value
    #define PROGRAM_CHG 0xC0// Program num None
    #define PRESSURE_V 0xD0// Pressure val None
    #define PITCH_BEND 0xE0// MSB LSB

    int MIDI_channel = 1; // [1-16]
    int i = 0;

    void setup() {
    Serial.begin(31250);
    }

    void loop() {
    for(i=0;i<128;i++){
    sendNoteOn(i,127); //Send a Note ON
    delay(50);
    sendNoteOff(i,0); //Send a Note OFF
    delay(50);
    }
    for(i;i>0;i–){
    sendNoteOn(i,127); //Send a Note ON
    delay(50);
    sendNoteOff(i,0); //Send a Note OFF
    delay(50);
    }
    }

    void sendNoteOn(byte note, byte velocity) {
    sendMidiMessage(NOTE_ON, note, velocity);
    }

    void sendNoteOff(byte note, byte velocity) {
    sendMidiMessage(NOTE_OFF, note, velocity);
    }

    void sendControllerChange(byte controller, byte value) {
    sendMidiMessage(CONTROL_CHG, controller, value);
    }

    void sendMidiMessage(byte message, byte data1, byte data2) {
    Serial.print((MIDI_channel-1)&0x0F|message, BYTE);
    Serial.print(data1, BYTE);
    Serial.print(data2, BYTE);
    }

    #19536
    mudo
    Participante


    Tienes que definirle variables de entrada.

    init piezoPin = 3;
    pinMode (piezoPin, INPUT);
    analogRead (piezoPin);

    asi si enchufas algo al pin 3 recibirá… hasta aqui mis justicos conocimientos sobre C y arduino.

    #19539
    vj_dareus
    Participante

    Bueno, he conseguido conectar el arduino y con el codigo que puse en el mensaje anterior he logrado que resolume me detecte las notas midi. He utilizado MidiYoke y S2MIDI, lo que pasaba es que antes lo estaba haciendo mal y logicamente no funcionaba, ahora ya puedo recibir los mensajes en el ordenador perfectamente, ya solo me queda aprender el lenguaje midi y comprender como utilizarlo, voy a buscar un rato por google. Ire comentando por aqui los avances que haga y en el blog cuando termine de comprender bien este tema y tenga algo para ofrecer a los pocos usuarios que entren :D:D Saludos y muchas gracias por la ayuda que siempre ofreces Mudo.

    #19532
    mudo
    Participante

    A ver esos posteos!

    😉

Viendo 8 entradas - de la 1 a la 8 (de un total de 8)
  • Debes estar registrado para responder a este debate.