Frequencer - Next generation hardware sequencer

Haha, bijna. Volgende week is mijn definitieve verhuizing. Dan nog het nieuwe lab inrichten en dan ga ik weer lekker aan de slag.
 
"Dat is dus 8 stuks op een 256kbit chip"

Deze snap ik even niet.
Ik mag toch aaanemen dat je met array-variable werkt?
En dat dus de code niet 8 maal hoeft te worden herhaald?

Verder vind ik het prachtig wat je poogt te realiseren.
 
Dat gaat puur over de storage voor de 'presets'. Ik had me hier in eerste instantie een beetje op verkeken. Het probleem is dat een preset, in dit geval, bestaat uit 16 triggers met per trigger X (ik heb nu gekozen voor 8.) gelayerde sequence patterns van 16 stappen, met per stap een nootwaarde en een secundaire waarde (instelbaar iets als velocity, gate length). Dat is alleen al 4KB, zonder verdere metadata. Door de boel een beetje handig te 'packen' kan ik dat verkleinen tot 4KB -inclusief- metadata. Een 256Kbit flash (32KB) heeft dus maar ruimte voor een bank van 8 presets/songs.

De flash hangt overigens niet aan de adresbus, ik moet de presets via I2C er uit trekken en terug in stoppen, dus ik zit sowieso al niet in het gebied waar ik een nette array presets[] kan hebben met een indexpointer voor het actieve programma.
 
Ah, op die fiets.
Als je dan toch via de I2C bus gaat, dan kan het ook via een flash memory card waar heel veel MB's in zitten?
Ja, dat kost dan wel weer een memorycard en een card-holder.
 
Dat is op termijn sowieso een goed idee. Ik denk dan wel als secundair geheugen, ik heb wat slechte ervaringen met het SD-card medium achter de rug.
 
Veel rompslomp rond mijn verhuizing. Ben inmiddels wel weer een beetje aan het werk met dit concept. Ik ben een ander merk displays tegengekomen die wat minder inspanning van de microcontroller vergen om beeld te laten zien. Daaromheen ben ik nu de GUI en de 'hoe het werkt' alsmede 'wat het kan' een beetje uit aan het werken. Hier wat beeldmateriaal:

Boot screen
QKKgfp5.png


Player mode
KbA6gqR.png


Main edit menu
4eXuMQr.png


Note sequence editor
Ikdhz6v.png


Drum sequence editor
HO4a46b.png


Ik heb de boel een klein beetje teruggedraaid tot 6 lagen, wat voor de meeste performances meer dan genoeg zou moeten zijn. Per trigger kan er binnen een laag besloten worden iets nieuws te doen (nieuwe sequence starten, of de bestaande transponeren), of door te gaan met wat er al speelde. Hierdoor kun je, bijvoorbeeld, een viertal triggers gebruiken puur voor het opbouwen van een drum ritme, onafhankelijk van de muzikale sequences die je start met de andere triggers.

Voor note sequence layers heb ik nog bedacht een variant waarbij je éen lange sequence tot 256 noten kan laten spelen, in plaats van een 16-staps sequence per trigger.
 
Ik ben inmiddels begonnen aan het redesignen van het moederbord naar surface mount technology. Met het omgooien van de display was ik toch aan een revisie toe, en CV/Gate genereren met een beetje een betaalbare DAC leverde me sowieso voornamelijk SOIC-goederen op, dus ik moest er toch aan geloven.

Voor het CV/Gate-probleem heb ik inmiddels een oplossing geplot rond een unipolaire DAC die 0.0V-5.0V maakt, aangevuld door rails-to-rails op-amps om het naar 0.0V-10.0V op te kunnen krikken. Als analoge hoofden nog tips hebben voor deze circuits hoor ik het graag. Ik heb nu nog een basic schakeling liggen met feedback op de inverting input op basis van 2 1KΩ weerstanden. Nadeel van die surface mount zooi is natuurlijk dat ik pas fatsoenlijk wat kan proberen als er een PCB gedrukt is, dus liever gelijk goed :)

Bijlage: op-amp circuit, 5CVA1 en 5CVB1 zijn twee 0-5V outputs van de DAC. CVA1 en CVB1 zijn de CV-outputs.
YiC3dTx.png
 
Die weerstanden op de output snap ik niet.
Moeten die niet van de '-' ingang naar GND?
Ja Marc, die moeten dat.
En waarom 1K? Dat is bij een output van 10V maar liefst 10mA down the drain.
 
