Theo Verelst Diary Page

Latest: 26 July 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 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 uponus to respect the authorities of state, so christians would of course never do such a thing. Lying, imagine that.
 

Previous Diary Entries
 

July 26 1999

Some daily stuff
I've taken bits of holydday lately, no 9-17, not too much work on the projects I've started, though i the end I've still worked most every day (something), and done quite some things, but I looked for being a bit quiet and withdrawn, since I have a place to be that after quite some time, and because I wanted to think and let things settle a bit. I don't have a computer at my current home, so the 'almost daily updated' is hardly a valid statement, but I want to at least write some more, in my mind relevant text.

Surprisingly enough I didn't get a single sensible email back from my family or some relatives from the past, just a load of crap, completely missing the point (like what happened to my stuff, who's been messing with my bank account, and why and who's responsible for that, what's the outcome of the 'nutcase' lawcase (appearently I wasn't, otherwise I wouldn't have walked out free, but still), all that).

The crazyness of some responses I got from former 'acquintenses' is realy mind boggling, especially since I read the book on the abuse that certain people appearently should undergo while being expected to be a respectable, complete criminal loving citizen, and pet certain kinds of sleey fellow (emotional) abusers on the back. I can understand that as average (lets say) man it is not trivial to change the situation of a victim as the one I read about (Jolanda, see previous pages), and that in general appearently the whole of society as I have lived in has been infected with this and other kinds of (for me) incredible tortures, but that is no reason to add to it or even abuse even more. I find that so repulsive that I don't know ho to respond to that. 'You should not have a single free moment or place or thought, because otherwise maybe you'l want out', what is wrong with that? Affraid that the kind will not be enslved to your bosses or wannabee rulers anymore? What is that?

I felt thoughtfull of the past of some serious abuse victims, and it makes me feel impossible. I just don't know what to think, let alone say about such horrible events. I'm not like that, that I am sure of and that may be of use. I would never ever want anyone near me to even think about such tortures unless there is a purpose. Finding new life that has nothing at all in common with that whatsoever I feel is the only realy valid option.

Anyhow, I'l want to pay my depts, have enough resources (I guess preferably work induced) to be able to live, and be free to go and preferably be with at least a few that I want to love and be close with.

Obedience to whom/what?
My previous diary entry (I found out btw that some links are wrong, but I guess some number extrapotation in the URL and trying can get most readers back to all previous ones, it starts with '1', and jumps back and forth between a few sites) ended with a section on obedience (spelled the french way), because I know that that is important, but equally imporatant is the answer to WHOM one should be obedient, and preferably, WHY.

Simply put I believe there is an almighty, all-knowing, eternal, good, just and holy God that is worth obeying. And I believe that every one can know at least some basic stuff by the revelation of His person in His word (wherefore I want it to be translated and interpreted preferably exactly right), and probably by observing the results of his His Holy Spirit at work, and that the ones that have had the priviledge of being found by his Son, are restored in contact with Him, and can even ask his Spirit to fill them, to enable their (newly gotten) spiritual faculties, on top of perceiving they have a heavenly father.

Oh, and I also know for sure there are millions of other spirits and people that impersonate I-don't-know-what, that are NOT worth even taking serious or for anything at all., so it imperative to assume that it is quite possible to be tricked in this respect, wherefore trust between (preferably well-edified, trained, matured and trustworthy) fellow believers can be of essential value to discern between truth (in the normal, non-political, sense of the word) and lies, and angels of light and the real Gods' spirit. This to make clear that it is necessary to test what one deals with, and that a life in Him in essence is the contrary of slavery, as it is so common in natural life. There is ample scriptural material to back these things up, clarify them further, and make clear that a consistent view of the spiritual (including the things of God that are visible for the spiritually dead (seperated from God) natural man), that is completely consistent and truthfull is probably the best basis for the trust that can exist between the ones that arew saved by Him, and in line with the main meaning of greek word ('pistos') for 'faith', which is trust.

In short I believe, on biblical basis, that God is not only trust worthy, but good, loving, capable of fathering, mothering, relating in a mature and to the point way, and worth following, because He has a will for the life of of everyone that finds Him, personal, and the best of all possibilities, because is is capable and willing to love one more than any human being can.

So apart from gaining trust in what he communicates, He is the one that should be lord of ones' life, simply for the fact that he is best at loving a person. In the most effective, short and long term, and fruitfull way. And when someone else does the same, the things He has planned and given can be the basis for that.

