Frequencer - Next generation hardware sequencer

exel

Ouwe rot
Lid sinds
1 juli 2010
Berichten
1.609
Locatie
Lekkerkerk
Na mijn startende experimenten met embedded pielen in de vorm van een MIDI sequencer op Raspberry Pi ben ik verder het diepe water ingezwommen en ben ik met het Arduino-platform gaan spelen. Ik ben nu bezig met het ontwerp van een hardware MIDI-sequencer toegespitst op live performance (voortbordurend op mijn 'triggermagic' concept op de pi). Hardwarematig gaan er de volgende elementen tegenaan:

  • Arduino Mega2560 controller board
  • 2.8" Color TFT scherm
  • 16 rotary encoders
  • 16 leds
  • 4 MIDI-poorten (1 in, 3 uit)

Ik ga het geheel verpakken in een desktop case van 32cm breed. Bijgevoegd 3D-schetsen hiervan.

Alle relevante onderdelen zijn reeds in bestelling. De hardware-kant hiervan is uiteindelijk niet erg ingewikkeld (hoop connecties dankzij de stapels pots en ledjes, maar ik heb bij alles gekozen voor panel mounts, dus ik hoef niet gelijk passende PCB's te maken). Het meeste werk gaat hem zitten in het bouwen van de software, maar daar zie ik ook nog een hoop lol.
 

Attachments

  • Screen Shot 2015-03-23 at 18.04.14 .jpg
    Screen Shot 2015-03-23 at 18.04.14 .jpg
    19 KB · Bekeken: 159
  • Screen Shot 2015-03-23 at 18.11.00 .jpg
    Screen Shot 2015-03-23 at 18.11.00 .jpg
    12 KB · Bekeken: 103
  • Screen Shot 2015-03-23 at 18.11.49 .jpg
    Screen Shot 2015-03-23 at 18.11.49 .jpg
    14,3 KB · Bekeken: 105
Heb je weleens naar de midibox seq en de sequencer light. Die gebruiken een stm32f407 board dat een 168 MHz processor heeft en meer geheugen en connectiviteit en half de prijs van de arduino mega. Anyhow leuk project
 
Respect dear Sir :okdan: !
 
Heb je weleens naar de midibox seq en de sequencer light. Die gebruiken een stm32f407 board dat een 168 MHz processor heeft en meer geheugen en connectiviteit en half de prijs van de arduino mega. Anyhow leuk project

Ik heb de afgelopen jaren heen en weer gedraald rond het fenomeen midibox, maar ik vind het niet naar mijn smaak ingericht. Verder is het ook wel een beetje om mijn handen vies te maken; als alles al helemaal uitgekawd is qua platform is de uitdaging een beetje weg.

Ik heb met mijn huidige ontwerp nu nog ruimte voor 3 switchbuttons, voor de rest zit dat mega2560-bordje inderdaad wel helemaal volgepland. Ook leuke uitdaging geweest om een beetje tactisch te beslissen wat te multiplexen. De CPU-snelheid maak ik me vooralsnog niet echt zorgen om. Moet met wat er in die Arduino zitten ook wel lukken om 3 seriele poorten met jaren'80 snelheden vol te blaffen :)
 
Misschien ook interessant om naar te kijken is het Zyklus MIDI Performance System.

https://www.gearslutz.com/board/electronic-music-instruments-electronic-music-production/960259-zyklus-mps-1-sequencer-phenomenon-all-related-stuff.html

Zijn er maar 40 van gebouwd/verkocht en heeft een aantal unieke features.

Interfacing-inspiratie is altijd welkom.

Het basis-idee waar ik mee werk is dat het een performance-instrument is dat zich via MIDI laat triggeren. Iedere van de 16 mappable triggers heeft tot 16 response layers. In een layer kan een sequence/arpeggio draaien, of een akkoord (als de layer polyfoon is), of een enkele noot met wel of niet vooringestelde lengte.

Mijn eigen toepassing hiervan is geautomatiseerde sequences triggeren met MIDI baspedalen, waar ik vervolgens live verder overheen kan spelen met twee vrije handen.
 
Het circuit is uiteindelijk toch wat uitgebreider geworden, vooral door de grote hoeveelheid switches die moet worden uitgelezen (de rotary encoders gebruiken een twee bit pulse train, plus een derde lijn voor de 'click' als je ze induwt). Voor alle pushbuttons ben ik in het ontwerp nu overgestapt op een viertal HCF4051 multiplexer ICs en een SN74HC04 NOT gate. Dat levert me tot 48 button inputs met 6 adreslijnen en 1 datalijn.

Voor de aansturing van de positionele LEDs ga ik een MAX72xx IC gebruiken, die worden uiteindelijk via SPI aangestuurd (alles in 3 lijntjes, waarvan er 2 ook voor andere SPI devices nuttig zijn).

Omdat ik nog wat pinruimte overhad heb ik ook een viertaal MAX5322 bipolaire DACs gepland. Deze kunnen gebruikt worden om 8 CV/Gate-stuurspanningen te genereren tussen -10V en +10V.

Aangeizen dit allemaal nogal in de nummers gaat lopen qua bedrading heb ik besloten het diepe in te duiken en een custom PCB te ontwerpen met alle bovengenoemde schakelingen erin, plus routering van alle binnenkomende Arduino pins naar een twaalftal IDC sockets, die met flat cables doorgevoerd worden.

Voor onder de rotary encoders heb ik ook een PCB gepland, met soldeerpunten voor de encoders, en een IDC socket voor de toevoer van stroom/data.

Toegevoegd geĂĽpdatet case design.

Mijn volgende uitdaging wordt EAGLE leren. Abandon all hope, ye who enter.
 

Attachments

  • Screen Shot 2015-03-24 at 17.31.38 .jpg
    Screen Shot 2015-03-24 at 17.31.38 .jpg
    28,5 KB · Bekeken: 99
  • Screen Shot 2015-03-24 at 17.31.58 .jpg
    Screen Shot 2015-03-24 at 17.31.58 .jpg
    10,6 KB · Bekeken: 101
  • Screen Shot 2015-03-24 at 17.32.25 .jpg
    Screen Shot 2015-03-24 at 17.32.25 .jpg
    14,4 KB · Bekeken: 100
Misschien ook interessant om naar te kijken is het Zyklus MIDI Performance System.

Het filmpje van de software-versie laat best wel wat dingen zien die erg in het straatje liggen van wat ik ook probeer met layers. De mogelijkheid om een sequence/arpeggio mee te transponeren binnen een scale klinkt als iets dat zeker interessant is.
 
Ah OK vet project, end knap hoeveel je uit het arduino boardje weet te halen.
Ik snap de kick wel van het helemaal vanaf scratch te doen. Voor mij is dat nog niet te doen en is midibox een enigsinds toegankelijk embedded platform. Toch zal ik wel adviseren om het midiboxforum en de revisions van de sequencer te bekijken. Wellicht kan dit helpen in de keuzes die je gaat maken.
 
Na nog een beetje doorpuzzelen heb ik zelfs nog 3 pinnen vrij. Komen vast later nog van pas. Dit is nu de pin-situatie richting de 2560:

Code:
D0      RX0 (Unused)
D1      TX0
D2      ENC01A
D3      ENC01B
D4      ENC02A
D5      ENC02B
D6      ENC03A
D7      ENC03B
D8      ENC04A
D9      ENC04B
D10     ENC05A
D11     ENC05B
D12     ENC06A
D13     ENC06B

D14     TXMIDI3 (Midi Out 3)
D15     RX3 (Unused)
D16     TXMIDI2 (Midi Out 2)
D17     RX2 (Unused)
D18     TXMIDI1 (Midi Out 1)
D19     RXMIDI1 (Midi In)
D20     I2CSDA 
D21     I2CSCL 

D22     TFTD0
D23     TFTD1
D24     TFTD2
D25     TFTD3
D26     TFTD4
D27     TFTD5
D28     TDTD6
D29     TDTD7
D30     ENC07A
D31     ENC07B
D32     ENC08A
D33     ENC08B
D34     ENC09A
D35     ENC09B
D36     ENC10A
D37     ENC10B
D38     ENC11A
D39     ENC11B
D40     ENC12A
D41     ENC12B
D42     ENC13A
D43     ENC13B
D44     ENC14A
D45     ENC14B
D46     ENC15A
D47     ENC15B
D48     ENC16A
D49     ENC16B
D50     BTNDAT
D51     SPISCLK
D52     SPIMOSI
D53     SPIMISO

A0      TFTRD
A1      TFTWR
A2      TFTCD
A3      TFTCS
A4      BTNA0
A5      BTNA1
A6      BTNA2
A7      BTNA3

A8      BTNA4
A9      DAC1CS
A10     DAC2CS
A11     DAC3CS
A12     DAC4CS
A13     (Unused)
A14     (Unused)
A15     (Unused)

Ik zit nu als een idioot printbaantjes te trekken in EAGLE. Ik heb een PCB template gevonden voor mega2560 shields, dat is natuurlijk de ideale manier van dit met elkaar verbinden. Shield prikt bovenin de 2560, met daarbovenop 12 IDC sockets foor 10-aderige flat cables richting alle peripherals. Ben benieuwd wat autolayout er van gaat bakken dalijk met maar 2 lagen.
 
PCB Design. Ik moet aan mijn dagen met Sim City denken 8)
 

