E-licktronic Yocto (TR-808 clone)

Ah ja geheugen dump, dat lijkt me goed te doen en super nuttig. Zou een variatie op de sysex van de bootloader kunnen gebruiken. Vast nog ongebruikte knopjes genoeg in de 'Init EEPROM' mode.

Tap modus: had ik ook heel graag gehad toen ik nog geen externe sequencer had. Lijkt me wel moeilijker, net als die sync start/stop problemen die je beschrijft, omdat je middenin een bestaand systeem zit. Zou tap mode in de pattern edit mode zitten, of een nieuwe mode worden? Je hebt dan opeens meer te maken met de layout van de hardware interface.

Ik heb zelf ook geen problemen met hoe de MIDI expander mode werkt maar het idee van onnodige latency was mij toch een doorn in het oog. :)
 
Cool :) Welja, mocht je je vervelen :)


Tap: akkoord... verandert veel meer en de code zit als ik het me herinner niet super logisch in elkaar.
Heel dat sync gebeuren is een ramp hoe het nu is, zelfde probleem als de x0xb0x firmware heeft, daarom dat het in n0nx0x2 volledig vervangen werd door iets anders.
Met de yocto zat ik ook te denken om zoiets te doen.. Hier is een post van me van vorig jaar waar ik voorstel om de "mode" switch anders in te delen.. http://www.e-licktronic.com/forum/viewtopic.php?f=17&t=991&start=20#p6423 Flauw dat er dat een sticker ofzo moet opgeplakt worden, maar dat heb ik er voor over, nu is het super frustrerend in slave mode.
 
Daar is ie dan: https://gitlab.com/jacobvosmaer/yocto-firmware

Compileert automatisch in de cloud, waarna je de hex/syx files kan downloaden via 'CI artifacts'. (Download knopje zit rechts, kies 'Download build' onder 'Artifacts').

Als je dit project "forkt" zou de compile toestand automatisch moeten werken op je fork.

hoi jvq,

net even geprobeerd (plan was een vergelijkende opname te maken)
en ik krijg het niet aan de praat! er komt geen klank meer uit de yocto in expander mode.
4 keer over en weer gewisseld tussen 1.0c en jouw versie, telkens werkt expander op de officiële firmware wel.
Ik gebruik kanaal 8.. zou het kunnen dat er iets misgegaan is?
 
Ik had inderdaad iets stoms gedaan.

Versie 3.2 van die MIDI library is een beetje gaar, je moet MIDI.h editen om configuratie in te stellen. Dat is niet zoals het hoort, dat moet 'van buiten' kunnen. Enfin, ik had de library opnieuw gedownload, en zo was ik configuratie die wel in de forum-versie stond kwijtgeraakt. In het bijzonder gebruikte de MIDI lib USART0 ipv USART1 en dan gaat het nooit werken.

Nieuwe release: hier.
 
Ben trouwens in een andere branch bezig met een "kale" AVR-C versie bezig met alleen maar MIDI expander mode. https://gitlab.com/jacobvosmaer/yocto-firmware/tree/midi-avrc Vooral om van te leren.

Ik leer er veel van. Het lijkt verrekte lastig te zijn om betere timing te krijgen dan wat de officiële versie (na mijn patch) heeft.

Het lastige is dat de 808 "herstel" nodig heeft tussen hits. Als je de interne sequencer gebruikt kun je meerdere hits tegelijk doen in een 'tik' van de CPU. Maar bij MIDI gaat dat nooit lukken. Daar komen de noten namelijk noodgedwongen 1 voor 1 binnen. Dat betekent dat als je twee noten 'tegelijkertijd' wilt afspelen, dwz dat ze direct na elkaar binnenkomen op MIDI, dat je dan of je het wilt of niet de "hersteltijd" moet pakken tussen de twee noten. De hersteltijd is ca 1ms lijkt het.

Door het gebruik van UART interrupts kan je "tegelijk" binnenkomende noten in de wacht zetten in een software UART (MIDI) ringbuffer en ze dan 1 voor 1 triggeren.

Dit klinkt allemaal een beetje brak, maar aan de andere kant ook wel logisch voor een ontwerp uit 1980 wat alleen maar externe sync kon in die tijd, geen triggers. Zodra de noten van buiten komen ipv het interne geheugen kan de 808 niet meer vooruit lezen, en dan wordt de trigger-architectuur problematisch.

Voorzover ik het begrijp. :)
 
Designer: ik hoop dat het aan mijn nieuwe firmware ligt, maar hier mijn theorie:

- CPU stuurt een puls van 10 us richting accent circuit
- accent circuit heeft een monostable die een pulse van 1 ms maakt wanneer de CPU puls binnenkomt (zie fig 6, pagina 4, service manual)
- accent pulse (1ms) gaat naar alle instrumenten (heet 'common trig' in de service manual)
- ieder instrument heeft een AND gate op de input. Als de lijn van het instrument hoog is gedurende de 1ms puls vanuit het accent circuit begint de envelope van het betreffende circuit (linker helft fig 7, overlap van 'common trig' en 'instrument data')

