home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Multimed / Multimed.zip / lbmix04.zip / LBMix.txt < prev   
Text File  |  2000-05-07  |  14KB  |  310 lines

  1.    LBMix v.0.04. A universal mixer for IOCTL90 and pipe mixer APIs.
  2.  
  3.  
  4. This is free software. It is distributed under GNU General Public License.
  5. See file COPYING for details. There is NO WARRANTY. Use it at your own risk.
  6. This program uses some parts from free IOCTL 90 API demonstration program.
  7.  
  8.  
  9.                 INTRO
  10.  
  11. This is a mixer front end. It does not communicate with hardware directly, it
  12. communicates with other software that works with hardware. It can work with
  13. two kinds of such software: audio device drivers that support IOCTL90 Mixer
  14. API and pipe mixer backends. The IOCTL90 mixer API was originaly implemented
  15. in Crystal Semiconductor drivers, however some other drivers support it as
  16. well, see "Driver Compatibility" section below. The pipe mixer backend is an
  17. easy to write mixer that runs as a detached process and accepts commands as a
  18. text strings sent through a named pipe.
  19.  
  20.  
  21.             INSTALLATION
  22.  
  23. Unpack the archive into a directory. Run install.cmd script and it will
  24. create an LBMix object on desktop. Then you can move the object wherever you
  25. want (including the shredder). You don't need to run the script if you're
  26. upgrading from the previous version.
  27.  
  28. The default user ini application name used to store mixer's data is "LBMix".
  29.  
  30.  
  31.                 USAGE
  32.  
  33. There are several controls on the screen. Each has one or two sliders
  34. and up to three checkboxes. Most of the sliders set volume (left and right if
  35. there are two sliders), "Mute" checkbox mutes the input/output, if "Both" is
  36. checked tracking one slider changes both channels. "Lock" checkbox appear at
  37. controls overriding MMOS/2 per stream controls and shows that it is controlled
  38. by the mixer rather than apps. The sliders of 3D control set space (left) and
  39. center (right). The sliders of tone control set bass (left) and treble (right)
  40. levels. An input selector control has a listbox rather than sliders. You can
  41. select one or several inputs in the list box (depends on driver capabilities).
  42.  
  43. The pop-up menu can be accessed by right mouse button click. The window can
  44. be moved by dragging it with left or right mouse buttons. The window can be
  45. minimized by left mouse button click.
  46.  
  47. Selecting "Info" menu item brings up a box with info returned by the driver.
  48. "Settings" brings up a settings notebook.
  49.  
  50. NOTE1: You'd better keep all the unused inputs muted to minimize the noise
  51.        level.
  52. NOTE2: Audio chips have several equivalent inputs named Line, CD, etc. Despite
  53.        of these naming a card manufacturer may use different inputs assignment.
  54.        Because of this an ability to rename controls was added. See "Settings
  55.        notebook" section for more info.
  56.  
  57.  
  58.             COMMAND LINE OPTIONS
  59.  
  60. -mv        - Use IOCTL category 80 call for master volume control.
  61.           (see more info below in "Master volume control" section).
  62. -x        - Exit after initialization. Useful together with "Restore
  63.                   mixer state at startup" for setting initial mixer state at
  64.           system startup or with batch commands.
  65.  
  66. -i <INI file app name>        - Specify User INI file application name
  67.                                   (case sensitive, default: LBMix).
  68. -d <Audio device driver>    - Specify audio device driver name
  69.                   (default: MMOS/2 default audio driver)
  70.  
  71. -p        - Use pipe mixer API instead of IOCTL 90 (on default the mixer
  72.           tries IOCTL 90 API first and then pipe mixer API).
  73. -ps        - Enable built-in pipe mixer API server (supported only while
  74.                   working via IOCTL 90, useful to control the mixer by REXX
  75.                   or remotely). For more information about pipe mixer API and
  76.                   some REXX examples see pipe mixer pack readme.
  77. -pn <pipe name>    - Change default pipe name for pipe mixer API.
  78.                   (default: \PIPE\MIXER)
  79.  
  80.  
  81.             SETTINGS NOTEBOOK
  82.  
  83. Available settings:
  84. "Active controls" tab:
  85.       - Set mono mode for each stereo control (mono mode means one slider
  86.         controls both channels).
  87.       - Enable/disable each control.
  88.       - Rename each control (useful to match your sound card wiring or to save
  89.         window space by using short names).
  90. "Appearance" tab:
  91.       - Rename each dialog control (useful to save window space by using short
  92.         names).
  93.       - set maximum number of controls in a row (1-16). If more controls are
  94.         active they are displayed in two rows.
  95.       - enable or disable menu.
  96.       - enable or disable title bar.
  97.       - enable or disable short sliders.
  98.       - enable or disable narrow sliders (useful with small fonts, a bit
  99.         tricky, may not work in all cases).
  100. "Other" tab:
  101.       - set additional name for this mixer instance that will be displayed in
  102.         the window title and in task list.
  103.       - set icon for this mixer instance.
  104.       - set whether the current mixer settings will be left as is on startup
  105.         or restored to saved values,
  106.       - set whether the mixer will minimize automatically when you select
  107.         another window.
  108.  
  109. NOTE1: If a control is grey in the Settings dialog then this control is
  110.        not supported by the driver. The same driver may support different
  111.        controls with different cards.
  112.  
  113.  
  114.             DRAG'N'DROP
  115.  
  116. A color or font can be dropped on the window. If a font is dropped then control
  117. layouts are re-calculated to match the font size. If a color is dropped on the
  118. window inside a mixer control then the color is changed for that mixer control
  119. individually. If a color is dropped on the window background outside mixer
  120. controls then the color is changed globally for all mixer controls except ones
  121. having individual color settings. Drag a color holding down Ctrl key to change
  122. foreground color.
  123.  
  124. Dropping a color on a listbox changes its background color. Dragging a color
  125. holding down Ctrl key and dropping it on a listbox changes its foreground
  126. color. Dragging a color holding down Ctrl key and dropping it on a slider
  127. changes the slider color.
  128.  
  129. Disable "Minimize on losing focus" option before drag'n'dropping color or
  130. font, you can re-enable it later.
  131.  
  132. NOTE1: It can be hard to drop a color on window background when the font size
  133.        is too small and thus the unused window background area is small as
  134.        well. Drop a larger font before dropping the color in this case. You
  135.        can drop smaller font after you've changed the colors.
  136. NOTE2: If you drop a color on a window frame instead of window background
  137.        you can change the default colors of child dialogs. So if you suddenly
  138.        discover that a child dialog changed it's colors then you've probably
  139.        missed the window background when dropping a color on it. 
  140.  
  141.  
  142.             BATCH COMMANDS
  143.  
  144. One or more batch commands can be entered in a command line. They are processed
  145. after the mixer state is restored or queried but before the -x option is
  146. processed. A batch command format:
  147.  
  148. <name>:<ll>:<rr>:<f>:<f>
  149.  
  150. Where <name> is a control name. It is matched case insensitively against
  151. user defined control names. You may specify first characters (enough to match
  152. only one name) instead of a full control name.
  153.  
  154. <ll> and <rr> are values for left and right in one of the following formats:
  155. +nn - increase the value by nn,  -nn - decrease the value by nn, nn - set the
  156. velue to nn.  You may omit either of these values or both if you do not want
  157. to change them.
  158.  
  159. <f> is a flag: +M - to mute the control, -M to unmute the control,
  160. +L to lock the control, -L to unlock the control. You may use +MUTE, -MUTE,
  161. +LOCK, -LOCK as well.
  162.  
  163. Some examples:
  164. LBMix DAC:100:100:+LOCK:-MUTE ADC:::+LOCK Mic:::+MUTE Line:-30
  165. - set both DAC volumes to 100, lock the DAC control and unmute it. Lock ADC
  166. control. Mute microphone input. Decrease line left channel volume by 30.
  167.  
  168. LBMix Line:::+MUTE Mic:::+MUTE Aux:::+MUTE Mono:::+MUTE -x
  169. - mute Line, Mic, Aux and Mono inputs and exit. This command can be placed in
  170. startup folder to mute unused inputs to reduce noise.
  171.  
  172. LBMix Master:-20 -x
  173. - reduce master volume (via MMOS/2) and exit.
  174.  
  175. LBMix Master:+20 -x
  176. - increase master volume (via MMOS/2) and exit.
  177.  
  178. NOTE1: Batch commands can set unactive controls as well.
  179. NOTE2: If a stereo control has "Both" turned on then left or right values of a
  180.        batch command affect both left and right settings of the control. If
  181.        both left and right values are specified in this case then left value
  182.        is processed first and right value is processed after that.
  183. NOTE3: batch commands increasing or decreasing master volume will not work
  184.        correctly if -mv option is specified.
  185. NOTE4: If "Restore mixer state after startup" option is enabled then the
  186.        increments and decrements in batch commands are specified relative to
  187.        restored values.
  188. NOTE5: For 3D processing control Space is considered as left value, Center
  189.        is considered as right value. For tone control Bass is considered
  190.        as left value, Treble is considered as right value.
  191. NOTE6: For input source selector the left value sets the input source:
  192.        16 = Mic, 32 = CD, 64 = Video, 128 = Aux, 256 = Line, 2048 = Phone.
  193.        These values can be added in case the input source selector is a mixer,
  194.        e.g. 48 = Mic(16) + CD(32). The right value is ignored.
  195.  
  196.  
  197.  
  198.             MASTER VOLUME CONTROL
  199.  
  200. The master volume control is implemented in two different ways. Both are
  201. somewhat tricky. On default master volume control works via MMOS/2 in exactly
  202. the same way as standard MMOS/2 master volume control does. Only single mono
  203. control is available in this case. If the -mv option is specified then master
  204. volume is controlled either by calling the driver IOCTL 80 API or by a function
  205. of pipe mixer backend. In this case the control is stereo but this may be
  206. unsupported by some drivers. Please do not run the MMOS/2 master volume control
  207. concurrently with the mixer if master volume control is enabled.
  208.  
  209.  
  210.           USING SEVERAL INSTANCES OF A MIXER
  211.  
  212. Sometimes it is convenient to use several instances of a mixer. E.g. to control
  213. different cards or to use one instance as a basic mixer with only the most
  214. frequently used controls enabled and another one as an extended mixer with
  215. all controls enabled. In this case the different instances should use different
  216. INI file application name to have their own settings. One of the instances can
  217. use the default name and another one should have a different name specified by
  218. -i <name> command line option. Also you should give the different instances
  219. different instance names and assign different instance icons so you can easily
  220. distinguish between them in the task list or minimized window viewer.
  221.  
  222.  
  223.                       DRIVER COMPATIBILITY
  224.  
  225. Crystal 2.08, v.3.03 (API level 1) - "Features":
  226.         Mixer status is not updated on changes made by other app (or other
  227.         instance of mixer). Once ADC setting is modified it is locked and
  228.         can't be controlled in a normal way by the app.
  229.  
  230.         Bugs (found in v.2.08 but probably present in v.3.02 as well):
  231.         Line left volume does not work, it is always set the same as the right
  232.         volume. Mic is muted initially and can't be unmuted.
  233.  
  234.  
  235. Crystal 2.09, v.3.06 (API level 2):
  236.         Returns empty driver info unless the driver is loaded with /v option.
  237.         DAC volume does not increase continuously (at least in 2.09).
  238.  
  239. SB Live! beta 0.25:
  240.         Sometimes no supported controls are detected.
  241.     Master volume setting via IOCTL80 (with -mv switch) does not work.
  242.  
  243.  
  244.             CONTACT
  245.  
  246. You can send your bug reports and suggestions to e-mail
  247. boga@inbox.ru or FIDO 2:5095/9.  The lastest version of the mixer can be
  248. downloaded from http://www.podolsk.ru/~boga/OS2Programs.html where you can
  249. also find a couple of other useful OS/2 programs.
  250.  
  251. IOCTL 90 API and IOCTL 90 API demonstration program were developed
  252. by Joe Nord <nord@crystal.cirrus.com>. API definition is available at
  253. http://www.pompano.net/~joenord/ioctl90/
  254.  
  255.  
  256.             FUTURE PLANS
  257.  
  258. I'm not certain if it's really nessesary to implement these features.
  259.  
  260. - Move settings to separate ini file.
  261. - Setting: Volume-Balance mode for each stereo control
  262. - Allow user to set the order of controls
  263. - User configurable background bitmaps
  264.  
  265.  
  266.             HISTORY
  267.  
  268. 0.01    - Initial version.
  269. 0.02    - Defaults button in Settings dialog does not have immediate effect.
  270.     - ADC gain control fixed.
  271.     - Added support for new API features: DAC output gain control,
  272.           3D processing control, input selector control, driver info, tone
  273.       control, releasing of locked controls.
  274.     - Option to minimize on losing focus.
  275.     - Added ability to change INI file application name and audio device
  276.           driver name with command line parameters (support for multiple
  277.       cards).
  278.     - Added support for pipe mixer interface.
  279. 0.03    - Added unactive controls to input source selector.
  280.     - Only active controls are displayed.
  281.     - Removed limitation on number of mixer instances accessing the same
  282.           device.
  283.     - Added additional instance name that is displayed in the window
  284.       title and in the task list.
  285.     - Added master volume control.
  286.     - Added exit after initialization option.
  287.     - Fixed problems with ADC gain control and API level 1.
  288. 0.04    - Added settings to hide menu and titlebar.
  289.     - Added: double clicking on the window with left mouse button to
  290.       minimize, dragging with left or right mouse button to move.
  291.     - Added a user selectable icon of an instance.
  292.     - Fixed: no supported controls were listed in driver info dialog
  293.       in case driver did not return info.
  294.     - Empty driver info now is treated in the same way as no driver info.
  295.     - Dynamic layout based on font metrics
  296.     - User configurable names for dialog controls.
  297.     - Added polling mixer state on receiving focus
  298.     - Changed behaviour of -pn switch
  299.     - Added batch commands
  300.     - Only supported controls are now saved in INI file
  301.     - Added "Mono" settings for each stereo control.
  302.     - Colors/fonts dropped on dialog controls are now passed to the
  303.           parent windows.
  304.     - Individual background/foreground color settings for each mixer
  305.           control + color settings for sliders and listbox
  306.     - Added narrow sliders and short sliders options.
  307.     - Added built-in pipe mixer server
  308.     - Fixed endless loop when trying to control input source selector
  309.        if it is a multiplexer rather than mixer (SB Live).
  310.