Go Down

Topic: erreur de compilation MIDIUSB.h (Read 1 time) previous topic - next topic

vj_dobermann

Bonjour à toutes et à tous,

je travaille sur un projet de contrôleur midi avec arduino.
En utilisant le code de cette page comme base : http://www.arduino.cc/en/Tutorial/MidiDevice
mais je n'ai qu'un seul push bouton pour l'instant c'est pas important.

j'ai une erreur de compilation qui me dit :

/Users/vjdobermann/Documents/Arduino/push_button/push_button.ino:10:21: fatal error: MIDIUSB.h: No such file or directory
 #include "MIDIUSB.h"
                     ^
compilation terminated.
exit status 1
Erreur de compilation pour la carte Arduino/Genuino Uno


Après plusieurs recherches sur internet je ne trouve pas de solution à mon problème, j'espère que vous pourriez m'aider.

Je suis sous OSX Sierra et Arduino 1.8.3

Un grand merci d'avance

infobarquee

bonjour,
Quote
fatal error: MIDIUSB.h: No such file or directory
la lib est bien présente dans le répertoire librairies?
AUCUNE AIDE PAR MP

vj_dobermann

Bonjour,

alors non elle ne l'était pas, je croyais qu'elle était incluse par défaut...
j'ai fais une recherche, c'est bien cette lib ? : https://github.com/arduino-libraries/MIDIUSB

en recompilant avec, j'ai un autre message d'erreur :

In file included from /Users/vjdobermann/Documents/Arduino/push_button_midi/push_button_midi.ino:10:0:
/Users/vjdobermann/Documents/Arduino/libraries/MIDIUSB-master/src/MIDIUSB.h:18:2: error: #error MIDIUSB can only be used with an USB MCU.
 #error MIDIUSB can only be used with an USB MCU.


Merci d'avance


iznobe

Bonjour , dans un premier temps , corriger une erreur de code sans voir le code , a moins d' etre devint releve d' un exploit , il existe des balises specifiques pour " envelopper et mettre en place VOTRE code dans le post . ( un lien vers un exemple ne suffit pas ) .

De plus avec la bibliothèque que vous nous avez nous linké a l ' air d ' avoir une mise en place specifique decrite dans le document : " README " .

Avez vous fait les manipulations decrites et les avez vous miseen place dans votre code ?


kamill

Bonjour,

Soit ta librairie n'est pas compatible avec ta carte, soit tu n'a pas déclaré la bonne carte dans l'IDE.

vj_dobermann

Bonjour,
oui bien sur voilà le code que j'utilise :

Code: [Select]
#include <frequencyToNote.h>
#include <MIDIUSB.h>
#include <pitchToFrequency.h>
#include <pitchToNote.h>

/*
   This examples shows how to make a simple seven keys MIDI keyboard with volume control

   Created: 4/10/2015
   Author: Arturo Guadalupi <a.guadalupi@arduino.cc>
  
   http://www.arduino.cc/en/Tutorial/MidiDevice
*/


#define NUM_BUTTONS  7

const uint8_t button1 = 2;
const uint8_t button2 = 3;
const uint8_t button3 = 4;
const uint8_t button4 = 5;
const uint8_t button5 = 6;
const uint8_t button6 = 7;
const uint8_t button7 = 8;

const int intensityPot = 0;  //A0 input

const uint8_t buttons[NUM_BUTTONS] = {button1, button2, button3, button4, button5, button6, button7};
const byte notePitches[NUM_BUTTONS] = {C3, D3, E3, F3, G3, A3, B3};

uint8_t notesTime[NUM_BUTTONS];
uint8_t pressedButtons = 0x00;
uint8_t previousButtons = 0x00;
uint8_t intensity;

void setup() {
  for (int i = 0; i < NUM_BUTTONS; i++)
    pinMode(buttons[i], INPUT_PULLUP);
}


void loop() {
  readButtons();
  readIntensity();
  playNotes();
}

// First parameter is the event type (0x0B = control change).
// Second parameter is the event type, combined with the channel.
// Third parameter is the control number number (0-119).
// Fourth parameter is the control value (0-127).

void controlChange(byte channel, byte control, byte value) {
  midiEventPacket_t event = {0x0B, 0xB0 | channel, control, value};
  MidiUSB.sendMIDI(event);
}

void readButtons()
{
  for (int i = 0; i < NUM_BUTTONS; i++)
  {
    if (digitalRead(buttons[i]) == LOW)
    {
      bitWrite(pressedButtons, i, 1);
      delay(50);
    }
    else
      bitWrite(pressedButtons, i, 0);
  }
}