Wat ik bedoel met 'herstel', en wat ik misschien verkeerd heb, is hoe snel het accent-circuit weer een 1ms common trig puls kan maken. Op pagina 5 service manual klinkt het alsof er in het origineel nooit minder dan 8ms zit tussen twee common trig pulsen.

In het geval van MIDI wil ik dus zo snel mogelijk een nieuwe common trig genereren. Het zou mooi zijn om niet gebonden te zijn aan die common trig maar dan moet je hardware aanpassen en dat gaat mij wat ver. :)

Als ik het goed lees zie ik dat "The L period is determined by the sum of the time constants R100*C23 and R102*C27" (service p.4, onder "Trigger Gate"). In beide gevallen 680KOhm en 1nF.

Mijn electronica kennis is niet goed genoeg maar mijn intuïtie is dat die RC constante ook iets zegt over de minimale tijd tussen twee common trig pulsen.

Even los hiervan, mijn (compleet nieuwe) firmware is nog niet in orde, ik verlies noten die vlak na elkaar binnenkomen. Of dat aan de 808 hardware ligt of aan mijn code weet ik nog niet maar mijn code is ws deel van het probleem.
 
Laatst gewijzigd:
Hier een plaatje uit de service manual van het origineel. Schema is hetzelfde in de Yocto. Ik heb de twee condensatoren die moeten 'herstellen' tussen common trig pulsen gemarkeerd.
 

Attachments

  • 808 accent common trig.png
    808 accent common trig.png
    106,3 KB · Bekeken: 100
Ik denk dat je voor elk geluid velocity moet hebben.

Hoeveel volt zit er tussen de zachtste noot zonder accent en de hardste noot met accent,
welke voltages zijn dit ?

Op het metaal voice board zit nog een opamp, boven de cowbell, wat doet die dan ?, geeft die weer andere velocity waardes ?,
wat zijn de voltages daar van ?

bvd.

Ik ga net als een 909 doen, met midi velocity,
909 heeft 6 bit ( 64 stapjes ), ik gebruik liever 7 bit via een DAC in een per geluid S&H.
Dan heb je een of twee 4051 achter je DAC wat naar elke voice gestuurt word in de sample & hold, dit heeft een hele kleine vertraging met 100p, dat heb ik van die schemas van die DIY909 hoe die het velocity heeft.
Werkt perfect bij mijn 909BD.
 
Ik denk dat je voor elk geluid velocity moet hebben.

Hoe bedoel je 'moet hebben'? De originele 808 heeft geen velocity, alleen maar globaal accent. Zoals de Yocto v1 is opgezet werkt dat daar hetzelfde. Als ik velocity per noot zou willen hebben zou ik de bestaande Yocto v1 hardware moeten aanpassen, om zoals jij zegt per instrument een ander voltage te gebruiken om te triggeren.

Echter, de hardware aanpassen is mij op dit moment wat te hoog gegrepen. Mijn huidige projectje is het op kleine schaal herschrijven van de Yocto v1 firmware ter lering ende vermaak. :)
 
@jvq

Wat een held ben jij zeg, de resultaten zijn verbluffend (zie bijlage in deze post)..

opzettelijk een hele drukke pattern met snelle hihats en veel slagen tegelijk
 

Attachments

  • yocto_stock.mp3
    506,1 KB · Bekeken: 110
  • yocto_jvq.mp3
    404,1 KB · Bekeken: 108
Rvooh: nou, dank je :) (is er een bloos-smiley?)

Inderdaad verbazend dat dat hetzelfde pattern is op hetzelfde volume.

Ik moet zelf ook maar even wat testjes gaan doen. Ik heb hier een alternative mini-firmware die alleen maar de 'expander mode' doet. https://gitlab.com/jacobvosmaer/yocto-firmware/tree/midi-avrc De mode selector stelt het MIDI kanaal in, de noten zijn niet instelbaar. Verder doet deze firmware helemaal niks.

De mini-firmware is meer een experiment dan een serieus project, ik wilde zien hoe moeilijk het zou zijn om dat te schrijven zonder de hulp van Arduino libraries.

Maar nu ben ik ook wel benieuwd of het uitmaakt voor de timing e.d. Ik verwacht van niet maar wie weet...

https://gitlab.com/jacobvosmaer/yocto-firmware/-/jobs/31728551/artifacts/file/yocto.syx
 
Designer: zoals de originele Yocto firmware het oplost gaat het accent per noot aan of uit. Als de velocity 100 of hoger is, aan. In mijn experimentele mini-firmware doe ik hetzelfde.

Wbt voltages, volgens pagina 4 van de service manual varieren de common trig pulsen van 4-14V behalve by CB, CY, OH, CH waar het 7-14V is. Waar ze dat precies meten weet ik niet.
 
Mijn eerste indruk is dat de 'mini-firmware' minder strak is qua timing dan de 'jvq' variant van de officiële firmware. Leuk, dat is een uitdaging om de mini-firmware beter te krijgen.
 
Back
Top