home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CLIX - Fazer Clix Custa Nix
/
CLIX-CD.cdr
/
mac
/
lib
/
Mac
/
Sound.pm
< prev
next >
Wrap
Text File
|
1998-04-05
|
22KB
|
662 lines
=head1 NAME
Mac::Sound - Macintosh Toolbox Interface to Sound Manager
=head1 SYNOPSIS
=head1 DESCRIPTION
Access to Inside Macintosh is essential for proper use of these functions.
Explanations of terms, processes and procedures are provided there.
Any attempt to use these functions without guidance can cause severe errors in
your machine, including corruption of data. B<You have been warned.>
=cut
use strict;
package Mac::Sound;
BEGIN {
use Exporter ();
use DynaLoader ();
use Mac::Memory();
use vars qw(@ISA @EXPORT);
@ISA = qw(Exporter DynaLoader);
@EXPORT = qw(
twelfthRootTwo
soundListRsrc
rate48khz
rate44khz
rate22050hz
rate22khz
rate11khz
rate11025hz
squareWaveSynth
waveTableSynth
sampledSynth
MACE3snthID
MACE6snthID
kMiddleC
kSimpleBeepID
kFullVolume
kNoVolume
stdQLength
dataOffsetFlag
kUseOptionalOutputDevice
notCompressed
fixedCompression
variableCompression
twoToOne
eightToThree
threeToOne
sixToOne
sixToOnePacketSize
threeToOnePacketSize
stateBlockSize
leftOverBlockSize
firstSoundFormat
secondSoundFormat
dbBufferReady
dbLastBuffer
sysBeepDisable
sysBeepEnable
sysBeepSynchronous
unitTypeNoSelection
unitTypeSeconds
stdSH
extSH
cmpSH
nullCmd
initCmd
freeCmd
quietCmd
flushCmd
reInitCmd
waitCmd
pauseCmd
resumeCmd
callBackCmd
syncCmd
availableCmd
versionCmd
totalLoadCmd
loadCmd
freqDurationCmd
restCmd
freqCmd
ampCmd
timbreCmd
getAmpCmd
volumeCmd
getVolumeCmd
clockComponentCmd
getClockComponentCmd
waveTableCmd
phaseCmd
soundCmd
bufferCmd
rateCmd
continueCmd
doubleBufferCmd
getRateCmd
rateMultiplierCmd
getRateMultiplierCmd
sizeCmd
convertCmd
waveInitChannelMask
waveInitChannel0
waveInitChannel1
waveInitChannel2
waveInitChannel3
initChan0
initChan1
initChan2
initChan3
outsideCmpSH
insideCmpSH
aceSuccess
aceMemFull
aceNilBlock
aceBadComp
aceBadEncode
aceBadDest
aceBadCmd
initChanLeft
initChanRight
initNoInterp
initNoDrop
initMono
initStereo
initMACE3
initMACE6
initPanMask
initSRateMask
initStereoMask
initCompMask
siActiveChannels
siActiveLevels
siAGCOnOff
siAsync
siAVDisplayBehavior
siChannelAvailable
siCompressionAvailable
siCompressionFactor
siCompressionHeader
siCompressionNames
siCompressionParams
siCompressionType
siContinuous
siDeviceBufferInfo
siDeviceConnected
siDeviceIcon
siDeviceName
siHardwareBalance
siHardwareBalanceSteps
siHardwareBass
siHardwareBassSteps
siHardwareBusy
siHardwareFormat
siHardwareMute
siHardwareTreble
siHardwareTrebleSteps
siHardwareVolume
siHardwareVolumeSteps
siHeadphoneMute
siHeadphoneVolume
siHeadphoneVolumeSteps
siInputAvailable
siInputGain
siInputSource
siInputSourceNames
siLevelMeterOnOff
siModemGain
siMonitorAvailable
siMonitorSource
siNumberChannels
siOptionsDialog
siPlayThruOnOff
siPostMixerSoundComponent
siPreMixerSoundComponent
siQuality
siRateMultiplier
siRecordingQuality
siSampleRate
siSampleRateAvailable
siSampleSize
siSampleSizeAvailable
siSetupCDAudio
siSetupModemAudio
siSlopeAndIntercept
siSoundClock
siSpeakerMute
siSpeakerVolume
siSSpCPULoadLimit
siSSpLocalization
siSSpSpeakerSetup
siStereoInputGain
siSubwooferMute
siTwosComplementOnOff
siVolume
siVoxRecordInfo
siVoxStopInfo
siWideStereo
siCloseDriver
siInitializeDriver
siPauseRecording
siUserInterruptProc
kNoSoundComponentType
kSoundComponentType
kSoundComponentPPCType
kRate8SubType
kRate16SubType
kConverterSubType
kSndSourceSubType
kMixerType
kMixer8SubType
kMixer16SubType
kSoundOutputDeviceType
kClassicSubType
kASCSubType
kDSPSubType
kAwacsSubType
kGCAwacsSubType
kSingerSubType
kSinger2SubType
kWhitSubType
kSoundBlasterSubType
kSoundCompressor
kSoundDecompressor
kSoundEffectsType
kSSpLocalizationSubType
kSoundNotCompressed
kOffsetBinary
kMACE3Compression
kMACE6Compression
kCDXA4Compression
kCDXA2Compression
kIMACompression
kULawCompression
kALawCompression
kLittleEndianFormat
kFloat32Format
kFloat64Format
kTwosComplement
k8BitRawIn
k8BitTwosIn
k16BitIn
kStereoIn
k8BitRawOut
k8BitTwosOut
k16BitOut
kStereoOut
kReverse
kRateConvert
kCreateSoundSource
kHighQuality
kNonRealTime
kSourcePaused
kPassThrough
kNoSoundComponentChain
kNoMixing
kNoSampleRateConversion
kNoSampleSizeConversion
kNoSampleFormatConversion
kNoChannelConversion
kNoDecompression
kNoVolumeConversion
kNoRealtimeProcessing
kScheduledSource
kBestQuality
kInputMask
kOutputMask
kOutputShift
kActionMask
kSoundComponentBits
kAVDisplayHeadphoneRemove
kAVDisplayHeadphoneInsert
kAVDisplayPlainTalkRemove
kAVDisplayPlainTalkInsert
audioAllChannels
audioLeftChannel
audioRightChannel
audioUnmuted
audioMuted
audioDoesMono
audioDoesStereo
audioDoesIndependentChannels
siCDQuality
siBestQuality
siBetterQuality
siGoodQuality
siDeviceIsConnected
siDeviceNotConnected
siDontKnowIfConnected
siReadPermission
siWritePermission
SysBeep
SndDoCommand
SndDoImmediate
SndNewChannel
SndDisposeChannel
SndPlay
SndControl
SndSoundManagerVersion
SndStartFilePlay
SndPauseFilePlay
SndStopFilePlay
SndChannelStatus
SndManagerStatus
SndGetSysBeepState
SndSetSysBeepState
MACEVersion
Comp3to1
Exp1to3
Comp6to1
Exp1to6
GetSysBeepVolume
SetSysBeepVolume
GetDefaultOutputVolume
SetDefaultOutputVolume
GetSoundHeaderOffset
UnsignedFixedMulDiv
GetCompressionInfo
SetSoundPreference
GetSoundPreference
GetCompressionName
SPBVersion
SndRecord
SndRecordToFile
SPBSignInDevice
SPBSignOutDevice
SPBGetIndexedDevice
SPBOpenDevice
SPBCloseDevice
SPBRecord
SPBRecordToFile
SPBPauseRecording
SPBResumeRecording
SPBStopRecording
SPBGetRecordingStatus
);
}
bootstrap Mac::Sound;
=head2 Constants
=over 4
=cut
sub twelfthRootTwo () { 1.05946309435; }
sub soundListRsrc () { 'snd '; }
sub rate48khz () { 48000.00000; }
sub rate44khz () { 44100.00000; }
sub rate22050hz () { 22050.00000; }
sub rate22khz () { 22254.54545 ; }
sub rate11khz () { 11127.27273; }
sub rate11025hz () { 11025.00000; }
sub squareWaveSynth () { 1; }
sub waveTableSynth () { 3; }
sub sampledSynth () { 5; }
sub MACE3snthID () { 11; }
sub MACE6snthID () { 13; }
sub kMiddleC () { 60; }
sub kSimpleBeepID () { 1; }
sub kFullVolume () { 0x0100; }
sub kNoVolume () { 0; }
sub stdQLength () { 128; }
sub dataOffsetFlag () { 0x8000; }
sub kUseOptionalOutputDevice () { -1; }
sub notCompressed () { 0; }
sub fixedCompression () { -1; }
sub variableCompression () { -2; }
sub twoToOne () { 1; }
sub eightToThree () { 2; }
sub threeToOne () { 3; }
sub sixToOne () { 4; }
sub sixToOnePacketSize () { 8; }
sub threeToOnePacketSize () { 16; }
sub stateBlockSize () { 64; }
sub leftOverBlockSize () { 32; }
sub firstSoundFormat () { 0x0001; }
sub secondSoundFormat () { 0x0002; }
sub dbBufferReady () { 0x00000001; }
sub dbLastBuffer () { 0x00000004; }
sub sysBeepDisable () { 0x0000; }
sub sysBeepEnable () { (1 << 0); }
sub sysBeepSynchronous () { (1 << 1); }
sub unitTypeNoSelection () { 0xFFFF; }
sub unitTypeSeconds () { 0x0000; }
sub stdSH () { 0x00; }
sub extSH () { 0xFF; }
sub cmpSH () { 0xFE; }
sub nullCmd () { 0; }
sub initCmd () { 1; }
sub freeCmd () { 2; }
sub quietCmd () { 3; }
sub flushCmd () { 4; }
sub reInitCmd () { 5; }
sub waitCmd () { 10; }
sub pauseCmd () { 11; }
sub resumeCmd () { 12; }
sub callBackCmd () { 13; }
sub syncCmd () { 14; }
sub availableCmd () { 24; }
sub versionCmd () { 25; }
sub totalLoadCmd () { 26; }
sub loadCmd () { 27; }
sub freqDurationCmd () { 40; }
sub restCmd () { 41; }
sub freqCmd () { 42; }
sub ampCmd () { 43; }
sub timbreCmd () { 44; }
sub getAmpCmd () { 45; }
sub volumeCmd () { 46; }
sub getVolumeCmd () { 47; }
sub clockComponentCmd () { 50; }
sub getClockComponentCmd () { 51; }
sub waveTableCmd () { 60; }
sub phaseCmd () { 61; }
sub soundCmd () { 80; }
sub bufferCmd () { 81; }
sub rateCmd () { 82; }
sub continueCmd () { 83; }
sub doubleBufferCmd () { 84; }
sub getRateCmd () { 85; }
sub rateMultiplierCmd () { 86; }
sub getRateMultiplierCmd () { 87; }
sub sizeCmd () { 90; }
sub convertCmd () { 91; }
sub waveInitChannelMask () { 0x07; }
sub waveInitChannel0 () { 0x04; }
sub waveInitChannel1 () { 0x05; }
sub waveInitChannel2 () { 0x06; }
sub waveInitChannel3 () { 0x07; }
sub initChan0 () { waveInitChannel0; }
sub initChan1 () { waveInitChannel1; }
sub initChan2 () { waveInitChannel2; }
sub initChan3 () { waveInitChannel3; }
sub outsideCmpSH () { 0; }
sub insideCmpSH () { 1; }
sub aceSuccess () { 0; }
sub aceMemFull () { 1; }
sub aceNilBlock () { 2; }
sub aceBadComp () { 3; }
sub aceBadEncode () { 4; }
sub aceBadDest () { 5; }
sub aceBadCmd () { 6; }
sub initChanLeft () { 0x0002; }
sub initChanRight () { 0x0003; }
sub initNoInterp () { 0x0004; }
sub initNoDrop () { 0x0008; }
sub initMono () { 0x0080; }
sub initStereo () { 0x00C0; }
sub initMACE3 () { 0x0300; }
sub initMACE6 () { 0x0400; }
sub initPanMask () { 0x0003; }
sub initSRateMask () { 0x0030; }
sub initStereoMask () { 0x00C0; }
sub initCompMask () { 0xFF00; }
sub siActiveChannels () { 'chac'; }
sub siActiveLevels () { 'lmac'; }
sub siAGCOnOff () { 'agc '; }
sub siAsync () { 'asyn'; }
sub siAVDisplayBehavior () { 'avdb'; }
sub siChannelAvailable () { 'chav'; }
sub siCompressionAvailable () { 'cmav'; }
sub siCompressionFactor () { 'cmfa'; }
sub siCompressionHeader () { 'cmhd'; }
sub siCompressionNames () { 'cnam'; }
sub siCompressionParams () { 'cmpp'; }
sub siCompressionType () { 'comp'; }
sub siContinuous () { 'cont'; }
sub siDeviceBufferInfo () { 'dbin'; }
sub siDeviceConnected () { 'dcon'; }
sub siDeviceIcon () { 'icon'; }
sub siDeviceName () { 'name'; }
sub siHardwareBalance () { 'hbal'; }
sub siHardwareBalanceSteps () { 'hbls'; }
sub siHardwareBass () { 'hbas'; }
sub siHardwareBassSteps () { 'hbst'; }
sub siHardwareBusy () { 'hwbs'; }
sub siHardwareFormat () { 'hwfm'; }
sub siHardwareMute () { 'hmut'; }
sub siHardwareTreble () { 'htrb'; }
sub siHardwareTrebleSteps () { 'hwts'; }
sub siHardwareVolume () { 'hvol'; }
sub siHardwareVolumeSteps () { 'hstp'; }
sub siHeadphoneMute () { 'pmut'; }
sub siHeadphoneVolume () { 'pvol'; }
sub siHeadphoneVolumeSteps () { 'hdst'; }
sub siInputAvailable () { 'inav'; }
sub siInputGain () { 'gain'; }
sub siInputSource () { 'sour'; }
sub siInputSourceNames () { 'snam'; }
sub siLevelMeterOnOff () { 'lmet'; }
sub siModemGain () { 'mgai'; }
sub siMonitorAvailable () { 'mnav'; }
sub siMonitorSource () { 'mons'; }
sub siNumberChannels () { 'chan'; }
sub siOptionsDialog () { 'optd'; }
sub siPlayThruOnOff () { 'plth'; }
sub siPostMixerSoundComponent () { 'psmx'; }
sub siPreMixerSoundComponent () { 'prmx'; }
sub siQuality () { 'qual'; }
sub siRateMultiplier () { 'rmul'; }
sub siRecordingQuality () { 'qual'; }
sub siSampleRate () { 'srat'; }
sub siSampleRateAvailable () { 'srav'; }
sub siSampleSize () { 'ssiz'; }
sub siSampleSizeAvailable () { 'ssav'; }
sub siSetupCDAudio () { 'sucd'; }
sub siSetupModemAudio () { 'sumd'; }
sub siSlopeAndIntercept () { 'flap'; }
sub siSoundClock () { 'sclk'; }
sub siSpeakerMute () { 'smut'; }
sub siSpeakerVolume () { 'svol'; }
sub siSSpCPULoadLimit () { '3dll'; }
sub siSSpLocalization () { '3dif'; }
sub siSSpSpeakerSetup () { '3dst'; }
sub siStereoInputGain () { 'sgai'; }
sub siSubwooferMute () { 'bmut'; }
sub siTwosComplementOnOff () { 'twos'; }
sub siVolume () { 'volu'; }
sub siVoxRecordInfo () { 'voxr'; }
sub siVoxStopInfo () { 'voxs'; }
sub siWideStereo () { 'wide'; }
sub siCloseDriver () { 'clos'; }
sub siInitializeDriver () { 'init'; }
sub siPauseRecording () { 'paus'; }
sub siUserInterruptProc () { 'user'; }
sub kNoSoundComponentType () { '****'; }
sub kSoundComponentType () { 'sift'; }
sub kSoundComponentPPCType () { 'nift'; }
sub kRate8SubType () { 'ratb'; }
sub kRate16SubType () { 'ratw'; }
sub kConverterSubType () { 'conv'; }
sub kSndSourceSubType () { 'sour'; }
sub kMixerType () { 'mixr'; }
sub kMixer8SubType () { 'mixb'; }
sub kMixer16SubType () { 'mixw'; }
sub kSoundOutputDeviceType () { 'sdev'; }
sub kClassicSubType () { 'clas'; }
sub kASCSubType () { 'asc '; }
sub kDSPSubType () { 'dsp '; }
sub kAwacsSubType () { 'awac'; }
sub kGCAwacsSubType () { 'awgc'; }
sub kSingerSubType () { 'sing'; }
sub kSinger2SubType () { 'sng2'; }
sub kWhitSubType () { 'whit'; }
sub kSoundBlasterSubType () { 'sbls'; }
sub kSoundCompressor () { 'scom'; }
sub kSoundDecompressor () { 'sdec'; }
sub kSoundEffectsType () { 'snfx'; }
sub kSSpLocalizationSubType () { 'snd3'; }
sub kSoundNotCompressed () { 'NONE'; }
sub kOffsetBinary () { 'raw '; }
sub kMACE3Compression () { 'MAC3'; }
sub kMACE6Compression () { 'MAC6'; }
sub kCDXA4Compression () { 'cdx4'; }
sub kCDXA2Compression () { 'cdx2'; }
sub kIMACompression () { 'ima4'; }
sub kULawCompression () { 'ulaw'; }
sub kALawCompression () { 'alaw'; }
sub kLittleEndianFormat () { 'sowt'; }
sub kFloat32Format () { 'fl32'; }
sub kFloat64Format () { 'fl64'; }
sub kTwosComplement () { 'twos'; }
sub k8BitRawIn () { (1 << 0); }
sub k8BitTwosIn () { (1 << 1); }
sub k16BitIn () { (1 << 2); }
sub kStereoIn () { (1 << 3); }
sub k8BitRawOut () { (1 << 8); }
sub k8BitTwosOut () { (1 << 9); }
sub k16BitOut () { (1 << 10); }
sub kStereoOut () { (1 << 11); }
sub kReverse () { (1 << 16); }
sub kRateConvert () { (1 << 17); }
sub kCreateSoundSource () { (1 << 18); }
sub kHighQuality () { (1 << 22); }
sub kNonRealTime () { (1 << 23); }
sub kSourcePaused () { (1 << 0); }
sub kPassThrough () { (1 << 16); }
sub kNoSoundComponentChain () { (1 << 17); }
sub kNoMixing () { (1 << 0); }
sub kNoSampleRateConversion () { (1 << 1); }
sub kNoSampleSizeConversion () { (1 << 2); }
sub kNoSampleFormatConversion () { (1 << 3); }
sub kNoChannelConversion () { (1 << 4); }
sub kNoDecompression () { (1 << 5); }
sub kNoVolumeConversion () { (1 << 6); }
sub kNoRealtimeProcessing () { (1 << 7); }
sub kScheduledSource () { (1 << 8); }
sub kBestQuality () { (1 << 0); }
sub kInputMask () { 0x000000FF; }
sub kOutputMask () { 0x0000FF00; }
sub kOutputShift () { 8; }
sub kActionMask () { 0x00FF0000; }
sub kSoundComponentBits () { 0x00FFFFFF; }
sub kAVDisplayHeadphoneRemove () { 0; }
sub kAVDisplayHeadphoneInsert () { 1; }
sub kAVDisplayPlainTalkRemove () { 2; }
sub kAVDisplayPlainTalkInsert () { 3; }
sub audioAllChannels () { 0; }
sub audioLeftChannel () { 1; }
sub audioRightChannel () { 2; }
sub audioUnmuted () { 0; }
sub audioMuted () { 1; }
sub audioDoesMono () { (1 << 0); }
sub audioDoesStereo () { (1 << 1); }
sub audioDoesIndependentChannels () { (1 << 2); }
sub siCDQuality () { 'cd '; }
sub siBestQuality () { 'best'; }
sub siBetterQuality () { 'betr'; }
sub siGoodQuality () { 'good'; }
sub siDeviceIsConnected () { 1; }
sub siDeviceNotConnected () { 0; }
sub siDontKnowIfConnected () { -1; }
sub siReadPermission () { 0; }
sub siWritePermission () { 1; }
=back
=cut
sub GetSoundPreference {
my($theType, $name, $settings) = @_;
$settings ||= Mac::Memory::NewHandle();
_GetSoundPreference($theType, $name, $settings) && $settings;
}
sub SndPlay {
my($chan, $snd, $async) = @_;
if (!$chan) {
my($ch) = 0;
$chan = bless \$ch, "SndChannel";
}
$async ||= 0;
_SndPlay($chan, $snd, $async);
}
=include Sound.xs
=head1 BUGS/LIMITATIONS
=head1 FILES
=head1 AUTHOR(S)
Matthias Ulrich Neeracher <neeri@iis.ee.ethz.ch>
=cut
1;
__END__