home *** CD-ROM | disk | FTP | other *** search
/ CLIX - Fazer Clix Custa Nix / CLIX-CD.cdr / mac / lib / Mac / Sound.pm < prev    next >
Text File  |  1998-04-05  |  22KB  |  662 lines

  1. =head1 NAME
  2.  
  3. Mac::Sound - Macintosh Toolbox Interface to Sound Manager
  4.  
  5. =head1 SYNOPSIS
  6.  
  7.  
  8. =head1 DESCRIPTION
  9.  
  10. Access to Inside Macintosh is essential for proper use of these functions.
  11. Explanations of terms, processes and procedures are provided there.
  12. Any attempt to use these functions without guidance can cause severe errors in 
  13. your machine, including corruption of data. B<You have been warned.>
  14.  
  15. =cut
  16.  
  17. use strict;
  18.  
  19. package Mac::Sound;
  20.  
  21. BEGIN {
  22.     use Exporter   ();
  23.     use DynaLoader ();
  24.     use Mac::Memory();
  25.     
  26.     use vars qw(@ISA @EXPORT);
  27.     
  28.     @ISA = qw(Exporter DynaLoader);
  29.     @EXPORT = qw(
  30.         twelfthRootTwo
  31.         soundListRsrc
  32.         rate48khz
  33.         rate44khz
  34.         rate22050hz
  35.         rate22khz
  36.         rate11khz
  37.         rate11025hz
  38.         squareWaveSynth
  39.         waveTableSynth
  40.         sampledSynth
  41.         MACE3snthID
  42.         MACE6snthID
  43.         kMiddleC
  44.         kSimpleBeepID
  45.         kFullVolume
  46.         kNoVolume
  47.         stdQLength
  48.         dataOffsetFlag
  49.         kUseOptionalOutputDevice
  50.         notCompressed
  51.         fixedCompression
  52.         variableCompression
  53.         twoToOne
  54.         eightToThree
  55.         threeToOne
  56.         sixToOne
  57.         sixToOnePacketSize
  58.         threeToOnePacketSize
  59.         stateBlockSize
  60.         leftOverBlockSize
  61.         firstSoundFormat
  62.         secondSoundFormat
  63.         dbBufferReady
  64.         dbLastBuffer
  65.         sysBeepDisable
  66.         sysBeepEnable
  67.         sysBeepSynchronous
  68.         unitTypeNoSelection
  69.         unitTypeSeconds
  70.         stdSH
  71.         extSH
  72.         cmpSH
  73.         nullCmd
  74.         initCmd
  75.         freeCmd
  76.         quietCmd
  77.         flushCmd
  78.         reInitCmd
  79.         waitCmd
  80.         pauseCmd
  81.         resumeCmd
  82.         callBackCmd
  83.         syncCmd
  84.         availableCmd
  85.         versionCmd
  86.         totalLoadCmd
  87.         loadCmd
  88.         freqDurationCmd
  89.         restCmd
  90.         freqCmd
  91.         ampCmd
  92.         timbreCmd
  93.         getAmpCmd
  94.         volumeCmd
  95.         getVolumeCmd
  96.         clockComponentCmd
  97.         getClockComponentCmd
  98.         waveTableCmd
  99.         phaseCmd
  100.         soundCmd
  101.         bufferCmd
  102.         rateCmd
  103.         continueCmd
  104.         doubleBufferCmd
  105.         getRateCmd
  106.         rateMultiplierCmd
  107.         getRateMultiplierCmd
  108.         sizeCmd
  109.         convertCmd
  110.         waveInitChannelMask
  111.         waveInitChannel0
  112.         waveInitChannel1
  113.         waveInitChannel2
  114.         waveInitChannel3
  115.         initChan0
  116.         initChan1
  117.         initChan2
  118.         initChan3
  119.         outsideCmpSH
  120.         insideCmpSH
  121.         aceSuccess
  122.         aceMemFull
  123.         aceNilBlock
  124.         aceBadComp
  125.         aceBadEncode
  126.         aceBadDest
  127.         aceBadCmd
  128.         initChanLeft
  129.         initChanRight
  130.         initNoInterp
  131.         initNoDrop
  132.         initMono
  133.         initStereo
  134.         initMACE3
  135.         initMACE6
  136.         initPanMask
  137.         initSRateMask
  138.         initStereoMask
  139.         initCompMask
  140.         siActiveChannels
  141.         siActiveLevels
  142.         siAGCOnOff
  143.         siAsync
  144.         siAVDisplayBehavior
  145.         siChannelAvailable
  146.         siCompressionAvailable
  147.         siCompressionFactor
  148.         siCompressionHeader
  149.         siCompressionNames
  150.         siCompressionParams
  151.         siCompressionType
  152.         siContinuous
  153.         siDeviceBufferInfo
  154.         siDeviceConnected
  155.         siDeviceIcon
  156.         siDeviceName
  157.         siHardwareBalance
  158.         siHardwareBalanceSteps
  159.         siHardwareBass
  160.         siHardwareBassSteps
  161.         siHardwareBusy
  162.         siHardwareFormat
  163.         siHardwareMute
  164.         siHardwareTreble
  165.         siHardwareTrebleSteps
  166.         siHardwareVolume
  167.         siHardwareVolumeSteps
  168.         siHeadphoneMute
  169.         siHeadphoneVolume
  170.         siHeadphoneVolumeSteps
  171.         siInputAvailable
  172.         siInputGain
  173.         siInputSource
  174.         siInputSourceNames
  175.         siLevelMeterOnOff
  176.         siModemGain
  177.         siMonitorAvailable
  178.         siMonitorSource
  179.         siNumberChannels
  180.         siOptionsDialog
  181.         siPlayThruOnOff
  182.         siPostMixerSoundComponent
  183.         siPreMixerSoundComponent
  184.         siQuality
  185.         siRateMultiplier
  186.         siRecordingQuality
  187.         siSampleRate
  188.         siSampleRateAvailable
  189.         siSampleSize
  190.         siSampleSizeAvailable
  191.         siSetupCDAudio
  192.         siSetupModemAudio
  193.         siSlopeAndIntercept
  194.         siSoundClock
  195.         siSpeakerMute
  196.         siSpeakerVolume
  197.         siSSpCPULoadLimit
  198.         siSSpLocalization
  199.         siSSpSpeakerSetup
  200.         siStereoInputGain
  201.         siSubwooferMute
  202.         siTwosComplementOnOff
  203.         siVolume
  204.         siVoxRecordInfo
  205.         siVoxStopInfo
  206.         siWideStereo
  207.         siCloseDriver
  208.         siInitializeDriver
  209.         siPauseRecording
  210.         siUserInterruptProc
  211.         kNoSoundComponentType
  212.         kSoundComponentType
  213.         kSoundComponentPPCType
  214.         kRate8SubType
  215.         kRate16SubType
  216.         kConverterSubType
  217.         kSndSourceSubType
  218.         kMixerType
  219.         kMixer8SubType
  220.         kMixer16SubType
  221.         kSoundOutputDeviceType
  222.         kClassicSubType
  223.         kASCSubType
  224.         kDSPSubType
  225.         kAwacsSubType
  226.         kGCAwacsSubType
  227.         kSingerSubType
  228.         kSinger2SubType
  229.         kWhitSubType
  230.         kSoundBlasterSubType
  231.         kSoundCompressor
  232.         kSoundDecompressor
  233.         kSoundEffectsType
  234.         kSSpLocalizationSubType
  235.         kSoundNotCompressed
  236.         kOffsetBinary
  237.         kMACE3Compression
  238.         kMACE6Compression
  239.         kCDXA4Compression
  240.         kCDXA2Compression
  241.         kIMACompression
  242.         kULawCompression
  243.         kALawCompression
  244.         kLittleEndianFormat
  245.         kFloat32Format
  246.         kFloat64Format
  247.         kTwosComplement
  248.         k8BitRawIn
  249.         k8BitTwosIn
  250.         k16BitIn
  251.         kStereoIn
  252.         k8BitRawOut
  253.         k8BitTwosOut
  254.         k16BitOut
  255.         kStereoOut
  256.         kReverse
  257.         kRateConvert
  258.         kCreateSoundSource
  259.         kHighQuality
  260.         kNonRealTime
  261.         kSourcePaused
  262.         kPassThrough
  263.         kNoSoundComponentChain
  264.         kNoMixing
  265.         kNoSampleRateConversion
  266.         kNoSampleSizeConversion
  267.         kNoSampleFormatConversion
  268.         kNoChannelConversion
  269.         kNoDecompression
  270.         kNoVolumeConversion
  271.         kNoRealtimeProcessing
  272.         kScheduledSource
  273.         kBestQuality
  274.         kInputMask
  275.         kOutputMask
  276.         kOutputShift
  277.         kActionMask
  278.         kSoundComponentBits
  279.         kAVDisplayHeadphoneRemove
  280.         kAVDisplayHeadphoneInsert
  281.         kAVDisplayPlainTalkRemove
  282.         kAVDisplayPlainTalkInsert
  283.         audioAllChannels
  284.         audioLeftChannel
  285.         audioRightChannel
  286.         audioUnmuted
  287.         audioMuted
  288.         audioDoesMono
  289.         audioDoesStereo
  290.         audioDoesIndependentChannels
  291.         siCDQuality
  292.         siBestQuality
  293.         siBetterQuality
  294.         siGoodQuality
  295.         siDeviceIsConnected
  296.         siDeviceNotConnected
  297.         siDontKnowIfConnected
  298.         siReadPermission
  299.         siWritePermission
  300.  
  301.         SysBeep
  302.         SndDoCommand
  303.         SndDoImmediate
  304.         SndNewChannel
  305.         SndDisposeChannel
  306.         SndPlay
  307.         SndControl
  308.         SndSoundManagerVersion
  309.         SndStartFilePlay
  310.         SndPauseFilePlay
  311.         SndStopFilePlay
  312.         SndChannelStatus
  313.         SndManagerStatus
  314.         SndGetSysBeepState
  315.         SndSetSysBeepState
  316.         MACEVersion
  317.         Comp3to1
  318.         Exp1to3
  319.         Comp6to1
  320.         Exp1to6
  321.         GetSysBeepVolume
  322.         SetSysBeepVolume
  323.         GetDefaultOutputVolume
  324.         SetDefaultOutputVolume
  325.         GetSoundHeaderOffset
  326.         UnsignedFixedMulDiv
  327.         GetCompressionInfo
  328.         SetSoundPreference
  329.         GetSoundPreference
  330.         GetCompressionName
  331.         SPBVersion
  332.         SndRecord
  333.         SndRecordToFile
  334.         SPBSignInDevice
  335.         SPBSignOutDevice
  336.         SPBGetIndexedDevice
  337.         SPBOpenDevice
  338.         SPBCloseDevice
  339.         SPBRecord
  340.         SPBRecordToFile
  341.         SPBPauseRecording
  342.         SPBResumeRecording
  343.         SPBStopRecording
  344.         SPBGetRecordingStatus
  345.     );
  346. }
  347.  
  348. bootstrap Mac::Sound;
  349.  
  350. =head2 Constants
  351.  
  352. =over 4
  353.  
  354. =cut
  355.  
  356. sub twelfthRootTwo ()              { 1.05946309435; }
  357. sub soundListRsrc ()               {     'snd '; }
  358. sub rate48khz ()                   { 48000.00000; }
  359. sub rate44khz ()                   { 44100.00000; }
  360. sub rate22050hz ()                 { 22050.00000; }
  361. sub rate22khz ()                   { 22254.54545 ; }
  362. sub rate11khz ()                   { 11127.27273; }
  363. sub rate11025hz ()                 { 11025.00000; }
  364. sub squareWaveSynth ()             {          1; }
  365. sub waveTableSynth ()              {          3; }
  366. sub sampledSynth ()                {          5; }
  367. sub MACE3snthID ()                 {         11; }
  368. sub MACE6snthID ()                 {         13; }
  369. sub kMiddleC ()                    {         60; }
  370. sub kSimpleBeepID ()               {          1; }
  371. sub kFullVolume ()                 {     0x0100; }
  372. sub kNoVolume ()                   {          0; }
  373. sub stdQLength ()                  {        128; }
  374. sub dataOffsetFlag ()              {     0x8000; }
  375. sub kUseOptionalOutputDevice ()    {         -1; }
  376. sub notCompressed ()               {          0; }
  377. sub fixedCompression ()            {         -1; }
  378. sub variableCompression ()         {         -2; }
  379. sub twoToOne ()                    {          1; }
  380. sub eightToThree ()                {          2; }
  381. sub threeToOne ()                  {          3; }
  382. sub sixToOne ()                    {          4; }
  383. sub sixToOnePacketSize ()          {          8; }
  384. sub threeToOnePacketSize ()        {         16; }
  385. sub stateBlockSize ()              {         64; }
  386. sub leftOverBlockSize ()           {         32; }
  387. sub firstSoundFormat ()            {     0x0001; }
  388. sub secondSoundFormat ()           {     0x0002; }
  389. sub dbBufferReady ()               { 0x00000001; }
  390. sub dbLastBuffer ()                { 0x00000004; }
  391. sub sysBeepDisable ()              {     0x0000; }
  392. sub sysBeepEnable ()               {   (1 << 0); }
  393. sub sysBeepSynchronous ()          {   (1 << 1); }
  394. sub unitTypeNoSelection ()         {     0xFFFF; }
  395. sub unitTypeSeconds ()             {     0x0000; }
  396. sub stdSH ()                       {       0x00; }
  397. sub extSH ()                       {       0xFF; }
  398. sub cmpSH ()                       {       0xFE; }
  399. sub nullCmd ()                     {          0; }
  400. sub initCmd ()                     {          1; }
  401. sub freeCmd ()                     {          2; }
  402. sub quietCmd ()                    {          3; }
  403. sub flushCmd ()                    {          4; }
  404. sub reInitCmd ()                   {          5; }
  405. sub waitCmd ()                     {         10; }
  406. sub pauseCmd ()                    {         11; }
  407. sub resumeCmd ()                   {         12; }
  408. sub callBackCmd ()                 {         13; }
  409. sub syncCmd ()                     {         14; }
  410. sub availableCmd ()                {         24; }
  411. sub versionCmd ()                  {         25; }
  412. sub totalLoadCmd ()                {         26; }
  413. sub loadCmd ()                     {         27; }
  414. sub freqDurationCmd ()             {         40; }
  415. sub restCmd ()                     {         41; }
  416. sub freqCmd ()                     {         42; }
  417. sub ampCmd ()                      {         43; }
  418. sub timbreCmd ()                   {         44; }
  419. sub getAmpCmd ()                   {         45; }
  420. sub volumeCmd ()                   {         46; }
  421. sub getVolumeCmd ()                {         47; }
  422. sub clockComponentCmd ()           {         50; }
  423. sub getClockComponentCmd ()        {         51; }
  424. sub waveTableCmd ()                {         60; }
  425. sub phaseCmd ()                    {         61; }
  426. sub soundCmd ()                    {         80; }
  427. sub bufferCmd ()                   {         81; }
  428. sub rateCmd ()                     {         82; }
  429. sub continueCmd ()                 {         83; }
  430. sub doubleBufferCmd ()             {         84; }
  431. sub getRateCmd ()                  {         85; }
  432. sub rateMultiplierCmd ()           {         86; }
  433. sub getRateMultiplierCmd ()        {         87; }
  434. sub sizeCmd ()                     {         90; }
  435. sub convertCmd ()                  {         91; }
  436. sub waveInitChannelMask ()         {       0x07; }
  437. sub waveInitChannel0 ()            {       0x04; }
  438. sub waveInitChannel1 ()            {       0x05; }
  439. sub waveInitChannel2 ()            {       0x06; }
  440. sub waveInitChannel3 ()            {       0x07; }
  441. sub initChan0 ()                   { waveInitChannel0; }
  442. sub initChan1 ()                   { waveInitChannel1; }
  443. sub initChan2 ()                   { waveInitChannel2; }
  444. sub initChan3 ()                   { waveInitChannel3; }
  445. sub outsideCmpSH ()                {          0; }
  446. sub insideCmpSH ()                 {          1; }
  447. sub aceSuccess ()                  {          0; }
  448. sub aceMemFull ()                  {          1; }
  449. sub aceNilBlock ()                 {          2; }
  450. sub aceBadComp ()                  {          3; }
  451. sub aceBadEncode ()                {          4; }
  452. sub aceBadDest ()                  {          5; }
  453. sub aceBadCmd ()                   {          6; }
  454. sub initChanLeft ()                {     0x0002; }
  455. sub initChanRight ()               {     0x0003; }
  456. sub initNoInterp ()                {     0x0004; }
  457. sub initNoDrop ()                  {     0x0008; }
  458. sub initMono ()                    {     0x0080; }
  459. sub initStereo ()                  {     0x00C0; }
  460. sub initMACE3 ()                   {     0x0300; }
  461. sub initMACE6 ()                   {     0x0400; }
  462. sub initPanMask ()                 {     0x0003; }
  463. sub initSRateMask ()               {     0x0030; }
  464. sub initStereoMask ()              {     0x00C0; }
  465. sub initCompMask ()                {     0xFF00; }
  466. sub siActiveChannels ()            {     'chac'; }
  467. sub siActiveLevels ()              {     'lmac'; }
  468. sub siAGCOnOff ()                  {     'agc '; }
  469. sub siAsync ()                     {     'asyn'; }
  470. sub siAVDisplayBehavior ()         {     'avdb'; }
  471. sub siChannelAvailable ()          {     'chav'; }
  472. sub siCompressionAvailable ()      {     'cmav'; }
  473. sub siCompressionFactor ()         {     'cmfa'; }
  474. sub siCompressionHeader ()         {     'cmhd'; }
  475. sub siCompressionNames ()          {     'cnam'; }
  476. sub siCompressionParams ()         {     'cmpp'; }
  477. sub siCompressionType ()           {     'comp'; }
  478. sub siContinuous ()                {     'cont'; }
  479. sub siDeviceBufferInfo ()          {     'dbin'; }
  480. sub siDeviceConnected ()           {     'dcon'; }
  481. sub siDeviceIcon ()                {     'icon'; }
  482. sub siDeviceName ()                {     'name'; }
  483. sub siHardwareBalance ()           {     'hbal'; }
  484. sub siHardwareBalanceSteps ()      {     'hbls'; }
  485. sub siHardwareBass ()              {     'hbas'; }
  486. sub siHardwareBassSteps ()         {     'hbst'; }
  487. sub siHardwareBusy ()              {     'hwbs'; }
  488. sub siHardwareFormat ()            {     'hwfm'; }
  489. sub siHardwareMute ()              {     'hmut'; }
  490. sub siHardwareTreble ()            {     'htrb'; }
  491. sub siHardwareTrebleSteps ()       {     'hwts'; }
  492. sub siHardwareVolume ()            {     'hvol'; }
  493. sub siHardwareVolumeSteps ()       {     'hstp'; }
  494. sub siHeadphoneMute ()             {     'pmut'; }
  495. sub siHeadphoneVolume ()           {     'pvol'; }
  496. sub siHeadphoneVolumeSteps ()      {     'hdst'; }
  497. sub siInputAvailable ()            {     'inav'; }
  498. sub siInputGain ()                 {     'gain'; }
  499. sub siInputSource ()               {     'sour'; }
  500. sub siInputSourceNames ()          {     'snam'; }
  501. sub siLevelMeterOnOff ()           {     'lmet'; }
  502. sub siModemGain ()                 {     'mgai'; }
  503. sub siMonitorAvailable ()          {     'mnav'; }
  504. sub siMonitorSource ()             {     'mons'; }
  505. sub siNumberChannels ()            {     'chan'; }
  506. sub siOptionsDialog ()             {     'optd'; }
  507. sub siPlayThruOnOff ()             {     'plth'; }
  508. sub siPostMixerSoundComponent ()   {     'psmx'; }
  509. sub siPreMixerSoundComponent ()    {     'prmx'; }
  510. sub siQuality ()                   {     'qual'; }
  511. sub siRateMultiplier ()            {     'rmul'; }
  512. sub siRecordingQuality ()          {     'qual'; }
  513. sub siSampleRate ()                {     'srat'; }
  514. sub siSampleRateAvailable ()       {     'srav'; }
  515. sub siSampleSize ()                {     'ssiz'; }
  516. sub siSampleSizeAvailable ()       {     'ssav'; }
  517. sub siSetupCDAudio ()              {     'sucd'; }
  518. sub siSetupModemAudio ()           {     'sumd'; }
  519. sub siSlopeAndIntercept ()         {     'flap'; }
  520. sub siSoundClock ()                {     'sclk'; }
  521. sub siSpeakerMute ()               {     'smut'; }
  522. sub siSpeakerVolume ()             {     'svol'; }
  523. sub siSSpCPULoadLimit ()           {     '3dll'; }
  524. sub siSSpLocalization ()           {     '3dif'; }
  525. sub siSSpSpeakerSetup ()           {     '3dst'; }
  526. sub siStereoInputGain ()           {     'sgai'; }
  527. sub siSubwooferMute ()             {     'bmut'; }
  528. sub siTwosComplementOnOff ()       {     'twos'; }
  529. sub siVolume ()                    {     'volu'; }
  530. sub siVoxRecordInfo ()             {     'voxr'; }
  531. sub siVoxStopInfo ()               {     'voxs'; }
  532. sub siWideStereo ()                {     'wide'; }
  533. sub siCloseDriver ()               {     'clos'; }
  534. sub siInitializeDriver ()          {     'init'; }
  535. sub siPauseRecording ()            {     'paus'; }
  536. sub siUserInterruptProc ()         {     'user'; }
  537. sub kNoSoundComponentType ()       {     '****'; }
  538. sub kSoundComponentType ()         {     'sift'; }
  539. sub kSoundComponentPPCType ()      {     'nift'; }
  540. sub kRate8SubType ()               {     'ratb'; }
  541. sub kRate16SubType ()              {     'ratw'; }
  542. sub kConverterSubType ()           {     'conv'; }
  543. sub kSndSourceSubType ()           {     'sour'; }
  544. sub kMixerType ()                  {     'mixr'; }
  545. sub kMixer8SubType ()              {     'mixb'; }
  546. sub kMixer16SubType ()             {     'mixw'; }
  547. sub kSoundOutputDeviceType ()      {     'sdev'; }
  548. sub kClassicSubType ()             {     'clas'; }
  549. sub kASCSubType ()                 {     'asc '; }
  550. sub kDSPSubType ()                 {     'dsp '; }
  551. sub kAwacsSubType ()               {     'awac'; }
  552. sub kGCAwacsSubType ()             {     'awgc'; }
  553. sub kSingerSubType ()              {     'sing'; }
  554. sub kSinger2SubType ()             {     'sng2'; }
  555. sub kWhitSubType ()                {     'whit'; }
  556. sub kSoundBlasterSubType ()        {     'sbls'; }
  557. sub kSoundCompressor ()            {     'scom'; }
  558. sub kSoundDecompressor ()          {     'sdec'; }
  559. sub kSoundEffectsType ()           {     'snfx'; }
  560. sub kSSpLocalizationSubType ()     {     'snd3'; }
  561. sub kSoundNotCompressed ()         {     'NONE'; }
  562. sub kOffsetBinary ()               {     'raw '; }
  563. sub kMACE3Compression ()           {     'MAC3'; }
  564. sub kMACE6Compression ()           {     'MAC6'; }
  565. sub kCDXA4Compression ()           {     'cdx4'; }
  566. sub kCDXA2Compression ()           {     'cdx2'; }
  567. sub kIMACompression ()             {     'ima4'; }
  568. sub kULawCompression ()            {     'ulaw'; }
  569. sub kALawCompression ()            {     'alaw'; }
  570. sub kLittleEndianFormat ()         {     'sowt'; }
  571. sub kFloat32Format ()              {     'fl32'; }
  572. sub kFloat64Format ()              {     'fl64'; }
  573. sub kTwosComplement ()             {     'twos'; }
  574. sub k8BitRawIn ()                  {   (1 << 0); }
  575. sub k8BitTwosIn ()                 {   (1 << 1); }
  576. sub k16BitIn ()                    {   (1 << 2); }
  577. sub kStereoIn ()                   {   (1 << 3); }
  578. sub k8BitRawOut ()                 {   (1 << 8); }
  579. sub k8BitTwosOut ()                {   (1 << 9); }
  580. sub k16BitOut ()                   {  (1 << 10); }
  581. sub kStereoOut ()                  {  (1 << 11); }
  582. sub kReverse ()                    { (1 << 16); }
  583. sub kRateConvert ()                { (1 << 17); }
  584. sub kCreateSoundSource ()          { (1 << 18); }
  585. sub kHighQuality ()                { (1 << 22); }
  586. sub kNonRealTime ()                { (1 << 23); }
  587. sub kSourcePaused ()               {   (1 << 0); }
  588. sub kPassThrough ()                { (1 << 16); }
  589. sub kNoSoundComponentChain ()      { (1 << 17); }
  590. sub kNoMixing ()                   {   (1 << 0); }
  591. sub kNoSampleRateConversion ()     {   (1 << 1); }
  592. sub kNoSampleSizeConversion ()     {   (1 << 2); }
  593. sub kNoSampleFormatConversion ()   {   (1 << 3); }
  594. sub kNoChannelConversion ()        {   (1 << 4); }
  595. sub kNoDecompression ()            {   (1 << 5); }
  596. sub kNoVolumeConversion ()         {   (1 << 6); }
  597. sub kNoRealtimeProcessing ()       {   (1 << 7); }
  598. sub kScheduledSource ()            {   (1 << 8); }
  599. sub kBestQuality ()                {   (1 << 0); }
  600. sub kInputMask ()                  { 0x000000FF; }
  601. sub kOutputMask ()                 { 0x0000FF00; }
  602. sub kOutputShift ()                {          8; }
  603. sub kActionMask ()                 { 0x00FF0000; }
  604. sub kSoundComponentBits ()         { 0x00FFFFFF; }
  605. sub kAVDisplayHeadphoneRemove ()   {          0; }
  606. sub kAVDisplayHeadphoneInsert ()   {          1; }
  607. sub kAVDisplayPlainTalkRemove ()   {          2; }
  608. sub kAVDisplayPlainTalkInsert ()   {          3; }
  609. sub audioAllChannels ()            {          0; }
  610. sub audioLeftChannel ()            {          1; }
  611. sub audioRightChannel ()           {          2; }
  612. sub audioUnmuted ()                {          0; }
  613. sub audioMuted ()                  {          1; }
  614. sub audioDoesMono ()               {  (1 << 0); }
  615. sub audioDoesStereo ()             {  (1 << 1); }
  616. sub audioDoesIndependentChannels () {  (1 << 2); }
  617. sub siCDQuality ()                 {     'cd  '; }
  618. sub siBestQuality ()               {     'best'; }
  619. sub siBetterQuality ()             {     'betr'; }
  620. sub siGoodQuality ()               {     'good'; }
  621. sub siDeviceIsConnected ()         {          1; }
  622. sub siDeviceNotConnected ()        {          0; }
  623. sub siDontKnowIfConnected ()       {         -1; }
  624. sub siReadPermission ()            {          0; }
  625. sub siWritePermission ()           {          1; }
  626.  
  627. =back
  628.  
  629. =cut
  630.  
  631. sub GetSoundPreference {
  632.     my($theType, $name, $settings) = @_;
  633.     $settings ||= Mac::Memory::NewHandle();
  634.     _GetSoundPreference($theType, $name, $settings) && $settings;
  635. }
  636.  
  637. sub SndPlay {
  638.     my($chan, $snd, $async) = @_;
  639.     if (!$chan) {
  640.         my($ch) = 0;
  641.         $chan = bless \$ch, "SndChannel";
  642.     }
  643.     $async ||= 0;
  644.     _SndPlay($chan, $snd, $async);
  645. }
  646.  
  647. =include Sound.xs
  648.  
  649. =head1 BUGS/LIMITATIONS
  650.  
  651. =head1 FILES
  652.  
  653. =head1 AUTHOR(S)
  654.  
  655. Matthias Ulrich Neeracher <neeri@iis.ee.ethz.ch> 
  656.  
  657. =cut
  658.  
  659. 1;
  660.  
  661. __END__
  662.