Posts filed under 'koodi'

Sinclair QL sound pitch and frequency

The sound “capabilities” of Sinclair QL are controlled through a single call to the IPC. You pass it two pitches, plus numerous strange parameters that distort the sound in more or less useful ways. To my great surprise I couldn’t find any description of the pitch parameter in any book or web page. For example, The SuperBASIC handbook goes to great detail with other parameters, but doesn’t explain how the pitch is calculated. I’m starting to feel like nobody really understood it and just quoted some technical manuals 🙂 Well, here’s my take on it, based on FFT analysis and a bit of math.

Pitch and frequency are inversely related, like on the Amiga, where you use periods. The highest tone you can output is pitch 0, which, according to Audacity’s FFT is 1313 Hz. At the other extreme there’s pitch 255, which produces a 43 Hz tone. Assuming that the formula is of the form a/(x+c), we get approximately the following relationship between frequency (f) and pitch (p):

  • f = 11336.256 / (p + 8.634)
  • p = 11336.256 / f – 8.634

When dealing with integer numbers you get a good enough approximation with p=11336/f-8. You can download a precalculated list of note pitches and frequencies here.

1 comment December 6th, 2011

Arduino as an Atari joystick

Another project leaves the nest: Joyduino. Lets you use an Arduino board as a joystick for most retro computers. Tested with Linux and Mac hosts with MSX and C64. Not awfully complex soldering involved. Let me know if you happen to use Joyduino for something and I might find the motivation to improve it at some point. Surely a lot more could be done.

Add comment October 15th, 2011

Arduino aukenee

Parin viikon aktiivisen näpellyksen perusteella Arduino tuntuu olevan varsin näppärä laite. Vanhalle C- ja Processing-koodarille oli helppoa ruveta käyttämään hyvin tutunoloista ympäristöä, eikä itse laitteen käyttöönotossa kauan nokka tuhissut. Duemilanove olisi vaatinut vielä eri ajurit, mutta kiinakaupasta hankittu 20 dollarin Uno ei tarvinnut edes sitä. Hämmentävintä Arduinossa on ollut se yksinkertaisuus, jolla asioita saa tapahtumaan: itse rajapinta on varsin suppea ja piikkirimasta on suoraviivaista vedellä johtoja porteille ja piireille. Toistaiseksi kokeiluni ovat suuntautuneet kasibittisten tietokoneiden kanssa neuvotteluun, mutta tekisihän tuolla vaikka mitä, jos osaisi. Laitteen ympärillä on maailmalla kovasti kuhinaa ja erilaisia versioita sekä lisäosia saatavilla monenlaiseen käyttöön, kuten vaikkapa Lilypad puettavaan elektroniikkaan. Itselläni korkein kynnys on tällä hetkellä se, että viidentoista vuoden takaiset vastenmieliset sähkötekniikan opinnot eivät riitä kovin pitkälle, eikä edes kunnolla juottaminen ollut aluksi helppoa. Softapuolella asiat ovat tutumpia ja yleensä vähemmän dramaattisia — virheellisen koodin voi aina korjata, mutta väärä kytkentä käräyttää helposti jotain pysyvästi. Kotimaisia kuluttajia palvelevat ainakin Månsteri sekä Paeae.

Add comment October 9th, 2011

PC – Arduino – Sharp

This time in English. After a few nights of intensive hacking, I’m happy to announce the availability of MZduino, a link cable + software to transfer MZF files to Sharp MZ computers using an Arduino board. Full source and instructions available on the dedicated page. I also linked some older snippets to the brand new Projects page.

The roots of MZduino date back to the early 2000s, when I made my first link cable. Back in the day things were a bit easier, since PCs still came equipped with a parallel port, which was easy to control and access. The next time I needed to transfer something to my Sharp, in the summer of 2011, I had to put together a complex setup consisting of an MSX, a Nowind and a cable from the MSX joyport to the Sharp. MSX was then replaced with an Arduino, which is much easier to lug with you. Rather interestingly, the transfer program running on the Sharp is still pretty much the same as the original one, except that now it supports checksums plus load and start addresses.

Add comment October 2nd, 2011

Takaisin Sharpin äärelle