void readIntensity()
{
  int val = analogRead(intensityPot);
  intensity = (uint8_t) (map(val, 0, 1023, 0, 127));
}

void playNotes()
{
  for (int i = 0; i < NUM_BUTTONS; i++)
  {
    if (bitRead(pressedButtons, i) != bitRead(previousButtons, i))
    {
      if (bitRead(pressedButtons, i))
      {
        bitWrite(previousButtons, i , 1);
        noteOn(0, notePitches[i], intensity);
        MidiUSB.flush();
      }
      else
      {
        bitWrite(previousButtons, i , 0);
        noteOff(0, notePitches[i], 0);
        MidiUSB.flush();
      }
    }
  }
}

// First parameter is the event type (0x09 = note on, 0x08 = note off).
// Second parameter is note-on/note-off, combined with the channel.
// Channel can be anything between 0-15. Typically reported to the user as 1-16.
// Third parameter is the note number (48 = middle C).
// Fourth parameter is the velocity (64 = normal, 127 = fastest).

void noteOn(byte channel, byte pitch, byte velocity) {
  midiEventPacket_t noteOn = {0x09, 0x90 | channel, pitch, velocity};
  MidiUSB.sendMIDI(noteOn);
}

void noteOff(byte channel, byte pitch, byte velocity) {
  midiEventPacket_t noteOff = {0x08, 0x80 | channel, pitch, velocity};
  MidiUSB.sendMIDI(noteOff);
}


désolé si j'ai omis des info, j'ai rédigé un peu vite ce topic

dans le document README.adoc, il ne parle que de Linux.

Au début du fichier, il est mentionné que ça ne fonctionne qu'avec l'arduino 1.6.6, alors que j'ai la dernière version, la 1.8.3.

Je l'ai trouvé dans la page des releases mais c'est pareil le message d'erreur revient avec la 1.6.6

Artouste

Bonjour
Tu utilise quoi comme type d'arduino ?

vj_dobermann


Artouste

Bonjour,

j'utilise une Uno
bonjour
cette lib n'est pas compatible avec un uno

vj_dobermann

oui c'est ce que je viens de constater malheureusement  :smiley-cry:  :smiley-cry:  :smiley-cry:

je continue mes recherches pour trouver un moyen que mon uno envoie du midi par usb.

Artouste

#10
Jul 10, 2017, 04:44 pm Last Edit: Jul 10, 2017, 09:52 pm by Artouste
oui c'est ce que je viens de constater malheureusement  :smiley-cry:  :smiley-cry:  :smiley-cry:

je continue mes recherches pour trouver un moyen que mon uno envoie du midi par usb.
Les 3 solutions les plus simples que j'utilise
- utiliser un adaptateur MIDI/USB (genre çà)
- deriver le driver MIDI sur le PC , perso j'utilise Hairless
- utiliser un digispark (mais ne fonctionne quepourdu MIDI-OUT)

vj_dobermann

#11
Jul 10, 2017, 07:24 pm Last Edit: Jul 10, 2017, 07:47 pm by vj_dobermann
Merci pour les 3 propositions, le premier lien ne fonctionne pas mais je vois ce que tu veux dire c'est un petit boitier avec un port usb d'un côté et deux prises midi de l'autre.

Je ne connaissais pas Hairless, heureusement il y a une version mac de dispo je testerai également ;)

Comme je programme pas mal avec Pure Data et Max Msp, j'ai également pensé recevoir le signal de l'arduino dans un patch PD ou Max pour le convertir en midi je testerai aussi cette magouille :smiley-mr-green:

http://fabacademy.org/archives/content/tutorials/12_Interface_and_Application_Programming/PD_to_Arduino_Over_Serial.html

http://reactivemusic.net/?p=11809

Artouste

... le premier lien ne fonctionne pas

... Je ne connaissais pas Hairless, heureusement il y a une version mac de dispo je testerai également ;)
J'ai "réparé" le lien (problème récurent du forum :smiley-mr-green: )

Hairless est simple à utiliser (au moins sous windows)  , je l'ai utilisé recemment pour faire du test MIDI-IN et MIDI-OUT avec TRAKTOR .


vj_dobermann

#13
Jul 13, 2017, 03:15 pm Last Edit: Jul 13, 2017, 04:04 pm by vj_dobermann
je viens de tester Hairless voici ce que je vois :



ça fonctionne du premier coup, c'est awesome ce programme  :smiley-cool:

je crois que je vais même me casser la tête à codé un patch dans Max Msp, vu que ce programme est une solution clé en main sur win/mac :)

vj_dobermann

est-ce que tu as déjà eu ce message d'erreur avec hairless ? :



j'ai changé les baud mais rien à faire... du coup mon signal midi n'arrive pas...

Go Up