Kaivoin arkistosta tälläisen huvin vuoksi. Spänk-kurssi eli signaaliprosessorit ja äänenkäsittely (nykysellään näemmä ELEC-C5340 sovellettu dsp) oli aivan eeppinen MATALIMMALLA ABSTRAKTIOTASOLLA (eli tietysti ASSYLLÄ) touhuttava koodikurssi ajalta, kun miehet olivat rautaa ja tietokoneet tietokoneaineesta tehty, mut nykyään kurssin harkkatyöt tehdään Matlabilla ja C++:lla eikä DSP-assyllä niinkuin silloin kun minä ja pikkuveljeni oltiin nuoria ja komeita ja käytiin kyseistä ryhmätyökurssia. Nykysellään kurssin rautaplattikset ovat kaiketi kuihtuneet pois, kun muistaakseni meidän aikaan kurssi järkättiin vikaa kertaa. Tragedia. Mutta meidän koodi oli kiva.
Tehtiin virtuaalinen analogisyntikka, eli tuttavallisemmin softasyna. Tämä softa pyöri hienolla Chameleon-räkkilaitteella, jossa oli Motorola DSP56303 (24-bit DSP, murskaa numeroita) ja Motorola ColdFire MCF5206e (32-bit mikrokontrolleri, hoitaa UI:n eli mm. nappulat ja MIDIn). Vekottimessa maistui vahvasti muinainen legacysaasta, kun piti flashata jollain windows-purkalla joka taisi olla win 3.11:n ajoilta, ainakin ikkunatyylinsä mukaan. Toimi kuitenkin Winellä. Vai pyöriteltiinköhän jopa virtuaalikoneessa, evm. Simulaattorikin (joo, sellainen oli! ja oli ihan karsea käyttää) ajoi varmaan sadasosalla oikean raudan vauhdista, joka tais olla 100 MHz luokkaa.
Softasynassa oli useita eri projektin vaiheita, kun ekaksi piti arpoa jonkinlainen softa-arkkitehtuuri sekä suunnitelma että mitenkäs sitä ääntä syntattaisiin. Tehtiin perinteinen destruktiivinen synteesi useammalla kanavalla, joita allokoitiin dynaamisesti sitä mukaa kun nuotteja tuli MIDIstä sisään. Jotain kymmenisen kanavaa kai pyöri meidän testi-instrumenteilla 48 kHz sämpylävauhdilla. Projektisuunnitelman jälkeen nyplättiin bittiä; DSP-osa koodattiin assemblyllä fixedpointeilla. Kurssilla/tässä harkassa tuotiin esille myös muutamia ongelmia mitä esiintyy naiiveissa saha- ja kanttiaalloissa, elikkäs aliasointia. Käytettiin jotain kikka-algoja, joilla sai päriseviä harmonisia vähän piiloon kun reunoja pyöristettiin. Keskityttiin koodin laatuun eikä niinkään kaiken optimointiin; jälkeenpäin kyllä huomattiin, että ei käytetty mm. raudan superlooppikikkailuja ihan optimaalisesti ja tuota olisi kannattanut tehdä vaikka muutaman kymmenen samplen blokeissa. Jos tekisin uudestaan, niin tekisin sillain.
DSP-prossut ovat ihan kivoja, kun ilmeisesti löytyy jonkin sortin rautatuki fixedpointeille. Tässä oli jotain erikoisia pyöristysmoodeja, ja pariin akkurekisteriin mahtui enemmän bittejä eli summaus about ykkösen mittaisista kertoimista ei ylivuotanut ihan heti. Samanaikaisesti aksessoitavia muistiväyliä oli kolme: yksi käskyille, yksi vaikka kertoimille ja yksi vaikka datalle, niin sai ajettua filttereitä tosi nopeasti.
Käppyröitä tuli piirreltyä paperille tsiljoonasti mm. oskillaattoreista ja ADSR:stä, ja simulaattorilla ja gnuplotsaastalla sitten verifioitiin. Kuuntelemalla sai varmistettua vain sinne päin. Lopulta tuli ihan kiva projekti, vaikkei oikeastaan kumpikaan meistä osannut/osaa musisoida. Vempain söi kuitenkin midiä sisään, niin sille saattoi soittaa valmiita biisejä. Harmi ettei tallenneltu mitään musaa tuosta muistoksi, mutta sellaista tyypillistä synakaltaista bzzpiippailua se oli. Kuulosti ihan hyvältä ja instrumentteja saisi tehtyä helposti lisää. Löytyi erilliset oskut ja filsut ja reaaliaikaisesti konffattavia parametreja ja LFO:t ja muuta mukavaa.
Oli sen verran järkevä softa, että koodasin suunnilleen saman tyhjästä uusiksi viikonlopussa C:llä sinne bare metal hackathoniin.
0 kommenttia
Oma kommenttisi
Mielipide tämän sivun asiasta? Kirjoita toki. Älä raapusta kuitenkaan ihan asiattomia juttuja.
Jos on yksityisempää asiaa, tarkkaa kysyttävää tai aihetta pidemmälle keskustelulle, käytä yhteydenottolomaketta kommentoinnin sijaan.
Hölmöt kommentit saatetaan moderoida pois jälkikäteen.