iiwusynth-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[iiwusynth-devel] Re: [Swami-devel] update and todo list


From: Josh Green
Subject: [iiwusynth-devel] Re: [Swami-devel] update and todo list
Date: 02 Jun 2002 21:15:18 -0600

On Sun, 2002-06-02 at 17:37, Peter Hanappe wrote:
> Hi all,
> 
> I just tagged the current CVS version with V0_2 and uploaded
> iiwusynth-0.2.tar.gz to the savannah web site.
> 

Cool! I've been thinking about releasing a tarball of Swami soon as
well.

> I have been a little out of circulation lately and I need to
> catch up. With all the improvements Markus has been
> making, I wondered how far of we are from the SoundFont 2
> specifications and what the major obstacles are to finish the
> DSP part and the MIDI control part.
> 
> It seems to me that the DSP is getting quite complete. We might
> have to do more testing of the filter and the chorus. We also
> may need to work on performance optimizations.
> 

Yes, performance seems like the most major issue for me. I am currently
using a 366mhz PII laptop and I have no trouble in maxing out my CPU. I
was also just reminded again today that running Swami/iiwusynth as root
is a bad idea. I connected up my little loop sequencer program via the
ALSA sequencer and started to crank the tempo up. Computer totally
frozen, not even SysRq keys would work, still audible noises emitting
though :)  I'm just glad I'm using ext3 journaling. Are there any better
ways of getting low latency audio without the perils of SCHED_FIFO?

> I haven't digged into the MIDI control part very deeply. Markus
> has improved the modulator part a lot, so most of the controller
> events can be handled in the current implementation.
> 
> We also handle 'bank select' and 'sustain' messages. We still have
> to handle the 'soft', 'sustenuto', 'all sound off', 'reset controller',
> and 'all notes off' messages. Most importantly, we have to implement
> the NRPN mechanism (SF2 specs, p. 75), which could be a lot of fun.
> 

It seems like iiwusynth is getting pretty close to complete SoundFont
support :) This is more than can be said for the SB Awe/Live! OSS
wavetable driver. It seems to make much more sense to do this stuff in
user space rather than kernel space, I would really hate to program a
SoundFont implementation in the kernel.

> 
> Josh, you should tell us what you need most for Swami. I was very
> impressed with Swami today. I'd really like to see the two project
> intergrate more. However, it's very important to have a modular design
> so both can still work independently. This is important as a general
> design concept but also because people are using iiwusynth as a
> standalone library on linux but also on windows and macintosh.
> I wondered if it might be possible to use swami as the GUI for
> iiwusynth. Imagine that the user can type the
> command "swami" or "gui" in the console and Swami start up with the
> currently loaded soundfonts in the editor.
> 

I'm planning on requiring iiwusynth for Swami, actually. It totally
makes sense to not have the requirement go the other way :) Although
there will probably end up being drivers for other wavetable back ends,
I plan on doing lots of real time stuff with iiwusynth, that isn't
currently possible with other wavetable implementations.

On a related note though, Swami can probably be ported to Windows fairly
easily as well as OS X. This is something I would like to see happen. I
think the biggest problem in portability is currently libsoundfont. I'm
contemplating on requiring glib for libsoundfont (libinstpatch in the
future). I see that Jack requires glib, so its in common practice to
have this requirement in other libraries. This would make things much
easier in the portability realm and would give me lots of data
structures that I have been wanting.

> Another point that already came up earlier: do you think it would be
> possible to extend the controller interface. Currently there's the
> control panel in which you can select volume, pitch bend, reverb,
> a channel and then set the value with a slider. Maybe this window
> could expand into a full size window with more controllers on it?
> 

[got a little out of control here :)]

I have also been thinking about this stuff a lot. The current
architecture of Swami is very object oriented (in contrast to Smurf).
Each GUI element is pretty stand alone and uses signals. Some hacks are
in place that make this not completely true, but most of this resides in
the toplevel SwamiUIObject. My plan is to make Swami's layout completely
customizable. So new GUI elements can be created and docked/un-docked
from other windows and positioned along other objects. So if one wanted
to open up multiple Tree elements for working on different sound fonts
this would be possible. Other elements would have a method for how they
select items to synchronize to. Linking a generator control object to a
tree would make the generator control follow the current selected item
in that tree, etc. (a little off the topic, but..)
One of the things that I need to implement is a widget that allows
positioning/sizing of its children that isn't GtkPane in the ass. This
would be ideal for creating controls and molding them how one wants
them. In the interim though, I could just allow adding/deleting controls
and just put them in a vertical box in a dialog or something. Thats the
ticket. When the MIDI control is undocked from the toolbar it will turn
into a dialog that displays all its controls in a scrollable window
(only if needed), when docked in the toolbar it will just have the drop
down option menu and single scale and spin button + Bank:Preset:Channel.

> 
> I have made a first version of a plugin for Macromedia's Director.
> Director is a major tool used by the multimedia industry for
> CD-Roms and web sites. I have several friends working in Director,
> in particular Antoine Schmitt (who might have joined the mailing
> list? Antoine?). He'll use iiwusynth for one of his projects.
> In that context, we will probably add sequencer support to iiwusynth
> to be able to schedule events. I will send more news on that later.
>

I'm planning on starting an object/variable oriented sequencer project
targeted at real time composition. I've been thinking I would probably
be making it a separate program, but if iiwusynth had a sequencer I
might consider just doing it right in Swami, since I would want it to
closely interface with it anyways.

> 
> Also, I will try to find the time to update the web site. It's time
> to get the word spread!
> 
> Let me know what you think. Cheers!
> 

Yes, I too need to finish my really cool web site thats just sitting on
my computer waiting for a few touches. Once I have my new site up and
get a tarball released it will be time for Swami at least :) I'm going
to try to get this done before the LinuxTag, so only a few days..

> Peter
> 

Okay.. This is a long email, but I never really answered your question
concerning what I would like to see in iiwusynth (in no particular
order):

- Real time control of sample loop points (is this possible yet Markus?)
- Some help for on demand loading of samples (MIDI event notification
for loading on Bank:Preset selection or maybe disk sample streaming)
- MIDI event notification, via callback?
- Sample streaming for playing of audio samples off of disk (in the
Swami sample load dialog for instance).
- Help for expiring samples in sample cache. Need to know when sample is
no longer being used.
- more functions for querying state of iiwusynth (reverb and chorus
parameters, available MIDI and audio drivers).
- Preset iteration function in sfloader is still a bit hard to
implement. (requires storing of current iteration position in sfloader
rather than caller). Maybe make 'iteration_start' -> 'iteration_first'
or something and have it return the first preset which is then passed to
'iteration_next'.

I would love to help out with some of this stuff, but I have lots to do
as well. Actually what I really would like to see is other people
getting involved in the development of Swami, any ideas of people who
might be interested :) Cheers!
        Josh




reply via email to

[Prev in Thread] Current Thread [Next in Thread]