summaryrefslogtreecommitdiff
path: root/doc/icedax/README
diff options
context:
space:
mode:
Diffstat (limited to 'doc/icedax/README')
-rw-r--r--doc/icedax/README549
1 files changed, 549 insertions, 0 deletions
diff --git a/doc/icedax/README b/doc/icedax/README
new file mode 100644
index 0000000..4b65532
--- /dev/null
+++ b/doc/icedax/README
@@ -0,0 +1,549 @@
+Hi dear cdrom drive users,
+
+This README describes hardware related matters as well as the installation of
+icedax, the sampling utility.
+
+This icedax utility comes with the Cdrkit project. Cdrkit is a spinoff from
+cdrtools. However, the cdrtools developers are not involved in the
+development of this spinoff and therefore shall not be made responsible for
+any problem caused by it. Please do not try to get support for this program by
+contacting the original authors.
+
+Requirements
+============
+
+For SCSI cdroms and CD-writers, as well as SCSI-emulated ATAPIS and parallel
+ port drives
+1s. kernel support for SCSI, the host adapter, SCSI cdroms and the
+ generic SCSI interface (if under Linux). You need to have the proper device
+ descriptors (get them under Linux with the MAKEDEV script from /dev).
+
+For ATAPI cdroms under Linux
+1a. kernel support for the ATAPI cdrom driver or alternatively ide-scsi
+ emulation. You need to have the proper device descriptors (get them
+ with the MAKEDEV script from /dev).
+
+For parallel port cdroms under Linux
+ With newer kernels icedax uses the same parallel port access
+ as does wodim. Please refer additionally to the wodim documentation.
+ There are generally two drivers to access the cdrom through the parallel
+ port: the ATAPI cd emulation (called pcd), and the SCSI device emulation
+ (called pg). The pcd driver does NOT support cdda reading (kernel 2.2.12),
+ while the pg driver has no restriction. So you have to use pg for that.
+
+
+For cdrom drives with proprietary busses under Linux
+1p. Please check the CDROM-HOWTO for features of the respective
+ drivers. The sbpcd driver is very demanding due to the lack of
+ interrupts.
+
+optionally currently for Solaris and all platforms running 4fronts
+OpenSoundSystems:
+2. kernel sound card support.
+
+
+Recommendations for higher throughput on Linux SCSI systems
+===========================================================
+
+Higher throughput will give better chances for non-interrupted
+sampling. This should avoid typical interruption errors (cracklings
+at buffer boundaries).
+
+1. Increase SG_BIG_BUFF to (128*1024) in /usr/src/linux/include/scsi/sg.h
+ (and recompile your kernel and boot it :-).
+NOTE: Some kernel configurations will lead to 'out of kernel memory' errors.
+ If you encounter this message regularly, better leave SG_BIG_BUFF at
+ 32768.
+
+1a.There is a patch for multiple sg device access under Linux. It uses
+ up to 128 K buffer for each device. See here:
+ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha/sg*
+
+2. Ensure your harddisk has write cache enabled (For SCSI hard disks I
+ switched it on with the scsiinfo program from tsx-11.mit.edu), but
+ enable this only if it is correctly working ;-)
+
+This has boosted the throughput of icedax considerably.
+
+
+Supported interfaces
+====================
+
+Non SCSI drives (Linux only):
+ ATAPI:
+ The greatest group nowadays are ATAPI (EIDE) cdrom drives.
+ Support is only limited by the drive. Kernel and icedax
+ are ready for them (unless the drive uses a very uncommon method).
+
+ Newer kernels can do an scsi emulation for ATAPI devices.
+ This interface is supported.
+
+ Parallel port interface:
+ There is a driver that maps the parallel port driver to an generic
+ scsi like driver. Should work with newer kernels.
+
+ Proprietary interfaces:
+ Older drives with proprietary interfaces are supported only
+ if the kernel driver allows reading cdda audio data via ioctl().
+ Currently only Eberhard Moenkeberg's sbpcd and Corey Minyard's
+ cdu31a driver do allow this. The sbpcd driver of kernels earlier than
+ 2.0.30 and 2.1.57 needs a patch before satisfying output can be
+ obtained (see README.sbpcd).
+
+SCSI drives:
+ For these drives the SCSI library from Joerg Schilling is used.
+ Thus we need kernel support (compiled-in or as a module) for it.
+ The generic SCSI interface allows multi sector transfers (max. 128 KB)
+ which lowers cpu load considerably.
+
+ ** NEW **
+ I added a script 'scsi_scan.linux' to find the generic devices for all
+ SCSI CDROM- or WORM-type drives.
+
+Configuration
+=============
+
+There are some adjustable parameters in the beginning of the Makefile
+(which is called local.cnf.in) . They describe default settings of icedax:
+
+INTERFACE: How the cdrom is accessed. Choose one method for INTERFACE.
+DEVICE: The default cdrom device is set in DEF_DEVICE.
+
+SOUND FILE FORMAT DEFAULTS:
+The default format can be 'wav', 'sun pcm au', 'aiff', 'aifc', or
+'raw bigendian samples'.
+It is determined by the Makefile variable DEF_TYPE.
+
+AUDIO FILENAME:
+The default filename is given by DEF_FILE. Unless 'cdr' format is being used,
+this name is appended with '.wav', '.au', '.aiff' or '.aifc'.
+
+RATE: the default rate is given by setting DEF_UNDERSAMPLING to the divisor
+for the audio cd sampling frequency (44100 Hz).
+
+ RATE = 44100 Hz / DEF_UNDERSAMPLING
+
+DEF_UNDERSAMPLING can be any multiple of a half greater than one half.
+
+DYNAMIC: The default dynamic range of one sample in one channel is defined in
+DEF_BITS which can be one of 8, 12 or 16.
+
+CHANNELS: set DEF_CHANNELS to 1 for mono and 2 for stereo.
+
+RECORDING TIME: set DEF_TIME to the amount of seconds to record (or 0 for
+the whole track).
+
+SOUND DEVICE: set SOUND_DEVICE to the device name of your sound card.
+ The line containing HAVESOUND should be
+ uncommented also, if you want the option to hear
+ what you record.
+
+All of those values can be overridden by command line parameters.
+
+
+Compiling icedax
+==================
+
+Adjust the Makefile (named local.cnf.in) for your cdrom interface and
+device setting first.
+
+Then type
+ make
+and as root
+ make install
+
+This will compile icedax and copy the binary to /usr/local/bin and the
+man page to /usr/local/man/man1 (defaults).
+
+
+Privileges
+==========
+
+You can setgid the binary, if you want to allow access to a CDROM's
+scsi_generic interface for icedax but not for arbitrary programs.
+Giving away permissions to send SCSI commands directly to a device is
+not something you want to do lightly on a multi-user server system.
+The setgid privileges will only be used to access the scsi generic
+interface; for cooked_ioctl, the setgid privileges are not necessary
+and they are simply dropped.
+
+Previous versions of icedax had to be setuid to root. Such privileges
+are no longer necessary and will be dropped if present.
+
+Select device
+=============
+
+By default icedax uses the generic SCSI interface and a device tripel for
+SCSI bus, id, and lun.
+This setting can be overridden by specifying '-Iinterface' and
+'-D cdromdevice'.
+The following command line example uses the generic_scsi interface and the
+SCSI device with bus 1, id 2 and lun 3:
+icedax -Igeneric_scsi -D1,2,3
+
+The shell script 'scan_scsi.linux' will report the generic devices for
+all SCSI cdrom drives.
+
+If you need to use another interface, check the device setting also as they
+need to fit together.
+Here is an example for an ATAPI cdrom using the cooked_ioctl interface and
+the cdrom device /dev/hdb:
+icedax -Icooked_ioctl -D/dev/hdb
+
+
+Features
+========
+
+I added an optional on-the-fly correction for pre-emphasized samples
+(available for original CDDA format only).
+If the -T option is given, the samples will be filtered before they
+are written to disk. The samples then have a linear frequency response again.
+
+When recording in mono, both channels are summed with halved amplitude.
+
+Undersampling is done by summing several samples with reduced amplitude to
+prevent overflows. This damps higher freqencies as well. Compared to
+exact resampling icedax does not use a very sophisticated (expensive)
+filter algorithm. It currently uses quadratic interpolation for
+noninteger subsampling factors.
+
+Sampling can be aborted by pressing the Interrupt-Key (eg control-C)
+at anytime. Unless streaming to a pipe, the wav header will be updated
+to contain the actual length of the sample. The same will happen, if
+disk space becomes exhausted.
+
+Fast options
+============
+
+The options can also influence the performance greatly.
+The fastest case is given when the samples don't need to be changed from
+their original form or analysed, that is the output format uses the same
+parameters as the drive: 16-bit samples, stereo at 44100 Hz sample rate
+AND with the same endianess (-Cbig and -Ebig, or -Clittle and -Elittle).
+To be sure all parameters can be given explicitly on the command line.
+This avoids an analysis of icedax.
+
+icedax -P0 -q -S<maximum speed>
+run as root will read with maximum speed and copy its output into the
+wav file, taking advantage of realtime scheduling as well.
+
+For throughput testing the additional option -N can be used. Write
+operations will be suppressed then.
+
+Options that slow down initially
+================================
+-v<level> needs some time for analysis before the actual sampling starts
+
+Options that slow down during sampling
+======================================
+-P1 causes overlap reading, the slowdown depends on the amount of jitter
+-e synchronous output to a sound card slows down to onefold speed
+
+Options that need more cpu power
+================================
+-p<rate> resamples the output send to the sound card
+-M<count> calculates checksums
+-T on-the-fly preemphasis filtering
+-F checking for extremal samples
+-G checking for differences in both channels
+-C<endianess> if a conversion is required (see below)
+-E<endianess> if a conversion is required (see below)
+-Oaudiotype if a conversion is required (see below)
+-c 1
+-c s
+-m
+-b 8
+-b 12
+-a <not 1>
+-r <not 44100>
+
+When are one or two endianess (byte order) conversions required?
+================================================================
+There are three stages where the endianess matters:
+1.) on the input side the cd drive can deliver in two flavors (called F1).
+ When the flavor is unknown, icedax needs to find out the endianess.
+ A simple voting method is used. Successive samples are compared in both
+ flavors and the flavor with the statistically smaller changes is taken.
+ The flavor can be defined with the -C option, avoiding the analysis.
+2.) For any calculation with samples (and echoing to the sound card),
+ the samples are needed in the byte order of the machine (in this case
+ I set 'need_host_order' to yes). The flavor of the machine endianess
+ is called F2.
+3.) Finally, there are two flavors of output sound formats (called F3):
+ wav uses little endian samples
+ cdr and au use big endian samples
+ If the samples currently in memory have the wrong endianess a
+ (possibly second) conversion is required.
+
+This gives the following table:
+F1 F2 need_host_order F3 conversions
+little little no little 0
+little little yes little 0
+little little no big 1
+little little yes big 1
+little big no little 0
+little big yes little 2
+little big no big 1
+little big yes big 1
+big little no little 1
+big little yes little 1
+big little no big 0
+big little yes big 2
+big big no little 1
+big big yes little 1
+big big no big 0
+big big yes big 0
+
+
+Known problems
+==============
+
+1. Sound quality
+
+Audible errors caused by hesitations:
+
+When recording the same audio track twice, recordings can slightly differ.
+Furthermore depending on the firmware in the cdrom drive, positioning
+errors can be so severe that they cannot be easily corrected by icedax.
+This will unfortunately lead to audible errors.
+
+In this case some overlap or even underlap between successive portions
+is introduced from the cdrom drive.
+Here is this case demonstrated graphically:
+
+Sec 1 ... Sec n
+|----------------------| first read delivered
+ |------------------------| second read wanted
+ |------------------------| second read delivered
+ |-| extra bogus bytes
+ |-| missing bytes
+
+This is due to synchronisation problems between sectors inside the cdrom
+drive. When the drive has been forced to wait, these problems arise.
+
+Audio cds are lacking sector headers, so it's a difficult job to do the
+positioning right (in the firmware). The frequency of these errors is
+reduced when the reading process can continue undisturbed for longer periods.
+So, a high throughput is essential.
+
+You may want to fine-tune your update daemon to use shorter intervals
+(see 'man 8 update'). Shorter intervals are better because the update
+interruptions are shorter when not so much write requests can pile up.
+
+The plextor 4plexplus drive (PX-4XCE) and newer models, newer pioneer
+models as well as CD-writers with large buffers don't suffer from this
+errors. Here the default is to switch off overlap reading.
+
+If you cannot get good samples from your drives you might consider an
+alternative program. Monty's cdparanoia program goes to great lengths
+in order to seperate the good bits from the bad ones.
+
+2. The index scanner has caused timeouts on my toshiba 3401 due to fast
+ random accesses.
+
+3. Retrieval of media catalog numbers and International Standard Recording
+ Codes may fail due to firmware bugs.
+
+Audio Format Conversion
+=======================
+Currently wav, sun (au-pcm), Apple/SGI aiff/aifc, and raw formats are supported.
+
+I try to write correct wav files (little endian samples), but some
+cd-writers might swap them, which would result in sort of white noise
+instead of the original sounds. icedax has an endianness detector
+for these cases, but as for all automatics, it might fail on bizarre samples.
+
+Hint: icedax can be forced to use a given input endianness with the
+-C option (arguments are 'little', 'big' or 'guess').
+
+The sun format is a pcm variant, and uses big endian samples.
+The other more common sun format with logarithmically scaled samples (au)
+is not supported but can be obtained from sox's conversion.
+
+The raw format is like the sun format except it has no header. I
+changed the endianness to big endian samples in order to comply
+with popular cd burning software like the wodim program.
+
+The sound converter 'sox' can be used to obtain other sound formats.
+(Note however, that the current sox player and a newer sound driver do not
+harmonize well, use the player from the wavplay package instead (available
+at sunsite)).
+
+
+Feedback
+========
+
+Tested patches, any hardware information regarding drives as well as success/
+failure reports are always welcome at heiko@colossus.escape.de.
+
+
+known cdda capable drives
+=========================
+Check out these web pages for uptodate information:
+
+<http://www.tardis.ed.ac.uk/~psyche/pc/cdrom/CDDA.html>
+
+and
+
+<http://www.anime.net/~goemon/linux-cd/cdda-list.html>
+
+From a news posting from Björn Wiberg
+
+> The following table was generated using the CDROM.CFG file from Nero
+> v3.0.4.2.
+>
+> It shows different CD-ROM models and what speeds they can do DAE at. I
+> guess the values are "safe ones"; i.e. the speeds at which each drive
+> can perform DAE reliably.
+>
+> A value of "0x" means the drive doesn't support DAE.
+>
+> For your convenience, the maximum data transfer speed of the drives
+> (for reading conventional files and data from the CD-ROM) are also
+> included.
+>
+> Hopefully, this will help some of you who are looking for a good
+> CD-ROM drive to choose a model which seems fast enough both for data
+> and DAE.
+>
+> The models which support DAE:
+> (Sorted by DAE speed, data speed and model)
+>
+> CD-ROM model DAE Data Interface
+> ---------------------------------------------------------
+> PLEXTOR CD-ROM PX-32TS 16x 16x SCSI
+> TEAC CD-524E 14x 24x IDE
+> CREATIVE CD620E 12x 5x IDE
+> MITSUMI CD-ROM FX320S !B 12x 32x IDE
+> TEAC CD-532E 12x 32x IDE
+> HITACHI CDR-8335 12x 24x IDE
+> PIONEER CD-ROM DR-A02S 12x 24x IDE
+> TEAC CD-ROM CD-532S 12x 14x SCSI
+> PIONEER CD-ROM DR-A12X 12x 12x IDE
+> PIONEER CD-ROM DR-U06S 12x 12x SCSI
+> PLEXTOR CD-ROM PX-20TS 12x 12x SCSI
+> MITSUMI CD-ROM FX120T !B 11x 12x IDE
+> PIONEER CD-ROM DR-A04S 11x 32x IDE
+> PIONEER CD-ROM DR-U12X 10x 12x SCSI
+> HITACHI CDR-8330 9x 24x IDE
+> SONY CD-ROM CDU711 9x 14x IDE
+> MATSHITA CD-ROM CR-584 9x 12x IDE
+> MATSHITA CD-ROM CR-586 8x 32x IDE
+> CDM-T531 Ver1.041 8x 18x IDE
+> TEAC CD-516E 8x 16x IDE
+> TOSHIBA CD-ROM XM-6201TA 8x 16x SCSI
+> PLEXTOR CD-ROM PX-12CS 8x 12x SCSI
+> PLEXTOR CD-ROM PX-12TS 8x 12x SCSI
+> PIONEER CD-ROM DR-U10X 8x 10x SCSI
+> SONY CD-ROM CDU611 8x 10x IDE
+> FUNAI E285X 8x 8x IDE
+> MITSUMI CD-ROM FX810T4!B 8x 8x IDE
+> SONY CD-ROM CDU511 8x 8x IDE
+> SONY CD-ROM CDU571-Q 8x 8x IDE
+> TEAC CD-C68E 8x 8x IDE
+> MITSUMI CD-ROM FX400E !B 8x 4x IDE
+> HITACHI CDR-8130 7x 16x IDE
+> MATSHITA CD-ROM CR-585 6x 24x IDE
+> CREATIVE CD2422E MC102 6x 12x IDE
+> MATSHITA CD-ROM CR-508 6x 12x SCSI
+> IBM PD-1 LF-1195 6x 6x IDE
+> PLEXTOR CD-ROM PX-6XCS 6x 6x SCSI
+> LITEON CD-ROM LTN301 5x 32x IDE
+> LITEON CD-ROM LTN242F 5x 24x IDE
+> HITACHI CDR-7930 5x 8x IDE
+> ASUS CD-S340 4x 34x IDE
+> E-IDE CD-ROM 32X/AKU 4x 32x IDE
+> ATAPI CDROM 4x 24x IDE
+> LITEON CD-ROM LTN244 4x 24x IDE
+> PHILIPS PCA248CD 4x 24x IDE
+> TEAC CD-524EA 4x 24x IDE
+> LITEON CD-ROM LTN202 4x 21x IDE
+> ATAPI CD-ROM DRIVE-24X 4x 20x IDE
+> CREATIVE CD2423E NC101 4x 20x IDE
+> SAMSUNG CD-ROM SCR-2431 4x 20x IDE
+> TAE IL CD-ROM CDD-7240J 4x 20x IDE
+> TEAC CD-220E 4x 20x IDE
+> CREATIVE CD1620E SL970404 4x 16x IDE
+> LITEON CD-ROM LTN262 4x 16x IDE
+> TEAC CD-ROM CD-516S 4x 16x SCSI
+> ATAPI CD-ROM DRIVE 4x 15x IDE
+> BCD 16XA CD-ROM 4x 10x IDE
+> MATSHITA CD-ROM CR-506 4x 8x SCSI
+> SONY CD-ROM CDU311 4x 8x IDE
+> MATSHITA CD-ROM CR-504-J 4x 4x SCSI
+> MITSBISH CDRW226 4x 4x SCSI
+> SONY CD-ROM CDU625-S 4x 4x SCSI
+> SONY CD-ROM CDU-76S 4x 4x SCSI
+> SONY CD-ROM CDU77E 4x 4x IDE
+> PLEXTOR CD-ROM PX-4XCE 4x 4x SCSI
+> SONY CD-ROM CDU55E 4x 2x IDE
+> PIONEER CD-ROM DR-U24X 3x 24x SCSI
+> LITEON CD-ROM LTN204 3x 21x IDE
+> PIONEER CD-ROM DR-A01S 3x 20x IDE
+> PIONEER CD-ROM DR-A24X 3x 20x IDE
+> FUNAI E295X 3x 16x IDE
+> PIONEER CD-ROM DR-U03S 3x 12x SCSI
+> BTC 24X CD-ROM SLL24 3x 10x IDE
+> PLEXTOR CD-ROM PX-8XCS 3x 4x SCSI
+> CyberDrv CD-ROM TW240S 3x 3x SCSI
+> COMPAQ CRD-8320B 2x 32x IDE
+> LG CD-ROM CRD-8320B 2x 32x IDE
+> TOSHIBA CD-ROM XM-6202B 2x 32x IDE
+> CREATIVE DVD-ROM DVD2240E 2x 24x IDE
+> TOSHIBA CD-ROM XM-6102D 2x 24x IDE
+> BTC 16X CD-ROM SLL16 1x 10x IDE
+> NEC CD-ROM DRIVE:282 2x 8x IDE
+> HITACHI GD-2000 2x 4x IDE
+> MATSHITA CD-ROM CR-581 2x 4x IDE
+> NEC CD-ROM DRIVE:222 2x 4x SCSI
+> MATSHITA CD-ROM CR-8004 2x 2x SCSI
+> GoldStar CD-ROM CRD-8240B 1x 24x IDE
+> TOSHIBA CD-ROM XM-6102B 1x 24x IDE
+> CyberDrv IDE CD-ROM 120D 1x 12x IDE
+> I DE CD-ROM TW120D 1x 12x IDE
+> NEC CD-ROM DRIVE:464 1x 12x SCSI
+> TORiSAN CD-ROM CDR_U112 1x 12x IDE
+> TOSHIBA CD-ROM XM-5701TA 1x 12x SCSI
+> TOSHIBA CD-ROM XM-5702B 1x 12x IDE
+> CyberDrv SCSI CD-ROM 120S 1x 10x IDE
+> NEC CD-ROM DRIVE:463 1x 10x SCSI
+> COMPAQ DVD-ROM SD-M1002 1x 8x IDE
+> MATSHITA CD-ROM CR-583 1x 8x IDE
+> NEC CD-ROM DRIVE:462 1x 8x SCSI
+> TEAC CD-58E 1x 8x IDE
+> OPTICS_S 8622 SCSI 1x 8x SCSI
+> TOSHIBA CD-ROM XM-5602B 1x 8x IDE
+> TOSHIBA CD-ROM XM-3801TA 1x 7x SCSI
+> NEC CD-ROM DRIVE:461 1x 6x SCSI
+> IBM CDRM00203 1x 6x SCSI
+> TEAC CD-46E 1x 6x IDE
+> TEAC CD-56E 1x 6x IDE
+> TEAC CD-ROM CD-56S 1x 6x SCSI
+> TOSHIBA CD-ROM XM-5502TA 1x 6x IDE
+> TOSHIBA CD-ROM XM-3701TA 1x 6x SCSI
+> NEC CD-ROM DRIVE:502 1x 4x SCSI
+> TOSHIBA CD-ROM XM-1502BN 1x 4x IDE
+> TOSHIBA CD-ROM XM-5302TA 1x 4x IDE
+> TOSHIBA CD-ROM XM-5401TA 1x 4x SCSI
+> TOSHIBA CD-ROM XM-5402TA 1x 4x IDE
+> TOSHIBA CD-ROM XM-1502B 1x 4x IDE
+> TOSHIBA CD-ROM XM-3501TA 1x 4x SCSI
+> TOSHIBA CD-ROM XM-5301TA 1x 4x SCSI
+> TOSHIBA CD-ROM XM-5201TA 1x 2x SCSI
+
+known cdda uncapable drives
+===========================
+
+Pioneer DRM-602X, DRM-604X
+Teac CD-55A (panasonic bus)
+Philips CM206/10 serial RS-422
+ CM207
+ CM226/10 serial RS-422
+ CDD462/01 serial RS-422
+Orchid CDS3110
+
+Additions to the tables above are welcome.
+
+and now catch your sounds,
+Heiko heiko@colossus.escape.de (Original author)
+Changes for the Cdrkit project by Christian Fromme <kaner@strace.org>, Eduard Bloch