Attachments

  • Screen Shot 2015-03-25 at 17.42.44 .jpg
    Screen Shot 2015-03-25 at 17.42.44 .jpg
    108,4 KB · Bekeken: 102
Na passen en meten eindelijk een versie waar de autorouter het niet bij opgeeft. Voor ik hem ga laten etsen de afzonderlijke onderdelen eerst op een breadboard proberen natuurlijk.

R1X8eMk.jpg
 
Even een software-tussenstop terwijl ik op componenten wacht om het schema te testen. Default font rendering uit de Adafruit library is niet echt gemaakt voor een kleuren-LCD. Wat code gescrheven om een gecomprimeerd font te genereren uit bitmap-data, inclusief anti-aliasing. 1238 bytes voor een 11 punts Zwitsers font, 4478 voor de 24 punts variant. Experimenterend met deze shield-versie van het uiteindelijke TFT scherm ben ik blij dat ik voor het eindprodukt de breakout-versie heb gespecificeerd. Seriele aansturing voor het sturen van 16 bits pixels is niet erg snel. Je ziet de karakters zichzelf niet tekenen, maar het clearen van het hele scherm is wel zichtbaar op deze snelheid.

FqyJlAi.jpg


Ik overweeg nog wat kerning-correcties in de font-data op te nemen.
 
