alexAubin / customMidiController

Code and instructions to easily build a MIDI Controller from scratch
17 stars 1 forks source link

Midi Controller #1

Open tchilaviek opened 7 years ago

tchilaviek commented 7 years ago

hello, j'essaye de tester en ce moment un modèle de ton "customMidiController" prêté par Eli, un ami commun,

et j'avoue ne pas avoir encore compris comment l'utiliser

je construis moi même des contrôleurs Midi sur base d'Arduinos, en Flashant le ATMEGA 16u2 des cartes UNO avec le firmware Hiduino https://github.com/ddiakopoulos/hiduino

celà fonctionne très bien mais je suis également interessé par une eventuelle version qui pourrait se passer de la carte Arduino Complete et qui pourrait se restreindre simplement au ATmega 328

le problème auquel je fais face avec ta carte, montée par Eli, est le suivant je n'arrive pas a ce que le périphérique s'affiche dans un logiciel de son quelconque, meme en switchant les 2 positions et en rebootant etc

la seule chose que j'ai réussi à faire est que le périphérique soit reconnu dans une seule position du switch, en tant que "USPasp", sous Windows, et encore je ne peux rien en faire car il ne fonctionne pas sans driver etc

donc je me demande comment ce montage est censé fonctionner peut il être reconnu comme périphérique midi natif ou bien doit on passer par un soft qui convertie Serie vers midi ou autre??

merci d avance !!

alexAubin commented 7 years ago

Salut ! C'est cool d'avoir une issue sur ce repo haha !

je suis également interessé par une eventuelle version qui pourrait se passer de la carte Arduino Complete et qui pourrait se restreindre simplement au ATmega 328

Oui c'est exactement une feature du projet

peut il être reconnu comme périphérique midi natif ou bien doit on passer par un soft qui convertie Serie vers midi ou autre??

Le périphérique peut être reconnu comme du midi natif, c'est aussi une feature du projet

la seule chose que j'ai réussi à faire est que le périphérique soit reconnu dans une seule position du switch, en tant que "USPasp", sous Windows, et encore je ne peux rien en faire car il ne fonctionne pas sans driver etc

Effectivement, le "USBasp" correspond au mode où tu peut reprogrammer l'Atmega. Théoriquement, tu dois pouvoir utiliser l'IDE Arduino pour uploader du code, en suivant ces instructions. Je n'ai jamais encore essayé car je n'en avais pas trop besoin (et puis je ne suis pas fan de l'IDE Arduino - un bon vieux Makefile fait mieux l'affaire :P).

Du coup si tu arrives à uploader du code, il suffit normalement de reprendre mon main, faire en sorte que les includes soient bien reconnus, et hop.

Ensuite, si tu bascules sur l'autre mode, le périphérique est censé être reconnu comme un périphérique midi. Là je t'avoue que sur certaines carte, il y a parfois quelques soucis (qui peuvent être dû à des mauvaises soudures ?). Sur mon premier proto, le comportement est un peu aléatoire et il n'est détecté que genre 1 fois sur 10 ... Sur d'autre cartes bien soudée, il me semble que ca marchait beaucoup mieux.

tchilaviek commented 7 years ago

Salut et merci pour ta réponse j'ai compris maintenant comment on pouvait envoyer un sketch via USnooBie c'est a dire en ajoutant un "board" dans celles existantes et pris en compte par Arduino

bon mes connaissances sont limités, je suis plutôt connaisseur en MAO et en langages tels que pure data, midi, osc iannix, et ableton live pour la production

je construis des controleurs usb comme je te le disais et trouve qu'il est assez simple de comprendre comment ca fonctionne on programme le microcontroleur principal qui en fonction des valeurs mesurées, potentiomètres, ou boutons ou autre, génère des note midi et des control Change via la librairie MIDI.h autrement appelée arduino Midi Library

on peut simplement créer une interface Midi a l'ancienne avec câble DIN mais encore mieux on peut créer une interface Midi USB qui est devenu le standard pour l'informatique musicale, et celà on peut le faire en reflashant le Atmega 16u2 présent sur les UNO,

voilà comment je m'explique les choses pour un controleur basé sur UNO

mais avec ton architecture je ne comprend pas a quel moment on flash le atmega 328 pour qu'il puisse être reconnu directement comme un controleur midi USB, est ce quand on envoie un bootloader via un autre arduino qui sert uniquement de programmateur? est ce que ce bootloader a été specialement modifié pour que le 328 devienne un controleur midi usb ?

enfin voilà merci si tu as d'autres reponses ca m'aiderait a reussir a faire fonctionner ton prototype merci

alexAubin commented 7 years ago

Yope,

effectivement c'est pas trivial à comprendre. Dans ce que je décris dans le README, on flashe un bootloader spécial qui permet d'avoir deux modes :

Dans le contexte de ce projet, le programme flashé utilise une petite lib MIDIUSB que j'ai bricolé avec certains morceaux pris dans d'autres sources. En particulier, je pense que c'est ce morceau (https://github.com/alexAubin/customMidiController/blob/master/lib/MidiUSB/MidiUSB.cpp#L13-L173) qui permet que dans le user-mode, on initialise les bidules qui permettent d'avoir une connexion USB, et de dire que nous (l'ATMEGA) sommes un contrôlleur MIDI.