(Technisch) Verschil DCO en VCO

Deze thread is toe aan een technische uitleg op elektronica niveau, voor mensen die het echt willen weten :) Veel leesplezier ;)

In de Roland Juno 6/60/106, JX-series (met MKS rackversies), Korg Poly61 en misschien nog wel vele anderen is voor Programmable Interval Timers gekozen (afgekort als PIT), namelijk het type Intel (of compatible) 8253 / 8254. Deze PIT's zijn het hart van de DCO's. Drie stuks per IC.

De Juno series met 1 DCO bevatten totaal 2 IC's, elke stem een PIT. De JX-series met 2 DCO's bevatten 4 IC's, elke stem 2 PITS.

Overigens is deze 8253 PIT afkomstig uit o.a. de IBM PC. Deze werd gebruikt als sofwaretimer en refresher van het DRAM.

Technisch gezien kun je zo'n PIT bekijken als een binary counter die geklokt wordt met een masteroscillator. Deze masteroscillator draait altijd op een vaste frequentie (in de JX-3P op 8 MHz). Bij deze PIT counter kun je vervolgens instellen bij welke binaire waarde de counter reset. Het is dus feitelijk een instelbare frequentiedeler.

Des te kleiner waarde, des te sneller de reset waarde wordt bereikt, en des te hoger de uitgangsfrequentie is.

De formule om de frequentie van een PIT uit te rekenen is:

Uitgangsfrequentie = Masterclock / Ingestelde binaire waarde

De firmware in de microcontroller stelt de counterwaarde in om een bepaalde uitgangsfrequentie te verkrijgen. De waarde wordt bepaald uit de digitale sofwarewaarden van KeyboardNote + Coarse Tune + Fine Tune + DCO Env mod + DCO LFO mod.

De 8253 is een 16-bits counter. Nu is het overigens wel zo dat het uitrekenen van een 16-bits deling niet zo gemakkelijk gaat op een i8051 CPU zoals deze in de Roland JX-3P te vinden is. Roland heeft slimme trucjes hiervoor uitgehaald zoals bepaalde delen van de formule van te voren uit te rekenen (LookUp-Tables o.a.). Met een standaard 16-bits deling krijg je het bijna niet voor elkaar een 6 stemmige polysynth snel genoeg te krijgen op een i8051 van 12 MHz.

Terug naar de PIT:

Een wiskundig iemand ziet misschien al een probleem in de berekeningsformule: hoge frequenties zijn absoluut niet nauwkeurig. Een delingswaarde van 1 geeft een uitgangsfrequentie van 8 Mhz, een delingswaarde van 2 een uitgangsfrequentie van 4 Mhz enzovoorts. Een stap van 4 MHz groot! Hieruit volgt dat de meest precieze frequenties de lage freqenties zijn: een deler waarde van 65536 (maximum van 16 bit) geeft een heel klein verschil met de waarde 65535.

Het resultaat wat hier uit rolt is dat ergens onderin het countergebied de bruikbare deelfrequenties liggen voor het gebruik in hoorbare tonen voor muziek. Het maximum bruikbare gebied ligt ongeveer op een bereik van 6 of 7 octaven.

Bij bijvoorbeeld de JX-3P zie je een toetsenbord van maar 5 octaven. Waar zijn de andere 2 octaven gebleven? .. die zijn niet aan te sturen via noten! Deze octaven zijn namelijk benodigd om ook nog eens ENV en LFO modulatie toe te passen. Uiteindelijk kun je dan de hoogste frequentie bereiken met de waarde: KeyboardNote + Coarse Tune + Fine Tune + DCO Env mod + DCO LFO mod..

Hier zie je ook gelijk het limiet in frequentie van de DCO. Dat de ENV + LFO modulatie en de note transpose op een DCO synth niet erg hoog gaan is geen pesterij van Roland, dat is nu eenmaal de limiet van een 16-bits PIT!

Maar... daarvoor wel een handige manier: om toch een breed gebied van octaven te krijgen delen ze de masteroscillator eerst door een paar waarden voordat deze de PIT bereikt. In de JX-3P delen ze de masteroscillator door :2, :4 of :8 zodat de PIT een frequentie van 4 MHz, 2 Mhz of 1 Mhz krijgt. De instelling voor deze deler (een 74xx161 presetable counter) is wellicht bekender onder de naam DCO Range.