Sain ensimmäisen tietokoneeni, käytetyn Sharp MZ-721:n, joululahjaksi vuonna 1986. MZ-perhe oli saanut alkunsa jo 70-luvun puolella ja 700-sarjan koneet olivat teknisesti varsin pieni kohennus aiempaan arkkitehtuuriin. Yhdysrakenteisuudesta sentään luovuttiin, muistia oli 64 kilotavua ja näyttipä kone kahdeksan väriäkin, mutta toisaalta sama karu merkkigrafiikka ja yksikanavainen sisäinen kaiutin olivat 1982 jo aikansa eläneitä: onhan esim. Commodore 64 samalta vuodelta. Sharp ei ollut maailmalla mikään valtaisa menestys eikä sen enempää Suomessakaan, joten pelitarjonta jäi köyhäksi. Koneen ainoa realistinen käyttötarkoitus oli siis BASIC-ohjelmointi, jonka kautta aukesi edelleen hengissä pihisevä ohjelmointiharrastus.

1991 sain lopulta PC:n, jonka jälkeen Sharp siirtyi normaaliin tapaan hyllyyn pölyttymään. Vaihdoin koneen jopa pois, mutta onneksi sain sen myöhemmin takaisin. 90-luvun puolivälin jälkeen Sharp tuli vastaan lähinnä muuttopuuhissa, kun se piti jälleen johonkin laatikkoon pakata. Samaan aikaan haalin kuitenkin toisen kasibittisen eli MSX:n, jolle tuli tehtyä yhtä sun toista vuosina 1997-1998 ja kymmenen vuoden luovan tauon jälkeen ihan viime aikoinakin.

Assembly 2011:n lähestyessä iski taasen inspiraatio näpeltää Z80:n äärellä. MSX oli luonteva valinta, mutta rima samalla niin korkealla, että viimeisen viikon alkaessa tuotoksen valmistuminen alkoi näyttää jo toivottomalta. Samaan aikaan olin kaivellut Sharpin kaapista ja pikku sivuprojektina kasaillut sill uuden siirtopiuhan. Päähänpiston seurauksena lähdimme Yzin kanssa tekemään projektia sille ja intensiivisen muutaman päivän puurtamisen tuloksena saatiinkin kasaan kelpo tekele: See Sharp. Yksikanavainen ääni ja kiinteä merkkigrafiikka asettivat tiukkoja rajoituksia, mutta juuri ne haasteet olivatkin kaiken a ja o. Paljon aikaa säästyi sillä, että työkalut kuten SDCC olivat jo tuttuja ja MSX:lle aiemmin tehtyjä kirjastoja ym. pystyi käyttämään lähes suoraan.

Nostalgiaa, nostalgiaa, nostalgiaa. Itse laite on 29-vuotias ja minullakin ollut 25 vuotta, joten tässä on tullut tehtyä jonkinlaista aikamatkaa. “Sarppi” sijaitsi suurimman osan ajasta takkahuoneessa, jossa se lepäsi puisen saunajakkaran päällä mustavalkoiseen matkatelevisioon kytkettynä – taisin nähdä koneen värit vasta kymmenen vuotta myöhemmin. Kasetilta erikseen ladattu S-BASIC ei ollut aikalaisekseen huono, mutta toki varsin hidas. Konekieli vaikutti pitkään hirvittävän vaikealta, vaikka sen mystinen nopeus samalla kiinnostikin pientä pelintekijää. Tänä päivänä työkalut ovat eri maailmasta: C-ristiinkääntäjä inline-assemblerilla höystettynä, Processing ideoiden testaamiseen ja esilaskentaan, make projektin kääntämiseen, Gimp kuvien editointiin ym. Laite on edelleen tasan sama, mutta saman sisällön tekeminen 80-luvun työkaluilla olisi ollut erittäin hankalaa.

Add comment August 7th, 2011

Tuotantoa, tuotantoa

Kaikenlaista Processingilla jälleen. Yritän pysyä vetämäni Processing Clubin hengessä mukana ja niinpä teen viikottain ainakin jotain. Tämä on nyt ollut selvästi tuotteliaampi viikko kuin edellinen, jolloin tuntui tulevan lähinnä kökköä.

  • Maastolentelyn kehityskaari: landscape ja lopulta LOD:n, tekstuurin, veden ja jossain määrin optimoidun view volumen kera landscape_softa
  • Ikinä en ole saanut piirrettyä näin kauniita käyriä itse, mutta konehan niitä laskee hullun raivolla: corpuscules (magneettivuossa liikkuvien hiukkasten simulointia), hieman simppelimpiä käyriä animoituna: straws ja vielä sini/kosiniläjä mandala
  • Fraktaaleja tuli tehtyä jo lukioaikana ja nyt täydennän sarjaan hiljalleen loputkin puuttuvat: fern ja interaktiivinen ikedamap
  • Suunnilleen yksinkertaisin mahdollinen nivelsysteemi ratkaistuna käänteisellä kinematiikalla, iikoo