Bestelling voor 10 backplane PCBs is de deur uit. Deze zijn relatief eenvoudig (seating voor 2 rotary encoders, een 2x5 IDC socket voor interconnect met het moederbord en twee jumper-sockets voor de aansluiting van de ledjes), zodat ik wat ervaring heb met dit hele proces voor ik het diepe induik en het moederbord zelf ga laten printen.

Ik ben intussen sowieso nog wat aan het schaven met het moederbord-ontwerp. Keuze voor een drietal 23017 port extenders in plaats van een set 3-to-8 routers maakt het uitlezen van de knoppen stiekem een stuk eenvoudiger (de 23017 kan een interrupt sturen, dus hoef niet te pollen).
 
Na passen en meten eindelijk een versie waar de autorouter het niet bij opgeeft. Voor ik hem ga laten etsen de afzonderlijke onderdelen eerst op een breadboard proberen natuurlijk.

Heb je de volledige print laten tekenen door de autorouter? Helemaal geen correcties hoeven maken?

Maareuh.. weer goed bezig! :okdan:
 
Heb je de volledige print laten tekenen door de autorouter? Helemaal geen correcties hoeven maken?

Maareuh.. weer goed bezig! :okdan:

Met de hoeveelheid printbaantjes van het main board is met de hand proberen de autorouter te second guessen me bijna onmogelijk gebleken. Het kwam tot nog toe neer op goed uitmikken. Als er na routen unrouted draadjes blijven bungelen schuif ik net zo lang met mijn layout tot er rond de knelpunten meer ruimte is, doe een ripup en probeer opnieuw.

Bijlages:
  1. Nieuwe revisie moederbord op basis van 23017s. Voor de makkelijkere administratie is iedere 23017 nu verantwoordelijk voor tweetal IDC jumpers die naar de encoder-bordjes gaan.
  2. Encoder-bordje dat nu bij de PCB-boer wordt gebakken.
 

Attachments

  • Screen Shot 2015-04-02 at 1.48.08 .jpg
    Screen Shot 2015-04-02 at 1.48.08 .jpg
    87 KB · Bekeken: 102
  • Screen Shot 2015-04-02 at 1.48.57 .jpg
    Screen Shot 2015-04-02 at 1.48.57 .jpg
    28,8 KB · Bekeken: 108
Back
Top