Een PIT heeft als uitgang een alleen maar blokgolf. Andere waveforms worden verkregen door deze blokgolf te shapen. Nu is de conversie van een blokgolf naar een zaagtand niet erg gemakkelijk (voor andersom is slechts een comperator benodigd).

In de DCO synths gebruiken ze een integrator opgebouwd uit een opamp met condensator. De DCO levert een blokgolf die de integrator steeds 'reset'. De snelheid van de integrator en dus de stijlheid van de zaagtand wordt geregeld met een toegevoerde analoge spanning. Deze spanning is afkomstig van een DAC (of gesimuleerd met een weerstandsnetwerk).

Hier doen zich ook weer problemen voor: bij de laagste frequenties moeten ook zeer kleine spanningen worden aangeleverd. Hier komen afwijkingen bij kijken van o.a. de nauwkeurigheid van de DAC (in LSB's gegeven).

Conclusie: een PIT (blokgolf genereren) is onnauwkeurig in de hoogste frequenties en een integrator (zaagtand omzetting) is onnauwkeurig in de lage frequenties.

Bovendien is de spanning naar de integrator ook afhankelijk van de bekende KeyboardNote + Coarse Tune + Fine Tune + DCO Env mod + DCO LFO mod. Theoretisch is deze spanning gelijk aan 1 / Uitgangsfrequentie. Maar zo'n berekening doe je weer echt niet zo makkelijk op een i8051.

We mogen de firmware coders van die tijd dankbaar zijn voor hun zweet en tranen ;)

Nog even het fabeltje uit de wereld helpen dat DCO's altijd alleen maar superstabiel zijn en dat de Juno in UNISON-mode zo gaar klinkt omdat het DCO's zijn. Allebei ONWAAR!

1. DCO's zijn inderdaad superstabiel doordat ze gebruik maken van een masteroscillator. Frequenties worden opgewekt door delingen waarbij de verhoudingen altijd kloppen. Daarintegen hebben VCO's een verloop in frequentie over de octaven heen omdat de exponentiele converter afwijkt door o.a. temperatuur. De exponentiele converter is bij een DCO geregeld door de firmware en is altijd vast.

Nu is het wel zo dat als de de masteroscillator niet stabiel is, je nogsteeds een frequentieafwijking krijgt. Maar omdat alle verhoudingen hetzelfde zijn heb je hier minder last van. De frequentie van de masteroscillator is bij de JX-3P in te stellen met een potmeter aan de achterkant. Hiermee kun je het instrument ook "stemmen". Dit is ook de reden waarom ze in de JX-3P hebben gekozen voor een analoog circuit van de masteroscillator i.p.v. een kristal met een vaste frequentie.

Overigens kan natuurlijk in de firmware gesimuleerd worden dat bepaalde stemmen een random frequentieslingering krijgen, waardoor je een soort "Analog feel" krijgt. Jammergenoeg hebben ze dit niet ingebakken in de firmware van de Juno en JX-series.

2. Ja, Unison klinkt idd niet mooi op een Juno. Dit komt omdat alle DCO's dezelfde frequentie krijgen en de uitgang meer een optelsom is van alle DCO's bij elkaar. Hadden ze bij Roland even de moeite genomen om bij elke stem een random waarde op te tellen, dan had Unison veel beter geklonken. Jammer...

Dus als men ooit nog eens de vraag krijgt wat een DCO precies is... (zoals deze in de Roland JUNO, JX en nog meer synths rond die tijd is gebruikt): Het is geen digitaal geprogrammeerde VCO, het is geen D/A converter en het is ook geen wavetable... het is een frequentiedeler! ... :mega:

(oja... en hoe ik dit weet: ik heb me 2 jaar bezig gehouden met het compleet reverse-engineren van de Roland JX-3P. Doel: midi uitbreiding :) )
 
Laatst gewijzigd:
Vergeet niet dat je uit die 8253 timer alleen nog maar een blokgolf hebt. Deze blokgolf wordt aan een (analoge) integrator gevoerd (combinatie van een opampje, condensator, transistor en wat weerstandjes), en zo ontstaat een zaagtand.
Hieronder een nogal onduidelijk stukje uit het schema van de JX-3p. De blokken bovenin zijn de timers waaruit de blokgolven komen, daaronder de analoge circuits voor de oa. zaagtand.

