Resultat 1 till 15 av 15

Ämne: Ricard bygger synt!

  1. #1
    ricard
    ricard är inte uppkopplad
    ricards avatar
    Veteran

    Ricard bygger synt!

    Klicka på bilden för en större version. 

Namn:	mimid-oscpage.jpg 
Visningar:	19 
Storlek:	28,0 KB 
Id:	115053

    Insåg när jag läste den här tråden
    https://www.99musik.se/showthread.ph...51#post3771251
    att jag tänker på syntar varje dag, bl a eftersom jag håller på att bygga en (och då menar jag 'bygga' i ett lite vidare begrepp än att sitta med lödpenna och lödtenn).

    För 36 år sedan så byggde jag en polysynt som heter MiMi-a http://butoba.net/homepage/mimia.html . Ursprungligen inspirerad av Memorymoog och med erfarenheter från min tidigare monosynt Delta 7 (http://butoba.net/homepage/delta7.html) blev det en 6-rösters polyfonisk multitimbral analogsynt, med analog signalväg från vågformsgenerering, (Moog-) filter till VCA, med digital frekvens-, envelope- och LFO-generering, dock med en del tekniska abrovinker för att undvika 'zipper noise' samt få lite naturlig variation mellan
    oscillatorerna.

    Jag har alltid varit fascinerad över tillgängligheten och direktheten hos 'pre-patched'-syntar. Modulärer i alla ära, men syntar med fasta signal- och modulationsvägar bildar sitt eget ekosystem, och ägare till relativt enkla syntar som Juno-106 och MicroMoog kan säkert skriva under på att begränsningarna till trots så är ljudpaletten förbluffande stor.

    Av olika anledningar blev det inget mer syntkonstruerande - livet kom emellan typ. I början på 90-talet gjorde jag en sequencer i samband med ett syntcoverband jag spelade i, och jag gjorde några små inhop i Gligli:s Prophet-600-mod, i form av bugfixar och sequencerimplementation, samt lite småhackande i diverse synt-OS. Samt en del reparationsprojekt, som ger välbehövliga dyk i analogvärlden.

    När Nordlead 2 dök upp insåg jag att mjukvaru(baserade) syntar hade nått mogenheten (moogenheten ) att det var dags att säga farväl till analogtekniken när det gällde nykonstruktioner för min del. Jag tänker inte gå in på debatten om analogt mot digitalt mer än att säga att om man framgångsrikt kan spela in en analogsynt på ett digitalt medium så är det uppenbarligen fullt möjligt att representera analogt generat ljud digitalt, och det handlar "bara" om att hitta lämpliga mjukvarualgoritmer för ljudgenereringen.

    För några år sedan kastade jag ut min som ny inköpta Nordlead 2 och gjorde under några år en färd bland kommersiella VA-syntar då det i halvrask takt inköptes och testades Blofeld, Nordlead 3, Alesis Ion, Akai Miniak, Yamaha AN-1x, Nordlead A1, Virus KB, samt även några byggsatsmaskiner som Ambika och Audiothingies P6. För halvannat år sedan köpte jag en Radikal Technologies Accelerator, en imponerande maskin på många sätt (don't get me started...), men även den har gått vidare. De enda som finns kvar från listan är Blofeld och P6, men mitt huvudsakliga hårdvaruinstrument idag är en Virus KC.

    Kollade även in lite mjukvarusyntar i pluginformat, med bivilkoret att de måste gå att köra i Linuxmiljö och helst vara Open Source, vilket minskar utbudet rejält, kan man lugnt säga. Min favorit här är ZynAddSubFX, som jag tycker ger mig flashbacks till upptäckarglädjen jag kände när syntar var nytt för mig. Som programmerare är det dessutom fantastiskt att faktiskt kunna göra förbättringar i koden när man hittar något som inte står rätt till eller kan förbättras.

    Men samtidigt skulle det vara trevligt att ha tillgång till en hederlig och välljudande klassisk virtual analogsynt.

    Upptäckte i det sammanhanget Zynthian-platformen (http://www.zynthian.org) som jag tycker på ett utmärkt sätt bryggar gapet mellan hård- och mjukvarusyntar, med sitt gränssnitt med fyra rattar och relativt snabbjobbat menybläddrande.

    I pluginträsket uppenbarade sig också en liten juvel - OB-Xd, som är en digital rendering av Oberheims OB-X och OB-Xa. Den är tydligen inte tänkt att vara en regelrätt klon, utan mer vara kraftigt inspirerad av Oberheimskapelserna, med väsentligen samma röstarkitektur, men med en del tillägg, bl a anslagskänslighet och korsmodulation. Signalbehandlingsmässigt har man trevliga analogljudande filter, lågaliasoscilatorer och frånvaro av zipper noise vid t ex filtersvep . En sak som stört mig på OB-Xd var att filtertrackningen Oberheimtroget var antingen på eller av, vilket är en kostnadsbesparing på en hårdvarusynt (jämfört med att ha det steglöst) men knappast i en modern mjukvarumotsvarighet. För några månader sedan började jag gräva i koden och det visar sig att det är bara användargränssnittet som har den begränsningen; själva DSP-koden hanterar kontinuerliga värden. Så i Zynthianmiljön är det några rader i en beskrivningsfil som inte ens är en del av OB-Xd-koden som behöver ändras för att man skall få kontinuerlig filtertrackinginställning. (Och med lite tur dyker det även upp i den DiscoDSP:s kommersiella OB-Xd-utgåva med tiden efter lite påstötning).

    I det sammanhanget började jag fundera ... en sak som hela tiden ackompanjerat mig genom vandringen i VA-träsket är att alla testade syntar har en eller flera saker jag skulle vilja göra annorlunda. Men tiden har varit knapp, och mina DSP-kunskaper lidande. Jag har vid olika tillfällen studerat olika former av opensourceprojekt, t ex nu smått avsomnade Axoloti, som utgångspunkt för eget bygge men det har alltid strandat på olika saker.

    Med OB-Xd framför mig slog det mig att här är för en programmerare är det här en Legolåda med syntkomponenter som man skulle kunna bygga om till något som passar mina behov. Zynthianmiljön i sin tur ger ramverk, användargränssnitt och saker som patchhantering och effektkedjor.

    Så, jag har nu börjat på mitt första riktiga VA-projekt. I vanlig ordning är jag typ 10 år efter min tid, men livet är ändligt, så bättre sent än aldrig.

    Queue the MiMi-d. Detta kommer att vara en digital rendering av MiMi-a, och är på liknande sätt som OB-Xd inte tänkt att vara en klon, utan snarare ett instrument som tar sitt avstamp i MiMi-a och Delta 7, med liknande filosofi och designelement.

    Skillnaden mot den uppsjön av VA- och pluginsyntar som finns där ute kommer inte att vara världsomvälvande, men det kommer att bli en synt som jag vill ha den, och därmed en del subtila detaljer, bl a:

    • ADSSR-enveloper, med sustaintid som parameter utöver de vanliga ADSR.
    • Filtermodulation från en av oscillatorna.
    • Ingen modulationsmatris. Jag hatar modulationsmatriser. Istället kommer det att finnas modulationsroutings från varje modulationskälla som hör till den specifika modulationskällan. Inte lika flexibelt, men betydligt mer snabbjobbat.
    • Bipolär envelopemodulation av filtret. Hur många gånger har man vridit upp envelopmodulationen och stört sig på att man inte kan vrida ner cutoffen tillräckligt. Lösningen är att ha en bipolär signal från envelopen snarare än unipolär.
    • Variabel synknivå mellan oscillatorerna. En skojjig funktion som praktiserades på Delta-7 men av olika anledningar inte följde med till MiMi-a.
    • Kontroll över röstallokeringen. Jag lade en del energi på detta i MiMi-a och tänkte ta med det mesta till MiMi-d. Har t o m öppnat de gamla Z80-källkodsfilerna för att kolla upp hur jag gjorde det på den gamla goda tiden.
    • Separata LFO:er till varje röst. Detta är ett arv från MiMi-a som var gjord så för att kunna vara multitimbral, men det resulterar i en del intressanta möjligheter även när alla röster spelar samma ljud.


    Arkitekturen blir annars ganska standardmässig, med 2 oscillatorer, varav en med suboscillator, som matar ett (multimode-) filter, och VCA, med tillhörande envelopegeneratorer, samt ytterligare en generell modulationsenvelope, och avslutningsvis två LFO:er. Inget banbrytande således, utan tanken är att sätta ihop en go liten VA med lagom mycket funktioner.

    Håller f n på att implementera funktionerna en efter en. ADSSR-enveloper, check. Filtermodulation från oscillator, check. Individuella röst-LFO:or med key sync, check. Går att köra på Zynthian, check.

    Just nu är parametrarna i total oording vilket gör UI:t rörigt i Zynthian, som väsentligen visar alla parametrar i numerisk ordning. När alla
    funktioner är implementerade skall det redas upp.

    Någonstans längre fram hägrar kanske ett GUI så man kan köra den som ett "normalt" plugin, men jag lovar inget.

    Mer teknisk info på hemsidan: http://www.butoba.net/homepage/mimid.html där det även finns länkar till Github för den intresserade.

  2. #2
    oberdada
    oberdada är inte uppkopplad
    oberdadas avatar
    Veteran
    Intressant projekt. Ibland behöver man bygga sitt eget instrument.

    Citat Ursprungligen postat av ricard Visa inlägg
    This quote is hidden because you are ignoring this member.
    För några månader sedan började jag gräva i koden och det visar sig att det är bara användargränssnittet som har den begränsningen; själva DSP-koden hanterar kontinuerliga värden.
    Vilket påminner mig om en del korkade begränsningar i audacity. Numeriska värden till parametrar i vissa effekter kan t.ex inte ha fyra decimaler i delaytid eller negativ gain.

    Så, jag har nu börjat på mitt första riktiga VA-projekt.
    Nu är ju en hel del trick tillgängliga. Vadim Zavalishins bok för filterdesign, olika bandbegränsade oscillatorer osv. Men att sätta ihop allt till en fungerande synt låter som ett mycket omfattande tilltag.

  3. #3
    Marlowes
    Marlowes är inte uppkopplad
    Marlowess avatar
    Veteran
    Låter jäääävligt spännande!

  4. #4
    ricard
    ricard är inte uppkopplad
    ricards avatar
    Veteran
    Citat Ursprungligen postat av oberdada Visa inlägg
    This quote is hidden because you are ignoring this member.
    Intressant projekt. Ibland behöver man bygga sitt eget instrument.
    Absolut. Ditt uttalande påminner mig om något som Bob Moog sa för många år sedan när han var på väg tillbaka in i musikbranschen med Big Briar, något i stil med att på samma sätt som kompositörer har ett behov av att komponera musik, så har instrumentbyggare ett behov av att bygga instrument.

    Nu är ju en hel del trick tillgängliga. Vadim Zavalishins bok för filterdesign, olika bandbegränsade oscillatorer osv. Men att sätta ihop allt till en fungerande synt låter som ett mycket omfattande tilltag.
    Om det inte framgick så klart i första inlägget så utgår jag i det här fallet från OB-Xd, och ändrar, drar från och lägger till tills jag får det som jag vill ha det. Vissa saker tar jag mer eller mindre rakt av, som filter och oscillatorer. Finns ingen anledning att återuppfinna hjulet. I slutändan kommer det dock nog inte att finnas många rader kod som jag inte rotat i på något sätt ser det ut som. Jag har ändock läst en del i Zavalishins bok och även Will Pirkle:s "Designing Software Synthersizer Plugins in C++". Den senare är också bra, men är (i sin 2:a upplaga) mer en bruksanvisning till hans "SynthLab"-bibliotek (som finns på Github) än en lärobok i syntteknik. Jag tror det är på förekommen anledning, då det som du är inne på blir en väldigt komplex uppgift att sätta samman allt till en fungerande enhet; Pirkle undervisar på universitet, och jag får känslan av att det är mycket riktat mot hans elever, och där ett mer 'rått' angreppssätt blir för mycket 'boilerplating' som distraherar från den riktiga syntdesignen.

    I OB-Xd är det väldigt mycket som jag tycker är gjort på rätt sätt. T ex förordar Pirkle linjära enveloper med en efterföljande kurvformare för att få exponentiella enveloper, men i OB-Xd skapas exponentialkurvor direkt, vilket jag tycker är en bättre lösning. Avsaknaden av en undersamplad "k-rate" för beräkning av koefficenter och LFO:er och enveloper är också befriande, om än lite mer DSP-krävande.

  5. #5
    oberdada
    oberdada är inte uppkopplad
    oberdadas avatar
    Veteran
    Undersamplad control rate är ju en kvarleva från tiden när processorerna var mycket långsammare. Jag har mest erfarenhet med det från Csound, där man ofta får stångas med konvertering mellan a-rate och k-rate. Det kan också komma ivägen om man vill använda feedback. Pirkle har jag inte läst, men kanske den där tekniken med kurvformning också grundar sig i effektivitet? Rädslan för multiplikation, som ser ut att vara nödvändig i exponentiella kurvor (fast man kan väl komma ifrån det med bara addition och en extra variabel, har jag för mig). Jag känner inte alls till OB-Xd eller de flesta andra syntar du nämner. Men det låter vettigt att återanvända så mycket som möjligt.

  6. #6
    domiag
    domiag är uppkopplad nu

    Senior
    Fan alltså, förvirrande när någon stavar sitt namn (Ricard) precis som jag!

  7. #7
    machinepop
    machinepop är inte uppkopplad
    machinepops avatar
    Administrator
    Sylten återkommer i mjukare form alltså? Mindre socker?

  8. #8
    encore
    encore är inte uppkopplad
    encores avatar
    Veteran
    ricard: OB-Xd uppför sig och låter ju väldigt trevligt imho, så det låter som en bra utgångspunkt. Nu fattar jag varför jag haft två olika versioner och utseenden (discoDSP och vad jag antar varit det ljusblå originalet) av pluginet över tid.

  9. #9
    kroffe
    kroffe är inte uppkopplad
    kroffes avatar
    Vintage
    Heja!
    Hoppas på att få testa.

  10. #10
    ricard
    ricard är inte uppkopplad
    ricards avatar
    Veteran
    Labbar med och experimenterar med filtret...

    Klicka på bilden för en större version. 

Namn:	filter-lab.png 
Visningar:	30 
Storlek:	167,2 KB 
Id:	115248

    Har skapat en liten testbänk i mjukvara för att kunna experimentera med olika parametrar i 24-dB-filtret. Övre harangen är mätningar på filtrets egenskaper när det självsvänger, frekvens och amplitud. Undre är frekvenssvaret på en av de interna signalerna (mätt vid specifika frekvenser en oktav isär). Asteriskerna till höger är en grov frekvensplot, vriden 90° (I det här fallet syns resonansen (parametern på 0.9) som en 27 dB topp vid 62.50 Hz, med filtrets passband innan dess (lägre frekvenser) och stoppbandet därefter (som kommer att filtreras med 24 dB/oktav i och med de fyra filtersektionerna i filtret). Just nu har filtret en viss gainkompensation för resonansen inställd, så passbandet dämpas med 2-3 dB (utan gainkompensation skulle dämpningen bli i storleksordningen 12 dB med den valda resonansinställningen).

    Vilket f ö föranleder en fråga: Finns det någon synt som har ett filter med inställbar gainkompensation i passbandet? Klassiska Moogfilter har gainbortfall i passbandet när resonansen vrids på, vilket vissa filter (som t ex CEM3320) kompenserar för. Men jag har aldrig sett ett filter där gainkompensationen är en parameter som är åtkomlig för användaren - men så har jag ingen koll på t ex vad som finns i modularvärlden.
    Senast redigerat av ricard den 2023-10-22 klockan 08:57.

  11. #11
    oberdada
    oberdada är inte uppkopplad
    oberdadas avatar
    Veteran
    Citat Ursprungligen postat av ricard Visa inlägg
    This quote is hidden because you are ignoring this member.
    Just nu har filtret en viss gainkompensation för resonansen inställd, så passbandet dämpas med 2-3 dB (utan gainkompensation skulle dämpningen bli i storleksordningen 12 dB med den valda resonansinställningen).
    Det där förstod jag inte. Dämpas passband och stoppband olika mycket? I så fall blir det väl som att applicera ett extra filter.

    Annars tror jag gainkompensation är en sak som det inte gör så väldigt mycket om användaren inte har kontroll över, bara det fungerar bra. En av få sådana saker.

  12. #12
    ricard
    ricard är inte uppkopplad
    ricards avatar
    Veteran
    Citat Ursprungligen postat av oberdada Visa inlägg
    This quote is hidden because you are ignoring this member.
    Det där förstod jag inte. Dämpas passband och stoppband olika mycket? I så fall blir det väl som att applicera ett extra filter.
    Det är ingen separat modul, utan en egenskap hos filtret. Jag uttryckte det nog lite klumpigt. I Moogfilter så sjunker passbandsförstärkningen när man drar på resonansen, vilket ger intrycket när man kranar på resonans att synten blir basfattig. I andra konstruktioner har man lagt in en medveten kompensation av det för att undvika det problemet. Just plotten ovan visar en intern signal i filtret (summering av feedbacken insignalen tillsammans med loopen från utgången som implementerar resonansen) där man just ser gainkompensationen i frekvenserna under brytfrekvensen.

    Annars tror jag gainkompensation är en sak som det inte gör så väldigt mycket om användaren inte har kontroll över, bara det fungerar bra. En av få sådana saker.
    Ja jag är tveksam om man skall lägga ut det till en kontroll, av just den anledningen du nämner. Det är ibland bättre att en konstruktion har en viss karaktär som man lär sig leva med och hantera, än att allt går att ställa in.

  13. #13
    oberdada
    oberdada är inte uppkopplad
    oberdadas avatar
    Veteran
    Då fattar jag. Och så måste jag ha tänkt att det rörde sig om bandpassfilter där resonansen och passbandet sammanfaller. Som jag minns det brukar man väl ha flera tanh inuti simulerade moogfilter, vilket begränsar resonansen i amplitud.

  14. #14
    ricard
    ricard är inte uppkopplad
    ricards avatar
    Veteran
    Citat Ursprungligen postat av oberdada Visa inlägg
    This quote is hidden because you are ignoring this member.
    Då fattar jag. Och så måste jag ha tänkt att det rörde sig om bandpassfilter där resonansen och passbandet sammanfaller. Som jag minns det brukar man väl ha flera tanh inuti simulerade moogfilter, vilket begränsar resonansen i amplitud.
    Ja, tanh (och arctan som är väldigt snarlik i det avseendet) är en bra amplitudbegränsningsfunktion. I första hand används det dock för att inte filtermatematiken skall explodera (= värdena från beräkningarna bli oändligt stora) när filtret självsvänger. Och då räcker det med att man begränsar amplituden en liten aning när signalnivån blir stor, dvs det är bara en liten del av kurvans böjning efter den mer eller mindre linjära delen av kurvan runt noll som man faktiskt använder.

    I MiMI-d använder jag en taylorapproximation där tredjegradstermen står för mjukklippningen för att spara CPU (DSP) -tid. Det behövs bara en, på ett väl valt ställe i konstruktionen; det blir säkert en noggrannare approximation av det analoga beteendet om man har fler, men jag tror inte det finliret lönar sig eftersom det bara är en liten del av olinjäriteten som man utnyttjar. Det finns bättre ställen att lägga sina DSP-resurser.
    Senast redigerat av ricard den 2024-04-19 klockan 08:14.

  15. #15
    ricard
    ricard är inte uppkopplad
    ricards avatar
    Veteran
    Nu finns den första 'riktiga' utgåvan tillgänglig. Se inlägg i den här tråden för bygginstruktioner: https://discourse.zynthian.org/t/mim...nthian/8648/38 (man bygger mjukvaran på Zynthian, så det är inte speciellt svårt).

    Den finns även med i den nya oram-releasen för Zynthian (som är under utveckling).
    Senast redigerat av ricard den 2024-04-19 klockan 22:47.

Liknande ämnen

  1. Vi bygger en synt
    Av deleted user i forum DIY - bygg & reparation
    Svar: 218
    Senaste inlägg: 2020-12-15, 12:36
  2. Behringer bygger synt?
    Av jgb i forum Syntar, samplers & sånt
    Svar: 70
    Senaste inlägg: 2016-07-29, 19:59
  3. Bygger du din egen synt?
    Av deadbeat i forum Syntar, samplers & sånt
    Svar: 39
    Senaste inlägg: 2005-12-09, 12:22

Behörigheter för att posta

  • Du får inte posta nya ämnen
  • Du får inte posta svar
  • Du får inte posta bifogade filer
  • Du får inte redigera dina inlägg
  •