Theo Verelst Diary Page

Latest: March 5 2001

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 family, christianity, and other cheats. The simple reason is that it may well be that some people have been ill informed because they've spread illegal 'copies' of my materials even with modifications. Apart from my moral judgement, that is illegal, and will be treated as such by me. Make as many references to these pages as you like, make hardcopies, but only of the whole page, including the html-references, and without changing a 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 upon us to respect the authorities of state, so christians would of course never do such a thing. Lying, imagine that.

Previous Diary Entries

March 5, 2001

I had a page prepared on some programming results that I forgot to bring, I'll just put some results up now, they may be of interest to various people.


As I wrote, I made some text on the subject, and I made a gaussian sweep inversion program, of which this is the source, which I'll put up.

The program generates a matrix of any square dimensions up to 200x200, by giving it random coefficients between -10 and +10, then it sweeps it to upper triangular, seeing it as system of equations with fixed right hand side, then it solves the system by backsubstitution. All this in at most 8 sec or so for the 200x200 case, on an old machine.

To make sure the idea and program works, the original matrix is multiplied with the solution vector, and compared to the original right hand side, usually indicating differences of less then 0.01, for completely random matrices, without any conditioning, which seems fine enough. Computations and storage is only in floats, not doubles.

Clearly, it is handy to have a program to do a decent inversion job efficiently enough, for various purposes, from graphics to physics and various data fitting jobs, I'll think about making a graphics application, and have physical (sound) modeling in mind. I have some other routines lying around (some in tcl/tk I can't use currently) like intersection computations and rational bezier surface subdivision, and (3d) matrix rotations with coefficient caching, that are up to fun enough stuff. Pity I don't have graphics viewing possibilities, except line drawings, and that the compiler does work, by seriously, if I do a 2d array assignment to a float variable, sometimes the whole system crashes. Using a pointer bases access does work with some care, but thats hardly the efficient way of doing things.


I've been looking at the csound man a bit, and of course done some more sound renderings, finding that apart from various missing algorithms from the orchestra files I used, the renderings are at least serious for various sounds, I've tried a few more, and most give good results as far as I can verify now, even immedeately recogniseable as dx type of sounds with ample harmonic ricness and variations and expression strength.

An example I think this time in (at least according to csound) correct wav format:

piano26 wav file

To get an idea of how csound renders these sounds, there is an orchestra file that defines the dx7 algorithm, in this case 7, which I'll not show here, and a score file which lets say puts all the parameters into the variables of that file, and makes the sound the way it is. That takes various tables, and a lot of variables filled in, which is done by a conversion program which takes the parameters from a bank of dx7 sounds in the original instruments' format. The resulting score file looks roughly like this:

;       Test score for DX7 alg 07 orc                                ;
;                                                                    ;
;       (imitates the KNU KLAVA  voice...sorta)                      ;
;                                                                    ;
;       DX72Csound by Jeff Harrington           ;
;       After Models by Russell Pinkston                             ;
;  Thanks to T. Suzuki of Yamaha Corp. for the DX7 frequency tables  ;
f01     0       512     10      1
; operator fpoutput level to amp scale function (data from Chowning/Bristow)
f02     0       128     7       0       10      .003    10      .013
        10      .031    10      .079    10      .188    10      .446
        5       .690    5       1.068   5       1.639   5       2.512
        5       3.894   5       6.029   5       9.263   4       13.119
        29      13.119
; rate scaling function
f03     0       128     7       0       128     1
; eg rate rise function for lvl change between 0 and 99 (data from Opcode)
f04     0       128     -7      38      5       22.8    5       12      5
        7.5     5       4.8     5       2.7     5       1.8     5       1.3
        8       .737    3       .615    3       .505    3       .409    3
        .321    6       .080    6       .055    2       .032    3       .024
        3       .018    3       .014    3       .011    3       .008    3
        .008    3       .007    3       .005    3       .003    32      .003
