Razmo's Gear Rant tråd...

Medlemmernes egne blogs om musik, teknik og hverdag.
Forumregler
Kun 1 blog pr. bruger.
Nyt svar
Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Re: Razmo's Elektronik Projekt Blog

Indlæg af Razmo »

I øvrigt ang hard restart:

Man kan øjensynligt komme udenom attack problemet, ved at skrive 0 i SID'ens ADSR registre min. 33ms før noden skal spilles (ifølge: http://www.df.lth.se/~triad/krad/sidmidi.html)... i tilfælde af en live synth som jeg laver her, vil det jo så blive 33ms. i delay i stedet for... der er ingen måde at spå om hvornår en note-on sker... men hvis man clock'er SID'en til f.eks. 2Mhz, så betyder det også at alle hastigheder på ADSR og højde på Pitch vil ryge en oktav i vejret, da disse er refereret til SID'ens clock frekvens... så med 2MHz burde Latency'en kunne reduceres til det halve, nemlig 16.5ms ... og går vi op på de 3Mhz, så bliver det kun 11ms, og det er til at have med at gøre... problemet er så bare, at ADSR hastighederne vil have forøget til 4 gange hastighed... sikkert glimrende for percussion :lol: , men lange attack og release tider vil så være gået fløjten.... fa'ens til lort, at der altid skal være et tradeoff for at få løst et problem :roll:
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

UPDATE:

Så fik jeg klaret problemet med den logaritmiske/lineære pitch konvertering... Klarede det på den "nemme" måde, hvor jeg simpelthen har bestemt hvilken opløsning der skal være imellem hver semitone, og så simpelthen lavet en tabel til hele møllen.

Da jeg har bestemt, at synth'en skal kunne styres 100% via MIDI CC controllers, gør dette, at finetune parameteret kun kan have en værdi imellem 0 og 127 (MIDI data kan som sagt ikke have større værdier)... men da en finetune parameter skal kunne være både negativ og positiv giver det en opløsning på 64 niveau'er imellem hver semitone, og det er rigeligt til smooth pitch glides osv.

Jeg har kun lavet en tabel for een oktav med pitch values, da det er legende let at finde værdierne for de andre oktaver i software... eftersom at en fordobling i frekvens er en oktav højere, så kan man finde oktaven over/under ved simpelthen at dividere eller gange frekvensen med 2, og dette så mange gange som man ønsker oktaver over/under.

Hver pitch frekvens data i SID chippen styrres via et 16bit register, altså 2 bytes... og med 64 niveau'er pr. semitone samt 12 af dem giver det en tabel på i alt 1.536 bytes... det er et OK tradeoff af codespace i PIC'en for den simplificering det vil give at kode resten af synth'en, da både pitch og filter tunes efter samme princip på 6582/8580 SID chippene.

Den ældre 6581 SID chip har en lineær filter cutoff modsat de to nyere versioner der justeres logaritmisk ligesom pitch'en... dog er filteret i de gamle 6581 så sporadiske, at man slet ikke kan regne med at de er lineære overhovedet... det svinger fra chip til chip hvilket gør det umuligt at få to ens lydende 6581 chips med mindre man direkte callibrerer cutoff frekvensen specifikt til hver eneste chip.... det lidt ærgerlige ved de nyere chips, selv om de er meget præcise er så at den logaritmiske måde at styre cutoff på betyder at opløsningen bliver lavere og lavere jo længere ned i frekvens man går... men sådan er det... det må man leve med.

Næste step bliver at programmere MIDI så man kan spille via eksternt controller keyboard, samt justere coarse og finetune pitch...
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
SIDwave
Forum Donator
Indlæg: 2636
Sted: Denmark

Indlæg af SIDwave »

Fisket op fra mit arkiv:

60 ms before: ADSR 0000 and gateoff
20 ms before: ADSR to instrument values and gateon with no waveform
0 ms: start the note

Så skulle den være stabil, ADSR

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

SIDwave skrev:Fisket op fra mit arkiv:

60 ms before: ADSR 0000 and gateoff
20 ms before: ADSR to instrument values and gateon with no waveform
0 ms: start the note

Så skulle den være stabil, ADSR
Tak!... anede ikke at der skulle skrives af flere gange og med forskellige tidsintervaller... det må jeg prøve af og høre hvordan lyder. :)
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

SOUND UPDATE!!!

http://razmo.ziphoid.com/MicroSID_Demo.mp3

Linket ovenover er til en lille hurtig live demo jeg multitrack recordede af mit Micro SID projekt.... der er faktisk kun de rå hardware parametre i SID chippen der bliver brugt... alt modulation er mig med musen i overdrive på knapperne i editoren imens :) .... alt er Commodore 64 SID 8580R5, bortset fra kick-drum'en som er en Vermona Kick Lancet, samt et ping pong delay på SID'en.... det er selvfølgeligt optaget i flere lag.