D'oh! Bedankt, Marc. Alsnog de voorbeelden verkeerd-om zitten lezen. Duidelijk te laat gemaakt gisteravond. De keuze voor 1K is weinig rationeel, ook gebaseerd op wat ik anderen zie gebruiken in non-inverting voorbeelden. Googlend op verhalen hoe je de juiste weerstandswaardes kiest kom ik er ook niet helemaal uit, want ik weet uiteindelijk niet goed wat de wensen zijn qua impedantie, etc. Wat zou jij hier typisch kiezen?

Bijlage: 2e verbetering
I1qkAFU.png
 
Om het signaal 2x te versterken dienen beiden weerstanden de zelfde waarde te hebben.
De formule: Av=(R2/R1)+1. De uitgangsstroom door de weerstanden = V/(R2+R1) - 5 mA bij 10V (had ik fout me m'n 10mA).
Hoe groter de weerstanden, des te trager de feedback loop. Vandaar dat men in bepaalde gevallen kiest voor weerstanden met een lage waarde. 1K echter is voor jouw applicatie c.q. bandbreedte ver overdreven laag. Maak er twee keer 10K van. Dan is de feedback stroom 10x lager en het systeem nog steeds heel snel.

De reden van zo'n layoutfout is de prijs die je betaalt (en met jou vele anderen) omdat je werkt me een routingsschema meer dan een echt schema. Bij een echt schema zou je die fout nooit gemaakt hebben of het moet zo zijn dat je niet begrijpt wat je feitelijk aan het doen bent ;-)
 
De reden van zo'n layoutfout is de prijs die je betaalt (en met jou vele anderen) omdat je werkt me een routingsschema meer dan een echt schema. Bij een echt schema zou je die fout nooit gemaakt hebben of het moet zo zijn dat je niet begrijpt wat je feitelijk aan het doen bent ;-)

Is ook een beetje afhankelijk van de eagle library van het component dat ik pak. Soms krijg je aan de stroomschema-kant hem netjes uitgepakt met de juiste symbolen. Soms krijg je een vierkantje met pinnetjes. Dan is een vergissing inderdaad sneller gemaakt.
 
Hoe groter de weerstanden, des te trager de feedback loop.
Kun je misschien uitleggen hoe dat zit?
exel:
Waarom kies je voor rail to rail opamps?
Ze zijn rail to rail maar hebben een relatief hoge uitgangsimpedantie dat is minder geschikt, je wil dat de versterker zich als ideale spanningsbron gedraagt en een lage uitgangsimpedantie heeft. Is het niet makkelijker er een negatieve voedingsspanning bij te maken?
 
Twiki: Als ik negatieve voedingsspanningen wil betrekken moet ik voedingszaken binnen het apparaat gaan doen, oftewel direct van 220VAC, of vanaf een AC-voeding. Dat kost ruimte die ik eigenlijk niet heb, plus ik ben toegegeven incompetent op het gebied van voedingen ontwerpen. Met alleen een externe 12V-voeding kan ik met een gerust hart er van uitgaan dat mijn hardware mensen hun huizen niet in de fik steekt. Zou bipolair me echt veel meer opleveren als ik helemaal geen negatieve voltages wens? Zelfs een zuivere 0V is vermoedelijk niet eens erg als ik die net niet haal, zolang ik de rest van de scale maar wel goed kan calibreren (en deze niet enorm fluctueert op warmte / maanstand).
 
@Twiki:
In en uitgangen van chips hebben een bepaalde capaciteit (zoals van een condensator).
Dus de feedbackweerstand vormt een RC filter met de ingangscapaciteit van de '-' OpAmp.
Dat zorgt voor vertraging en daarmee ook faseverschuiving.

Bij audio en CV's zoals hier ter sprake, wordt de soep niet zo heet gegeten als ie opgediend wordt.
Als die weerstanden 100K gemaakt zouden worden dan nog zou dat kunen.

Een experiment zou je kunnen doen door die weerstanden 10 MegaOhm te maken en dan de CV van 2,5V naar 7,5V laten swingen met een frequentie van 30Hz. Scoopje op de uitgang en kijken hoe de pulsering zich gedraagd t.o.v. van 10K weerstanden. Hoe groot zal de 'overshoot' zijn (het doorslaan van de pulsen op de flanken) bij 10 Megaohm. Reken maar dat je dat gaat zien.
 
Laatst gewijzigd:
Volgens de data sheet heeft de TI LMC608x overigens een on-typisch lage output impedance.:

The LMC6082 incorporates a novel op-amp design topology that enables it to maintain rail to rail output swing even when driving a large load. Instead of relying on a push-pull unity gain output buffer stage, the output stage is taken directly from the internal integrator, which provides both low output impedance and large gain. Special feed-forward compensation design techniques are incorporated to maintain stability over a wider range of operating conditions than traditional micropower op-amps. These features make the LMC6082 both easier to design with, and provide higher speed than products typically found in this ultra-low power class.
 
Back
Top