26 Sep 2000 pcburns   » (Journeyer)

Sydney is now half way through the olympics. I went to the athletics stadium on friday and saw Cathy Freeman race in a 400m heat. I also saw the 100m heats and a whole lot of bogon moths flying around. The stadium is an amazing place. The number of people in and around homebush bay is incredible. The is a road that runs straight through the olympic complex for a couple of kilometres. It was like a river of people. The are speakers attached to each light pole. They have been set up to let out ambient crowd noise as you walk past ... it's a bit disconcerting to hear grunts and breathing and coughing and no obvious source for the noise.

I went to Circular Quay see the opening ceremony. We had intended to go to Darling Harbour but were persuaded to head for the Domain were we found nothing happening and then headed down to Circular Quay. The plaza in front of Custom House was packed full of people even more than usual. The were people from all over the place including Sweden, Norway and England. The crowd let out a big boo when they saw the USA olympic team enter the stadium, the same thing happened for the New Zealand team. A big cheer went up for the Mongolian flag bearer wearing a superhero style outfit in blue consisting of underpants and a cape. Alcohol flowed freely amongst the crowd, some of it a bit too freely, scattering the crowd.

I've done a bit of work on PenguinSound. I've been meaning to create a sourceforge project for it but I haven't gotten around to it. I got as far as creating an account for myself, and then spent some time looking at all the audio projects on sourceforge. I found amber and had a bit of a play with it. I also found glame which is trying to do for audio what the gimp did for graphics. I took a bit of a look at the code, and noticed they are using a similar approach to connecting filters together as I have taken with my sample editor.

I have improved my filters. Each filter functor now has a function which returns the frequency response. I should probably fix that to make it possible to display the phase response as well. Most filter dialogs now display the frequency response. However, the frequency response isn't updated for some dialogs if the dialog is opened from another dialog. I have created a resonable filter graph widget, which makes it fairly simple and easy to connect the filters together. I haven't been able to work out the frequency response for some filters. I am not sure how to calculate the frequency response for a wave shaping widget. Wave shaping filters can be used to compress or expand or distort the sound, using a map to transform the input level to a new output level. I'm not sure about the frequency response for a filter that simply scales its input - I guess its just a flat line.

I've also done a bit of work on my tracker. I've stuck all the elements that were previously in separate windows into one big window, and modified the tracker widget so that it updates its position when the module is being played. I also found some bugs in the code for saving samples, and fixed them.

I've fixed up my DirectSound audio output code so that it can now play looped samples. The method was simply to create a non-looping buffer for the part before the loop starts and a looping buffer for the looped part. If the loop was bidirectional I simply doubled the size of the buffer and copied the loop in reverse for the second half of the buffer. I've got semi-functional streaming working for the DirectSound. Once I have streaming working poperly I'll try and write some code to record samples, making it available as a generator, and eventually get everything set up so I can talk into a microphone, filter the input and stream it out in close to realtime.

I have no problems with fltk under windows but I am getting strange bugs with Fl_Gl_Windows under linux. Sometimes they refuse to update as is the case with some of the filter dialogs. Other times they segfault in gl_line_stipple or other gl routines that I don't call, when I close the dialog window. It may have something to do with the way I have coded my dialogs. I coded them so that they could be either modal or non-modal.

Here is the code for the do_modal function.

while (m_window->shown()) {Fl::wait();}
return m_modal_ok; 

I have set up the ok and cancel buttons so that they set m_modal_ok appropriately, and then call m_window->hide().

I got a letter from Jenny, and have been spending some time trying to write a letter back.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!