Jeg synes det giver et rimeligt godt indtryk af den typpiske SID sound med ringmod og sync imellem de tre oscillatorer... nogle lyde bliver faktisk uhyggeligt formant agtige med disse modulationer som jeg ikke har hørt magen til på nogen anden synth...

Og jo... det ER C64 :lol: ... den gamle maskine der sagde "blip blop"....
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Morten B
Forum Donator
Indlæg: 6613
Sted: Søvind

Indlæg af Morten B »

f*ck det lyder fedt! :jam:

Specielt den "wah-agtige" lyd er jeg helt vild med.

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

Uncite skrev:f*ck det lyder fedt! :jam:

Specielt den "wah-agtige" lyd er jeg helt vild med.
Tak for kommentar'en Uncite :) det er den slags der gir' lyst til at fortsætte projektet :wink: ...

Den "Wah" lyd du taler om skabes via ringmodulation på en eller anden måde... jeg kan ikke sige helt præcist hvad det er endnu, da jeg egentligt bare eksperimenterede med at tweake random rundt for at skabe nogle presets hurtigt til arrangementet, men ja, det er en speciel lyd.

Det der er specielt ved SID'en er at hver af dens 3 oscillatorer har en sync og ringmod funktion... det fungerer sådan, at oscillator 1 kan sync'es og ringmod'es til oscillator 3... Oscillator 3 kan så det samme til oscillator 2, som igen kan det samme til oscillator 1.... når man begynder at combine disse effekter så det bliver vilde crossmodulationer, så sker der ting og sager som undertegnede har lidt svært ved at overskue :dollargrin:

Jeg ved dog, at en kombi af sync og ringmod kan lave formant agtige toner... noget jeg skal have undersøgt lidt nærmere når det engang bliver tid til at lave factory presets til projektet.

Men der bliver meget mere sjov at gå på opdagelse i, da jeg snildt kan opdatere SID'ens lyd-registre i realtime, helt op til mellem 22 og 44KHz hvis jeg vil dette... det gir mulighed for FM af både filter og pitch og meget andet sjov... jeg ligger pt. og lurer lidt på at forsøge nogle tricks med at bruge pulse-code modulation af SID'ens pulse waveform i en meget høj frekvens, hvilket vil give mulighed for at bruge hver af de tre oscillatorer som "sample player"... SID'ens eget analoge filter vil fungere perfect som filter for carrier frekvensen, og lykkedes dette vil det give uanede muligheder for at lave alle mulige ting.... f.eks. Waldorf style wavetable synthesis, eller bare normal sample playback (hvilket dog har sine begrænsninger med kun ca. 64k memory :dollargrin: ).

Egentligt ville jeg gerne gøre dette til et produktions-projekt, sådan på minimal hjemmebasis når jeg engang er færdig, sådan at andre der ønsker en maskine kunne få det... desvære ved jeg ikke hvor plausibelt det er i længden, da de fa'ens SID chips bliver mere og mere svære at få fat i, da de jo ikke længere produceres... selv har jeg dog et lille lager af 8580 og 6582 chips (en 10-15 stk.)... ellers skal folk selv kannibalisere en gammel C64 for at finde en chip hehe...

Egentligt kan maskinen også let laves til at benytte den ældre SID 6581... de er stort set identiske... eneste forskel er at 6581 (den gamle) kører på 12 volt, hvor den nye er på 9volt... så i reglen kræver det blot en 12volt regulator, en lidt kraftigere PSU, samt andre filter caps... og så noget heatsink til 5 volt regulatoren, da den ellers bliver kogende når den skal omforme 15v DC til 5v DC...

nå.... nok tech talk... sorry :censored:
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

http://razmo.ziphoid.com/MicroSID_Demo.mp3

Update af sidste multitrack optagelse... denne gang er SID'ens analoge multimode filter (12db) også brugt på to bas-gange i demo'en...

Jeg har hurtigt smidt den ADSR ind på cutoff som jeg lavede til mit andet Monotron mod... det skal korrigeres lidt, men her altså første step i at få filteret til at virke.

SID'ens filter er som sagt et multimode filter... du kan vælge Lowpass, Bandpass og Hipass som du har lyst til, enda oven i hinanden hvis man vil dette... SID'ens resonans kan dog ikke selvoscillere pga. at det er et 12db filter (vil jeg tro), men det har sin egen bløde og karakteristiske klang... filteret er det der er størst forskel på fra den gamle 6581 SID chip, og til de nyere 6582/8580... uden det analoge filter var chip'en i det hele taget ikke så interessant (efter min mening).