Add comment November 13th, 2010

Prosessointia

Viime aikojen kyhäelmiä:

  • Holegrid, interferenssikuvioita
  • Bwartsu, mustilla ja valkoisilla viivoilla generoituvaa sössöä
  • Colorartsu4, sama läpikuultavana ja valokuvasta saaduilla väreillä
  • pROSEssing, Antin kanssa tehdyn vanhan 4k-intron Processing-porttaus ml. softasyna. Pari muuta versiota, jos ei toimi: pROSEssing2, pROSEssing.softa
  • Mickey, generatiivinen sarjakuvasankari

Add comment November 3rd, 2010

Lisää vaan Processingia

Kun kerran into on löytynyt, ainakin pariksi päiväksi:

  • Karuhko interaktiivinen Mandelbrot-generaattori: mandelzoom
  • Reaaliaikainen Julia-generaattori: juliaset
  • Dragon-fraktaali: dragonfractal. Tarkoituksella hidas, että iteraatiot näkee.
  • Saa sen 3D:n kiihdytettyäkin: kolmereegl, mutta ainakin Linuxilla vaati Javan turvallisuusasetusten höllentämistä (System – Preferences – Sun Java 6 Plugin Control Panel – Advanced – Security – Mixed code – Disable verification), kun en halunnut nyt ruveta tutustumaan tuohon onnettomaan koodin allekirjoitukseen.
  • Rekursiivinen puu ja jonkun sortin motion blur: recursion

Mandelzoom toimi Processing.js:lläkin, mutta oli todella hidas. Dragonin luulisi olevan ok ja Julian sitten taas hidas.

Add comment October 19th, 2010

Jälleen Processingin äärellä

Opetettuani viikon Processingia koululla se jäi vähän päälle, ja tuli taas näpyteltyä jokunen sormiharjoitus:

  • Piechart. Piirakkadiagrammi-komponentti. Tätä voisi suorastaan käyttääkin johonkin tarvittaessa. Värit hieman sinne päin ja tekstien paikkaakin pitäisi miettiä, mutta kaikkiaan simppelin toimiva.
  • Kolmeree. Hieman hitaanpuoleinen 3D-demotus. Hidastelu tulee jostain muualta kuin kuutioiden määrästä — sadalla menee melkein yhtä lujaa.
  • Objtest. Valmista Objloader-palikkaa käyttävä .obj-mallin pyöritys. Helpostihan tuohon saa jotain ruudulle.

2D-graffassa Processingin pikselipohjainen koordinaatisto on ihan jees, mutta 3D:n tapauksessa parannettavaa olisi. frustum() ei toimi kuten glFrustum, vaan säätää ainoastaan projektiomatriisin muodon. Ratkaisuni oli translatoida ja skaalata grafiikka widthin ja heightin suhteen, jolloin ikkunan koolla ei ole merkitystä ja origon saa ruudun keskelle. Lievänä ärsytyksenä koordinaatisto on vielä vasenkätinen

Add comment October 11th, 2010

Processingin rumat fontit

Kokeilin ekan kerran Processingia Linuxilla ja tuntuu toimivan ok. Jostain historiallisista tai käytännöllisistä syistä sitä ei saa paketinhallinnasta, vaan se pitää ladata sivuilta erikseen. Ubuntussa piti asentaa Sunin Java-paketit (sun-java6-jdk, -jre ym.), sillä heti alkuunsa tuli valitus, ettei Icedtean kanssa luvata yhteensopivuutta. Icedtea kannattanee käytössä muutenkin unohtaa — eipä nimittäin toiminut sen selainlaajennuskaan (sun-java6-plugin koneeseen ja johan soi). Muuten näytti jo hyvältä, mutta editorin fontti oli kohtuuttoman ruma ja palikkainen ilman antialiasointia. Kerrottakoon nyt kaikille muillekin varmuuden vuoksi: kotihakemistossa sijaitsee .processing/preferences.txt ja siellä oleva editor.antialias=false pitää muuttaa muotoon true. Mäkillä fontit ovat tuntuneet olevan vakiona ok, joten sen kanssa ei ole tarvinnut tähän säätöön kajota.

Add comment September 25th, 2010

Next Posts Previous Posts


Kommenttien virta

Aiheet