Go Down

Topic: Suddenly "ftdi drivers don't seem to be installed....[]" error in Hairless Midi. (Read 181 times) previous topic - next topic

Miklenoa

Hello guys,
Me and my Sis are currently working on building a Laserharp made out of 12 lasers. Through a potentiometer and a photosensor we read the voltage with analog.read() into a number from 0-1024.
Through loopmidi we created a virtual midi cable. In Hairless Midi we connect our Arduino Mega 2560 and specified the Midi out as the said virtual midi cable (named vmpk in this case). In the end we connected the Virtual MIDI Piano Keyboard with the vmpk port. We tried to run our sketch several times.
(We also considered to change the baud rate of hairless midi so it would fit the arduino)
Sometimes it was able to actually send the notes from the arduino in order to make it hearable with the synthesizer. (It didn't work the way we want it to -unfortunately when debugging the hairless midi we could see that random midi note ons where send but mostly not the one we actually activated in the programm. Or sometimes random note ons on a different channel -  but that is a different kind of story).
However rarely it happened we got an "ftdi drivers don't seem to be installed. not attempting any ftdi latency tricks" error.
But if we just tried to end the connection and reconnect it, we were able to avoid the problem.
However now we suddenly got this error again, not being able to avoid it anymore. Restarting it doesn't help either.
I don't really get what this "ftdi driver" is supposed to do but read in other threads we had to install it otherwhise it wouldn't work (which is strange because sometimes it did work! we didn't get this error all the time but now it seems unavoidable). Also installing the driver didn't really change anything.


What can i do? Do any of you got an idea why it popped up this suddenly from nowhere? and Also what we could do or what the problem is?
Anyway, thanks it advance.

I'll just attach the sketch just in case. Maybe it'll kind of help.

PieterP

That's one hell of a sketch for such a simple program.

Try this:

Code:
#include <MIDI.h>

struct MySettings : public midi::DefaultSettings {
  static const long BaudRate = 115200;
};

enum NoteStatus : bool {
  NOT_PLAYING = 0,
  PLAYING
};

MIDI_CREATE_CUSTOM_INSTANCE(HardwareSerial, Serial, MIDI, MySettings)

const size_t numberOfNotes = 12;

const uint8_t sensorPins[numberOfNotes] = {A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11};
const uint8_t notes[numberOfNotes] = {60, 61, 62, 63, 64, 65, 66, 67, 68 , 69, 70, 71};

const int activateThreshold = 400;
const int deactivateThreshold = 500;

const uint8_t velocity = 127; // How hard the key is struck (~volume)
const uint8_t instrument = 46; // Select 'harp' instrument
const uint8_t channel = 1; // MIDI channel 1

NoteStatus states[numberOfNotes] = {}; // keep track of which notes are currently playing (zero-initialized = NON_PLAYING)

void setup() {
  MIDI.begin();
  MIDI.sendProgramChange(instrument, channel);
}

void loop() {
  for (uint8_t i = 0; i < numberOfNotes; ++i) {
    int value = analogRead(sensorPins[i]);
    if (states[i] == NOT_PLAYING) { // note is currently not playing
      if (value < activateThreshold) { // if the beam is obstructed
        states[i] = PLAYING;
        MIDI.sendNoteOn(notes[i], velocity, channel);
      }
    } else { // note is currently playing
      if (value > deactivateThreshold) { // if the beam is not obstructed
        states[i] = NOT_PLAYING;
        MIDI.sendNoteOff(notes[i], velocity, channel);
      }
    }
  }
}

By the way, the warning you're getting in Hairless is just that: a warning. Nothing to worry about.

Set Hairless to the same baudrate as the one specified on line 4 in the sketch I provided. If you wan't to use a MIDI-to-USB adapter, comment out that line, so that it will use the default hardware MIDI baudrate.

Pieter

Go Up