Mere når der er noget nyt....
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
gs-dk
Forum Donator
Indlæg: 9676
Sted: Frederiksberg

Indlæg af gs-dk »

Er du gal noget nørderi...... Det er super fedt!!!!! :)

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

gs-dk skrev:Er du gal noget nørderi...... Det er super fedt!!!!! :)
Takker :) ... nørderi har altid været mit speciale, på godt og ondt :dollargrin:
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Christoffer I. N.  
Lydmaskinist
Indlæg: 35559
Sted: Hørsholm

Indlæg af Christoffer I. N. »

Dit klip lyder da ret lækkert. :)

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

Christoffer I. N. skrev:Dit klip lyder da ret lækkert. :)
Takker :) ... det er nu bare noget hurtigt bikset sammen noget for at demonstrere hvordan en Commodore 64'er også kan lyde når man tweaker den som en samlet monosynth. De fleste tror at C64 = bipbip lyde, og ikke mange ved at den faktisk er up-to-date i specs og er en hybrid analog/digital synth on a chip lidt i stil med Oberheim Matrix-1000 (som også har synth-on-a-chip chips). Tag 8 af disse SID chips og smid dem i en samlet hardware synth, og du ville have en 8-stemme polysynth med 3 oscillatorer, Sync, Ringmod og Analogt 12db multimode filter...
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

Jeg har kodet lidt mere på ADSR'en, samt forsøgt mig med at omgås SID'ens envelope bug, og det lader til at være gået meget godt. Normalt skulle jeg lave et 33ms latency delay for at omgås den bug, men da jeg har clock'et SID'en op på 2MHz nu, så kan jeg nøjes med 16ms, hvilket giver kun den halve latency fra key-on til tonen lyder... jeg regner med at eksperimentere med om jeg kan clock'e SID'en helt op til 3.33MHz, for at få latency'en endnu længere ned på et tidspunkt, men ind til videre synes jeg at 16ms er ok... man kan dog tydeligt høre den lag'er bagefter i en sequencer, med mindre man justerer track'et med SID'en til at starte 16ms før.

Her er en lille ny demo... denne gang er der flere synthesizere med i arrengementet, og SID'en spiller kun EEN af tracks'ne.... gæt hvilken :dollargrin:

Der er brugt latency, og SID'ens egen DCA envelopes på oscillatorerne er i brug sammen med filteret...

http://razmo.ziphoid.com/WhatsSID.mp3
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

Alrighty then.... jeg har lavet lidt om i koden omkring note-triggers, da synth'en lavede "hang-up" pga. den SID envelope bug workaround jeg havde lavet... et delay på 16ms var simpelthen for langt inde i et MIDI interrupt hvor alt skal være færdigt på 1ms.... jeg havde godt regnet med dette, men ville lige se hvad der skete... nu er note-triggering overladt til main-koden i stedet for, og så virker lortet som det skal 8-)

Min filter envelope fungerer vidst også som den skal... jeg har testet den lidt af, med både attack, release osv, sammen med SID'ens egne envelopes på volumen... demo nedenunder.

Jeg har bare lavet et lille techno-bass-riff for at illustrere envelope'en og hvordan den lyder med sin eksponentielle kurveform... først spilles riff'et med tonerne sammenhængende, bag efter med 50% duty cycle... der tweakes lidt med filter nvelope'en men også med SID'ens forskellige filtermodes... den starter ud med hipass... efter det blir' det bandpass... så switches lowpass på samtidigt med bandpass, og så er det at det begynder at blive spændende :dollargrin: ... lidt resonans leg er der vidst også med.

Synes selv jeg efterhånden har fået skabt en rimelig analog feel over filterstyringen...

http://razmo.ziphoid.com/SID-CORE.mp3

mere når jeg har fået lavet noget...
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

OK... jeg har rodet lidt med Hard Restart på SID'en i dag...

SID'ens hardware envelope's er som tidligere nævnt en del buggy, hvilket efter min vurdering handler om en intern timer der ikke bliver nulstillet ved gate'ning af envelope'en... trick'et skulle så være, at man når en ny tone skal slås an, sætter alle envelope parametre til 0, sådan at envelope'en når til ende så hurtigt som overhovedet muligt, og her efter så starter envelope'en med nyindstillede værdier.

Ifølge nettet skulle den mindste tid man skal vente imellem gate-off og gate-on være 33ms (2^15)... dette er også sandt, bortset fra at jeg kan gøre det på den halve tid, da jeg clock'er SID'en dobbelt så hurtigt som C64 gør det... envelopes'ne har nemlig reference til clock'en.

