home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Multimed / Multimed.zip / rtmmm.zip / rtmmm.rel.2 / RTMMM-Console / Window1.VRX < prev    next >
Text File  |  1996-11-05  |  14KB  |  598 lines

  1. /*:VRX         Main
  2. */
  3. /*  Main
  4. */
  5. Main:
  6. /*  Process the arguments.
  7.     Get the parent window.
  8. */
  9.     parse source . calledAs .
  10.     parent = ""
  11.     argCount = arg()
  12.     argOff = 0
  13.     if( calledAs \= "COMMAND" )then do
  14.         if argCount >= 1 then do
  15.             parent = arg(1)
  16.             argCount = argCount - 1
  17.             argOff = 1
  18.         end
  19.     end; else do
  20.         call VROptions 'ImplicitNames'
  21.         call VROptions 'NoEchoQuit'
  22.     end
  23.     InitArgs.0 = argCount
  24.     if( argCount > 0 )then do i = 1 to argCount
  25.         InitArgs.i = arg( i + argOff )
  26.     end
  27.     drop calledAs argCount argOff
  28.  
  29. /*  Load the windows
  30. */
  31.     call VRInit
  32.     parse source . . spec
  33.     _VREPrimaryWindowPath = ,
  34.         VRParseFileName( spec, "dpn" ) || ".VRW"
  35.     _VREPrimaryWindow = ,
  36.         VRLoad( parent, _VREPrimaryWindowPath )
  37.     drop parent spec
  38.     if( _VREPrimaryWindow == "" )then do
  39.         call VRMessage "", "Cannot load window:" VRError(), ,
  40.             "Error!"
  41.         _VREReturnValue = 32000
  42.         signal _VRELeaveMain
  43.     end
  44.  
  45. /*  Process events
  46. */
  47.     call Init
  48.     signal on halt
  49.     do while( \ VRGet( _VREPrimaryWindow, "Shutdown" ) )
  50.         _VREEvent = VREvent()
  51.         interpret _VREEvent
  52.     end
  53. _VREHalt:
  54.     _VREReturnValue = Fini()
  55.     call VRDestroy _VREPrimaryWindow
  56. _VRELeaveMain:
  57.     call VRFini
  58. exit _VREReturnValue
  59.  
  60. VRLoadSecondary:
  61.     __vrlsWait = abbrev( 'WAIT', translate(arg(2)), 1 )
  62.     if __vrlsWait then do
  63.         call VRFlush
  64.     end
  65.     __vrlsHWnd = VRLoad( VRWindow(), VRWindowPath(), arg(1) )
  66.     if __vrlsHWnd = '' then signal __vrlsDone
  67.     if __vrlsWait \= 1 then signal __vrlsDone
  68.     call VRSet __vrlsHWnd, 'WindowMode', 'Modal' 
  69.     __vrlsTmp = __vrlsWindows.0
  70.     if( DataType(__vrlsTmp) \= 'NUM' ) then do
  71.         __vrlsTmp = 1
  72.     end
  73.     else do
  74.         __vrlsTmp = __vrlsTmp + 1
  75.     end
  76.     __vrlsWindows.__vrlsTmp = VRWindow( __vrlsHWnd )
  77.     __vrlsWindows.0 = __vrlsTmp
  78.     do while( VRIsValidObject( VRWindow() ) = 1 )
  79.         __vrlsEvent = VREvent()
  80.         interpret __vrlsEvent
  81.     end
  82.     __vrlsTmp = __vrlsWindows.0
  83.     __vrlsWindows.0 = __vrlsTmp - 1
  84.     call VRWindow __vrlsWindows.__vrlsTmp 
  85.     __vrlsHWnd = ''
  86. __vrlsDone:
  87. return __vrlsHWnd
  88.  
  89. /*:VRX         CH1_LINK_Click
  90. */
  91. CH1_LINK_Click: 
  92.     call RTMMM_Link 1
  93. return
  94.  
  95. /*:VRX         CH1_MUTE_Click
  96. */
  97. CH1_MUTE_Click: 
  98.   call RTMMM_Mute 1
  99. return
  100.  
  101. /*:VRX         CH2_LINK_Click
  102. */
  103. CH2_LINK_Click: 
  104. call RTMMM_Link 2
  105. return
  106.  
  107. /*:VRX         CH2_MUTE_Click
  108. */
  109. CH2_MUTE_Click: 
  110. call RTMMM_Mute 2
  111. return
  112.  
  113. /*:VRX         CH3_LINK_Click
  114. */
  115. CH3_LINK_Click: 
  116. call RTMMM_Link 3
  117. return
  118.  
  119. /*:VRX         CH3_MUTE_Click
  120. */
  121. CH3_MUTE_Click: 
  122. call RTMMM_Mute 3
  123. return
  124.  
  125. /*:VRX         CH4_LINK_Click
  126. */
  127. CH4_LINK_Click: 
  128. call RTMMM_Link 4
  129. return
  130.  
  131. /*:VRX         CH4_MUTE_Click
  132. */
  133. CH4_MUTE_Click: 
  134. call RTMMM_Mute 4
  135. return
  136.  
  137. /*:VRX         CH5_LINK_Click
  138. */
  139. CH5_LINK_Click: 
  140. call RTMMM_Link 5
  141. return
  142.  
  143. /*:VRX         CH5_MUTE_Click
  144. */
  145. CH5_MUTE_Click: 
  146. call RTMMM_Mute 5
  147. return
  148.  
  149. /*:VRX         CH6_LINK_Click
  150. */
  151. CH6_LINK_Click: 
  152. call RTMMM_Link 6
  153. return
  154.  
  155. /*:VRX         CH6_MUTE_Click
  156. */
  157. CH6_MUTE_Click: 
  158. call RTMMM_Mute 6
  159. return
  160.  
  161. /*:VRX         CH7_LINK_Click
  162. */
  163. CH7_LINK_Click: 
  164. call RTMMM_Link 7
  165. return
  166.  
  167. /*:VRX         CH7_MUTE_Click
  168. */
  169. CH7_MUTE_Click: 
  170. call RTMMM_Mute 7
  171. return
  172.  
  173. /*:VRX         CH8_LINK_Click
  174. */
  175. CH8_LINK_Click: 
  176. call RTMMM_Link 8
  177. return
  178.  
  179. /*:VRX         CH8_MUTE_Click
  180. */
  181. CH8_MUTE_Click: 
  182. call RTMMM_Mute 8
  183. return
  184.  
  185. /*:VRX         Fini
  186. */
  187. Fini:
  188.     window = VRWindow()
  189.     call VRSet window, "Visible", 0
  190.     drop window
  191. return 0
  192.  
  193. /*:VRX         Halt
  194. */
  195. Halt:
  196.     signal _VREHalt
  197. return
  198.  
  199. /*:VRX         Init
  200. */
  201. Init:
  202.     event_count = -2
  203.     number_of_sliders = 8
  204.     Channels.0 = 0  /* MAX 8 channels */
  205.     Channels.Master = 0 /* Master volume */
  206.     Channels.Busy = 0 /* if the setup is being changed */
  207.     SettingsChanged = 0 /* if something is changed */
  208.     i=1
  209.     do while (i<=8) /* fill remaining channels with 0 */ 
  210.         Channels.i.Active = 0
  211.         Channels.i.Kfilt = 0
  212.         Channels.i.Kright = 0
  213.         Channels.i.Kleft  = 0
  214.         Channels.i.Mute  = 1   /* default as muted */
  215.         Channels.i.Linked  = 1  /* default as linked */
  216.         i = i+1
  217.     end
  218.  
  219.     call RTMMM_GetInfo
  220.  
  221.     window = VRWindow()
  222.     call VRMethod window, "CenterWindow"
  223.     call VRSet window, "Visible", 1
  224.     call VRMethod window, "Activate"
  225.     call VRMethod "Application","StartThread","RTMMM_rf"
  226.  
  227.     Result = Stream("\PIPE\RTMMM_PIPE","C","OPEN");
  228.     if (Result <> "READY:") then do
  229.         return 
  230.     end
  231.     Player = "\PIPE\RTMMM_PIPE"
  232.  
  233.     drop window
  234. return
  235.  
  236. /*:VRX         Input1_L_Track
  237. */
  238. Input1_L_Track: 
  239.     err = RTMMM_Change(1,"L")
  240. return
  241.  
  242. /*:VRX         Input1_R_Track
  243. */
  244. Input1_R_Track: 
  245.     err = RTMMM_Change(1,"R")
  246. return
  247.  
  248. /*:VRX         Input2_L_Track
  249. */
  250. Input2_L_Track: 
  251.     err = RTMMM_Change(2,"L")
  252. return
  253.  
  254. /*:VRX         Input2_R_Track
  255. */
  256. Input2_R_Track: 
  257.     err = RTMMM_Change(2,"R")
  258. return
  259.  
  260. /*:VRX         Input3_L_Track
  261. */
  262. Input3_L_Track: 
  263.  err = RTMMM_Change(3,"L")
  264. return
  265.  
  266. /*:VRX         Input3_R_Track
  267. */
  268. Input3_R_Track: 
  269.  err = RTMMM_Change(3,"R")
  270. return
  271.  
  272. /*:VRX         Input4_L_Track
  273. */
  274. Input4_L_Track: 
  275.  err = RTMMM_Change(4,"L")
  276. return
  277.  
  278. /*:VRX         Input4_R_Track
  279. */
  280. Input4_R_Track: 
  281.  err = RTMMM_Change(4,"R")
  282. return
  283.  
  284. /*:VRX         Input5_L_Track
  285. */
  286. Input5_L_Track: 
  287.  err = RTMMM_Change(5,"L")
  288. return
  289.  
  290. /*:VRX         Input5_R_Track
  291. */
  292. Input5_R_Track: 
  293.  err = RTMMM_Change(5,"R")
  294. return
  295.  
  296. /*:VRX         Input6_L_Track
  297. */
  298. Input6_L_Track: 
  299.  err = RTMMM_Change(6,"L")
  300. return
  301.  
  302. /*:VRX         Input6_R_Track
  303. */
  304. Input6_R_Track: 
  305.  err = RTMMM_Change(6,"R")
  306. return
  307.  
  308. /*:VRX         Input7_L_Track
  309. */
  310. Input7_L_Track: 
  311.  err = RTMMM_Change(7,"L")
  312. return
  313.  
  314. /*:VRX         Input7_R_Track
  315. */
  316. Input7_R_Track: 
  317.  err = RTMMM_Change(7,"R")
  318. return
  319.  
  320. /*:VRX         Input8_L_Track
  321. */
  322. Input8_L_Track: 
  323.  err = RTMMM_Change(8,"L")
  324. return
  325.  
  326. /*:VRX         Input8_R_Track
  327. */
  328. Input8_R_Track: 
  329.  err = RTMMM_Change(8,"R")
  330. return
  331.  
  332. /*:VRX         MAIN_VOLUME_Track
  333. */
  334. MAIN_VOLUME_Track: 
  335.     object = "MAIN_VOLUME"
  336.     value = VRGet(object,"Percentile")
  337.     Channels.Master = value * 327.68
  338.     SettingsChanged = 1
  339.     call RTMMM_SetInfo 
  340. return
  341.  
  342. /*:VRX         Quit
  343. */
  344. Quit:
  345.     Result = Stream("\PIPE\RTMMM_PIPE","C","CLOSE");
  346.     window = VRWindow()
  347.     call VRSet window, "Shutdown", 1
  348.     drop window
  349. return
  350.  
  351. /*:VRX         RTMMM_Change
  352. */
  353. RTMMM_Change: 
  354.     parse arg c_channel, position
  355.  
  356. /*
  357.     sum_other_channels = 2
  358.     if Channels.channel.Linked = 1 then do 
  359.         object = "input"channel"_"position
  360.         value = VRGet(object,"Percentile")
  361.         fvalue = value * 0.01 
  362.         sum_other_channels = sum_other_channels - (Channels.channel.Kright + Channels.channel.Kleft);
  363.         step = (2 * fvalue) - Channels.channel.Kright - Channels.channel.Kleft
  364.         Channels.channel.Kright = value * 0.01
  365.         Channels.channel.Kleft  = value * 0.01
  366.     end
  367.     else do 
  368.         object = "input"channel"_"position
  369.         value = VRGet(object,"Percentile")
  370.         fvalue = value * 0.01
  371.         sum_other_channels = sum_other_channels - (Channels.channel.Kright + Channels.channel.Kleft);
  372.         if position = "R" then step = Channels.channel.Kright
  373.         else                   step = Channels.channel.Kleft
  374.         if position = "R" then Channels.channel.Kright = fvalue             
  375.         else                   Channels.channel.Kleft  = fvalue
  376.         step = fvalue - step
  377.     end
  378.  
  379.     if  sum_other_channels > 0 then  ratio = 1 - (step / sum_other_channels);
  380.     else ratio = 0
  381.  
  382.     i=1
  383.     j= 0+channel
  384.     do while (i<=Channels.0)
  385.         if i=j then do
  386.         end
  387.         else do
  388.             Channels.i.Kright = Channels.i.Kright * ratio
  389.             Channels.i.Kleft  = Channels.i.Kleft * ratio
  390.         end
  391.         i=i+1
  392.     end    
  393.     i = 1
  394. */
  395.     object = "input"c_channel"_"position
  396.     value = VRGet(object,"Percentile")
  397.     fvalue = value * 327.68 
  398.     if position = "R" then Channels.c_channel.Kright = fvalue
  399.     else                   Channels.c_channel.Kleft = fvalue
  400.  
  401.     if Channels.c_channel.Linked = 1 then do 
  402.         Channels.c_channel.Kright = fvalue
  403.         Channels.c_channel.Kleft  = fvalue
  404.     end
  405.     else do 
  406.         if position = "R" then Channels.c_channel.Kright = fvalue
  407.         else                   Channels.c_channel.Kleft = fvalue
  408.     end
  409.  
  410.  
  411.     SettingsChanged = c_channel
  412.    
  413.     call RTMMM_SetInfo 
  414.     call RTMMM_Show c_channel
  415.  
  416. return 0
  417.  
  418. /*:VRX         RTMMM_CONSOLE_Close
  419. */
  420. RTMMM_CONSOLE_Close:
  421.     call Quit
  422. return
  423.  
  424. /*:VRX         RTMMM_GetInfo
  425. */
  426. RTMMM_GetInfo:    
  427. /*
  428.     call lineout Player,"GetEventNumber ." 
  429.     new_event_count = linein(Player)
  430.  
  431.     if new_event_count = event_count then return  
  432.     event_count = new_event_count 
  433. */
  434.     call lineout Player,"GetClientInfo ." 
  435.  
  436.     Channels.0 = linein(Player)
  437.     Channels.Master = 0
  438.  
  439.     i=1
  440.     do while (i<=Channels.0) /* turn all chans off */ 
  441.         Channels.i.Active = 0
  442.         Channels.i.Kfilt  = 0
  443.         Channels.i.Kright = 0
  444.         Channels.i.Kleft  = 0
  445.         i = i+1
  446.     end
  447.  
  448.     i=1
  449.     do while (i<=Channels.0)
  450.         line = linein(Player)
  451.         parse var line chan name title sampling channels k1 k2 k3 mute_stat master_vol
  452.  
  453.         chan = chan + 1        
  454.         Channels.Master      = master_vol
  455.         Channels.chan.Mute   = mute_stat
  456.         Channels.chan.Kfilt  = k3
  457.         Channels.chan.Kright = k1 
  458.         Channels.chan.Kleft  = k2
  459.         Channels.chan.Name   = name
  460.         Channels.chan.Title  = title
  461.         if name = "[OFF]" then Channels.chan.Active = 0
  462.         else Channels.chan.Active = 1
  463.         i=i+1
  464.     end    
  465.  
  466.  
  467.     call RTMMM_Show -1
  468. return
  469.  
  470. /*:VRX         RTMMM_Link
  471. */
  472. RTMMM_Link: 
  473.     parse arg l_channel
  474.     object = "CH"l_channel"_LINK"
  475.     if Channels.l_channel.Linked = 0 then do
  476.         Channels.l_channel.Linked = 1
  477.         err = VRSet(object,"BackColor","Red")
  478.         average = Channels.l_channel.Kright + Channels.l_channel.Kleft
  479.         average = average / 2
  480.         Channels.l_channel.Kright = average
  481.         Channels.l_channel.Kleft  = average
  482.         SettingsChanged = l_channel
  483.         call RTMMM_SetInfo
  484.         call RTMMM_Show l_channel
  485.     end
  486.     else do
  487.         Channels.l_channel.Linked = 0
  488.         err = VRSet(object,"BackColor","PaleGray")
  489.     end
  490. return
  491.  
  492. /*:VRX         RTMMM_Mute
  493. */
  494. RTMMM_Mute: 
  495.     parse arg m_channel
  496.     if Channels.m_channel.Mute = 0 then Channels.m_channel.Mute = 1
  497.     else Channels.m_channel.Mute = 0
  498.  
  499.     SettingsChanged = m_channel
  500.     call RTMMM_SetInfo
  501.     call RTMMM_Show m_channel
  502.  
  503. return
  504.  
  505. /*:VRX         RTMMM_Refresh
  506. */
  507. RTMMM_Refresh: 
  508.     call RTMMM_SetInfo
  509.     call RTMMM_GetInfo
  510. return
  511.  
  512. /*:VRX         RTMMM_SetInfo
  513. */
  514. RTMMM_SetInfo:
  515.  
  516.     if SettingsChanged = -1 then do /* do all channels */
  517.         i = 1
  518.         do while(i<=Channels.0)
  519.             channel = i - 1
  520.             master_vol = Channels.Master
  521.             muted = Channels.i.Mute 
  522.             k1 = Channels.i.Kright 
  523.             k2 = Channels.i.Kleft 
  524.             call lineout Player,"SetClientMixing "channel muted master_vol k1 k2 
  525.             j = linein(Player) /* read answer (dummy)*/
  526.             i=i+1
  527.         end
  528.     end
  529.     else do
  530.         channel = SettingsChanged - 1
  531.         master_vol = Channels.Master
  532.         muted = Channels.i.Mute 
  533.         k1 = Channels.i.Kright 
  534.         k2 = Channels.i.Kleft 
  535.         call lineout Player,"SetClientMixing "channel muted master_vol k1 k2 
  536.         j = linein(Player) /* read answer (dummy)*/
  537.     end
  538.     SettingsChanged = 0
  539.  
  540. return
  541.  
  542. /*:VRX         RTMMM_Show
  543. */
  544. RTMMM_Show:  
  545.     parse arg channel
  546.  
  547.     Channels.Busy  = 1 /* avoid recalc of values every time we touch a slider */
  548.     value = trunc ((Channels.Master * 100) / 32768)
  549.     err = VRSet("MAIN_VOLUME","Percentile", value )
  550.  
  551.     if channel = -1 then do 
  552.         i = 1
  553.         do while(i<=number_of_sliders)         
  554.             object = "CH"i"_STATUS" 
  555.             if Channels.i.Active = 1  then err = VRSet(object,"BackColor","Red") 
  556.             else                           err = VRSet(object,"BackColor","PaleGray") 
  557.             object = "input"i"_R"
  558.             fvalue = (Channels.i.Kright * 100) / 32768
  559.             value = trunc(fvalue)
  560.             err = VRSet(object,"Percentile", value  ) 
  561.             object = "input"i"_L"
  562.             fvalue = (Channels.i.Kleft * 100) / 32768
  563.             value = trunc(fvalue)
  564.             err = VRSet(object,"Percentile", value ) 
  565.             object = "CH"i"_MUTE"
  566.             if Channels.i.Mute =  0 then err = VRSet(object,"BackColor","Red")
  567.             else                        err = VRSet(object,"BackColor","PaleGray")
  568.             object = "CH"i"_LINK"
  569.             if Channels.i.Linked = 1 then err = VRSet(object,"BackColor","Red")
  570.             else                        err = VRSet(object,"BackColor","PaleGray")
  571.             i=i+1    
  572.         end
  573.     end 
  574.     else do 
  575.             i = channel
  576.             object = "CH"i"_STATUS" 
  577.             if Channels.i.Active = 1  then err = VRSet(object,"BackColor","Red") 
  578.             else                           err = VRSet(object,"BackColor","PaleGray") 
  579.             object = "input"i"_R"
  580.             fvalue = (Channels.i.Kright * 100) / 32768
  581.             value = trunc(fvalue)
  582.             err = VRSet(object,"Percentile", value  ) 
  583.             object = "input"i"_L"
  584.             fvalue = (Channels.i.Kleft * 100) / 32768
  585.             value = trunc(fvalue)
  586.             err = VRSet(object,"Percentile", value ) 
  587.             object = "CH"i"_MUTE"
  588.             if Channels.i.Mute =  0 then err = VRSet(object,"BackColor","Red")
  589.             else                        err = VRSet(object,"BackColor","PaleGray")
  590.             object = "CH"i"_LINK"
  591.             if Channels.i.Linked = 1 then err = VRSet(object,"BackColor","Red")
  592.             else                        err = VRSet(object,"BackColor","PaleGray")\
  593.     end
  594.     Channels.Busy = 0
  595.  
  596. return
  597.  
  598.