home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_10 / DEVELOP.LZH / FADER / FADER.C next >
C/C++ Source or Header  |  1992-07-24  |  5KB  |  208 lines

  1.  
  2.  
  3. /****************************************/
  4. /* fader.c                              */
  5. /*                                      */
  6. /* Written by Mike Fulton               */
  7. /* Last modified 6:15pm, 7/24/92        */
  8. /****************************************/
  9.  
  10. #include <aes.h>
  11. #include <osbind.h>
  12.  
  13. #include "sndbind.h"
  14.  
  15. #include "scroll.h"
  16. #include "fader.h"
  17.  
  18. /*****************************************************************************/
  19.  
  20. #define MAX_GAIN_VALUE 15
  21. #define MAX_ATTEN_VALUE 15
  22.  
  23. /*****************************************************************************/
  24.  
  25. short prescale, lf_gain, rt_gain, lf_atten, rt_atten;
  26. char wkstr[300];
  27.  
  28. /*****************************************************************************/
  29.  
  30. OBJECT *obj_addr;
  31. short xdial, ydial, wdial, hdial;
  32.  
  33. /*****************************************************************************/
  34. /*****************************************************************************/
  35. /*****************************************************************************/
  36.  
  37. ScrollBox fader_slider[] = {
  38.     ATTEN_L_SLIDER, ATTEN_L_SCROLL, ATTEN_L_UP, ATTEN_L_DOWN,
  39.     0, 0, 0, MAX_ATTEN_VALUE, 0L, 1, 0, 0, 0, 1, 0L, 0L,
  40.  
  41.     ATTEN_R_SLIDER, ATTEN_R_SCROLL, ATTEN_R_UP, ATTEN_R_DOWN,
  42.     0, 0, 0, MAX_ATTEN_VALUE, 0L, 1, 0, 0, 0, 1, 0L, 0L,
  43.  
  44.     GAIN_L_SLIDER, GAIN_L_SCROLL, GAIN_L_UP, GAIN_L_DOWN,
  45.     0, 0, 0, MAX_GAIN_VALUE, 0L, 1, 0, 0, 0, 1, 0L, 0L,
  46.  
  47.     GAIN_R_SLIDER, GAIN_R_SCROLL, GAIN_R_UP, GAIN_R_DOWN,
  48.     0, 0, 0, MAX_GAIN_VALUE, 0L, 1, 0, 0, 0, 1, 0L, 0L,
  49. };
  50.  
  51. /*****************************************************************************/
  52. /*****************************************************************************/
  53. /*****************************************************************************/
  54.  
  55. void
  56. main()
  57. {
  58. short snd_status;
  59.  
  60.     appl_init();
  61.  
  62.     graf_mouse( BUSY_BEE, 0L );
  63.     rsrc_load( "FADER.RSC" );
  64.     graf_mouse( ARROW, 0L );
  65.  
  66.  
  67.     snd_status = (short)locksnd();
  68.  
  69.     if( snd_status == 1 )
  70.     {
  71.         fader_control();
  72.         unlocksnd();
  73.     }
  74.     else
  75.     {
  76.         form_alert( 1, "[1][Sound System locked! | ][ Exit ]" );
  77.     }
  78.  
  79.     rsrc_free();
  80.     appl_exit();
  81. }
  82.  
  83. void
  84. mouse_info( x, y, b )
  85. short *x, *y, *b;
  86. {
  87. short k;
  88.  
  89.     graf_mkstate( x, y, b, &k );
  90. }
  91.  
  92. /*****************************************************************************/
  93. /*****************************************************************************/
  94. /*****************************************************************************/
  95.  
  96. void
  97. obj_draw( obj )
  98. short obj;
  99. {
  100.     objc_draw( obj_addr, obj, MAX_DEPTH, xdial, ydial, wdial, hdial );
  101. }
  102.  
  103. /*****************************************************************************/
  104. /*****************************************************************************/
  105. /*****************************************************************************/
  106.  
  107. void
  108. set_sound()
  109. {
  110.  
  111.     lf_atten = (fader_slider[0].value << 4) & 0x00f0;
  112.     rt_atten = (fader_slider[1].value << 4) & 0x00f0;
  113.  
  114.     lf_gain = (fader_slider[2].value << 4) & 0x00f0;
  115.     rt_gain = (fader_slider[3].value << 4) & 0x00f0;
  116.  
  117.     soundcmd( LTATTEN, lf_atten );
  118.     soundcmd( RTATTEN, rt_atten );
  119.  
  120.     soundcmd( LTGAIN, lf_gain );
  121.     soundcmd( RTGAIN, rt_gain );
  122.  
  123.     soundcmd( ADDERIN, 2 );
  124.     soundcmd( ADCINPUT, 0 );
  125. }
  126.  
  127. void
  128. fader_control()
  129. {
  130. short exit_obj, doubleclick, slider, obj;
  131.  
  132. static short prescale_values[] = {
  133.     1, 2, 3, 4, 5, 7, 9, 11
  134. };
  135.  
  136. static short prescale_buttons[] =
  137. {
  138.     SAMPLE_RATE_50,SAMPLE_RATE_33,SAMPLE_RATE_25,SAMPLE_RATE_20,
  139.     SAMPLE_RATE_16,SAMPLE_RATE_12,SAMPLE_RATE_10,SAMPLE_RATE_8
  140. };
  141.  
  142. /**************/
  143.  
  144.     rsrc_gaddr( R_TREE, CODEC_CONTROL, &obj_addr );
  145.  
  146. /**************/
  147.  
  148.     prescale = prescale_values[0];
  149.     obj_addr[prescale_buttons[0]].ob_state |= SELECTED;
  150.  
  151.     devconnect( 3, 8, 0, prescale, 1 );
  152.  
  153.     soundcmd( LTATTEN, 0 );
  154.     soundcmd( RTATTEN, 0 );
  155.  
  156.     soundcmd( LTGAIN, 0 );
  157.     soundcmd( RTGAIN, 0 );
  158.  
  159.     soundcmd( ADDERIN, 2 );
  160.     soundcmd( ADCINPUT, 0 );
  161.  
  162. /**************/
  163.  
  164.     init_slider( &fader_slider[0], 0, 100, MAX_GAIN_VALUE );
  165.     init_slider( &fader_slider[1], 0, 100, MAX_GAIN_VALUE );
  166.     init_slider( &fader_slider[2], 0, 100, MAX_ATTEN_VALUE );
  167.     init_slider( &fader_slider[3], 0, 100, MAX_ATTEN_VALUE );
  168.  
  169.     rsrc_gaddr( R_TREE, CODEC_CONTROL, &obj_addr );
  170.  
  171.     wind_update( BEG_UPDATE );
  172.  
  173.     form_center( obj_addr, &xdial, &ydial, &wdial, &hdial );
  174.     form_dial( 0, 0, 0, 0, 0, xdial, ydial, wdial, hdial );
  175.     form_dial( 1, 0, 0, 0, 0, xdial, ydial, wdial, hdial );
  176.     objc_draw( obj_addr, ROOT, MAX_DEPTH, xdial, ydial, wdial, hdial );
  177.  
  178.     do
  179.     {
  180.         exit_obj = form_do( obj_addr, -1 );
  181.         doubleclick = exit_obj & 0x8000;
  182.         exit_obj &= 0x7fff;
  183.  
  184.         for( slider = 0; slider < 4;  slider++ )
  185.         {
  186.             if( process_scroll( &fader_slider[slider], exit_obj ) )
  187.             {
  188.                 set_slider( &fader_slider[slider], 1 );
  189.                 set_sound();
  190.             }
  191.             else if( exit_obj != EXIT_THE_DIALOG )
  192.             {
  193.                 for( obj = 0; obj < 8; obj++ )
  194.                 {
  195.                     if( exit_obj == prescale_buttons[obj] )
  196.                       prescale = prescale_values[obj];
  197.                 }
  198.                 devconnect( 3, 8, 0, prescale, 1 );
  199.             }
  200.         }
  201.     }
  202.     while( exit_obj != EXIT_THE_DIALOG );
  203.  
  204.     form_dial( 2, 0, 0, 0, 0, xdial, ydial, wdial, hdial );
  205.     form_dial( 3, 0, 0, 0, 0, xdial, ydial, wdial, hdial );
  206.     wind_update( END_UPDATE );
  207. }
  208.