Short: AHI driver for Prelude soundcard Author: Thomas Wenzel, Oliver Gantert Uploader: Oliver Gantert (prelude olivergantert de) Type: driver/audio Version: 6.37 Replaces: driver/audio/PreludeAHI.lha Architecture: m68k-amigaos This is an AHI driver for the Prelude Z2, Prelude1200 and Prelude ZII+ soundcard. To install, just unpack the archive into your SYS: partition or run the included installer script. This version was created from the source code of version 6.35, kindly provided by Thomas Wenzel (www.toms-home.de). It was adapted to compile with vbcc (originally SAS/C), partially cleaned up, extended and fixed by Oliver Gantert. Please note that, although this version is intended to fix bugs, the compiler change might have introduced new ones that went unnoticed so far. If you think you found a problem, please try to reproduce that with version 6.35 and email me at the address given in the "Uploader" line of this readme. Thanks! Currently available modes are: ----------------------------- Prelude:HiFi 16 bit stereo stereo mode using a small buffer and a high priority play/rec softint Prelude:HiFi 16 bit stereo++ same as above but with panning enabled For the Arpeggiator module two additional modes are available: ------------------------------------------------------------- Prelude:HiFi 24 bit stereo same as 16-bit version but this one makes use of the Arpeggiator's 24-bit capabilities Prelude:HiFi 24 bit stereo++ same as above but with panning enabled All modes are AHI-realtime capable! Minimum processor requirements ------------------------------ General Prelude / Prelude1200 16-bit playback: 68030-25 Arpeggiator 16-bit playback lowlevel-mode (e.g. Play16): 68040-40 Arpeggiator 16-bit playback device-mode (e.g. AmigaAMP): 68060-50 Arpeggiator 24-bit playback, any access mode: 68060-50 68020 is only supported for very fast accelerators, emulation or FPGA CPUs. Important --------- Not every input or output can handle every sampling rate and/or resolution. Here's a table to show which can do what: Frequency | Analog | Digital ----------+--------+-------- 5510 | x | 6620 | x | 8000 | x | 9600 | x | 11025 | x | 16000 | x | 18900 | x | 22050 | x | 27420 | x | 32000 | x | x 33075 | x | 37800 | x | 44100 | x | x 48000 | x | x 54860 | x | 64000 | x | 96000 | | x An attempt to use an unsupported sampling rate will result in using the closest possible instead. * Please don't use the 24-bit modes with the normal analog part of the Prelude. That part is 16-bit only. It won't do any harm but it would be a waste of CPU power. * The sampling rate of the analog part is limited to 64 kHz. Higher sampling rates can only be used with the Arpeggiator module. Advanced options ---------------- The following environment variables are for testing and debugging purposes only. You are not recommended to use these unless you know what you are doing. Prelude/AHIAllowVolumeChange Allow(1) or disallow(0) AHI to change the output volume. Usually this is done by the mixer program, so it defaults to 0. Prelude/AHISoftInt Enable(1) or disable(0) software interrupts. Defaults to 1. Legal stuff ----------- This driver is copyrighted freeware. It may be distributed freely as long as no modifications are made to the executable and this document. A nominal fee may be asked to cover distribution costs. AHI audio system is Copyright ©1994-2005 Martin Blom. Requirements ------------ A Prelude soundcard, of course :-) prelude.library V5.6 or higher AHI audio system V5 or higher 68030-25 CPU or better This driver has been successfully tested with --------------------------------------------- AMPlifier 2.34 AmigaAMP 3.28 Versions up to 6.35 were tested with AmigaAMP 2.14 Play16 1.9 AHIRecorder 1.14 Shapeshifter 3.7 HippoPlayer 2.35 DeliTracker 2.27 with AHI noteplayer 1.8 Revision history ---------------- 6.37 - Check if running at least a 68020 CPU Compiled the library initialization for 68000 to show a requester and notify the user instead of running into illegal opcodes later - Removed Prelude hardware detection Ask prelude.library what hardware is available - Fixed logarithmic volume determination for monitor (Arpeggiator) and output volume (AHIAllowVolumeChange option) - Replaced Disable()/Enable() calls to only affect EXTER interrupts - Removed loading of asl, graphics, utility and expansion libraries 6.36 - Compiled with vbcc 0.9g - Complete code refactoring Previous versions used SAS/C's automatic library setup. This had to be changed for vbcc anyway, so I took the opportunity to restructure the code completely and rewrite large portions of it - Potential memory leaks fixed On most error conditions, the driver would exit without freeing previously allocated resources - Frequency was not set correctly and always selected 8000Hz This bug was especially noticable since WinUAE introduced Prelude emulation. The CS4231A's registers were set incorrectly which surprisingly worked most of the time with real hardware for years, but always failed in emulation - Digital output only selectable if Arpeggiator detected - 68020 version Previous versions were compiled for 68030, but there might be faster 68020 accelerators available today or in the future. - Supports Prelude ZII+ 6.35 - Tested with ahi.device v6 - Fixed input/output name display - Various code cleanups 5.34 - Tested with ahi.device 5.54 - Re-enabled 24-bit modes under AHI v5 5.33 - Tested with ahi.device 5.42 - Bumped version number to 5 2.33 - Fixed a bug that caused a crash when switching between analog and digital inputs - Realtime mixing buffer size had to be reduced to better match Prelude's and Arpeggiator's FIFO sizes 2.32 - Implemented Arpeggiator Digital Audio I/O support with up to 24 bit / 96 kHz - Some minor speed improvements 2.31 - The driver now keeps its fingers off the main (hardware) playback volume setting. That's the task of the mixer! 2.30 - Fixed some startup bugs causing trouble if the hardware was already in use 2.29 - Fixed a bug in the Prelude1200 recording routine - Removed the non-realtime modes 2.28 - Added support for the new Prelude1200 soundcard 2.27 - For Your Ears Only, two new frequencies: 54.86 kHz and 64 kHz! 2.26 - Configurable IRQ data transfer size (prelude.library 2.41 and up) 2.25 - Added HiFi modes Better calibration and offset correction for recording 2.24 - Split up the Mic input into MicLo and MicHi. Both are physically the same input but MicHi has extra 20dB gain. (Mic pre-amplifier) 2.23 - Trying to open the driver without a Prelude present lead to crashes. Fixed. 2.22 - Oops! Fullduplex didn't work. Sorry, now it's fixed! 2.21 - Changed buffering scheme to work better with AHI V3 - Full cooperation with prelude.library - Now using a UserTag to distinguish between realtime and non-realtime: AHIDB_UserBase+0; TRUE means realtime. 2.20 - Further speed optimizations - Enabled auto calibration each time the hardware is allocated 2.19 - Fixed a bug that could lead to hangups during initialisation - Minor speed improvements 2.18 - AHI_GetAudioAttrs() returned incorrect value for AHIDB_MaxRecordSamples. Fixed. - Recording function now makes use of a soft interrupt, too. 2.17 - First public release