Ydermere har jeg funderet lidt over nødvendigheden af det SIDWave skrev med, at man også ca. 20ms før noden skal lyde, starter lyden via gate med ingen waveform valgt... jeg kom frem til, at årsagen handler om at SID's attack ikke er specielt hurtig, og derfor "venter" 20ms lydløst ind til waveform'en ER kommet godt i gang og nået sit max niveau, hvor efter man "gate'er" ved bare at tænde for den eller de waveforms man ønsker i lyden.

Jeg ved dog fra tidligere lyddesign på SID, at een bestemt indstilling af ADSR parametrene lader til at virke fint... altså dvs. at der ikke er nogen ADSR bug... dette sker når man har 0 i attack, decay og release, men fuld styrke (15) i sustain... af en eller anden grund virker denne indstilling 100% som det skal, og der er ingen attack langsomhed... så i stedet for at starte lyden med stilhed i 20ms, bruger jeg bare disse ADSR indstillinger når lyden skal slukkes inden de første 40ms skal ventes, og det virker faktisk... det gør at jeg sparer yderligere 8ms latency på den måde.

Indrømmet, så er SID'ens envelopes stadig lidt "karakteristisk" :roll: ... dens "feature" med at fortsætte hvor den var nået til ved sidste node, når en ny anslås gør, at ved hurtige repeterende legato fingerspil, så kan man godt høre at punch-delen i lyden ændrer karakter... men det er nu ikke så slemt... det er den typpiske SID sound (som bedst kan karakteriseres som et meget hurtigt "svup!" attack i starten af lydene).

Jeg har nu kun een ting mere at skulle have kodet omkring envelopes og anslag af tonerne, nemlig at trigger gate bits'ne for de tre oscillatorer så tæt på hinanden som overhovedet muligt... grunden er, at jeg helst vil have de tre oscillatorer til at kunne startes nøjagtigt samtidigt i forbindelse med oscillator reset (altså at oscillatorerne ikke er fritløbende, men resetes ved note-on)... ideen er, at jo tættere de er på hinanden i fase, jo højere volumen, hvis alle tre oscillatorer spiller samme waveform, og det betyder overdrive af det analoge filter indgang, hvilket ville være en fed ting.

Jeg har også kodet to andre ting siden sidst:

1. Filter Envelope Depth... det er nu muligt at variere envelopen's intensitet, hvilket bliver interessant når jeg får rout'et velocity til denne parameter for dynamisk playing.

2. Installeret 8 forskellige exponentielle kurveformer for attack, decay og release i filter envelope'en... de går fra næsten lineær, til meget snappy eksponentiel form... kurven kan vælges med en parameter selvfølgeligt. Attack parameteret bruger dog valgte kurve i inversed form, sådan at den er hurtig om at komme op i omdrejninger, og så blir langsommere og langsommere jo længere frem i attack fasen den er.

demo kommer, når jeg får lavet nogen...
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

Har rettet et par småfejl på Filter envelope'en, og sat dens opdateringshastighed en del ned, sådan at der er kommet bedre opløsning i mulige hastigheder... før var det meste af range'ne så hurtige at de lidt langsommere og mere brugbare settings kun var i den øvre ende af range'en.

Jeg har også fået kigget lidt mere på trigger af de tre oscillatorer, sådan at de trigges så hurtigt efter hinanden som muligt.

Så har jeg også kodet endnu en SysEx commando, nemlig den der modtager edit buffer'en... jeg var blevet lidt træt af, at skulle indstille alle parametre hver gang jeg har haft slukket synth'en, så nu kan den altså modtage 126 bytes på een gang, der indeholder alle parametre, plus alle de endnu ubrugte bytes i en dump... det er min hensigt, at et patchdump ikke må være mere end 126 bytes lang... pt. bruger jeg ca. 25 bytes, men jeg har også udnyttet hver eneste bit i hver byte, og mange parametre deler de forskellige bits i bytes'ne.

En sidste ting jeg lige har lavt i dag er, at jeg har tilføjet lidt til selve hardware'en... jeg havde længe gået og ikke helt vidst hvad jeg skulle still eop med SID chip'ens Audio Input... man kan altid smide et Audio Input på jo, men det er begrænset hvor mange der overhovedet bruger sådan et Audio input, så jeg ville finde på noget andet mere brugbart.

Jeg havde flere tanker om at smide andre chips' output igennem input'et... f.eks. Yamaha YM chip, eller lave en software oscillator i PIC kode, og smide DEN ind i ingangen via en ADC, men SID chippen tillader med lidt tricks at bruge SID'en selv til at gøre det med, så det var overkill...