The natural, the spiritual and the brain
The spiritual has been a completely feeling-wise thing for me until maybe 5 years ago. Before I considered myself 'personal' christian, I only had (sometimes strong) feeling about situations, people and places, but gave them only completely 'physical' explanations. The only spiritual things I considered existing was that there most probably was a GOd up there that heared me when I prayed 'to' him. When I learned about spititual gifts I considered the spiritual basically to still exist of strong sort of 'gut-feeling' wise perceptions, with a 'voice' of the holy spirit possible, and possible (and of course not prefered) of deamons, that are subdued to the name of Jesus to be cast out.

Now in fact, that was a not too complicated picture, it leaves one with the question of what the spiritual is made of, and/or what the 'carrier' (I happen to be electrical engineer) of it is, and pretty much at rest about any non-natural communication methods.

Not so long ago, when I, primarily because of Ingrid, started to strongly consider human-to-human communication might be a feasible spiritual function, it immedeatly ticked me of that that left me with the question as to what mechanism might enable this, how reliable that is, and what the implications of the scriptural material that concerns it are.

In a simple picture:


            |
            |
          link
   /O  | )<--->(   O
 --||--     |      |
    |       |     /|\/
    |       |      |
   / \      |      |\
            |     / |
            |
  human A   |   human B

I've here suggested the 'link' runs basically over the head, but the is of course reason to believe it is possible that other members are involved as well.

In fact the main question is: what is the carrier for that 'link'? Is it physical, is it 'spiritual' in some completely unknown mysterious way, or is the spiritual effectively physical?

In short what can one expect to be the reason, or the natural foundation for lets cal them 'spiritual connections' as opposed to more tangible forms of communication such as speech, visual, and touch-wise?

As being not unedified in both models, the basis of most natural phenomenas and applying these, and considering a few candidates, I would quickly be inclined to discard electromagnetical forms of radiation, simply because the presence of virtually every frequency range of these would then make a person mad I guess. A few watts even of a phone next to the brain, or the ever present 50 (60) Hz mains fields are few examples that never gave any sensation at all, while the field that I could perceive from the other side of the world from another human being in strength should be incredibly small compared with these.

There are a few atomic-range forces that may be the basis this form of inter human, inter-brain, and/or inter-body communication, but they are very weak, so I am left with two options of 'known' physically known force-appliers (what a word, lets see 'causers of interaction at a distance'): a semi static electical (or magnetical) field, or gravity. As readers of some of my pages have no doubt noticed, I have a appetite for considering gravity as a potential carrier of inter-human unmeasurable communication. In short because there are various arguments in favour of it, and because it would be fun, basically. That doesn't even sound semi-scientific anymore, but I assure everyone that I can give in dept, and well founded arguments that thusfar have given me no contradictions.

I am well aware of the main difficulty: the incredible weaknes of it, and difficulty of making a gravity field change, in other words how to transmit a dynamic message with it, but I have a few at least imo possibly valid suggestions that would be more then interesting to put into models and try to found by experiments.

A moonlanding makes for a good basis to figure out wether normal electromagnitical waves could carry spiritual links, because the speed of light is not enough to make them instantaneous, so one may see if there is still a close, immedeate link with known ones, and verify them over the radio connection, possibly bouncing a 'message' or thought back and forth inboth directions between different person-pairs to have a better way of assessing the 'link- speed', compared with 'fast as light distance' of a few seconds. Never read about it.

More down to earth: coupled vibrating strings
Is this physics, or what?

Simply put, I got into a perceived idiosyncracy of the double coupled waveguide software, to figure out why I got very high (about 2 samples wavelenght) components in my waveguide signal, which easily made it distort and sound horrible, and found out I put it in there myself, by exciting the virtual string with a very 'spikey' initial wave. This high frequency component also generated clipping (beter put overflw) distorsion, which now is back to normal, that is only present when the string segment displacement or velocity values exceed the 32 bit accuracy induced limits.

What follows is the C-source code of the two string example for the two string simulated pickup and amplifier-feedback virtual string algorithm, for those who want to compile it and try it for themselves. It requires a standard compiler with (standard unix type) sockets, and the same connection code and makefile as the previous version, and also requires the tcl script present with that version, because it acts as server that waits for the string monitor program to connect when it is run.

This version also writes the initial state to a (seperate) tcl file, for experimentation purposes. Of course the socket stuff can be stripped of, the function names are fairly self- explanatory, to arrive at a fairly simple C-program, that e.g. easily compiles with the basic Gnu compiler, to generate sound files, but its more fun to for instance install the CYGwin environment, and 'make' the who thing, and run it with the monitor script to see what happens.

This version has a nicely shaped (squared) exponentionally damped (asymmetrical, as most strings are played) few period cosine function as a initial excitation. Sort of what might happen with a fast plectrum strike. The feedback control in the 'update' procedure determines wether the end result will eventually continue to oscilate autonomously or damp out because of the dissipative near-end point virtual string segments. When it 'feeds back' both strings are invloved, and still influence eachother. The number of string segments determine the base frequency of the string, because of the virtual string length in terms of wave (group, though that in non-lin sense isn't a valid concept) propagation velocity. Because the end segments have frequency dependent behaviour, the 'effective' length of the string varies with the 'standing wave'-s principal frequency (or the harmonic component with the most prevalent amplitude) with a few string segments, so if the ratio is an 'easy' number, such 2 to 3 (for a fifth interval) by choosing 150 andd 100 in the program length parameters, the resulting perceived frequency ratios of the strings Viva advanced harmonics chorus, as any 'real life' string instrument knows, as opposed to almost any synthesizer, with the sole exception of well programmed FM synths, or maybe some complex modular synth patch, and of course a sample of the real thing, but try to make that velocity sensitive without being laughed at or becoming bored to the bone after making your ears acustomed to the few velocity switched samples you've been able to squeeze in for a significant number of keys.

This, of course, could be directly put in a product promo flyer.

Does that mean this is ultimate simulator for this kind of string instrument apart from accuracy (number of bits, (end) filter lenght, number of segments and pickup and feedback interaction point modeling) ? No, in fact a string can vibrate in two directions, even rotate, and an instrument body is a very complex non-linear and non-polygonal resonator that interacts in may ways with what goes on in this type of algorithm, there is a lot more of interest in this type of instrument modeling to be considered, prototyped, and perfected, to arrive at feedback free, multi-stringed, virtual material, midiable (why not increase MIDI's bandwidth with a factor of a 100?) instruments that sound musical and useable.

The source code that follows is parameterized in the number of strings, that it can handle more than 2 (e.g. 6) strings as well by changing a define and the argument parsing code. To finish an remark from above, the ratio of the number of string segments inversely proportionally determines the ratio of the main perceived frequency components of the output sounds, apart from a fraction of a few string segments, which in fact is fine because that will make a fifth a bit different from a 'perfect' one, which would sound unatractive. I didn't excactly test this in detail, and there is ample room for theoretical basis here, but it is useful to know that the effective length of the string is something between n-2 and n-6, where n the number of segments, and that this is dependent on the the shape (primal frequency) of the waveform traveling through the string and/or the frequency of the standing wave. Would like to see a Bessel function (the harmonic contents of a frequency modulated oscilator) analysis of the frequency modulation in the harmonics content because of the non-linear string interactions (which in this case is the 'feedback'), seems like complex material in the normal meaning of that word, probably unsoluable even for simple cases. Non-linearly responding end-points (the wood of the body) are on the will-want-to-consider list, too, but first, a real fast processor or a (1.6 Gips?!) DSP, to make the thing real time, and preferably respond to real time controllers.

/************* wave.c: Basic Waveguide Code *****************/
/* Copyright T. Verelst, this code may not be used except 
   for non-commercial purposes without pior written consent of 
   the author, and may only be transfered as a whole */
/* theover@yahoo.com */
/* 7-7-99 */

/************* wave.c: Basic Waveguide Code *****************/

#include <stdio.h>
#include <math.h>
#include <fcntl.h>
#include <string.h>

#include <sys/types.h>

#define PREMUL 32768           /* Fixed exponent  */
#define MAXN   8192            /* Max # nodes     */
#define SRATE  44100           /* Wav Sample Rate */
#define NSTRINGS 2
#ifndef PI
#define PI 3.1415926535
#endif

int notcl = 0, nosound = 0;    /* to prevent (time expensive) output */

int e[NSTRINGS][MAXN], v[NSTRINGS][MAXN];          /* displacement and velocity arrays   */
int u1 =1024, u2 =1024;        /* combined values of (c/m)*PREMUL*dt */
int n[NSTRINGS];                         /* number of nodes                    */
int steps;                     /* number of (full wave) iter. steps  */
int fd;                        /* file descriptor for sound file     */
int binoutnode;                /* node to output in sound file       */
FILE *tclf;                    /* socket driven tcl file (ptr)       */
int s;

extern int do_read();
extern char in[], line[];
extern int serv_main();


init(n)
int n[];
{
   int i;
  for (s=0; s<NSTRINGS; s++) {
   for (i=0; i<n[s]; i++) {
      e[s][i] = 0; v[s][i] = 0;      /* init to zero energy / strain       */
   }
  }
  for (s=0; s<NSTRINGS; s++) {
   for (i=1; i<n[s]-1; i++) {
      e[s][i] = (int) (PREMUL*20000 * 
                (cos(
                   0.5* 2.0 * PI * (double) i/ (double) (n[s]-2)) 
                 ) 
                 /exp(
                   pow(
                      ((128.0/8.0) * (double) (i-n[s]/4)
                         /(double) n[s]
                      ),2)
                 ));
      v[s][i] = 0; /* (int) (PREMUL/2 * cos(2.0 * PI * (double) i/ (double) n) ); */
   }
  }
   return;

}



inittcl(n)
int n;
{
   int i;
   if (notcl) return;
   printf("if {[winfo exists .c] == 0} {canvas .c; pack .c -expand y -fill both}\n");
   printf("proc graphb {n} {global a; for {set i 0} {$i<$n} {set i [expr $i+1]} {.c create line [expr 2*$i] 300 [expr 2*$i] [expr 300-$a($i)/30] -width 1 -fill red}\n.c create line 0 300 [expr 2* $n] 300 -fill green}\n");
   printf("proc graph {n} {global a; for {set i 1} {$i<$n} {set i [expr $i+1]} {.c create line [expr 2*$i] [expr 300-$a([expr $i-1])/30] [expr 2*$i] [expr 300-$a($i)/30] -width 1 -fill purple}\n.c create line 0 300 [expr 2* $n] 300 -fill blue}\n");
   printf("set nnodes %d\n",n);
   printf(".c delete all\n");
   for (i=0; i<n; i++)
      printf("set a(%d) %d\n",i,e[n][i]/PREMUL);
   printf("graphb $nnodes\n update \n after 2000\nset vt 2\n");
}

initbin(n,s)                     /* could add a .wav header here   */
int n;
char *s;
{
   if (nosound) return;
   fd = open(s,O_RDWR|O_CREAT|O_TRUNC|O_BINARY);
}

iwrite(fd,n,l)
int fd,l;
unsigned int n;
{
   write(fd,&n,l);
}

initwav(n,s)                     /* Proto wav header, n=nnodes, filename */
int n;
char *s;
{
   if (nosound) return;
   fd = open(s,O_RDWR|O_CREAT|O_TRUNC|O_BINARY);
   if ((void *) fd == NULL ) return;

   write(fd,"RIFF",4);
   iwrite(fd,(2*steps+36),4);
   write(fd,"WAVE",4);

   write(fd,"fmt ",4);
   iwrite(fd,(0x10),4);
   iwrite(fd,((short) 0x01),2);
   iwrite(fd,((short) 1),2);              /* Mono */
   iwrite(fd,(SRATE),4);                  /* Sample rate */
   iwrite(fd,(2*SRATE),4);
   iwrite(fd,((short) 2),2);
   iwrite(fd,((short) 16),2);

   write(fd,"data",4);
   iwrite(fd,(2*steps),4);
}


outputtcl(n)
int n[];
{
   int i;
   if (notcl) return;
   for (i=0; i<n[0]; i++)
      printf("set a%d(%d) %d\n",i,e[0][i]/PREMUL);
   printf(".c delete all\n");
   printf("graph $nnodes\n update\n after $vt\n");
}

foutputtcl(n)
int n[];
{
   int i;
   if (tclf == NULL) return;
   fprintf(tclf,"set nnodes %d\n",n[0]);
   for (i=0; i<n[0]; i++)
      fprintf(tclf,"set a(%d) %d\n",i,e[0][i]/PREMUL);
   fprintf(tclf,".c delete all\n");
   fprintf(tclf,"graph $nnodes\n update\n after $vt\n");
}

outputbin(i)
int i;
{
   char *cp;
   int t;
   if (fd > 0) {
    t = 0;
    for (s=0; s<NSTRINGS; s++) {
      t += e[s][i]/PREMUL;
    }
      cp = (char *) &t;
      write(fd,cp,1);
      write(fd,cp+1,1);
   }
}




propagate_fixend(n)            /* Compute new velocity and           */
int n[];                         /* displacements once for all nodes.  */
{                              /* (more optimization possible here)  */
   register int i, tt;
  for (s=0; s<NSTRINGS; s++) {
   for (i=1; i<n[s]-1; i++) {
      /* v[i] += (u1 * (e[i-1]+e[i+1]-2*e[i]) )/PREMUL; */
      v[s][i] += e[s][i-1];
      v[s][i] += e[s][i+1];
      v[s][i] -= e[s][i];
      v[s][i] -= e[s][i];
   }
   for (i=1; i<n[s]-1; i++) {
      /* e[i] += (u2 * v[i] ) / PREMUL; */
      e[s][i] += v[s][i];
   }
/*      e[1] *= 5;
      e[1] /= 10;
      e[n-2] *= 5;
      e[n-2] /= 10; */
      e[s][1] *= (9-s);
      e[s][1] /= 10;
      e[s][n[s]-2] *= (9-s);
      e[s][n[s]-2] /= 10;
      e[s][2] *= (8);
      e[s][2] /= 10;
      e[s][n[s]-3] *= 8;
      e[s][n[s]-3] /= 10;
  }


  tt = 0;
  for (s=0; s<NSTRINGS; s++) {
      tt += (int) ( 3* PREMUL * atan(
            ((double) e[s][9] + e[s][10] + e[s][11]) / (double) (PREMUL * 20000)
         ));
  }
  tt *= 3;
  tt /= 4;

  for (s=0; s<NSTRINGS; s++) {
      e [s][n[s]-7]  +=  10 * tt;
      e [s][n[s]-8]  +=  20 * tt;
      e [s][n[s]-9]  += 40 * tt;
      e [s][n[s]-10] += 80 * tt;
      e [s][n[s]-11] += 40 * tt;
      e [s][n[s]-12] +=  20 * tt;
      e [s][n[s]-13] +=  10 * tt;
  }
  return;
}

simulate(n,tn)
int n[], tn;
{
   int t;
   for (t=0; t<tn; t++) {
      /* propagate(n); */
      propagate_fixend(n);
      sockproc();
      outputbin(binoutnode);
   }
}


closeup()
{
   if (fd > 0) close(fd);
}


process_args(argc,argv)
int argc;
char *argv[];
{
   int i;
   if ((argc < 4) || ( ((argc-4)%2) != 0 )) {
      printf("Usage %s <#nodes s1> <#nodes s2> <#steps> [<option> <value>]...\n",
         argv[0]);
      printf("option = soundfile <file.wav> | tcl <1|0>        | \n");
      printf("         initstate <file.asc> | outnode <node #>   \n");
      exit(-1);
   }
   sscanf(argv[1],"%d",&n[0]);
   sscanf(argv[2],"%d",&n[1]);
   sscanf(argv[3],"%d",&steps);
   for (i=4; i<argc; i++) {
      if (strcmp(argv[i],"soundfile") == 0) {
           initwav(n,argv[i+1]); i++;
      } else 
      if (strcmp(argv[i],"tcl") == 0) {
         if (argv[i+1][0] == '1') notcl=0; else notcl=1; i++;
      } else
      if (strcmp(argv[i],"initstate") == 0) {
         printf("Warning: initstate not yet implemented\n"); i++;
      } else
      if (strcmp(argv[i],"outnode") == 0) {
         sscanf(argv[i+1],"%d",&binoutnode); i++;
      } else {
         printf("Error: unknown option %s\n",argv[i]);
         exit(-1);
      }
   } 
}

int val;
char name[1024];

sockproc()
{
   int rr;
   static int count = 0;

   ++count;

   while (  (rr = do_read()) > 0) {
      line[strlen(line)-1] = '\0';
      printf("set lastread {"); printf("%s",line); printf("}\n");
      fflush(stdout);
      if (strncmp(line,"val",strlen("val")) == 0) {
         sscanf(&line[strlen("val")],"%d",&val);
      }
      else
      if (strncmp(line,"tcl",strlen("tcl")) == 0) {
         sscanf(&line[strlen("tcl")],"%s",name);
         if (strlen(name) == 0) strcpy(name,"onewave.tcl");
         tclf = fopen(name,"w");
         foutputtcl(n);
         fflush(tclf);
         fclose(tclf);
      }
      if (strncmp(line,"cur",strlen("cur")) == 0) {
         char t[1024];
         sprintf(t,"set iteration_count %d\n",count);
         fprintf(stdout,t);
         fflush(stdout);
         do_write(t);
      }
   }
}

writegraph(name)
char *name;
{
         tclf = fopen(name,"w");
         foutputtcl(n);
         fflush(tclf);
         fclose(tclf);
}

main(argc, argv)
int argc;
char *argv[];
{
   notcl = 1;
   process_args(argc,argv);
   /*init_string(n); */ /* init_fixend(n); */    init(n);
   printf("# waiting for connection...\n");
   serv_main();
   printf("#connected, now iterating\n");
   writegraph("onewavei.tcl");
   inittcl(n[0]);
   simulate(n,steps);
   closeup();
   return 0;
}