DIY Midi controller - FL studio no device detection

Hi all

I created a 5 potentiometer midi controller using an Arduino Pro micro.

Problem
The controller is detected in the Windows device manager but not in FL studio's MIDI output and input sources.

  • did PC restarts, FL studio's refresh device lists, but no luck.

NOTE:
I had some trouble using the MIDI controller code by Nerd Musician, so I gave CHATgpt a try.

  • Using EDI 2.0.3
  • Getting no errors with upload and a consistent read in serial monitor.

Question:

  1. any ideas why FL studio is not detecting the device?
  2. is this a case of using third party software to trick a DAW like FL studio into detecting the device?
  3. am I missing something here?

Library NOTE:
I've tried writing the code with the following midi libraries but it only works with <MIDI.h>
The following libraries don't seems to work with CHATgpt (the code looks right, but getting upload errors. Mentioning just to rule out:
*<MIDI_Controller.h>
*<MIDIUSB.h>
*<MIDIUSB_Defs.h>
*<frequencyToNote.h>
*<pitchToFrequency.h>
*<pitchToNote.h>

Here is the working ChatGPT code that is being used & detected in Windows, but not FL:

#include <MIDI.h>

const int potPin1 = A0;
const int potPin2 = A1;
const int potPin3 = A2;
const int potPin4 = A3;
const int potPin5 = A9;

int potVal1 = 0;
int potVal2 = 0;
int potVal3 = 0;
int potVal4 = 0;
int potVal5 = 0;

MIDI_CREATE_DEFAULT_INSTANCE();

void setup() {
  pinMode(potPin1, INPUT);
  pinMode(potPin2, INPUT);
  pinMode(potPin3, INPUT);
  pinMode(potPin4, INPUT);
  pinMode(potPin5, INPUT);
  MIDI.begin();
  
  // Initialize Serial Communication
  Serial.begin(9600);
}

void loop() {
  potVal1 = analogRead(potPin1);
  potVal2 = analogRead(potPin2);
  potVal3 = analogRead(potPin3);
  potVal4 = analogRead(potPin4);
  potVal5 = analogRead(potPin5);

  //Send MIDI control change message for each potentiometer
  MIDI.sendControlChange(1, map(potVal1, 0, 1023, 0, 127), 1);
  MIDI.sendControlChange(2, map(potVal2, 0, 1023, 0, 127), 1);
  MIDI.sendControlChange(3, map(potVal3, 0, 1023, 0, 127), 1);
  MIDI.sendControlChange(4, map(potVal4, 0, 1023, 0, 127), 1);
  MIDI.sendControlChange(5, map(potVal5, 0, 1023, 0, 127), 1);
  
  // Send potentiometer values to serial monitor
  Serial.print("Potentiometer 1: ");
  Serial.println(potVal1);
  Serial.print("Potentiometer 2: ");
  Serial.println(potVal2);
  Serial.print("Potentiometer 3: ");
  Serial.println(potVal3);
  Serial.print("Potentiometer 4: ");
  Serial.println(potVal4);
  Serial.print("Potentiometer 5: ");
  Serial.println(potVal5);
  Serial.println();
  delay(100);
}

That's because it tries to use MIDI over Serial, not MIDI over USB.

See Control Surface: Multiple-Control-Change-Potentiometers.ino

1 Like

Oh my word, thank you so much!

I've been stuck with this project for quite a while, and now it works as intended.

Legend. Thank you again!!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.