Valget faldt på den feature der også er på MB6582 maskinen (MIDI Box SID), nemlig feedback... jeg router simpelthen SID'ens output til dens input via et potmeter, og kan på den måde skabe en fed crunchy distortion på lyden, eller i tilfælde af BanpPass filteret, mere resonans... på den måde kan man faktisk få SID'en til at selvoscillere i filteret, selv om det normalt ikke er muligt... dette virker fint... eneste ærgerlige er, at man ikke kan gemme potmeteret's indstilling i en patch, da det er fysisk indtilling via Potmeteret... tanken ligger lidt på et digitalt potmeter, men ved endnu ikke om jeg kan hitte ud af at bruge sådan et.... hvis jeg kunne, ville jeg kunne styre feedback'en og gemme indstililngen i en patch også.

Mere info, når jeg er kommet videre...
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Raller
Medlem
Indlæg: 218
Sted: København N

Indlæg af Raller »

Feeedt projekt !

Tak for god læsning og lytning!
analog for altid.
Indspilning og mix og alt det andet
[url]http://www.kaelderlyd.dk[/url]

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

Raller skrev:Feeedt projekt !

Tak for god læsning og lytning!
Takker :)

Her er en ny lille demo at lytte til: http://razmo.ziphoid.com/FakeVCA.mp3

Jeg er blevet så træt af SID'ens åndsvage envelope bug, at jeg har besluttet mig for helt at undgå at bruge den rent ud sagt... træt af at noder hopper rundt, selv om man laver hard restart så snart der er lidt release på, træt af at det varierer fra ADSR settings.

Så hvad gør man så når man ikke har nogen VCA envelope? ... man laver sin egen ADSR til at modulere volumen kontrollen i stedet for. Et drawback til dette er selvfølgeligt, at der så kun er een VCA envelope, og ikke en på hver oscillator som SID ellers normalt har. I de fleste synths har man dog aligevel kun een VCA envelope fordi alle oscillatorer bliver brugt sammen til een lyd, og da det er sådan min synth skal bruges, så er det faktisk også helt fint... på C64, hvor man brugte hver oscillator til en single stemme ville dette ikke være brugbart, men det er det altså her.

Det største drawback ved at bruge volumen kontrol i stedet for er, at SID kun har 4 bits opløsning i volumen... det giver kun 16 niveauer for volumen at lave en VCA envelope ud fra, men det er faktisk et ok kompromis, taget i betragtning hvor snappy lydene bliver på den måde.

Du kan høre denne VCA ADSR envelope der modulerer volumen i stedet for at bruge de hardware indbyggede ADSR'er ovenover i linket... den starter ud med slet ikke at have nogen ADSR på volumen (kun filter ADSR her)... næste efter bliver volumen ADSR slået ind, og her efter manipuleres der lidt med forskellige ADSR kurveforme (fra lineær til eksponentiel) løbende, samt forskellige decay hastigheder.

En meget tydelig sideeffekt af den lave opløsning kan høres når jeg til sidst skruer ned for filter envelope amount... her kan man nemt høre "clicks" fra volumen kontrollen, så det er et tradeoff man bare må leve med... jeg foretrækker dette frem for de buggy ADSR envelopes i SID'en.

Min tanke ligger nu på at udvide hardware'en lidt som talt om tidligere... nemlig med et digitalt potmeter, som vil kune fungere som microcontroller-styret volumen kontrol... sådan en fætter har 256 niveauer, og vil derfor kunne erstatte brugen af SID'ens egen volumen kontrol med kun 4bits opløsning... jeg har fundet det digitale potmeter jeg skal bruge... skal bare have det bestilt hjem og rodet med... det er kun en lille 8-pin chip der styres serielt via PIC'en.

Der kommer flere demo'er med feedback mod'et også, men jeg skal lige have rodet lidt mere med at fine-tune det.. der er så meget smæk på, at i nogle indstillinger oscillerer den helt vildt, selv om der ingenting spiller, så den er meget fint-følende med det feedback... men med nøjagtig styring af parametre i filteret og filter modes, kan den snildt lave 303 agtige basslines... enda med distortion agtig effekt på, eller høj resonante filtersweeps der laver "ZAP!" lyde osv...
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

Her er en lille demo hvor Feedback blir brugt som jeg lovede... Det er maksimum distortion via Audio In på SID chippen (routed tilbage via SID Output'et)... jeg har givet den en smule bas og diskant EQ, men ikke meget... resten af instrumenterne er andre synths. Det er blade-like riff'et der er SID :)

http://razmo.ziphoid.com/FeedbackSID.mp3
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

UPDATE:

