download news features music develop support about
Tactile12000 SDK
 
2.1
15 March 2001

Note: This document is a work in progress. As an early user of the SDK, please help make this document more comprehensive by providing feedback on its contents and suggestions for other information to include to make the setup process easier. Send comments and suggestions to sdk@tactile12000.com.

 

Overview

The Tactile12000 is a Macromedia Director application with a plugin to handle the audio mixing and manipulation. To modify the Tactile12000, you may be able to work only in Director, but for many features you will have to modify the plugin as well. The plugin requires familiarity with C++ as well as several additional SDKs. It is possible to change the look of the interface without doing any scripting, by simply changing the graphics in Director.

We use Director because it allows us to develop cross-platform software more easily, since it handles much of the OS and UI programming. It also allows us to fairly cleanly separate the graphics, UI scripting and audio programming. It could also be used to distribute the Tactile12000 as a Shockwave movie (we have not released it this way because of bandwidth requirements, though we have tested it internally).

This document assumes that you have a working knowledge of the applications described. All developers must be able to use Director to build the software. Information about using Director itself, or a C++ development environment is outside the scope of this document.

SourceForge

The Tactile12000 project is hosted on SourceForge. SourceForge provides a central place for developer information about the project, including mailing lists, a bug database and source control. If you would like to contribute to the development of the software, you can apply to be member of the development group for it.

License

The Tactile12000 is released under the GNU Public License, meaning that you are free to modify and distribute the software. However, as a condition of the license, you must make the source code freely available for any version of the software that you distribute. Note that the Tactile12000 makes use of some third-party libraries that are not covered by the GNU Public License. You must adhere to the licensing agreements for these libraries.

 

Getting Started

Downloading the packages

The SDK includes three separate packages:

  • The Director package includes the Director movie and casts, as well as binary versions of the Xtra used for the Tactile12000.
  • The Xtra package includes the C++ source files for the DirectSound Xtra as well as projects for Microsoft Visual C++ 6.0 and Metrowerks CodeWarrior Pro 4.
  • The graphics package includes the Adobe Illustrator, Adobe Photoshop, and Strata StudioPro files used to generate the graphics for the UI. You only need this package if you intend to make visual changes to the user interface. If you intend to entirely redesign the UI, you might not need these files, although they may be of interest as a reference.

Downloading third-party SDKs (XDK, XAudio, DirectX, QuickTime)

If you are modifying the Xtra, you have to download additional SDKs from other companies before you can modify and rebuild the Xtra.

  • Director 8 XDK - this is the SDK for writing Director plugins. You can use the Director 8 SDK for writing Xtras for either Director 7 or Director 8.
  • XAudio 3.2.8c - This is the Windows library used for decoding MP3 files. You must license the libraries and download from their site. This is not necessary for Macintosh development.
  • DirectX 7 - This is Microsoft's API for interfacing with the sound hardware on Windows. You may already have the headers and libraries with Microsoft Visual C++, so you may not have to download the giant SDK. We are still using the DirectX 7 API for backward compatibility with users who have not upgraded to DirectX 8.
  • QuickTime 4 - the Tactile12000 uses QuickTime to play back audio on the Macintosh. It is also linked in on Windows, but is only used for non-MP3 files.

Setting up your development environment

All developers need to use Macromedia Director to create the application. The 2.1 release was created on Macromedia Director 7, but the next release will probably use Director 8. This means you can use either Director 7 or Director 8 to work on the software. If you are not modifying the Xtra, you need to copy the binary of the Xtra for your platform into Xtras folder of your Director installation.

If you are modifying the Xtra, you need to open the project file in the C++ development environment on your platform - Microsoft Visual C++ 6 on Windows or CodeWarrior Pro 4 on the Macintosh. You may have to set up some of the include paths and library paths for the SDKs that you downloaded. After building successfully, you must copy the Xtra to the Director Xtras folder. (more details on building the Xtra are in the next section)

Note: the Windows binary version of the Xtra distributed in the Director package can only be used with the Tactile12000 application. If you wish to use it with other Director projects, you need to license the SDKs used to build in and recompile without the line of code that checks for the application name.

 

Director

The Director package is divided into four Director files, and some supporting files. The Director files include the main movie (t12000.dir) and three external casts (t12000lg.cst, t12000gx.cst and t12000sd.cst). Open the main movie in Director to get started; it will find the external cast files automatically if you leave them in the same folder as the movie. Make sure that you have copied the DirectSound Xtra to Director's Xtras folder.

