Theo Verelst Diary Page

Mon Mar 26 20:06:17 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

Mon Mar 26 20:05:58 2001

More greek reading, thinking about certain problems in life, and secure and always ending with working results programming and library use with tcl/tk, which remarkably enough performs fine enough, even given the archaic env.

What a mess ?

Before getting to that subject about a lot of software in the form of tcl/tk procedures, which are decided on by practice again not at all to be a mess, not even when combining databases with bwise, wordprocessing (like this text, which is put into web page form also by tcl/tk), and interactive elements such as a row of tem sliders (just 'sliders 1 2 3 4 5 6 7 8 9 10' i s enough for a nice row of them, even with editable slider names, which can be linked to anything, next time I'll try an interactive bwise canvas to drive with sliders).

Any more sounds, theover? Yip, I've done some csound stuff, which gives nice sounds, but I want to push the boundaries a bit, maybe with pc stored real time samples, I'll see, but anyhow, I've played around with the synth microcomputer and various sounds, and I've digged up the sequencer for it that can be detuned, which makes for definate top sequence runs, realy that stuff sounds not bad. I connected the microcomputer with the playable keys on the other computer system, leaving the even more archaic one with the majority of sounds I made, and I now traded some disc space for some more sounds I did with the analog synth simulator, which is nice, some of them are quite strong enough.

Alternatively I played a steinway some time today, in between other things, which is also nice, I'm quite sure it is not so easy to even get near the sonic (chord) variation such a developed mechanical musical instrument species can be called on to produce, when played right.

I've felt prompted to think about what happens when one plays a chord with subtle enough temporal and key velocity considerations and skills. Suppose one listens to two players, doing roughly the same piece and chord, whats the difference between obvious chord plucking and recogniseable but lets say standard forms of harmonisation, which are pleasant, and an interesting or challenging, or sneakingly inspicuous use of various harmonisations and use of the harmonics relations and melodic and accompanying lines and phrasing, as well as more advanced chord lets say toucher?

First, I've for many years, when I built my own keyboard 20 years ago that was fully polyphonic, like an organ, halfway admired various score music, that did lets say harmonisation and sometimes chords that I found beautifull or nice or remarkable enough, and thought that it would be hard enough to come up with them. I still think so, but it was after some though that I realised that my years of playing quite varied music and quite serious variety of courses and workshops, too, have left me with quite some knowledge and skills in the area, that also deserve to be some more conscious.

Lets see, how many chords does one know? As in general, lets say there are at least three inversion types (based on upper or lower note) per chord kind, of which there are easily about a dozen (major, minor, min7th, maj7th, add6, add9, sus4, sus2, dim, aug, and combinations, not considering more jazzy variations and combinations), and that times twelve possible keys, is about 3x12x12 is about 500. I have no problem grabbing any of them in subsecond time, normally, maybe with some exceptions, but not that many, and normally you could yell them over band noise to me just in time, and they'd come out on time and just fine, at one or more per bar if needed, depending on bpm rate and the 'normality' of the sequences.

So thats knowledge of half a thousand chords, isn't that fine? Maybe, probably it is, and they are all different, some are alike, like shifting most chords in the same inversion a few semitones makes not too much difference, not even for the ones of us with perfect pitch (which seems to be learnable, I hear), so that takes some background memorizing them all, or understaning the key logic under them. I learned most all of those long ago, mainly based on their almost mathematical logic in the equally tempered scale instrument domain, just by playing a few hours for fun every day a year almost.

Looking at the real possible variations and chord kinds, figures are quite more steep, still: a c major with no embellishment or additional notes, taking only conventionally enough sounding variations, that is with most complex harmonic combinations not in the lower or extreme high end of the piano keyboard but concentrated in the central key range, and not counting obvious octave doubling combinations, can easily be thought to have 3 out of 3 times 3 plus 4 out of 3 times 3 maybe plus 5 out of 3 times 3 possibilities. This would look good in a mathematically founded harmonics course at scientific level, with some nice typesetting, that looks impressive, and is even true. Seriously, the point I'm making does take this kind of thinking to at least make come across, there are 3 notes in a octave for a major C chord, obviously the C, the E and the G, and inversions are made by changing the ordering and lets say pitch they appear, in one octave range, there are three major inversions: CEG, GCE and EGC. But taking about 3 octaves where just about every chord naturally sounds like one, one can pick every combination of notes in any octave, maybe limiting the number of 'octaved' combinations, depending on their possible sonic addition, making a choice set of at least 3 for every note possible, so maybe the 'over' idea isn't right, I guess it depends on the way of counting.

In some cases the octaves make a serious contribution, in other cases the spreading of the notes over the octaces itself doesn't make much difference, so the actual count of the possibilities for just one simple chord in seriously usefull harmonic constellation is debatable, but definately not small. Counting all octaves combinations for every key, the number of possibilities for considering 3 octaves is 2 to the power of 3 is 8 to the power of three is about 5 hundred by itself. (every key can be on or off, so two possibilities for each of the three component keys for each octave in every combination). As I said some octaved combinations are not so distinguishable, so that figure I would guess should be about a few dozen at least but maybe not that much more, necessarily.

So now we have maybe 500 times 12 time 12... And then should consider that chords with 4 or more keys have more possible inversions, and that the number of relevant different key combinations usually is also bigger. Quite a number!

And that is not all, because I'm quite aware of the idea that both the key velocity (that is how hard the hammer strikes the string) and the relative timing of the moments the hammers touch the strings are quite important for the resulting sound impression, on top of the obvious 'mood' of playing and intended note timing.

Is that the toucher? Maybe, at least I wouldn't say that toucher is realy about anything else than accurate timing (and I mean realy accurate, up to maybe millisecond range) and velocity accuracy of course based on biofeedback (the ears). At least it is completely possible to make similar chord progressions suck quite a bit and sound special and in between by varying the order and relative timing in which the keys are pressed and how hard. And the difference can be considerable and essential to make or break a piece.

I looked for such not so subtle subtleties often when trying to decide why I wouldn't get certain songs to work right, even though I was capable of playing the notes and chords and melodies in it, even satisfactory. In short, one can't play convincing funk knowing camp fire quitar, even though the chords may be doable. Their variation is sensitive, the plucking is important, the timing essential, and the phrasing makes it all work, and there is no way around it.

I've allways liked the challenge of piano as well as organs and keyboard, because they have so many possibilities to combine notes with slightly different starting times and striking speeds.

A little example

   OCT 1            2              3
|                |                |                |
C  E  G
C  E                       G
C  E  G                    G
C                C         G
C  E                       G               G
C  E  G                    G               G

C     G              E
C                    E     G
C     G              E     G
C                    E                     G
C                    E     G               G
C     G              E     G               G
      G         C    E
                C    E     G

One could apply binary counting patterns to every key in every octave.

Does this all make sense, is it relevant? Certainly. First, the lowest note will normally sound as the bass note, while the upper one usually stands out as a melody note, naturally. Furthermore, this

     OCT 1            2              3
|                |                |                |
C    E    G

sound quite different (and more basic), than for instance this:

     OCT 1            2              3
|                |                |                |
          G      C         G          E

While both are c major chords, with nothing exotic in them, the latter is more singing, more open and maybe fragile and suggests a chord progression (without a dominant), while the first can be most anything, just a c major. That is because of the bass note, the spreading of the notes and the near regular note distance in the chord, and it works best in the mid range (maybe one under or on central C)

Advanced harmonics course stuff? I did follow those, so it could be, but in fact these were amoung the first things I cracked, when in highschool I liked to make those square waves add up through my slightly non-linear lightly filtered keyboard summing rail and amp, preferably not using headphones and the right touch of vibrato or tremolo and some reverberation.

This would sound nice as a closing chord, drop the fifth and even Bach seems it appropriate as such, and seriously the first (above, called the second I think) inversion would suck, I assure you, even though the chord is the same, and it often may not make that much difference:

   OCT 1            2              3
|                |                |                |
                 C         G          E            C

To make clear this subject is hardly started, one may like to figure this one out, and note I'm not even talking about two chord progressions here, just one chord:

   OCT 1            2              3
|                |                |                |
C                    Eb      A      D

A minor nineth added sixth as most jazz musicians would have not to much trouble recognizing, which is quite sensitive to its inversion, as is evident from the 'nine' nomer (as in not 2), and a chord that takes some work to lay down right, in terms of relative velocity of the keys (emphasis on the added 6th (the a) makes it sort of jazzy, the nineth (the d) shouldn't be to dominant, unless its part of the melody, than it is fine, and the whole chord works as starting int between or ending chord with the right touch, which is interesting, and in all cases it sort of is interesting and jazzy or subtly ringing enough to be nice while not being harmonic enough to be dead obvious, though flexible because of the space in it because of the sufficient spread of the dissonants.

With the same notes, this would be tension, though definately worth it in a nice rythmic chop, probably a progression, or intentional harmonic light alert in not too jazzy songs:

   OCT 1            2              3
|                |                |                |
             A   C  D Eb

Clear enough certain key combinations cancel some of the total number of chords that are, because they are similar or the same, the above would also work in a augmented Eb, a D7-9, or an Asus4-5 (or maybe 11+) way. depending on context and bass foundation, which are basically chords of quite different nature, so the inversion of (a part of) the chord makes quite a perception difference, evidently as well as the transitory character and the obvious melodic or countermelodic lines that happen to form them, or the harmonic progression they are made part of, but I prefer to stick ot mainly one chord, and than go to just two for understanding the harmonic basics.

Are there solid reasons for these considerations? The foundation is without any question to be found at least partially in a number of scientific and theoretically solid thoughts, mainly the beating patterns induced by the dominant harmonics in a chord and the notes that make up for it, the result of the combined harmonics patterns together, the resonances that occur in the sounding strings in a piano or other instrument, inthe former case including the coupling of strings with the former in mind, and the change of harmonic frequency and of course their changing relative volume for different key striking speeds, due to the non-linearities in resonating string and suspension system.

More than enough for later.

I've loaded the latest tcl/tk library into the older version 8.0p2 I can run, my own library, that is. That basically is a about 100kB, fitting-on-floppy text file with tcl/tk procedures for bwise, the graphical block editor and interactive application progamming env, as well as procedure editor, text window, and more handy procedures, even up to web page access and html server routines, as I described some pages ago.

I was of course interested wether the non-internet (no sockets on this sys...) stuff would work, and indeed I've been able to run bwise as I described, and also the latest library version of the routines seem to have not much backward compatibility problems, except for some error catching routine, which of would be permitted, as long as it is not the reverse.

I've tried the database routines I've made, which work fine, and a database in a variable even on this sys with the tcl built in variable house holding works fine for practical databases, such as the data about all blocks on an interactive bwise application canvas, for instance all blocks with their inputs and outputs: a few commands, and blip, all blocks in the database, ready fo searching and scrolling.

I didn't resist the idea to make a little bwise block 'dbget', which takes a search pattern as input, and gives search result in the currently loaded database as output. I'll do a graphics representation soon, this is fun enough stuff that would make 'even' w2000 hipper straight away!

So we could have a 'foreach' block composing a little text for every adressee in a database with certain properties picked by an entry on a bwise canvas, and automatically prepare a webpage for them, that could be made available on the quite efficient integrated tcl server straight away even, and all this interactively, without complication or programming more than some tcl to give blocks their content that aren't prepared yet. A product would definately be worth it, even though all isn't perfect or decided on, such the network propagation rule routines, explicit name space seperations (tcl does provide it, but I like also to just access every sensibly enough variable straight away), and some improvements in the graphics interactors.

A just as forward issue is the real time control of all the blocks in an interactive bwise graph, lets say one may determine the content of block functions and variable in between (partial) runs of the network, and of course fire and change the topology of (sub) nets at will at any time, also dynamically.

This morning, I tried the menu and popup menu ideas I've tried before in relation with this subject, mainly to automatically create a popup menu for each item (block) on the bwise canvas, for instance to fire the block with a popup menu, and to show editable fields of the main block properties such as the fire function, the input and output data, and maybe the input and output names. Connections already can be made and broken or relinked graphically, at any time.

Most 'run' or 'sequence' facilities I've worked with I've made graphically feeding back activity, slowing the block calling, which is often not bad, and even during the automatically continuing motion of activity through the bwise networks, connections and thus the sequence of data being fed forward and processed can be changed by relinking blocks interactively. And that even in this version.

Tue, Mar 26 2001

Another day, I just decided to not yet put the above page on, there seems not to much reason to go for a possibility to through the snow, tonight I guess I'll be doing so. Meanwhile I was looking at some bwise stuff again, mainly because it is of interest to have a strong enough language like tcl available with a UI that can be developed with sub second interaction time (no compiler or hasle), to do all those things many programming languages are not to efficient in, and to play around with the canvas with various blocks.

The bwise canvas and simulating block behaviour

I've not realy decided on the angle of preventing some at my former university to take to much credit for the idea, but drawing circuit diagrams and making parsable texts to represent them is older than I met any one of them, and I did both before I ever was there with effective results, so I guess no specific angle is needed.

It was part of my official task to deal with the net-editor with coupled simulator there to make it prepared for such demanding project as the graphics project should have been, which is not a bad idea, and of course the main idea of making an environment that facilitates and maybe guides the computer hardware and software design process associated with building a fast graphics machine and making it work is a valid one, and one that in general gets and deserves attention.

Some earlier diary diary pages contain examples of C code and cygnus unix like development of sofware for physical modeling sound synthesis, and of course I've made more than a few pages on electronical designs in a way that many electronical engineers find natural enough, also using graphs for schematic diagrams, coupled with a (complicated and extensive) electronic and digital circuit simulator.

Also, I've presented a screen dump with an impression of an active DSP software development page, for the Texas Instruments TMS320C6202 (and compatible) digital signal processor chip, which when programmed right can run quite competitive and faster than a pentium computer system would, and for which software development is more about the things DSP's are for: fast signal type of processing.

For designing computer systems, the idea of abstraction and many complicated, coupled graphs is an onviously used design method, and the idea is also that for decades already, chips are made with the aid of computer programs to deal with all kinds of annoying design tasks, such as keeping track of all parts, connecting up many lines automatically, generating parts of a chip automatically, for instance by letting a program do a repetitive task automatically. For circuit boards, it is common to just make a file with all the connections listed in it, and let a computer do the routing of every little wire in some efficient enough way, and to feed the result to a machine that automatically makes the whole printed board layout by using photographical or other means, and to automatically drill all the holes, make labels, all those things.

Electrical and other engineers benefit from computer services these ways already quite long, and many projects and products would not be possible at all or quite hard without such computer aids, that is they are not luxury, and they realy are part of the essence of the work, unlike many PC's being used because a typewriter is not so easy to produce error free and typesetted text with, though that of course too is legitimate added value.

The idea of 'designing' software with software written for that purposes is also not new, a while I've given at a company that made their business of such software development tools, at I guess one level higher aggregation level than compilers, though I think that many professional core software designers have pretty much stuck with the means that exist, often in textual form.

For communication software and systems, it makes sense enough to use graphical representations, and it probably isn't for nothing that amoung others tcl/tk as scripting and UI language is known in that world.

Designing computer software using graphical tools and (sub) programs is certainly not a bad thought, and applied in many ways, probably also quite some unknown to me. But seriously, even designing software that does extensive or essential communication jons at all right enough to take serious professionally is not common, let alone that I know of many generally known packages to do it with. Very often when processes and inter process communiction is involved, one is left with long existing types of methods and libraries, regularly just not compatible enough, except for the fundamentals which are for instance tcp/ip, which one needs to learn how to use using not that popular written text books and manual pages.

I'm sure I'm not aware of quite some things that do exist in those areas, but also that I'm not green at all to programming such things, and also not to the theory that exists in the communication theory area.

The possibilities for possible traces in communicating software is a major factor to consider in understanding that there is a need to tackle communicating software design, such as for limited applications is of course background knowledge in the communication area.

Analyis of communicating software, even when all events are tracable, can be complicated simply because of the probability ranges spanned by all possible communication patterns stemming from the faculty in their possible number, for instance for possible orderings of related unrelated events. When ten processes each emit a message, the number of possible orderings of those messages is ten faculty being about 4 million. For just 10 processes each producing 1 message!

When some machine takes those messages as inputs, it is quite possible that the order of their arrival is important, so that it may be needed to consider those in theory 4 million possibilities for only one set of inputs, and deal with them in a theoretically and practically satisfactory manner.

I just made menus that can pop up for each block, allowing the user to invoke the blocks function, make it transfer its output variables to the next blocks' inputs, make it start a sequence of block invokations by the topology of the network, or present a window with all variables associated with that block, and their contents as editable fields. Those variables include human readable names for the function and input and output fields, so the idea is that the whole block is presented in this window. The popups work fine, and a number of those variable windows on the screen together with hand-driven control of every behaviour in the network can make for quite overseeable network activity programming and checking.

When a sequence of operations is started, all changes in variables can be traced immedeately in all opened block info windows, or even changed, during graphical simulation, for instance under control of a sequencer block.

What's with those wanted pages

They might need updating according to the evil character of some one it (not that many, I guess), but the idea was first to make clear that indeed there has not been a good chance to deal with some people I've wanted to know in the past because I had no idea of what their life had seen and possibly was still facing in terms of personal misery, so major that my opinion on their way of dealing with me and life clearly changes, at least to understand that in the personal sense the amount of blackmail in their lives must have been very considerable, explaining various in my opinion earlier, at least not ordinary behaviour. Also, I wanted to make clear that what has happened in the past in personal sense has not changed my idea of wanting them, though that may be possible or planned by others, no matter how grave personal injuries others may have inflicted.

When some as a result of that or just in general are evil in nature, and I didn't know very well all on the list, my wanting ceases evidently, that goes without saying.

But some I've been near in various ways have been important, also in thinking, and I like to have them near, and would like them to mean more than just being near, as far as such is desirable. Why? I don't know, the women/girls I've been living near or for some time with have meant something thats valuable in my personal life, probably at times also in other parts of life, and I don't like that they are not there now.

Some I've been very near, and in neither case that ended because of my will, I liked to be near them, and as with some sleep with them, and have se with them.

I guess one can live without, that's not the issue, but over the whole women/girls have been important in my life, even explicitly, and I don't like it that some of the most meaninfull are not there, even for grave reasons.