Short: AHI driver for Prelude soundcard
Author: Thomas Wenzel, Oliver Gantert
Uploader: Oliver Gantert (prelude olivergantert de)
This is an AHI driver for the Prelude Z2, Prelude1200 and Prelude ZII+
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.
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
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.
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.
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.
Allow(1) or disallow(0) AHI to change the output volume. Usually this
is done by the mixer program, so it defaults to 0.
Enable(1) or disable(0) software interrupts. Defaults to 1.
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.
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
Versions up to 6.35 were tested with
DeliTracker 2.27 with AHI noteplayer 1.8
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.
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
- Recording function now makes use of a soft interrupt, too.
2.17 - First public release