# Porting Applications to &arts;

## Using &artsdsp;

The &artsdsp; utility, described previously, allows most legacy sound applications that talk to the audio devices directly, to work properly under &arts;. Applications written to use the Enlightenment Sound Daemon (esd) will also work in most cases by running esd under &artsdsp;.

This makes a good short term solution to porting existing applications to &kde;. However, it does not allow the application to directly take advantage of all of the power of &arts;, such as using modules and multimedia streams other than digital audio. If the application goes beyond simple playing of sound files, it usually makes sense to add native support for &arts; to the application.

Using &arts; also means that application does not have to do as much work -- it can leverage the functions in &arts; to handle issues like codecs for different media formats and control of the sound hardware.

## Adding Native &arts; support

When using &arts;, you have a number of different APIs to choose from. The decision of which to use depends on a number of factors, including what type of streaming media is used (sound, &MIDI;, &CD; audio, &etc;), the API features required, and whether it is written in C++. In most cases the choice should be relatively obvious based on the required features.

For cross-platform portability, applications that need to run on environments other than &kde; cannot rely on &arts; being present. Using the plug-ins paradigm is a good way to support different multimedia environments. Making the plug-in API open and documented (especially for closed source applications) also has the advantage of allowing someone other than the application developer to implement an &arts; plug-in.