De SYNC is overigens gewoon een 'vroegtijdige reset' van de counter op het signaal van de andere oscillator :)

edit: oh zie dat mijn voorganger wel is ingegaan op de integrator.. excuus :koffie:
 

Attachments

  • jx3p.jpg
    jx3p.jpg
    73,8 KB · Bekeken: 94
Origineel geplaatst door etaoin
Een DCO is een kristal-gestuurde oscillator met een variable deler die een rotsvaste frequentie uitspuugt. Uit de bron komt dus een 50/50 blokgolf van exact de juiste frequentie. Daar zit dan nog een analoog stuk achter om daar zaagtanden en sinussen uit te fabriceren.


Kijk, is die vraag ook beantwoord!

De werking is erg mooi te zien in bijvoorbeeld de schema's van de Farfisa Soundmaker. Daar is de DCO helemaal uit losse logische chips opgebouwd. Dit in tegenstelling tot bijvoorbeeld de Juno-2, waar zes DCO's in 1 chip gepropt zijn.

Nu vraag ik me af hoe het dan weer bij mijn Poly61 zit. Duidelijk kun je de 6 gescheiden filtersecties zien, maar ik heb geen flauw idee wat de DCO's zijn. (Ik heb het hier over de printplaten, niet over de schema's

En verder bedankt voor alle reacties! Mijn vraag is beantwoord! :okdan:

EDIT: Ow! Ik had de tweede pagina over het hoofd gezien en dus ook de uitleg van Organix! Dus de Poly61 vraag is ook beantwoord, en de hele kwestie is nog duidelijker geworden! Ik ben trots op mezelf dat ik zo'n goede vraag gesteld heb :mega:
 
Origineel geplaatst door organix
Overigens is deze 8253 PIT afkomstig uit o.a. de IBM PC. Deze werd gebruikt als sofwaretimer en refresher van het DRAM.

Ohhh, hou op! Ik krijg nog steeds hoofdpijn als ik die cijfers 8253 voorbij zie flitsen. Ik heb ooit voor een project op school de hele werking van die timer uit moeten zoeken. Ik kreeg dan ook als bijnaam Martimer. ;)
 
Nu vraag ik me af hoe het dan weer bij mijn Poly61 zit. Duidelijk kun je de 6 gescheiden filtersecties zien, maar ik heb geen flauw idee wat de DCO's zijn. (Ik heb het hier over de printplaten, niet over de schema's

Mocht je ze nog niet gevonden hebben, hier twee fotos :)

poly61_1.JPG

poly61_2.JPG


Ohhh, hou op! Ik krijg nog steeds hoofdpijn als ik die cijfers 8253 voorbij zie flitsen. Ik heb ooit voor een project op school de hele werking van die timer uit moeten zoeken. Ik kreeg dan ook als bijnaam Martimer.

Hehe... cool project ;) In synths gebruiken ze slechts 1 van de 5 modes van de 8253, dat scheelt alweer een paar pagina's datasheet ;)
 
Temperature drift VCO's

Temperature drift VCO's

Hier een woordje uitleg waarom VCO's een streepje voor hebben op DCO's :

VCO's worden gestuurd door control voltages (CV's). Als je een toets indrukt op je toetsenbord wordt er een bijhorende CV uitgestuurd naar de VCO naargelang de toonhoogte.
Nemen we als voorbeeld nu de CEM 3340 chip (VCO in IC-vorm). De input van de chip is geschaald op 1 Volt per octaaf. Dit wil zeggen dat een CV verandering van 1 Volt resulteert in een toonhoogteverandering van 1 octaaf. (Het 1 Volt per octaaf principe is een uitvinding van onze goeie ouwe Dr. Moog). Dus een CV verandering van 1/12 V resulteert in een verandering van een halve toon. Bij een keyboard met 5 octaven komt dit overeen met een CV bereik van 0 - 5V.
Een breed frekwentiebereik van 20 Hz tot 20.000 Hz wordt in een analoge synthesizer vertegenwoordigd door een smal CV bereik van bijvoorbeeld 0 - 9 Volt.
Dit heeft als gevolg dat de kleinste CV verandering, zoals bijvoorbeeld veroorzaakt door kleine temperatuurs- of voedings variaties, resulteren in een hoorbare verandering van toonhoogte.
Dit wordt ook wel 'oscillator drift' genoemd. Het klassieke voorbeeld is een koude synthesizer die ingeschakeld wordt, en langzaam opwarmt. Dit veroorzaakt oscillator drift.
In analoge synthesizers met VCO's zijn er dan ook van allerlei hulpmiddelen en schakelingen uitgedokterd om de tuning toch stabiel te houden.
De CEM chips zijn intern voorzien van hun eigen temperatuur compensaties.