Typically you will spend most of your time modifying the scripts in the script cast when you are working on the application. The application makes use of parent-child scripts (Director's mechanism for doing object-oriented programming). The bulk of the code is in these parent scripts and other movie scripts. We have tried to keep the sprite scripts simple. The main objects are in the first few scripts of the cast (turntable, mixer, channel, sound, etc).

The sound cast (t12000sd.cst) just contains the sample sounds that are shipped with the application. You can replace these sounds with your own if you wish.

You can use Director 7 or Director 8 to work on the files. The next version after 2.1 will probably be using Director 8 so that we can take advantage of the linked script files feature. That feature will aid in collaborative development, by making it easier to merge changes from multiple developers. For now, if you intend to contribute your changes to the main code base, be careful to mark your changes well and try to isolate them as much as possible to make the code merging easier.

 

Changing the graphics

If you only want to change the appearance of the interface, you can simply modify the contents of the graphics cast, replacing each graphic with an alternative one for the same UI element. Make sure the registration point in the graphic and the placement of the cast member on the stage are set properly so that the graphics are positioned properly. For the most part, the scripts are set up to automatically detect the new location and size of the graphics, and application should still work correctly. However, this has not been tested before, so there are probably some fixes necessary in the scripts to get things to work.

You wil notice that there are quite a few different graphics you have to produce, and you must be careful to use alpha channels and JPEG compression where appropriate to support proper compositing while minimizing the application file size.

If you want to start with the graphics supplied with the SDK, here's what's in the graphics kit.

  • t12000.ssp - Strata Studio Pro 1.75 file with the console, mixer and turntables. The model is set up with animations for the rotating turntable platter, moving tonearm, and buttons in the up and down position. To generate the output, render the entire scene with the buttons in the up and down positions (and without the sliders), and render just the turntable area without the tonearm as a QuickTime movie, and render the tonearm also as a QuickTime movie. Using the QuickTime player, export all of the frames of the turntable as JPEG files to import into Director. Then export all of the tonearm frames as PICT files with an alpha channel. You should be able to use newer versions of Strata to render the scene. Other 3D software will probably not import all of the settings of the model properly, though.
  • t12000.psd - This is an Adobe Photoshop 5.0 file. Paste in the output of Strata with the entire scene with the buttons up and down. You wll then have to slice and dice the graphic with the appropriate layers on and off to generate the cast members for Director. One good technique for making the registration points match up for Director is to import the entire 640x480 graphic into Director, make copies of it for each smaller image you need (e.g., the playlist button), then erase the part of the image that you don't need, using a white rectangle. The registration point will still be at the same point as the background, so you can drag the cast member onto the score and it will automatically line up with the background image.
  • playlist.ssp, playlist.psd - these are much simpler Strata and Photoshop files for the playlist dialog.
  • roundbutton.psd - this is a Photoshop file for the round buttons on the lower right of the screen. They have both mouse-over and mouse-out layers set up.

Most of the UI uses Futura, Futura Condensed, and Futura Bold fonts. All of the graphics work was done on the Macintosh. We do not know if it will work exactly the same on Windows.

 

DirectSound Xtra

Xtras are plugins to enhance Director's functionality. The Tactile12000 uses an Xtra to perform the audio mixing and manipulation needed for DJing. Originally, the Xtra was implemented on Windows many years ago to take advantage of Microsoft's DirectSound API, which enabled high-performance mixing. Subsequently, the Xtra was made cross-platform using Apple's Sound Manager API. When MP3 support was added to QuickTime, the Xtra was modified to rely more on QuickTime on the Mac instead of the Sound Manager. In the last couple of releases, Director has added support for many of the features that the Xtra implements. However, the Xtra is still necessary for some features of the Tactile12000, and it allows for continuing to push beyond the functionality of Director. The Xtra was reorganized as a C++ project for version 2.1.

You will need to modify the Xtra to add support for other sound formats, to change the low-level behavior of the mixing, or to otherwise access or modify the audio data. Some features that would require modification of the Xtra are support for WMA files, RealAudio, equalizers, sound filters, mix recording, four-channel sound card support, and BPM counters.

You will need to become familiar with Macromedia's XDK documentation to understand the Xtra. Their documentation takes a while to absorb, but hopefully you can get started with just a basic understanding of the Xtra architecture.

Files

  • dsxtra.cpp - contains the main class that implements the methods available from Lingo. In turn, it instantiates one of several other classes depending on the sound format being read by the application.
  • dsdev.cpp - handles DirectSound devices on Windows
  • dsmp3.cpp - uses the XAudio SDK to read MP3 files on Windows
  • dsqt.cpp - uses QuickTime to read sound files for both Macintosh and Windows
  • dsutil.cpp - utility functions
  • win
    • dswin.cpp - Windows-specific functions
    • dssound.cpp - Windows implementation of generic sound class
    • dswave.cpp - WAVE file suppor t for Windows
    • ds3d.cpp - DirectSound 3D suppor t
  • mac
    • dsmac.cpp - Macintosh-specific functions
    • dssound.cpp - Macintosh implementation of generic sound class
    • dsaiff.cpp - AIFF file support for the Macintosh (usually QuickTime handles AIFF sounds though)
    • dsmacsnd.cpp - Mac sound support (used for Director cast members)

Also, if you distribute a different version of the Xtra, please modify the version resource with a new version number and other information about your release, as well as the version number in the source file Xtra.cpp. Also, you should probably update the class IDs (search for DEFINE_GUID) in dsxtra.h, especially if you are changing the Xtra interface.

The Xtra source code is maintained in CVS source control on the SourceForge server. If you intend to contribute your changes to the main code base, please keep the code clean and well-documented. Contributors can be given access to the source control database to add their code.

Windows

MSVC builds the xtra as file dsxtra.x32. You need to copy this file to the Xtras folder in your Director installation to test your Xtra. To debug, set your Director executable as the debug executable. MSVC will warn you that Director does not have debug symbols, but you can ignore that warning. MSVC will still stop in breakpoints set in the Xtra code.

The project has both debug and release targets set up. Use the release build whenever you are making a release of the Xtra or application (obviously).

Update the project settings to include the paths to the XAudio SDK and the Director XDK (under Project->Project Settings->C/C++->Preprocessor).

Note: We have had problems stepping through code which has DirectSound calls. Director and/or the debugger crashes as you step over a call into the DirectSound library. The workaround is to set breakpoints explicitly whereever you want to stop, instead of using the "Step Over" command.

Macintosh

The Macintosh version of the Xtra relies heavily on QuickTime to read sound files and mix the audio. The built file is named "DSXtraPPC" and it also needs to be copied to the Xtras folder in your Director installation.

There is some code which directly uses the Sound Manager to play the sounds, but it was less reliable and harder to maintain than the QuickTime code. The Sound Manager code is now primarily used to handle cast member sounds from Director.

There are two project folders, MACPROJ and MACOPT. The macproj project builds the debug version of the Xtra and the macopt project builds the release version. To debug, put an alias to the debug version of the Xtra in your Director Xtras folder, start the CodeWarrior debugger, set any breakpoints you want inside the Xtra source code, then start Director.

You may have to download the Navigation Services SDK and/or the latest Universal Headers (we are using version 3.3.2) from Apple's developer web site.

You will also have to update the CodeWarrior project settings to reflect the path to the Director XDK on your system.

 

Preparing for Release

Creating a projector

To create the application for distribution, you must create a projector in Director. First, "Save and Compact" the Director movie to reduce its file size. Then select the "Create Projector..." item in the File menu. In the first dialog, select the director movie. If you want to ship the application as a single file, select the cast files as well. Hit the Options... button also; make sure the "Animate in Background" box is checked, as well as the "Media: Compress" box. The other settings can be set depending on your preferences for distribution.

If you didn't include the cast files or all of the Xtras with the projector, you will have to distribute them as separate files along with the application file. You might want to protect the cast files using Director's "Update Movies" menu item under the Xtras menu. However, you must make the unprotected cast files available as part of the GNU Public License. By releasing the application with external casts and Xtras, it may be easier to patch a single part of it in the future.

Testing

Try to test the projector in many hardware configurations and operating system versions. Also, try testing with different display resolutions and color depths. Try it with sounds of different formats, and MP3 files of different bitrates. Try MP3 files from different encoders.

Distribution

On Windows, we use the free version of InstallShield that comes with MSVC to create an installer for the software. We also use WinZip and WinZip self-extractor to create the downloadable file. On the Macintosh, we use Stuffit Deluxe to package the file. No installer is necessary, though you can make one if you wish.

If you release a new version of the Tactile12000, please contact us at info@tactile12000.com and we can post a link to it on the Tactile12000 site. Also, if your changes are of general interest, you may try to integrate your changes into the central code base. For this reason, please try to make your changes clean, well-documented, and easy to understand.

 

Questions?

There is a mailing list for Tactile12000 development, tactile12000-development@lists.sourceforge.net. Post any questions about the SDK or the code to that list. You must subscribe to the list before you can post messages to it.