; eg rate rise percentage function
f05     0       128     -7      .00001  31      .00001  4       .02     5
        .06     10      .14     10      .24     10      .35     10      .50
        10      .70     5       .86     4       1.0     29      1.0
; eg rate decay function for lvl change between 0 and 99
f06     0       128     -7      318     4       181     5       115     5
        63      5       39.7    5       20      5       11.2    5       7
        8       5.66    3       3.98    6       1.99    3       1.34    3
        .99     3       .71     5       .41     3       .15     3       .081
        3       .068    3       .047    3       .037    3       .025    3
        .02     3       .013    3       .008    36      .008
; eg rate decay percentage function
f07     0       128     -7      .00001  10      .25     10      .35     10
        .43     10      .52     10      .59     10      .70     10      .77
        10      .84     10      .92     9       1.0     29      1.0
; eg level to peak deviation mapping function (index in radians = Index / 2PI)
f08     0       128     -7      0       10      .000477 10      .002
        10      .00493  10      .01257  10      .02992  10      .07098
        5       .10981  5       .16997  5       .260855 5       .39979
        5       .61974  5       .95954  5       1.47425 4       2.08795
        29      2.08795
; velocity to amp factor mapping function (rough guess)
f09     0       129     9       .25     1       0
; velocity sensitivity scaling function
f10     0       8       -7      0       8       1
; feedback scaling function
f11     0       8       -7      0       8       7
f12   0    32    -2    93    0   80   85   24   42   
        99   90   0   0   
        0   0   0.500000   0   
f13   0    32    -2    84    0   49   85   24   42   
        99   90   0   0   
        0   0   1.500000   0   
f14   0    32    -2    91    2   80   85   24   42   
        99   90   45   0   
        0   0   1.000000   0   
f15   0    32    -2    92    5   48   85   24   42   
        96   90   49   0   
        0   0   1.000000   0   
f16   0    32    -2    97    3   95   57   99   50   
        99   32   49   0   
        0   0   1.000000   0   
f17   0    32    -2    51    4   85   34   31   50   
        99   51   0   0   
        0   0   9.900001   0   
t 0 20

i01 0 1.2 6.00 87 0 0 0 0 
 12 13 14 15 16 17 2 4000
 3 8 4 6 10 9 11 4

; Algorithm = 7
; Patch name is KNU KLAVA 

f0         1.5                             ;allow for a 4-beat final decay.

This file is edited a bit, the last portion contains the actual score, where I only leave one note in place, lasting 1.2 seconds, while I leave the sample 1.5 seconds, to have a bit of release time before the sound dies out when the virtual key is released.

The 'i01 0 1.2 6.00 87' portion at the bottom of the file specifies the only note being played after the sound has been formed. It takes oscilator 01, makes it start a note at t=0, lasting for 1.2 seconds, taking a middle C (octave 6, semitone 0), with a key velocity (in midi equivalent coding) of 87, which is about 3/4 of the allowed range of 1 to 127 (inaudibly soft to in dx7 terms extremely loud), so a reasonably normal note should resound.

The result is a synth piano sound with strength and interest enough, it is completely worth taking higher quality samples of these sounds (I usually keep the sample rate low enough for my experiments, say 10kHz, but for a single note one can wait for a 44.1kHz sample, takes maybe 10 seconds longer), and for instance generating a multisample for a good quality sample replay unit, either a soundcard with good enough quality and low delay driver or an actual sampler, these types of sounds I think can get there to get close to making dx7 sounds good enough to actually use. And when I'm into it and have some time to put in, I may want to look at more than that, there could be more operators, combinations of techniques, and I think it is not impossible to do this real time on a fast machine. Assuming modern machines can be some dozens times faster easily, CD Q samples should be possible in real time. Then it could be worth doing a better version of the converter, and a good driver program to automatically make multi velocity and key range samples to experiment with, with a 10k sound library, that apart from copyright issues is not a bad idea at all, these sounds are usually worth it.