Een doorbraak in het stabiliseren van VCO's werd bereikt door Jim Hemsath, een van Moog's engineers die grotendeels verantwoordelijk was voor het tot stand komen van de Minimoog.
Hij werkte voor het eerst met 'Matched pair transistors'. Twee transistors met dezelfde temperatuur respons die mekaars temperatuur drift opheffen.

Bij een Prophet 5 moet je de eerste 10 minuten regelmatig de tune button eens indrukken, maar eens het toestel opgewarmd is blijft de tuning vrij stabiel.
Net als bij een gitaar, die moet je de eerste 10 minuten stemmen tot het instrument warm is, en daarna blijft het ook stabiel.
De lichte zwevingen blijven, maar dàt is nu net wat de VCO's zo mooi en warm maakt.

Interessante link : Technische fiche van een CEM 3340
http://users.telenet.be/prophet-5/Prophet_5_Documents/Datasheet Curtis CEM3340.pdf
 
Origineel geplaatst door organix
Veel leesplezier ;)


Ik heb me altijd al afgevraagd waarom mijn Juno zo anders klinkt in verglijking met mijn andere analoogjes, bedankt voor de info Organix!!
 
@ Organix,

Beetje offtopic, maar:

Ik heb hier 2 gebrekkige Poly61's staan waar ik 1 van aan het maken ben. Maar de rechterprintplaat (die waar de filtersecties op zitten) zien er bij beide heel anders uit. Namelijk een groen bord zonder die grijze kabeltjes die jij er overheen hebt lopen.

Ik kan er vanmiddag even een foto van maken en posten.

Edit:

En dat printje op de achterkant is me ook niet bekend. Die rechtsboven op de onderste foto.
 
Re: Temperature drift VCO's

Re: Temperature drift VCO's

Origineel geplaatst door Lt_picard
Hier een woordje uitleg waarom VCO's een streepje voor hebben op DCO's :

De input van de chip is geschaald op 1 Volt per octaaf. Dit wil zeggen dat een CV verandering van 1 Volt resulteert in een toonhoogteverandering van 1 octaaf. (Het 1 Volt per octaaf principe is een uitvinding van onze goeie ouwe Dr. Moog). Dus een CV verandering van 1/12 V resulteert in een verandering van een halve toon.

maar als je alles door 12 deelt kom je net niet op de juiste intervallen die we allen al kennen.....dan is de stemming exact en dat vinden we niet musicaal.

(gelijkzwevende stemming dus)
 
Re: Temperature drift VCO's

Re: Temperature drift VCO's

Origineel geplaatst door Lt_picard
Dit wordt ook wel 'oscillator drift' genoemd. Het klassieke voorbeeld is een koude synthesizer die ingeschakeld wordt, en langzaam opwarmt. Dit veroorzaakt oscillator drift.
In analoge synthesizers met VCO's zijn er dan ook van allerlei hulpmiddelen en schakelingen uitgedokterd om de tuning toch stabiel te houden.
Drift door temperatuursverandering is niet relevant voor de klank, omdat de temperatuur van de elektronica en de omgevingstemperatuur niet snel veranderen. Hierdoor verandert de toonhoogte ook heel snel. Het is meer vervelend dat je oscillator steeds ontstemt. Ik denk dat kleine veranderingen in frequentie die veroorzaakt worden door schommelingen in de voeding en ruis de klank beinvloeden en dat de klank er organischer van wordt, niet iedere periode duurt even lang maar gemiddeld gezien is de frequentie constant.
Origineel geplaatst door Lt_picard
Een doorbraak in het stabiliseren van VCO's werd bereikt door Jim Hemsath, een van Moog's engineers die grotendeels verantwoordelijk was voor het tot stand komen van de Minimoog.
Hij werkte voor het eerst met 'Matched pair transistors'. Twee transistors met dezelfde temperatuur respons die mekaars temperatuur drift opheffen.
[/B]
Alle transistoren hebben dezelfde temperatuurscoefficient, dat komt de eigenschappen van het materiaal waar ze van gemaakt zijn, ook het matchen van transistoren doet niet terzake voor de temperatuurstabliteit. Het gaat erom dat de transistoren thermisch gekoppeld zijn, dat kan ook door 2 transistoren tegen elkaar te plakken zonder dat ze gematched zijn. Het matchen heeft een andere reden. Nu we toch aan het mieren zijn het is Bill Memsath en Jim Scott.
 