Jeg har efterhånden sat sidste fingeraftryk på ADSR filter envelope'en og Volume envelope'en... jeg valgte at gøre den eksponentielle decay-form endnu mere avanceret, hvilket vil sige, at jeg nu ikke længere stopper midt i decay forløbet når sustain niveau'et nås (ind til noteoff og release starter)... nu får decay kurven lov til at nå helt til ende før den venter på key-off... dette har betydet, at jeg skalerer decay perioden sådan at den starter i max, men at slutningen flugter med sustain niveau'et... lad mig bare sige at det gør en ENORM forskel i lyden, specielt hvad angår bouncy feel... dette er THE WAY TO DO IT er jeg blevet enig med mig selv om... lyder meget mere "analog" i envelope'en nu, det er helt sikkert.

En anden ting jeg har lavet er at gøre Volume envelope'en om, eller rettere udvide den... et af problemerne jeg talte om tidligere, nemlig at der kun var 16 niveau'er gik mig lidt på nerverne til sidst... jeg ville have en større opløsning end kun 16 niveau'er... jeg talte om at bruge et digitalt potmeter til dette, men det er ikke længere nødvendigt... jeg fandt nemlig på et lidt specielt trick til at udvide til 32 niveau'er hvilket lader til at være fint nok.

Normalt har Volumen parameteret kun 16 niveauer, så for at udvide det til 32 har jeg fusket med de dårlige ADSR hardware envelopes i SID'en... een indstilling var jo OK, hvilket var en ren gate indstilling... jeg fandt ud af, at jeg kan ændre på sustain værdi'en i real time, og derved fungerer sustain parameteren som endnu en slags 16 niveau volumen kontrol... hvordan blir det til 32 niveau'er? ... ret simpelt egentligt... den normale volumen er f.eks. 15 til at starte med (max volumen), samt 15 i sustain (max volumen)... niveau'et under er så 15 i volumen, men 14 i sustain... næste er 14 i volumen og 14 i sustain... og så 13 i sustain og 14 i volumen... osv. osv... det giver 32 niveau'er i alt fra max volumen til minimum.

Der var dog ÉT problem med dette trick, nemlig at man kun kan gøre sustain parameteret MINDRE... så snart man prøver at hæve det til et højere tal end tidligere, så hopper volumen i sustain delen til nul øjeblikkeligt! ... heldigvis er der kun brug for opadgående volumen i attack fasen, så det virker sådan, at der er 16 niveau'er i attack fasen, men 32 i decay og release fasen hvor det er mest vigtigt :wink:

Selv er jeg yderst tilfreds med resultatet... så ADSR delen er stort set færdig nu, så jeg kan komme videre med andre ting... Filter Keytrack og Legato funktion til både filter og volumen envelope'en er også lavet... tror næste skridt blir at få lavet en Filter LFO.