And of course I might have an accurate look at the csound orchestra code, and figure out how those DX operators are imitated in terms of the various conversions included, I know how they work, but what parameter values maps to which sine generator variable in which way. A fast DSP could run a real dx7 with various voices, no doubt, which at least I would fund completely worth it.

Some software development

I have the sources for a little cad drawing program that may run under the compiler I have on some monochrome resolution that may be good enough to look at, maybe I'll do the effort of changing the inline assembly and getting array indexing that makes the compiler choke into another form. That may be good to do some net drawings, which together with my exisiting synthesis functions, also converted to at least the more portable and in principle normal enough C form I should be able to compile should be able to do some quite interesting things, maybe worth doing a dos program with for more than private use.

I would be much more fun having everything from the harmonics generator bank, interpolation function, envelope and filtering blocks available in various forms and do some hefty analog simulation with computer synthesis blocks on top. I tried a program from, currently, the public domain with analog blocks and an editor to connect them up, which definately makes some strong noises, I even was a bit surprised with the strength of a simple square wave lead sound, but with little effort my current software (the program is even on a page of some time ago) could generate similar sounds, except that I didn't add a Low Frequency Oscilator and modulation with it yet, which seems to be quite of use to make warm string patches, as I remember from times when I'd be into making also those types of sound with my synths.

I could do csound source generating easily enough, too, tcl would be handy but enough working C is fine enough. I seem not to want to use basic for the purpose, though both gw and qbasic are not the worst to actually get some job done, not at all in fact.

What else ?

Well, ehh, the analog devices samples are still lying around waiting to be used, and seriously a 12/14 bit analog to digital converter up to at least various 10s of MEGAherzes conversion rates is tempting. I looked at the little pins about half a millimeter apart, bent a few to be able to connect flatcables at top and bottom at 1/20 inch pitch, and I think the idea took root that that might work. Fyling the paperclip on my soldering iron a bit better, splitting some solder wire maybe, heat sinking the little square chip, and trying one set of 8 x 14 pin may be a good idea.

Then there are fast opamps, impossible to connect almost 4 nanosecond comparators (thats making an analog comparison up to 250 million times per second), symmetrizing opamps and difference amplifiers to make measurement or whatever else equipment with. The microcomputer sys could easily accomodate the additional hardware, except I currently can't add more buffers and replace some half-broken ones, and I don't like to solder all the circuits, for dma and some other purposes, on breadboards into a neat enough and portable machine, because it would fix the components and I'd lke to put in better ones and some more. I got 4 k of dma space now, which is stupid when I'd want to at least put in some serious megabit memories. And I'd like to apply the AD converter, maybe at 8 bit to start with, in such a way that I can store data coming from it with some lenght in memeory at at least ten megaherz or so, which now requires me to double the use of the dma unit needed to program the sampler and synth modes of the microcomputer.

Anyhow, things do work and start to get into the serious range enough, and a little experiment with such an ad converter is definately fun enough. Two more chips would be desirable additionally, maybe three: a symmetrizer opamp do drive the differential inputs, and maybe an additional high frequency, high Q opamp to feed small signals at reasonable impedance, and maybe an additional up to very high Q video range VCA in the signal path, to adjust the input attenuation for optimal sampling, under control of some DA converted signal.

THAT would make the whole thing into a nice oscilloscope and test measurement equipment, though I'm not sure what happens to the specs if the chips are not surface mounted on a well designed pcb. My guess is that some of the 14 bits and thr 40/65 megasamples may be lost, easily, when I put flatcables on those pins..

But still the result may well be quite worth it, and having seen the harmonic analysis results based on the ad's samples (up to I think 80 db resolution for quite high harmonics), and the distortion and noise figures for the other chips that would fit in the signal path, the measurement applicability could at least be more than serious enough. Nice enough product even, with some PC software, or maybe a pda as display and computation engine, at least they seem to have a decent enough 68000 adept in there, I think I'm very sure I at the time I bought a computer based on instead of an intel based one for objective reasons I wasn't wrong.

Come to think of it, now I played around with some older PCs: what a mess, seriously, these machines can do mor e than enough intertesting things, thats not the point, nice spreadsheets, wordprocessing, all that, but seriously, those segments, the limited pointer. So I have this C language, can actually do over 64k adressing without thinking and actually malloc a few Megs (when lucky), then I define an array and bam: no more than 64k elements. Bwweee.

I was very certain at the time lets say 286-es were coming of age that I wanted the fast and straight 68000 with a real usefull meg or more, and now I am reminded why that was.

I looked at some mpeg software, I even got some sources for but encoder and decoder, which I'll definately look at, and I should find a decent enough way to get both the en and decoder to work, that would be good for making some example sound files.

Hello so and so, this synth will sound so and so, run so fast on this dsp, the circuit diagrams are this, and the software, at least in C is this. Is that realy so? Of course, I used the sound software sources that would run in the synth, so why not.

Credible enough.

And again: society

After having though some about the problems I observe, not primarily form a personal point of view, but in general, I am regularly surprised at what is appearently possible and even desired by a certain part of the constituents of a society that should have learned from centuries of (true enough) enlightenment and wars.

Seriously, all the efforts in lets say the sixties (I refered to it before because I'm quite sure that both nazism and the 50's were not without reason not very pleasent living environments), to make freedom and lets say exposure of many evils in society at least more possible seem to be not even regardable in various, also young, environments for I think mainaly a few reasons, which are bad and at least for some should be corrected, hopefully actually, maybe just in words.

A system that is based on the categorical supression and subdual of its parttakers, such as nazism, but also various other isms and groups and ideologies, if that is the word, lets say in beatle in india sense, is never going to make a world work that I may like to live in and see enough value in to sacrifice something for. Even that seems to be a daring statement, and I am aware of the idea that with so many childabusers and God knows what else in many positions of official power, there may be not the ideal of a world where peace and love can even have much place, but I refuse to become of the kind of thinking that therefore I too must accept that that is simply the way life is and even become so myself. That is not acceptable, and there is not a chance in heaven or hell that I am going to accept some liarish kind that I can easily imagine making secret 'sich heil' greetings in their little offices or what else, for being capable of delivering me or others from evil, like another liarish kind which incredibly and stuidly enough received so much power that in the end its followers came physically rolling their tanks over the border of the country I was born in, wanting me to be either put to work in producing weapons for their ruling of the world or maybe put me on a train to the gaschambers to help them with an alledged final solution by aking sure that my potentially quite jewish grandmothers offspring would at least never be found to be actual blessing, or be rich or whatever more stupidity.

I pissed me off that in a world with so much clear enough past, appearently the damnation that is supposed to rule makes the drama in revelation everyday truth in ways that people don't even dare to be open about, and that appearently there is no other way for many to get their ideologies together than that great evil must rule to easier get to another or something, I don't know. I'm sure major damnation, again speaking in general more than personally, is the result of the alledged christian world, after babylonian picture, is causing the world to believe and live after all kinds of incredibly stupd and damning doctrines and want to worship the most insane idols with all thier lives miserable systems and who knows what else.

The reason for wanting to rub it in is that I observe way too clear that the things that did in the past unjustly try to rule the world and got significant backup are still very much part of what certain powers evidently want to happen, and I do believe that it makes sense to kill the little nazi's thinking before it ever get to their actual miserable power stive and damnable ways. And I am aware of it that man is not capable of good in Gods way by themselves, but I refuse to make simple things as constitution and gouvernment by at least trusted enough parties to make the roads maintained reasonably into a non-achievable figment of my imagination, 4 centuries ago those things were fought for and achieved, I don't see a reason to try 10 centuries of feodality and catholic misery to be tried again. There are better ways, they even worked, so no one can tell me I'm seeing what isn't there or that I don't understand what I jsut don't want to see, because it shouldn't be there.