Ik heb hier 2 gebrekkige Poly61's staan waar ik 1 van aan het maken ben. Maar de rechterprintplaat (die waar de filtersecties op zitten) zien er bij beide heel anders uit. Namelijk een groen bord zonder die grijze kabeltjes die jij er overheen hebt lopen.

Dat zou best welleens kunnen. Er bestaan volgens mij twee verschillende versies van de Poly61. De servicemanual heeft het ook over verschillende versies PCB's en schema's. Ik kan welleens kijken voor je in de servicemanual waar de verschillen liggen.

maar als je alles door 12 deelt kom je net niet op de juiste intervallen die we allen al kennen.....dan is de stemming exact en dat vinden we niet musicaal.

De CV input op synths is dan ook op lineaire schaal. De exponentiele converter zet dit daarna om.

De CV 1 Volt/octaaf ingang werkt inderdaad met stappen van 1 / 12 Volt.

Hier horen de volgende formules bij:

Ingang: x / 12 Volt

Exponentiele converter zet dit om naar: Freq = 2^(x / 12) * Y Hz, waarbij Y dan de frequentie is van de relatief gekozen toon, bijvoorbeeld 440 Hz.

Vul je voor x een positief getal in , dan krijg je hogere frequenties dan Y. Vul je voor x een negatief getal in, dan krijg je frequenties die lager zijn dan Y.

Hiermee kun je alle nootfrequenties maken. Zie ook:

MIDI Note Number to Frequency Conversion Chart

Bovenstaande formule geldt voor de ideale exponentiele converter. De schaal kun je vaak instellen met een potmeter "Scale". Wanneer deze niet klopt (temperatuur- of voedingsschommelingen) en je dus afwijkingen krijgt in de zin van: Freq = 2^(x / 1x.xxx) * Y Hz (vul op x een willekeurig getal in) dan wordt de octaafschaal op den duur hoorbaar vals.
 
Laatst gewijzigd:
DCO

DCO

Interessant om allemaal te lezen !
Maar ik heb nog wel een vraagje. Het is me duidelijk dat je door digitale pulsen te integreren een zaagtand kunt maken.
Een zaagtand zou je kunnen maken door optellen en aftrekken en een (PWM) blokgolf kan door met een digitale counter op de juiste frequentie een puls te maken.
Maar als je nou een sinus wilt maken ? Het lijkt me dat je daar toch wel een wavetable voor nodig hebt. Het zou natuurlijk wel kunnen door middel van een zaagtand die door een sine shaping network gestuurd wordt, maar de sinussen die daar uit komen zijn vaak niet van de hoogste kwaliteit...

Heiko
 
Re: DCO

Re: DCO

Origineel geplaatst door heiko
Interessant om allemaal te lezen !
Maar ik heb nog wel een vraagje. Het is me duidelijk dat je door digitale pulsen te integreren een zaagtand kunt maken.
Een zaagtand zou je kunnen maken door optellen en aftrekken en een (PWM) blokgolf kan door met een digitale counter op de juiste frequentie een puls te maken.
Maar als je nou een sinus wilt maken ? Het lijkt me dat je daar toch wel een wavetable voor nodig hebt. Het zou natuurlijk wel kunnen door middel van een zaagtand die door een sine shaping network gestuurd wordt, maar de sinussen die daar uit komen zijn vaak niet van de hoogste kwaliteit...

Heiko

Vandaar dat je sinussen niet meer tegenkomt op DCO synths. Zeker niet als je ze kunt maken met een zelfoscillerend filter zijn ze ook niet zo nodig.
 
:halleluja :halleluja :halleluja :halleluja

bedankt voor het antwoord en de link(dat helpt me weer met synthedit e.d. dat soort hardware expertise)
 
Re: Re: DCO

Re: Re: DCO

Origineel geplaatst door bikkel
Vandaar dat je sinussen niet meer tegenkomt op DCO synths. Zeker niet als je ze kunt maken met een zelfoscillerend filter zijn ze ook niet zo nodig.

Sowieso is een sinus op de gemiddelde subtractieve synth niet heel interessant want hoe perfecter de sinus hoe minder er aan te filteren valt; hij doet bliep op de grondtoon en als je het filter dicht draait doet het nog steeds bliep op de grondtoon. Alleen in een patchbare synth (voor modulatie) of eentje met genoeg oscillators (zodat je additief kunt werken) kun je er interessantere dingen mee doen.
 
Maar ik heb nog wel een vraagje. Het is me duidelijk dat je door digitale pulsen te integreren een zaagtand kunt maken.
Een zaagtand zou je kunnen maken door optellen en aftrekken en een (PWM) blokgolf kan door met een digitale counter op de juiste frequentie een puls te maken.

Dat laatste kan... maar daar is ook een ander truukje voor. In de Roland MKS-7 wordt de PIT blokgolf met een integrator omgezet in een zaagtand golfvorm. Daarna gaat de zaagtand golfvorm een comperator in waarmee met behulp van een threshold waarde (ook wel bekend als Pulse Width ) de uitgangswaarde "omklapt" wanneer de zaagtand waarde gelijk of hoger is dan de threshold waarde. Hiermee zet je op een eenvoudige manier een zaagtand om naar een blokgolf.

Maar als je nou een sinus wilt maken ? Het lijkt me dat je daar toch wel een wavetable voor nodig hebt. Het zou natuurlijk wel kunnen door middel van een zaagtand die door een sine shaping network gestuurd wordt, maar de sinussen die daar uit komen zijn vaak niet van de hoogste kwaliteit...

Een (semi-)sinus kun je shapen uit een driehoek (triangle) golfvorm. Hierbij wordt gebruik gemaakt van het niet-lineaire gedrag van diodes. Twee diodes maken de hoeken van de trangle rond, waardoor er een sinus golf ontstaat. Kijk maar eens naar de schema's van de Formant synthesizer hoe ze dit oplossen.

Een driehoeks golfvorm kun je weer verkrijgen uit een zaagtand: Eerst wordt het dc-offset van de zaagtand veranderd zodat de golf bi-polair wordt. Vervolgens wordt de onder of bovenkant gespiegeld waardoor je een driehoeks golf krijgt die boven of onder de nullijn zit. Vervolgens tel je de juiste DC offset er bij op en vermenigvuldig je de golf met 2. Uiteindelijk heb je dan een driehoeksgolf met dezelfde frequentie en amplitude als de zaagtand.

Theoretisch is het dus mogelijk om op DCO synths zoals de Juno, JX en Poly-61 driehoeks- en sinusgolfvormen te genereren met een PIT. Deze schakelingen hebben ze er echter niet ingestopt.
 
Re: Re: Re: DCO

Re: Re: Re: DCO

Origineel geplaatst door etaoin
Sowieso is een sinus op de gemiddelde subtractieve synth niet heel interessant want hoe perfecter de sinus hoe minder er aan te filteren valt; hij doet bliep op de grondtoon en als je het filter dicht draait doet het nog steeds bliep op de grondtoon. Alleen in een patchbare synth (voor modulatie) of eentje met genoeg oscillators (zodat je additief kunt werken) kun je er interessantere dingen mee doen.

Daarentegen zijn sinussen bij FM juist weer de meeste interessante golven welke het bruikbaarste resultaat opleveren.
 
Re: Re: Re: Re: DCO

Re: Re: Re: Re: DCO

Origineel geplaatst door dennisb
Daarentegen zijn sinussen bij FM juist weer de meeste interessante golven welke het bruikbaarste resultaat opleveren.

Yep, daarom zei ik: voor modulatie wel.
 
Re: Re: Re: Re: Re: DCO

Re: Re: Re: Re: Re: DCO

Origineel geplaatst door etaoin
Yep, daarom zei ik: voor modulatie wel.

excuse moi , ik had idd je stukkie niet helemaal uitgelezen :engel:
 
Back
Top