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.
m_window->set_modal();
m_window->show();
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.