[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-multimedia
Subject:    Re: aRts roadmap
From:       Stefan Westerfeld <stefan () space ! twc ! de>
Date:       2002-02-21 15:39:59
[Download RAW message or body]

   Hi!

On Wed, Feb 20, 2002 at 08:50:13AM +0000, Richard Bown wrote:
> I can see from CVS that there's the arts/ module (gsl stuff) and then there's the
> kdemultimedia/arts/.  In the latter the midi/ component looks very similar to that
> of arts-0.6.0.
> 
> Anyone want to clarify the situation for aRts MIDI?  I'm sure I'm not the only person
> who's a little frustrated with the opacity of this project.

Oh well, I have some uncommitted code lying around, and I've been planning to
write an overview after it is in the CVS. But maybe its better if I give you
a few corner points right now. Time is also getting very short for KDE3.0, and
I hope to be able to get at least some of the pending changes in, but its
quite sure that the midi API can't be frozen for KDE3.0, so that after that
there will be some more tuning in coordination with you and other sequencer
developers before it can be finally frozen (maybe KDE3.1).

Anyway, technical details:

 * ALSA

I have unfinished uncommitted ALSA-0.9 code, I plan to commit it in the next
days, which will enable ALSA sequencer support, thus allowing for onboard
synth. It does timing. However right now, it has its own timestamp (queuing),
meaning that synchronization is not possible. It also right now doesn't
integrate itself automatically as destination upon artsd startup, but needs
to be started explicitely from artscontrol.

 * AudioSync

Right now, its impossible to play back a sample at a given time. I hacked a new
Arts::AudioSync interface which allows this. Will commit this soonish.

 * Audio/Midi Sync

Right now, the AudioSync interface carries the same timestamp as aRts synthetic
instruments. This means that you can synchronize wave files with aRts synth
instruments (simply by using the same timestamp to AudioSync and the midi
port), but not with real external midi instruments. See also next point.

 * Synchronization

This is really not done. What is my idea for this is:

 - right now, sequencers usually open a destination port, and write midi data
   in there

 - the destination port is then managed by the midi manager, so that it can
   be reconnected to either ALSA, OSS or aRts synth midi

What you ultimately want is to have two or more destination ports at the same
time. What needs to be implemented (and I haven't started with that) is to have
a way to synchronize multiple output ports by timestamp. This needs to be done.
Really.

Having this, extending it to also synchronize with the audio files should be
trivial

 * Sample caching, offset playing, parts, previews

Basically, neither Arts::PlayObject nor Synth_PLAY_WAV do what you want for
a sequencer. Gsl provides an abstraction to samples which is more powerful
than what aRts currently uses (data handles), as it allows

 * cutting samples into two halves
 * reverting samples
 * applying any other operation

without modifying the sample content, while

 * doing efficient caching
 * doing threaded read ahead (planned, but not implemented)

I have code for wrapping a data handle. I guess it should be straight forward
to extend it towards getting preview data out of the sample (which makes the
sequencer look much more impressive, if you can see the shape of the wave that
will be played). Code is pending to commit.

...

Ok, I hope this is enough to give an overview. However, I must admit that I
am not sure if with the time I currently have for aRts, I can satisfy
everybodys needs for new features, bug fixing, performance tuning, and so on,
so if you are not satisfied with the speed of the development, I would be
really happy if you just started helping out at points you especially want to
see finished. Its open source after all ;).

   Cu... Stefan
-- 
  -* Stefan Westerfeld, stefan@space.twc.de (PGP!), Hamburg/Germany
     KDE Developer, project infos at http://space.twc.de/~stefan/kde *-         
_______________________________________________
kde-multimedia mailing list
kde-multimedia@mail.kde.org
http://mail.kde.org/mailman/listinfo/kde-multimedia
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic