Theo Verelst Diary Page

Latest: 17 May 1999

I've decided after good example to write some diary pages with toughts and events.

Oh, in case anybody fails to understand, I'd like to remind them that these pages are copyrighted, and that everything found here may not be redistributed in any other way then over this direct link without my prior consent. That includes familiy, christianity, and othercheats. The simple reason is that it may well by that some people have been ill informed because they've spread illegal 'copies' of mymaterials even with modifications. Apart from my moral judgement, that is illegal, and will be treated as such by me. Make as manyreferences to these pages as you like, make hardcopies, but only of the whole page, including the html-references, and without changinga iota or tittel...

And if not? I won't hesitate to use legal means to correct wrong that may be done otherwise. And I am serious. I usually am. I'm not sure I could get 'attempt to grave emotional assault' out of it, but infrigement on copyright rules is serious enough. And Jesus called uponusto respect the authorities of state, so christians would of course never do such a thing. Lying, imagine that.

Previous Diary Entries

First my latest software efforts: a physical modeling (wave propagation based, like how a sound moves in a guitar string, for instance) program with a control channel to monitor (and even control) what it does, with on the other end a graphical (Tcl/tk) program that connects with it and can display the latest computed string 'state', that is it shows the curent wave in the virtual string. All that in a few tens of KB, but its a real client-server-real-time-computing-seperated-graphical-interface kind of thing, seriously. And done in the free Cygwin unix-like environment (with gnu C compiler), on a fairly not new windows95 133 MHz Pentium (cyrix) machine. The version you can download here works fine from any DOS windows, all you need is the cygwin DLL (this one is compressed t 200KB or so, decompress it with winzip into the same directory as pms.exe), and Tcl/Tk 8.0 or higher (freely downloadable, about 2 MB, scroll down on this page to find the windows download package and follow instructions). Oh, and the program generates .WAV files that can be used in any other program that read em (like media player, or netscape) for listening to the actual sound from the simulation! Some serious sounds from this particular program (with a lot of parameters fixed) are bass-tones, harp-like sounds, (bass) drum sounds and a woodblock, though they currently require recompilation and tuning of the initial string state in this version.

Usage example,
on a DOS prompt (first 'DIR' to the dir where the zip file is extracted, and where the cygwin.dll is added, too), type:

   pms 256 44100 soundfile mysound.wav outnode 16

The program will now wait for the Tcl/Tk interface program to connect up, which you can do by double clicking on


assuming you have installed Tcl/Tk on your system, which is usually pretty easy. As soon as the graphical window pops up click on the 'Connect' button on the bottom, and the program starts computing waves, and that process can be followed by perodically clicking the other button, which will cause the latest string state to be shown as a graph.

The (string) waveform graph can be about 600 pixels high, so make sure to expand the window big enough to see it! The first time the read button is pressed, an error message may appear, just press ok and it won't appear again.

Once the 'pms' program has ended, the sound file 'mysound.wav' can be double clicked to listen to the sound. Playing around with the parameters (execute 'pms' without parameters to get a short listing of the parameters), for instance the 44100, which is the number of samples (this is exactly one second in CD quality, e.g. try 88200 for a longer sample), or the 256, which is the number of little pieces the string is cut up into (larger number --> slower computations  and lower sound, and vice versa), the 16 is the string segment that is poured into the soundfile: near the ends (3 or 10 or so) the sound is brighter and softer.

Of course I'll make the interface more elaborate, especially the initial string form is very important for the resulting sound, maybe I'l make it editable, or at least make the various possibilities (that can be used by editing the chosen 'init' function in 'main' in pms.c, and 'make all', or change the parameters in the init function itself, e.g. the width of the exponential the rules the initial gaussian). If I have a machine that's fast enough, I'll try real time interacting with the string, and real time listening, assuming I can have a decent soundcard interface somewhere (directX seems elaborate, but maybe I'll try to hack something together). Maybe needless to say, it would be possible to connect several of these little programs on different machines, or at least ot run the interface program on a networked machine.

As far as synthsesized sounds go, and I've programmed, used and listened to a generous amount of them, they are serious, clean, reasonably versatile as far as more or less exponentially damped sounds go, in other words serious enough to work with, though I'm curious what a real time controllable version can crank out, and what some non-linear feedback here and there can do. A final sci remark, as it is now, only the ends of the string seriously change the waveform (and therefore the sound it generates), and the string update algorithm does not take air-resistance into account, meaning there are some limitations, and possibilities for speedup. I did check a 'lossless' one-section-string, which nicely generates a sine wave, with amplitude depending on the initial excursion. All this in 13 KILO bytes of total source code, or about 500 lines (just ran good ol' wc), ha. That's maintainable, at least.There's even a decent makefile.

Why these remarks? Because it makes sense to get down to the bacic things when one wants to do programming and related stuff decently, sensibly, effectively and understandably. seriously, I've been reading some comment pages on (microsofts) C++ pages, and they sure could use some comments from people that did microprogrammable PDP-11s, for instance, its not about how BIG a library you can link to every program, its about what it DOES, and WHY.

Anyhow, I've done a lot of graphical work, too, flyer desing, image processing, digital pictures, I even prepared a internet version of the gallery leaflet I did half the work on, that I'll put on when I remember to put it on zip.