Table des matières:

HX1-DM - la boîte à rythmes DIY alimentée par Arduino DUE (fabriquée avec un Dead Maschine MK2) : 4 étapes
HX1-DM - la boîte à rythmes DIY alimentée par Arduino DUE (fabriquée avec un Dead Maschine MK2) : 4 étapes

Vidéo: HX1-DM - la boîte à rythmes DIY alimentée par Arduino DUE (fabriquée avec un Dead Maschine MK2) : 4 étapes

Vidéo: HX1-DM - la boîte à rythmes DIY alimentée par Arduino DUE (fabriquée avec un Dead Maschine MK2) : 4 étapes
Vidéo: Quel est le volume de cette boîte ? 2024, Novembre
Anonim
Image
Image
La réparation
La réparation

Le Spéc

  • Contrôleur Midi hybride / boîte à rythmes: alimenté par Arduino DUE !
  • 16 pads de détection de vélocité avec une latence très faible 1>ms
  • 8 boutons assignables par l'utilisateur à n'importe quelle commande Midi #CC
  • Séquenceur intégré 16 canaux (pas besoin d'ordinateur !!)
  • Fonctionnalité MIDI in/out/thru (peut être utilisée comme interface midi USB !)
  • Prise en charge partielle de l'horloge MIDI et du MTC (fonctionnant sur le contrôle MMC et DAW)

C'est certainement l'un des projets les plus compliqués sur lesquels j'ai travaillé, je parlais de 17 registres à décalage de sortie, 6 registres à décalage d'entrée, 2 multiplexeurs à 16 canaux fonctionnant sur une carte de circuit imprimé. avec registres à décalage / multiplexeurs avant……

Cela a commencé comme un achat impulsif sur eBay, je voulais vraiment une Native Instruments Maschine parce que j'ai toujours aimé les pads de batterie dessus par rapport à ceux du studio MPC que je possédais, donc quand j'ai vu un défectueux sur eBay pour 40 £ je pensais J'essaierais de le réparer, le pire des cas étant "si je ne peux pas le réparer, j'ai un Arduino DUE et quelques UNO qui traînent, je pourrais toujours faire du hack"

J'aime vraiment ces pads de batterie de toute façon !!!!

Fournitures

1 x Native Instruments Maschine MK2 défectueux

1 x Arduino Due.

17 x SN74HC595 - Registres à décalage de sortie 8 bits

6 x SN74HC165 - Registres à décalage d'entrée 8 bits

2 x 74HC4067 - multiplexeurs 16 canaux.

2 écrans OLED 256x64 de 3,2 pouces.

du fil plat (un vieux câble de disquette fera l'affaire)

Étape 1: La réparation

Le vendeur eBay a eu la gentillesse de donner une idée de ce à quoi s'attendre dans la description et avait supprimé le port USB. La carte a subi une surtension et ne s'est pas mise sous tension. Cue le multimètre…. La carte semblait avoir un court-circuit… "J'ai réparé d'innombrables cartes mères avec des courts-métrages auparavant. Alors, à quel point cela peut-il être difficile !?!" Il s'est avéré que cette surtension (et probablement en partie la conception de la carte) avait éliminé presque composant sur la carte, y compris le processeur principal. Cette planche était vraiment mal en point !

J'ai continué à pousser et à pousser avec mon multimètre, j'ai fait un peu de recherche sur les composants et j'ai compris ce que chacun fait et NI a fait un excellent travail pour rendre les choses assez évidentes avec les différents points de test autour de la carte mère ??.

Étape 2: Le piratage

Le Hack
Le Hack
Le Hack
Le Hack
Le Hack
Le Hack

Sachant que je vais devoir tout remplacer à l'exception du processeur principal (qui ne sera pas nécessaire), je me suis tourné vers eBay. Heureusement, tout ce dont j'avais besoin était bon marché, donc en commander une charge était amusant. ?

17 x SN74HC595 - Registres à décalage de sortie 8 bits

Les 17 registres à décalage de sortie sont utilisés pour contrôler les LED multicolores du pad de batterie et toutes les LED des boutons (136 pour être exact !!) Ceux-ci sont vraiment faciles à utiliser et ont rapidement trouvé une bibliothèque en utilisant l'IDE Arduino pour m'épargner en faire un.. ils sont enchaînés ensemble.

6 x SN74HC165 - Registre à décalage d'entrée 8 bits

Ces registres à décalage d'entrée sont parfaits pour les entrées multiples sur 1 canal. Il y a 48 boutons au total.

2 x 74HC4067 - multiplexeurs 16 canaux

Il nous reste 16 pads et 8 boutons, ceux-ci sont également analogiques. J'ai trouvé qu'il était plus facile de les utiliser car ceux de la carte étaient à 8 canaux et j'ai eu des problèmes pour trouver où connecter les broches de données. Cue Spaghetti Junction….

2 écrans OLED 256x64 de 3,2 pouces

Il doit y avoir des écrans !!! Je n'ai trouvé aucune information sur les écrans LCD d'origine fournis avec NI Maschine et je ne pouvais plus perdre de temps à essayer, j'ai donc décidé d'en commander en Chine… J'ai utilisé la bibliothèque UG8x8 pour les faire fonctionner. Les nouveaux écrans étaient légèrement plus petits que l'original, j'ai donc simplement supprimé les "mauvais bits".

1 x Arduino Due

J'avais ça qui traînait depuis un certain temps dans l'attente d'un projet assez digne de toute cette puissance !! Il y a eu un problème que j'ai rencontré, il semble que certaines révisions de ces cartes aient un problème de réinitialisation qui signifiait que je devais parfois appuyer sur le bouton de réinitialisation pour que la chose fonctionne après avoir téléchargé un croquis. Cela a été facilement corrigé avec une résistance de 10K (il y a un post sur le forum Arduino à ce sujet).

Étape 3: Le code

J'ai été vraiment impressionné par le support qu'il y a dans la communauté Arduino, trouver des exemples de code et des bibliothèques pour les différents composants était vraiment simple et direct.

L'installation et le fonctionnement du midi USB a été facile et a pris quelques minutes. Les LED ont pris un certain temps et j'ai dû créer un croquis qui réglait progressivement chaque broche à 1 seconde d'intervalle et prenait une note. J'ai créé un tableau contenant les numéros de PIN pour faciliter le codage de tout.

J'ai fait 2 librairies pour parler aux multiplexeurs, l'une gère les pads analogiques et l'autre les potards. Encore une fois, c'était vraiment simple. Je les ai attachés, n'hésitez pas à utiliser edit etc.

Je voulais avoir un séquenceur et la possibilité d'enregistrer sans avoir besoin d'un ordinateur, j'ai trouvé des informations sur la façon de convertir les BPM en ms et j'ai trouvé une excellente bibliothèque de minuteries Arduino DUE.

En utilisant la bibliothèque de minuterie, j'ai pu définir les entrées de lecture et les choses par intervalles:

Pads @ 1ms - J'ai trouvé que cela donnait le meilleur équilibre entre les artefacts de réponse / anti-rebond.

Boutons à 40 ms - J'ai utilisé une bibliothèque de files d'attente pour qu'aucune pression n'ait été manquée.

Le traitement est effectué dans la boucle principale, vous ne pouvez pas en faire trop lorsque vous êtes dans une interruption car cela bloquera l'Arduino.

Midi stuff @BPM (en ms) - pour le séquençage, au BPM souhaité, une fonction est appelée qui met à jour les notes ETC à jouer et augmente le compteur de battements.

Étape 4: Conclusion

Conclusion
Conclusion

Je ne sais pas ce que j'ai fait ici mais je suis assez fier, les pads répondent très bien, j'ai dû jouer avec le timing pour trouver le bon équilibre entre réactivité et problèmes de rebond. Le séquençage fonctionne très bien et une fois que j'ai compris la prise en charge de la DAW, je peux pleinement intégrer cette chose dans mon flux de travail et être capable d'ajouter des choses dans un contrôleur que j'ai toujours voulu ! C'était un projet vraiment amusant sur lequel travailler et un excellent exercice pour se familiariser avec C, comprendre la rétro-ingénierie et le fonctionnement des multiplexeurs, des registres à décalage et du séquençage MIDI. Je continue d'améliorer le code principal et je le sortirai peut-être un jour en tant que concepteur de rythme open source.

DES ASTUCES:

J'ai trouvé comment changer le nom USB du DUE en éditant l'un des fichiers d'en-tête dans le dossier Arduino/SAM.

MIDI-OX est un excellent outil pour tester la fonctionnalité Midi

LIENS:

www.usb.org/sites/default/files/midi10.pdf - USB MIDI Spechttps://midi.teragonaudio.com/tech/miditech.htm https://guitargearfinder.com/guides/convert-ms -mi… Quelques informations sur la façon de convertir BPM en ms

travis-ci.com/SMFSW/Queue - Pour les entrées de boutons afin de ne manquer aucune pression !

github.com/olikraus/u8g2/wiki/u8x8referenc… - Bibliothèque UG8 pour écrans LED/LCD

github.com/ivanseidel/DueTimer/releases - Bibliothèque de synchronisation Arduino DUE

www.pjrc.com/teensy/td_libs_Encoder.html - Encoder Lib pour le gros bouton

shiftregister.simsso.de/ - ShiftIn Register lib - Créé par Henrik Heine, le 24 juillet 2016

forum.arduino.cc/index.php?topic=57636.0 - Trucs de code temporel MIDI

Conseillé: