Hoe je pulsbreedtemodulatie maakt door zaagtandgolven met tegengestelde polariteit te combineren
Om pulsbreedtemodulatie (PWM) te maken, meng je twee identieke zaagtandgolven op gelijke niveaus, keer je de polariteit van één golf om en varieer je hun onderlinge fase. Hun tegengestelde hellingen heffen elkaar op tussen de resets, waardoor een pulsgolf overblijft waarvan de breedte wordt bepaald door de afstand tussen die resets. New Systems Instruments beschrijft deze techniek expliciet voor zijn fasegestuurde zaagtandoscillator. Triphase Oscillator
Deze gids is bedoeld voor synthesizergebruikers die dit geluid willen opbouwen met oscillator- en mengfuncties. Begin met een vaste puls, controleer of de opheffing werkt en voeg daarna beweging toe. De praktische keuze is of je de fase rechtstreeks wilt regelen of twee frequenties die net iets van elkaar verschillen de fase continu wilt laten verschuiven.
Wat moet overeenkomen om met twee zaagtandgolven een puls te maken?
Je hebt twee zaagtandsignalen nodig met dezelfde basisvorm, gelijke amplitudes, tegengestelde polariteiten en een instelbare onderlinge fase. Voor een exacte statische puls moeten ze ook dezelfde frequentie hebben. Het ene signaal stijgt tussen de resets terwijl het andere daalt; bij optelling heffen hun hellingen elkaar op.
Een bruikbare opstelling bestaat uit een zaagtandbron met afzonderlijk instelbare fase-uitgangen, een mixer waarmee je het ene signaal van het andere kunt aftrekken en een laagfrequente oscillator (LFO) voor modulatie. Je kunt ook twee oscillatorbronnen en een afzonderlijke polariteitsomkeerder gebruiken. De Triphase Oscillator is een gedocumenteerde hardware-implementatie: hij levert zaagtanduitgangen met dezelfde toonhoogte en onafhankelijke fase-instellingen, plus een bipolaire mixer. Triphase Oscillator
Polariteitsomkering en faseverschuiving zijn afzonderlijke bewerkingen. Omkering vermenigvuldigt elk sample of elke spanning met −1. Een faseverschuiving verplaatst de golfvorm binnen zijn cyclus. Een verschuiving van een halve cyclus keert de helling van een zaagtand op zichzelf niet om. Uit Puckettes analyse van golfvormen blijkt dat het aftrekken van zaagtanden die een halve cyclus uit fase zijn een blokgolf oplevert, terwijl optellen een zaagtand op tweemaal de frequentie oplevert. Zaagtandgolven en symmetrie
Een beginfase-instelling op een synth is dus alleen bruikbaar als die de gewenste verhouding instelt. Voor continue PWM heb je een parameter nodig die de onderlinge fase verandert terwijl de noot klinkt, of een frequentieverschil waardoor die fase verschuift.
Waarom verandert de pulsbreedte als je zaagtandgolven van elkaar aftrekt?
Stel je twee identieke stijgende zaagtandgolven voor die een deel van een cyclus uit elkaar liggen. Trek de ene van de andere af. Tussen de resets stijgen ze even snel, waardoor hun verschil constant blijft. Wanneer een van beide reset, springt het verschil naar een ander niveau. De afstand tussen de twee resets bepaalt hoelang de uitgang op elk niveau blijft. Dit is de methode met vertraagde zaagtandgolven die wordt beschreven in de synthesenotitie van Steffan Diedrichsen. Pulsbreedtemodulatie
Hier volgt een expliciete wiskundige conventie om het resultaat te voorspellen. Laat p de huidige fase zijn, van 0 tot maar exclusief 1. Definieer een genormaliseerde stijgende zaagtand als r(p) = 2 × frac(p) − 1, waarbij frac het argument binnen dat interval laat teruglopen. Maak voor een gewenste positieve pulsduur D, tussen 0 en 1, de constructie y = r(p − D) − r(p).
Volgens deze conventie is de uitgang 2(1 − D) gedurende het eerste deel D van de cyclus en −2D gedurende de rest. Het positieve deel duurt dus precies D van elke cyclus. De waarden hieronder zijn een illustratieve berekening voor ideale zaagtandgolven die lopen van −1 tot +1, geen metingen van een specifiek instrument.
| Positieve pulsduur | Relatieve vertraging | Hoog niveau | Laag niveau |
|---|---|---|---|
| 25% | Een kwart cyclus, of 90° | +1.5 | −0.5 |
| 50% | Een halve cyclus, of 180° | +1.0 | −1.0 |
| 75% | Driekwart cyclus, of 270° | +0.5 | −1.5 |
De ongelijke positieve en negatieve niveaus bij 25% en 75% zijn te verwachten: in deze constructie heeft elke golfvorm een gemiddelde van nul. Ik heb deze drie gevallen numeriek gecontroleerd met 1.000 gelijkmatig verdeelde fasen. Als je de aftrek omkeert, keert de polariteit van de uitgang om; de weergegeven faserichting van een apparaat kan dus de complementaire positieve pulsduur opleveren.
Bij een relatieve faseverschuiving van nul heffen de identieke golven met tegengestelde polariteit elkaar volledig op. Dit uiterste punt is nuttig voor kalibratie, maar levert geen aanhoudende pulstoon op.
Hoe stel je een stabiele puls in voordat je modulatie toevoegt?
Volg deze procedure als je instrument zaagtanduitgangen met dezelfde frequentie en een instelbare onderlinge fase biedt. De handleiding van New Systems Instruments beschrijft dezelfde basisroutering: één positieve bijdrage aan de mixer, één negatieve bijdrage en faseaanpassing om de pulsbreedte in te stellen. Triphase Oscillator — gebruikershandleiding, revisie 1.01
- Kies twee overeenkomende zaagtandsignalen. Gebruik een gedeelde oscillatorbasis of een software-oscillatorstructuur die hun frequentieverhouding behoudt.
- Schakel modulatie tijdelijk uit. Schakel faserandomisatie en extra stemmen uit, zodat je één paar golfvormen kunt beoordelen.
- Leid beide signalen naar een sommatiemixer. Houd hun signaalpaden lineair terwijl je de opheffing instelt.
- Keer één bijdrage om. Gebruik een negatieve mixer-gain of een speciale omkeerder. Houd de andere bijdrage positief.
- Stem hun amplitudes af bij een faseverschuiving van nul. Pas de niveaus aan totdat de opgetelde uitgang bijna stil is.
- Verplaats de onderlinge fase met een halve cyclus. Het ideale resultaat is een blokgolf met even lange hoge en lage delen.
- Verplaats de fase naar een afstand van ongeveer een kwart cyclus. Controleer of het ene deel korter wordt en het andere langer.
Bekijk de som indien mogelijk op een oscilloscoop. Zoek bij een vaste faseverschuiving naar twee ongeveer horizontale delen met overgangen ertussen. Zo kun je het resultaat concreet controleren voordat je het geluid via filters of effecten beoordeelt.
Gelijke knopstanden betekenen niet noodzakelijk gelijke signaalamplitudes. Met de opheffingstest bij een faseverschuiving van nul controleer je de volledige signaalpaden, inclusief oscillatoruitgangsniveaus en mixergains. Zodra die test slaagt, laat je de gains vaststaan en stel je de pulsbreedte in met de fase.
Hoe maak je van een vaste puls een gecontroleerde PWM?
Stuur de LFO naar de regeling van de onderlinge fase. Stel als illustratief uitgangspunt de middenwaarde in op een halve cyclus en gebruik een lage modulatiesnelheid, bijvoorbeeld 0,3 Hz. Verhoog de diepte geleidelijk totdat de puls afwisselend breed en smal wordt, zonder volledige opheffing te bereiken. Dit zijn uitgangsinstellingen om op het gehoor aan te passen, geen productspecificaties.
Voor een bepaald modulatiebereik kun je de eerdere conventie schrijven als D(t) = 0.5 + 0.2 × sin(2π × 0.3 × t), met de tijd t in seconden. Hiermee loopt de positieve pulsduur van 30% tot 70%, met één modulatiecyclus in ongeveer 3,33 seconden. Zet dat bereik om naar de fase-eenheden van je instrument; ga er niet van uit dat elke fase-ingang dezelfde spanningsschaal gebruikt.
Als je alleen de fase van één zaagtand verplaatst, verschuift ook de ene pulsflank ten opzichte van de andere. Probeer beide fasen evenveel, maar in tegengestelde richting te verplaatsen als dat meer toonhoogtebeweging oplevert dan je wilt. De handleiding van de Triphase raadt specifiek aan hetzelfde controlesignaal naar beide fase-ingangen te sturen, met tegengestelde instellingen van de attenuverter, om de toonhoogte van de grondtoon minder te veranderen. Triphase Oscillator — gebruikershandleiding
Stel het pulsbreedtebereik in voordat je verdere klankvorming toevoegt. Zo kun je makkelijker bepalen of een wegstervende toon ontstaat door naderende opheffing of door een latere stap in de patch.
Kunnen licht ontstemde oscillatoren dezelfde beweging opleveren?
Ja. Twee zaagtandgolven met tegengestelde polariteit en iets verschillende frequenties veranderen voortdurend van onderlinge fase. Puckettes PWM-voorbeeld gebruikt precies deze aanpak. Dit is handig wanneer een synth oscillatorafstemming en polariteitsomkering biedt, maar geen continue faseregeling. Zaagtandgolven combineren
De faseverhouding schuift één volledige cyclus op voor elke cyclus van het frequentieverschil. Twee illustratieve frequenties van 100 Hz en 100,2 Hz verschillen bijvoorbeeld 0,2 Hz, waardoor hun onderlinge fase zich elke 1 ÷ 0.2 = 5 seconden herhaalt. Een vast frequentieverschil levert dus een voorspelbare zwaaiperiode op.
Er is een klein wiskundig verschil met de constructie met gelijke frequenties. Bij genormaliseerde zaagtandgolven zijn de hellingen evenredig met de frequentie. Als je zaagtandgolven met verschillende frequenties van elkaar aftrekt, blijft er tussen de overgangen een resthelling over; het resultaat benadert een puls met vlakke toppen naarmate het verschil kleiner wordt. Dit volgt rechtstreeks uit de afgeleide van de rampdelen van de zaagtandformule.
Ontstemming laat de onderlinge fase ook de hele cyclus doorlopen, inclusief de momenten waarop de golven elkaar bijna opheffen. Met directe fasemodulatie kun je een middelpunt kiezen en de uitslag begrenzen. Kies ontstemming voor een continu roterende faseverhouding; kies faseregeling wanneer je een herhaalbaar pulsbreedtebereik nodig hebt.
Wat als je oscillator geen instelbare fase-uitgang heeft?
Controleer of je systeem vanuit een bestaande zaagtand een verschoven versie kan afleiden. Doepfer beschrijft een algebraïsche methode: vergelijk de binnenkomende zaagtand met een stuurspanning en tel het resulterende rechthoekige signaal vervolgens op het juiste niveau erbij op om een verschoven zaagtand te verkrijgen. De stuurspanning bepaalt de effectieve verschuiving. A-137-2 Wave Multiplier II
Als een geschikte processor die verschoven zaagtand afzonderlijk beschikbaar maakt, kun je die volgens de bovenstaande methode combineren met een versie van het oorspronkelijke signaal waarvan de polariteit is omgekeerd. Controleer eerst welke uitgangen beschikbaar zijn. De beschrijving van Doepfers A-137-2 maakt onderscheid tussen de opgetelde uitgang en afzonderlijke signalen die intern beschikbaar zijn; ga er niet van uit dat de som op het voorpaneel ook een afzonderlijk beschikbare verschoven zaagtand oplevert. A-137-2 Wave Multiplier II
Zo kun je praktisch kiezen: gebruik onafhankelijke fase-uitgangen als die beschikbaar zijn, ontstem twee oscillatoren als een volledige zwaai aanvaardbaar is, of gebruik een gedocumenteerde processor voor zaagtandverschuiving met afzonderlijk toegankelijke signalen. De vereiste functie is een instelbare verhouding tussen overeenkomende rampen.
Hoe spoor je een onverwacht resultaat op?
Werk terug vanaf de eenvoudigste statische patch. De volgende controles volgen uit het opheffingsmodel en helpen routeringsfouten te onderscheiden van opzettelijke modulatie.
| Wat je waarneemt | Wat je moet controleren | Volgende stap |
|---|---|---|
| Er blijft een sterke zaagtand over bij een faseverschuiving van nul | Polariteit en amplitudes | Controleer of één bijdrage negatief is en stel daarna de niveaus bij totdat de signalen elkaar opheffen |
| Hellende delen bij een vaste pulsbreedte | Frequentie, gain en golfvorm | Verwijder de ontstemming en vergelijk de twee bronsignalen |
| De pulsbreedte verandert alleen wanneer de noot begint | Beginfasegedrag | Zoek naar continue fasemodulatie of gebruik lichte ontstemming |
| Het geluid verdwijnt bijna periodiek | De modulatie bereikt uitgelijnde fasen | Verklein de diepte of verplaats het fasecentrum |
| De toonhoogte lijkt hoger te worden wanneer je de tweede zaagtand toevoegt | Beide mixerbijdragen kunnen dezelfde polariteit hebben | Controleer de omkering opnieuw voordat je de fase aanpast |
Let bij digitale implementaties ook op het verschil tussen golfvormconstructie en de kwaliteit van de audioweergave. Een rechtstreeks gegenereerde zaagtand bevat discontinuïteiten. SciPy vermeldt uitdrukkelijk dat zijn functie sawtooth niet bandbegrensd is en dat de harmonischen ervan aliasen; twee van zulke rampen samplen en van elkaar aftrekken levert geen antialiasingmethode op. SciPy-documentatie over zaagtanden
Gebruik voor een software-implementatie met audiosnelheid een geschikte bandbegrensde oscillatormethode of een structuur met oversampling en filtering vóór het terugbrengen van de samplefrequentie. Puckette beschrijft zowel oversampling als methoden met overgangssplitsing voor het genereren van zaagtanden. Controleer het resultaat binnen de beoogde bereiken voor noten en modulatie, en vertrouw niet alleen op inspectie van een golfvorm bij lage noten. Strategieën voor bandbegrenzing van zaagtandgolven
Bouw het geluid in drie stappen op: controleer de opheffing bij een faseverschuiving van nul, stel een blokgolf in bij een afstand van een halve cyclus en animeer daarna de onderlinge fase. Zo heb je bij elke stap een betrouwbaar referentiepunt en kun je de uiteindelijke PWM-patch makkelijker beheersen.
Bronnen
- Triphase Oscillator — New Systems Instruments
- Triphase Oscillator — gebruikershandleiding, revisie 1.01
- Zaagtandgolven en symmetrie — Miller Puckette
- Pulsbreedtemodulatie — Musicdsp.org, Steffan Diedrichsen
- Zaagtandgolven combineren — Miller Puckette
- A-137-2 Wave Multiplier II — Doepfer
- zaagtand — SciPy-documentatie
- Strategieën voor bandbegrenzing van zaagtandgolven — Miller Puckette