Her er en demo (kraftigt inspireret af Overlord's Sundown bassline) som illustrerer både Filter og Volumen ADSR envelopene:

http://razmo.ziphoid.com/ADSR_Showcase.mp3
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

Sidste hånd lagt på filter og volume ADSR, lige med undtagelse af optimering af koden... jeg fandt en lille ting at korrigere som havde irriteret mig et stykke tid, nemlig opløsningen af ADSR range'ne... opløsningen har hele tiden været fra 0 til 255, men pga. den logaritmiske måde en phase accumulating tæller virker på, så var opløsningen i den lave ende meget mindre grunden eksponentiel komprimering.

Det kan bedst forklares ved, at en hastighed f.eks. 40 i attack har en bestemt frekvens... hvis attack rate'en skal køre dobbelt så hurtigt skal værdien så være 80... og det dobbelte igen af det 160... det betyder logisk nok, at der kun er 40 niveau'er imellem 40 og 80, men 80 imellem 80 og 160... så når man har en range på 0-255 så blir opløsnignen som sagt mindre og mindre jo længere ned i frekvens man kommer.

Det betød at jeg var nødt til at lave min tæller om, så den blev 32bit i stedet for 24 bit som den har været ind til nu, ellers var der ikke opløsning nok til at skabe 255 forskellige niveau'er (ADSR parametrene er stadig kun fra 0 til 255, men frekvensen af disse 256 værdier slås nu op i en tabel).

sådan rent teknisk fungerer ADSR'en sådan, at man starter en tæller der begynder fra 0, og tæller op med en fast værdi alt efter ADSR parametrenes værdi... det er denne 16bit additions værdi der slås op i en tabel på 256 forskellige additions-værdier (da ADSR parametrene er fra 0-255).

de 32 bits er delt op i 4 bytes således:

Top------ Upper----Hi--------Lo
00000000 00000000 00000000 00000000

de to laveste bytes (Lo og Hi) er fraction delen, og også de 16 bits additionsværdien lægges til hver gang ADSR'en opdateres. Det er dog hele tælleren (32bits) der lægges til, så når der er lagt så mange additioner sammen i de nederste to bytes (16bits) så laves der overflow ind i byte'en Upper... det er denne byte "Upper" der indeholder integer værdi'en af ADSR'en... denne vil tælle fra 0 til 255 hvilket svarer til at envelopens attack fase går fra 0 til 255 i den hastighed additionsværdierne forøger tælleren med.

Når så Upper byte'en laver overflow ind i byte'en Top, så "kammer" byte'en "Upper" automatisk over og starter forfra på nul... det smarte er så, at den værdi der står i byte'en Top kan bruges til at vide hvilken ADSR fase vi er i... er den 0 er vi i attack fasen, er den 1 er vi i decay fasen... 2 er release fasen, og i realiteten kunne vi lave op til 256 faser hvis man ville (multistage envelopes).

Den kvikke vil nok spørge, hvordan man så får decay fasen rigtig, da byte'en Upper jo altid tæller nedefra og op?... det er faktisk uhyggelig simpelt, for det eneste man behøver at gøre er at holde øje med byte'en Top... er den 1 eller 2(decay/release fasen), så inverterer man simpelthen hele byte'en Upper, sådan at alle bits der er 0 blir 1, og 1 til 0... så vil værdi'erne være fra 255 til 0 :wink:

Man skal så holde øje med hvornår man er ved slutningen af decay fasen ved at vide om en tangent holdes nede på dette tidspunkt, for gør den det, skal vi stoppe tælleren der, ind til vi slipper tangenten igen... ellers er der ingen sustain, og det kræver ekstra kode at sørge for at sustain værdien er der hvor decay fasen slutter.

En LFO laves på stort set samme måde via en tæller, men hvor man i stedet for at vente ved sutain fasen, looper tilbage til starten af decay fasen... selve waveform'en i LFO'en slåes så op i en tabel på 256 samples der svarer til index'et i byte'en Upper... en phase accumulating oscillator laves på samme måde, men frekvensen af den skal bare være temmelig meget hurtigere.

Selvfølgeligt er der meget mere i en ADSR envelope end det jeg har forsøgt at forklare... bla.a. skal tælleren nulstilles hver gang der slås en node af, og spiller man legato skal den kun resettes så længe der ingen tangenter holdes nede osv...

Peace...
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

UPDATE:

ja ok... som altid når man siger man er færdig med noget, så var der aligevel et eller andet der skulle nørkles videre med på den ADSR :roll:

En ting der irriterede mig var, at når filteret var delvist lukket eller når volumen envelope'en resat, så kom der små "click's"... dette var som sådan ikke nogen fejl, men et resultat af de ekstremt hurtige software envelopes... det kan forklares sådan, at er f.eks. volumen envelopen sluttet fra sidste note-on på f.eks 0, og den næste node der slåes an starter envelope'en igen med hurtigste attack (som er instant), så gør den volumen niveau skiftning fra 0 til fuld skrue at der kommer et "click"... dette er ikke hørbart, når cutoff er helt åbent fordi tonen så med f.eks sawtooth er meget lys og kraftig selv... men er filteret delvist lukket, eller man bruger f.eks en triangle waveform, så kan disse clicks altså høres.

Løsningen var, at når en envelope restarter, at man så fortsætter fra det niveau envelope'en var nået til da man trigger'ede den nye note-on... det betyder, at har man f.eks langso attack, og trykker hurtigt efter hinanden, sådan at envelope'en ikke når at dø ud igen, så vil den gradvist få mindre og mindre attack ind til det lyder som om den starter uden attack... fordelen er at det eliminerer de click's, samt at lyde med længere attack bliver meget mere performance minded at spille med... det virker mere musikalsk.

Alt i alt blev ADSR envelopes'ne så endnu bedre efter min mening... faktisk fandt jeg ud af, at netop dette "trick" er noget der gør lyden af envelopes'ne meget mere analog lydende... jeg tror faktisk også at nogle (måske alle?) analoge envelopes bruger netop denne metode... jeg kan i hvert fald efterhånden ikke høre at synth'en er en analog/digital hybrid mere... envelope'ne gør at lyden virker lidt mere "kaotisk" som en rigtig analog synth lyder.
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

UPDATE....

Har lavet filter envelope inverse... ikke noget vildt stort, men her er en demo der viser bla.a. det jeg talte om tidligere omkr. at envelope'en fortsætter hvor den slap når nye noder slås an, som giver det lidt mere analog-feel... det kan høres på den lyd der kommer i starten hvor der med store afstandeimellem notes er fuld attack på, men jo hurtigere der slås an, jo hurtigere når envelope'en også sit max... SID chip'en er brugt hele vejen igennem, bortset fra kick drum som vanligt.

http://razmo.ziphoid.com/Tech.mp3
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

Update...

http://razmo.ziphoid.com/VelocityTest.mp3

En "lille" demo af det sidste nye; Velocity til filter og volume envelopes... bare lidt live klimpring... tjek it out.

Der er blevet fjernet lidt features jeg ikke fandt nødvendige aligevel, som separat legato på volume og filter envelope... der er en fælles nu, som er rykket til globale settings, for der er ingen mening i at have dem separat. Inverse funktion af volumen envelope også fjernet, da det ikke gir' mening.

Så har jeg lavet nogle flere kurveformer til envelopes'ne også... fået indsat en LINEAR form, reduceret de eksponentielle nedadgående kurver til 4 (8 var overkill), hvilket efterlod plads til 3 kurveforme mere, og der har jeg smidt opadgående eksponentielle versioner ind... disse er specielt gode på bla.a. volumen envelope'en fordi decay fasen starter ud langsomt men bliver hurtigere og hurtigere i stedet for omvendt... det betyder, at med dette kombineret med en negativ eksponentiel kurve på filter cutoff, så forbliver volumen højere i starten af f.eks. en baslyd... det giver mere "krop" og "power" i lyden... formen passer også fint til decay kurven på f.eks. en snaredrum eller open hihat.

Jeg har også fået taget mig sammen og bestilt nogle chips fra Microchip... som det kan høres i demo'en ovenover, så er der små click-lyde (prøv med headphones, der er det tydeligt)... det skyldes volumen envelope'en, da volumen registret der manipuleres som sagt kun har 16 niveau'er, og et skift imellem dem giver små clicks... derfor vil jeg lave en slags digital microcontroller styret volumen... noget der har flere niveau'er.

Løsningen er som tidligere nævnt, et digital potmeter, og Microchip laver nogle SPI (serielle) digitale potmetre med 256 niveauer hvilket er ideelt til dette formål. Men jeg valgte en chip med dual pot... altså to potmetre i samme chip fordi jeg synes det kunne være fedt hvis jeg kunne kontrollere feedback til Audio Input på denne måde også i stdet for et analogt potmeter... så kan jeg nemlig gemme feedback værdien med i patch data'ene.

Jeg har også lavet hele designet af PCB'et om, da jeg blev enig med mig selv om at jeg ville lave PCB'et med alle stik I/O loddet på selve printet i stedet for chasismount... grunden er, at det er svært at finde en kasse jeg synes om, og jeg har derfor bestemt at bruge en lidt speciel løsning, nemlig blot to plader i samme størrelse som PCB'et til nedenunder og ovenover PCB'et... og så nogle afstands skruer imellem delene... det gør at synth'en er "åben" hele vejen rundt i siderne, men også at alle stik er tilgængelige på bagsiden... med klar plast som top f.eks. kan alle LEDs tydeligt ses også... og så er det en billig løsning. En fordel ved denne metode er, at SID chippen er placeret helt ude i den ene side, så man kan med en smal skruetrækker hive SID chippen ud uden at skille det hele ad, og putte andre SID chip's i... med de nye 6582/8580 gir det ingen umiddelbar mening, da de lyder ens, men har man lavet designet til de ældre 6581 har det STOR betydning, da ikke to chips lyder ens.

Men lad os bare sige, at PCB'et er blevet crowdet efter der også skal være plads til RCA Audio Out stik, Power stik, On/Off switch samt to MIDI DIN stik :lol: ... ikke mindst skal der nu også være plads til den 14pin dual digital pot chip.
Vedhæftede filer
PCB2.jpg
PCB2.jpg (533.11 KiB) Vist 4912 gange
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Medlemsavatar
Razmo
Forum Donator
Indlæg: 4595
Sted: Denmark

Indlæg af Razmo »

UPDATE...

En lille demo hvor SID'en spiller bass track'et... andre instrumenter: Roland MKS-30, Waldorf Microwave, Vermona Kick Lancet, Jomox MBrane11 og Yamaha TG77.

Har ikk elavet så meget nyt på koden... jo, har rettet lidt i ADSR rutinerne igen, men ellers intet nyt endnu... lader til at jeg har svært ved at slippe de ADSR'er :roll:

http://razmo.ziphoid.com/NewDemo.mp3
[img]http://razmo.ziphoid.com/ANKH.gif[/img]
R.I.P. Mindeprofil

Nyt svar