home *** CD-ROM | disk | FTP | other *** search
/ Media Share 13 / mediashare_13.zip / mediashare_13 / ZIPPED / MMEDIA / PMSNDX3D.ZIP / pmsndx.hlp (.txt) < prev    next >
OS/2 Help File  |  1994-04-04  |  64KB  |  1,517 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Introduction ΓòÉΓòÉΓòÉ
  3.  
  4. First off, what is PMsndX?  PMsndX is the acronym that I created to mean 
  5. Presentation Manager sound eXchange. PMsndX was written specifically for OS/2 
  6. to provide the functionality of the SOX sound manipulation program.  The 
  7. advantage to this program over the program is that it fully utilizes the 
  8. presentation facilities of the OS/2 environment.  This program was written to 
  9. provide all of the functionality of SOX while taking advantage the object 
  10. oriented approach offered by C++. The advantage of writing this program from 
  11. scratch is that it is easy to tailor it to OS/2 and C++.  The obvious 
  12. diadvantage is that it does not benefit from the extensive testing that SOX has 
  13. had. 
  14.  
  15. Obviously if I intended to have this program remain as simply a SOX port to the 
  16. OS/2 environment, I would not have taken the time to rewrite it based on its 
  17. functionality.  The intent of this venture (other than to give me something to 
  18. do during this long icy winter) is to provide a platform for me to use some 
  19. signal processing from my college days to enhance the functions of the program. 
  20.  
  21. Wow, you are still reading!  Well, now for some information on the user 
  22. interface.  There is nothing more frustrating than trying to use a program with 
  23. a difficult or complex user interface.  Twelve years ago I started programming 
  24. a TI99/4A in assembly language and from the start I have put more effort into a 
  25. clean user interface than anything.  It wasn't till I ran across JOEVIEW that I 
  26. realized that OS/2 could had one of the most capable environments that I had 
  27. seen in a while.  Presentation Manager programming has got to be one of the 
  28. easiest environments use and is a breeze compared to Windows or the X 
  29. environment. 
  30.  
  31. In any case, I spent more time on the user interface of this program than I 
  32. ever thought possible.  It is designed around a single coordinating window 
  33. populated by bitmaps.  Each bitmaps has some sort of image that might change 
  34. when the button is pushed.  To make sure that the literate people out there (or 
  35. the icon impaired) understand the buttons too, I put a bit of text on them too 
  36. to describe the function. 
  37.  
  38. Now, I have used programs on a lot of platforms and I have my favorites and the 
  39. more annoying ones too.  My pet peeves are the applications like Procomm for 
  40. Windows which just assumes that you want the darn thing to fill up your screen. 
  41. Or something like Microsoft Word which has so many menus and submenus that it 
  42. is hard to remember where a function is.  So, taking this into account, I 
  43. designed the interface such that the main functions of the program are 
  44. accessible from the main pannel.  Pressing the button for the function will 
  45. then bring up a dialog box which asks the user for the necessary information. 
  46. Pushing the button again will remove the dialog box.  I prefer this interface 
  47. because it provides a single point of control.  Well, you just need to play 
  48. with it for a bit to get an understanding of what I am talking about here. 
  49.  
  50.  
  51. ΓòÉΓòÉΓòÉ 2. Conventions ΓòÉΓòÉΓòÉ
  52.  
  53. Throughout the documentation provided with PMsndX a number of terms are used 
  54. which may be common to Presentation Manager programs but uncommon to 
  55. conversational English.  There are also terms which are specific to PMsndX 
  56. which may be new to a user of this program.  The intent of this section is not 
  57. to recreate the OS/2 documentation; rather, it is intended to identify some 
  58. basic terms necessary to understand the language used in this documentation. 
  59.  
  60. Presentation Manager: 
  61.    The Presentation Manager is the Graphical User Interface (GUI) for most OS/2 
  62.    systems.  There are other GUIs available for OS/2 but this is the most 
  63.    common and the one that comes with OS/2 out of the box.  In general mose 
  64.    people refer to the Presentation Manager by the acronym PM. 
  65.  
  66. SYSTEM MENU: 
  67.    Every PM program for OS/2 generally provides a SYSTEM MENU through an icon 
  68.    in the upper left corner of the window interface to the user.  By default, 
  69.    the system menu will contain the basic functions necessary to control the 
  70.    window for on the OS/2 PM desktop. 
  71.  
  72. TITLE BAR: 
  73.    In order for a window to be moved about the desktop with the mouse, a window 
  74.    must have a titlebar.  This is the thick bar at the top of the window.  The 
  75.    titlebar provides another function in that it allows the program to display 
  76.    relevant messages to the user. 
  77.  
  78. MINIMIZE BUTTON: 
  79.    A PM program may provide various control buttons for a window in the top 
  80.    right corner of a window.  One of these buttons is the MINIMIZE button. When 
  81.    the user selects this button, the window will be removed from the desktop 
  82.    and replaced by a small icon somewhere on the screen.  In most cases, the 
  83.    icon is placed at the bottom of the screen.  To restore the window the user 
  84.    can double click on the icon or can use a mouse button to bring up a menu 
  85.    and select Restore. 
  86.  
  87. MAIN CONTROL PANEL: 
  88.    The main control panel for PMsndX is the window that is initially displayed 
  89.    when the program is executed.  This window is the main point of control for 
  90.    the program and provides access to all of the above mentioned controls as 
  91.    well as access to all of the functions of the program. 
  92.  
  93.  
  94. ΓòÉΓòÉΓòÉ 3. Mouse Pointer ΓòÉΓòÉΓòÉ
  95.  
  96. The mouse pointer is used as an indication to the state of the program.  When 
  97. the program is processing, the mouse pointer will be changed to a small dial 
  98. with 10 markers on the dial.  The percentage of work completed is then 
  99. displayed as the work is done.  When the dial reaches the vertical position, 
  100. the work will be complete. 
  101.  
  102. There is one exception to this operation.  When the echo effect is used, the 
  103. dial on the pointer will rotate more than once. This is because the results of 
  104. the echo effect change the length of the data depending on the markers and 
  105. volumes such that the resulting length is unpredictable.  The dial will turn 
  106. for twice as the samples increases to another multiple of the initial sample 
  107. length. 
  108.  
  109.  
  110. ΓòÉΓòÉΓòÉ 4. System Menu ΓòÉΓòÉΓòÉ
  111.  
  112. As with any OS/2 program written for the Presentation Manager, this PMsndX has 
  113. an icon in the top left corner of the control window.  Pressing this icon will 
  114. bring up a menu of system operations.  With the exception of the About menu 
  115. item, each of the functions of the system menu may be performed without using 
  116. the menu through some other means provided by this program.  However, the 
  117. system menu has been provided to allow the program to be used without a mouse 
  118. if necessary. 
  119.  
  120. The menu items provided in the system menu are: 
  121.  
  122. Restore   Restore the windows after being minimized 
  123. Move      Move the control window 
  124. Minimize  Minimize all of the windows of PMsndx to an icon 
  125. Close     Close the all windows and exit 
  126. About     Display information about the author and version 
  127. Help      Bring up the help system 
  128.  
  129.  
  130. ΓòÉΓòÉΓòÉ 4.1. Restore ΓòÉΓòÉΓòÉ
  131.  
  132. During the use of PMsndX, the user may select to Minimize the windows to an 
  133. icon on the desktop.  To restore the window from the icon the user may either 
  134. double click on the icon or may press a mouse button while the pointer is over 
  135. the icon to bring up the system menu and select the restore item. 
  136.  
  137.  
  138. ΓòÉΓòÉΓòÉ 4.2. Move ΓòÉΓòÉΓòÉ
  139.  
  140. PMsndX provides the standard controls for moving the windows around on the 
  141. desktop.  It is generally easiest to use the mouse to select the titlebar of 
  142. the window and drag the window to the new location.  If the user uses the 
  143. system menu to move the window, the mouse will be centered in the control 
  144. window and any movement of the mouse will move the window until a mouse button 
  145. is pressed. 
  146.  
  147. Note:  The system menu is only provided on the control window an the Help 
  148.        window.  None of the dialog boxes for the various buttons provide a 
  149.        system menu since it would only have two options (i.e. move and close). 
  150.  
  151.  
  152. ΓòÉΓòÉΓòÉ 4.3. Minimize ΓòÉΓòÉΓòÉ
  153.  
  154. All of the windows of PMsndX can be minimized quickly by either selecting the 
  155. minimize button on the upper right corner of the control panel or by using the 
  156. Minimize menu item of the system menu.  Either action performs the same 
  157. function.  The minimize operation is only provided on the control window.  The 
  158. dialogs cannot be individually minimized and are removed from the screen 
  159. through either one of the dialog action items (i.e. Load, or Dismiss) or 
  160. through the buttons of the main control panel. 
  161.  
  162.  
  163. ΓòÉΓòÉΓòÉ 4.4. Close ΓòÉΓòÉΓòÉ
  164.  
  165. To exit PMsndX the user can select the Close menu item from the system menu. 
  166. This is the default selection of the menu which enables the user to double 
  167. click on the PMsndX icon in the top left corner of the control panel to exit 
  168. the program.  The user may also use the Exit button on the control panel to 
  169. perform the same function. 
  170.  
  171.  
  172. ΓòÉΓòÉΓòÉ 4.5. About ΓòÉΓòÉΓòÉ
  173.  
  174. To find out the current version and other information about PMsndX the About 
  175. menu item can be selected from the system menu. 
  176.  
  177. PMsndX is just one of the programs written by the Author for Intel based 
  178. machines.  All programs developed under the WiSHware Inc. name have been 
  179. developed solely by the author (duhh, the Author is the sole member of the 
  180. company) and are copyrighted by US Copyright laws. 
  181.  
  182. Note:  This is the only item on the system menu for which there is no other 
  183.        means to access. 
  184.  
  185.  
  186. ΓòÉΓòÉΓòÉ 4.6. Help ΓòÉΓòÉΓòÉ
  187.  
  188. Selecting this option from the system menu performs the same function as 
  189. pressing the Help button on the main control panel.  This brings up the only 
  190. line help system for PMsndX. 
  191.  
  192.  
  193. ΓòÉΓòÉΓòÉ 5. Buttons ΓòÉΓòÉΓòÉ
  194.  
  195. The main control panel provides the user with access to all tools and functions 
  196. trough a set of buttons.  Each button contains an icon and a single word which 
  197. describes the function of the button. The buttons have been designed as toggle 
  198. type push buttons.  To select a particular button, the mouse must be positioned 
  199. over the button and the first mouse button pressed.  This will depress the 
  200. button and activate a dialog for the desired function.  The dialogs will 
  201. present information to the user about the desired operation and request input 
  202. from the user to complete the operation. 
  203.  
  204. The control panel is the main point of control for both activating and 
  205. deactivating a particular function.  The dialog boxes can be removed from the 
  206. screen by positioning the mouse over a depressed button and pressing the first 
  207. mouse button.  The dialog box will be removed and the button will return to the 
  208. non-depressed position. It is important to note that when a dialog box is 
  209. removed through this means, any information in the dialog is ignored and the 
  210. function is canceled.  For each dialog box, the user must enter all of the 
  211. information required and then select the appropriate action on the push buttons 
  212. at the bottom of the dialog box. The dialog boxes do not have system menus so 
  213. that user cannot close the box from a menu as can be done with the main control 
  214. panel.  Dialog boxes may also be removed once valid information has been 
  215. obtained from the user or when the user dismisses or cancels the operation of 
  216. the box. 
  217.  
  218. Now for the buttons.  There are six buttons on the main control pannel.  These 
  219. are listed below with a brief explanation of their function. 
  220.  
  221. Open      Opens and reads a new sample file 
  222. Save      Saves the current sample to a file 
  223. Help      Displays general help about PMsndX 
  224. Tools     Displays a notebook of tools 
  225. Settings  Displays options to save between sessions 
  226. MMPM      Use MMPM to manipulate a sample 
  227. Exit      Exit PMsndX 
  228.  
  229.  
  230. ΓòÉΓòÉΓòÉ 5.1. Open ΓòÉΓòÉΓòÉ
  231.  
  232. The dialog box for opening a file and reading the sample into memory is 
  233. accessed from the OPEN button on the main control panel.  When reading in a 
  234. file, PMsndX will attempt to open the file as the type indicated by the 
  235. extension on the filename.  However, in the event that the file cannot be 
  236. loaded by the extension, PMsndX will automatically try to determine the type of 
  237. the file as it reads it.  If the sample header does not match any of the known 
  238. header types, PMsndX will refuse to load the file.  If the extension specified 
  239. for the file does not match any of the known extensions, PMsndX will 
  240. automatically try to determine the file type by reading the header. 
  241.  
  242. This dialog box requests the user to provide a  Filename, Drive, File Type, 
  243. Directory, Files, and Save Directory.  Additionally, the user may select Load, 
  244. Dismiss, or Help to manage the dialog box. 
  245.  
  246.  
  247. ΓòÉΓòÉΓòÉ 5.1.1. Open Filename ΓòÉΓòÉΓòÉ
  248.  
  249. This is a text input field in which the user may type the name of the file to 
  250. be opened.  The user may specify a full path or just the file name. If a full 
  251. path is specified, the other user input fields will automatically be updated 
  252. accordingly if the path is valid.  If a file name is entered without a 
  253. qualified path, the path displayed in the other input windows will be used for 
  254. the file.  This window is case insensitive and will automatically convert all 
  255. input to upper case. 
  256.  
  257.  
  258. ΓòÉΓòÉΓòÉ 5.1.2. Drive ΓòÉΓòÉΓòÉ
  259.  
  260. To change the drive to be displayed for the various user input fields the user 
  261. may use the DRIVE pulldown field.  The current drive (with volume label) is 
  262. automatically displayed in this field.  If the "file Open path" has been 
  263. selected in the Settings dialog box, then this will be set to the last drive 
  264. used.  To change the default drive, the user can use the pushbutton at the end 
  265. of the drive field to display a list of available drives.  Once the user has 
  266. selected a new drive, the system will automatically update the other input 
  267. fields to reflect the contents of the drive. 
  268.  
  269.  
  270. ΓòÉΓòÉΓòÉ 5.1.3. File Type ΓòÉΓòÉΓòÉ
  271.  
  272. The user may specify a filter for the types of files displayed in the Files 
  273. input field.  The file types are accessed through a pulldown field.  By default 
  274. all files are displayed.  Once a new file type filter has been selected, the 
  275. Files display is updated with the list automatically. 
  276.  
  277.  
  278. ΓòÉΓòÉΓòÉ 5.1.4. Directory ΓòÉΓòÉΓòÉ
  279.  
  280. By default the last directory used to open a file will be displayed in this 
  281. entry field.  The user may select a new directory by positioning the mouse over 
  282. the desired directory and either double clicking the mouse.  If the "file Open 
  283. path" has been selected in the Settings dislog box, this field will display the 
  284. path used at the last session.  If no previous file path has been saved, then 
  285. this will display the current directory. 
  286.  
  287.  
  288. ΓòÉΓòÉΓòÉ 5.1.5. Files ΓòÉΓòÉΓòÉ
  289.  
  290. To select a file from the list of files displayed in the FILES entry field, the 
  291. user can position the mouse pointer over the desired file name and double click 
  292. on the first mouse button.  The Open Filename field is then automatically 
  293. updated to reflect the new file name. 
  294.  
  295.  
  296. ΓòÉΓòÉΓòÉ 5.1.6. Save Directory ΓòÉΓòÉΓòÉ
  297.  
  298. This is a checkbox to allow the user to save the current open path between 
  299. sessions without having to open the Settings dialog box.  When this box is 
  300. selected, if the Load button is selected, the specified directory path will be 
  301. saved when the program has been exited.  If the Save Directory is deselected 
  302. before the program is terminated, the path will not be saved.  All file paths 
  303. are remembered during each session and the SAVE DIRECTORY box allows the user 
  304. to store this path between session. 
  305.  
  306. Note:  The file path is not saved until the program has been terminated. 
  307.  
  308.  
  309. ΓòÉΓòÉΓòÉ 5.1.7. Load ΓòÉΓòÉΓòÉ
  310.  
  311. Once the necessary information has been entered by the user to specify a valid 
  312. file name and path, the user may select the LOAD button to load the file into 
  313. memory.  If the dialog box is dismissed in any way other than through the LOAD 
  314. button, the file will not be loaded into memory. 
  315.  
  316.  
  317. ΓòÉΓòÉΓòÉ 5.1.8. Dismiss ΓòÉΓòÉΓòÉ
  318.  
  319. At any time when the OPEN dialog box is displayed the user may select the 
  320. DISMISS button to cancel the Open operation.  When this button is selected, the 
  321. operation is canceled and the file is not loaded, but the information in the 
  322. windows is maintained.  If the Save Directory button has been checked, the 
  323. specified directory is NOT saved between sessions. 
  324.  
  325.  
  326. ΓòÉΓòÉΓòÉ 5.1.9. Help ΓòÉΓòÉΓòÉ
  327.  
  328. To display help specifically for the OPEN dialog box, select the HELP button. 
  329. The help page for the box will be displayed. 
  330.  
  331.  
  332. ΓòÉΓòÉΓòÉ 5.2. Save ΓòÉΓòÉΓòÉ
  333.  
  334. The dialog box for saving a file to disk is accessed from the SAVE button on 
  335. the main control panel.  When saving a file, the extension of the file will 
  336. automatically determine the type of output to write for the file (e.g. if the 
  337. extension entered by the user is .wav, then the file will be saved in WAVE 
  338. format.) or the user may override the file type by selecting one of the buttons 
  339. for the type of file. 
  340.  
  341. This dialog box requests the user to provide a Filename, Drive, File Type, 
  342. Directory, Files, Format, and Save Directory.  The dialog box also provides OK, 
  343. Cancel, and Help buttons to control the dialog box. 
  344.  
  345.  
  346. ΓòÉΓòÉΓòÉ 5.2.1. Save Filename ΓòÉΓòÉΓòÉ
  347.  
  348. This is a text input field in which the user may type the name of the file to 
  349. be saved.  The user may specify a full path or just the file name. If a full 
  350. path is specified, the other user input fields will automatically be updated 
  351. accordingly if the path is valid.  if a file name is entered without a 
  352. qualidifed path, the path displayed in the other input windows will used for 
  353. the file.  This window is case insensitive and will automatically be converted 
  354. to upper case. 
  355.  
  356.  
  357. ΓòÉΓòÉΓòÉ 5.2.2. Drive ΓòÉΓòÉΓòÉ
  358.  
  359. To change the drive to be displayed for the various user input fields the user 
  360. may use the DRIVE pulldown field.  The current drive (with volume label) is 
  361. automatically displayed in this field.  If the "file Save path" has been 
  362. selected in the Settings dialog box or the Save Directory button has been 
  363. selected in this dialog box, then this will be set to the drive used.  To 
  364. change the default drive, the user can use the pushbutton at the end of the 
  365. drive field to display a list of available drives.  Once the user has selected 
  366. a new drive, the system will automatically update the other input fields to 
  367. reflect the contents of the drive. 
  368.  
  369.  
  370. ΓòÉΓòÉΓòÉ 5.2.3. File Type ΓòÉΓòÉΓòÉ
  371.  
  372. The user may specify a filter for the types of files displayed in the Files 
  373. input field.  The file types are accessed through a pulldown field.  By 
  374. default, all files are displayed.  Once a new file type filter has been 
  375. selected, the Files display is updated with the list automatically. 
  376.  
  377.  
  378. ΓòÉΓòÉΓòÉ 5.2.4. Directory ΓòÉΓòÉΓòÉ
  379.  
  380. By default, the last directory used to save a file will be displayed in this 
  381. entry field.  The user may select a new directory by by positioning the mouse 
  382. over the desired directory and double clicking the mouse.  If the "file Save 
  383. path" of the Settings dialog box or the SAVE DIRECTORY box has been selected, 
  384. this field will display the path used at the last session.  If no previous file 
  385. path has been saved, then this will display the current directory. 
  386.  
  387.  
  388. ΓòÉΓòÉΓòÉ 5.2.5. Files ΓòÉΓòÉΓòÉ
  389.  
  390. To select a file from the list of files displayed in the FILES entry field, the 
  391. user can position the mouse pointer over the desired file name and double click 
  392. on the first mouse button.  The Save Filename field is then automatically 
  393. updated to reflect the new file name. 
  394.  
  395.  
  396. ΓòÉΓòÉΓòÉ 5.2.6. Format ΓòÉΓòÉΓòÉ
  397.  
  398. When saving a file, the extension of the file normally determines the format to 
  399. save the file in.  The forseen primary usage of this program will be to convert 
  400. sound samples from one format to another and so this is the default operation 
  401. of this program.  However, the user may specify that the information is stored 
  402. in a particular format regardless of the file extension.  In the event that no 
  403. extension is specified for the file, the PMsndX will automatically save the 
  404. file under the specified name under the format currently selected in the FORMAT 
  405. field.  The available formats for file operations are listed below. If the file 
  406. type of Undefined is selected, then the extension of the file will be used to 
  407. determine the file type. 
  408.  
  409. APPLE (.aif)   Not implemented 
  410. SUN (.au)      Sun/DEC/NeXT 8 or 16 bit signed data samples or 8 bit ULaw 
  411.                samples. 
  412. MAC (.hcm)     Not implemented 
  413. RAW (.raw)     Not implemented 
  414. RAW (.ub)      Not implemented 
  415. RAW (.sb)      Not implemented 
  416. RAW (.uw)      Not implemented 
  417. RAW (.sw)      Not implemented 
  418. RAW (.ul)      Not implemented 
  419. IRACAM (.sf)   Not implemented 
  420. PC (.voc)      Creative Voice file format, 8 bit unsigned samples 
  421. SAMP (.smp)    Not implemented 
  422. PC (.wav)      Windows or OS/2 8, 16, or 32 bit unsigned data samples 
  423. Undefined      This field cannot be selected by the user.  It is only selected 
  424.                when there is no file in memory at the time that the SAVE dialog 
  425.                box is activated. 
  426.  
  427.  
  428. ΓòÉΓòÉΓòÉ 5.2.7. Save Directory ΓòÉΓòÉΓòÉ
  429.  
  430. This is a checkbox to allow the user to save the current save path between 
  431. sessions without having to open the Settings dialog box.  when this box is 
  432. selected, if the OK button is selected, the specified directory path will be 
  433. saved when the program has is terminated. If the SAVE DIRECTORY is deselected 
  434. before the program is terminated, the path will not be saved.  All file paths 
  435. are remembered during each session and the SAVE DIRECTORY box allows the user 
  436. to store this path between sessions. 
  437.  
  438. Note:  The file path is not saved until the program has been terminated. 
  439.  
  440.  
  441. ΓòÉΓòÉΓòÉ 5.2.8. OK ΓòÉΓòÉΓòÉ
  442.  
  443. To save the file to disk, the user must select the OK button.  Exiting the 
  444. dialog box in any other way will not save the file to disk. 
  445.  
  446.  
  447. ΓòÉΓòÉΓòÉ 5.2.9. Cancel ΓòÉΓòÉΓòÉ
  448.  
  449. To cancel the save operation without writing the file to disk the the CANCEL 
  450. button is used.  If this button is selected, the current path will not be saved 
  451. when the program is terminated. 
  452.  
  453.  
  454. ΓòÉΓòÉΓòÉ 5.2.10. Help ΓòÉΓòÉΓòÉ
  455.  
  456. To display help specifically for the SAVE dialog box, select teh HELP button. 
  457. The help page for the box will be displayed. 
  458.  
  459.  
  460. ΓòÉΓòÉΓòÉ 5.3. Help ΓòÉΓòÉΓòÉ
  461.  
  462. PMsndX is equipped with extensive on line help that can be accessed by pressing 
  463. the HELP button from the main control panel.  When this button is selected a 
  464. window will appear which will display the table of contents for the system. 
  465.  
  466. Links to other text is displayed in a blue-green color and can be selected to 
  467. jump to that description in the text. 
  468.  
  469.  
  470. ΓòÉΓòÉΓòÉ 5.4. Tools ΓòÉΓòÉΓòÉ
  471.  
  472. The heart of manipulating the samples is accessed from the TOOLS notebook. 
  473. This method of presentation provides a logical an concise method of accessing 
  474. the different types of manipulations that can be performed on a sound sample. 
  475. some of the pages of the notebook provide information while others let the user 
  476. apply a particular effect on the current sound sample.  A third class of pages 
  477. are used to launch dialog boxes for particular functions which require more 
  478. than the notebook can provide.  The TOOLS notebook can be dismissed by pressing 
  479. the TOOLS button on the main control panel.  The tabs on the notebook provide 
  480. access to the Info, Type, Average, Duplicate, Echo, Band Pass, Low Pass, Rate, 
  481. Speed, Reverse, Vibro, and Volume functions for manipulating the samples. 
  482.  
  483. Using a notebook to display the TOOLS has some unique presentation advantages. 
  484. Primarily the notebook allows the effects to be displayed in a single dialog 
  485. window.  Since each effect is mutually exclusive of any other tool this 
  486. approach displays the maximum information that the user can utilize at any 
  487. time.  Another approach would have been to develop a dialog box for each tool. 
  488. This approach has the disadvantage that it would require a second control panel 
  489. to select the specific tools.  This would violate the approach of providing a 
  490. single control panel for the user and would necessitate managing a number of 
  491. different windows which could potentially clutter the screen.  The notebook is 
  492. a clean and aesthetically pleasing means for managing the tools. 
  493.  
  494. The notebook may be navigated by either selecting the tab on the right of the 
  495. book for the desired function or by using the small Plus and Minus buttons at 
  496. the bottom of the notebook.  Using the Plus and Minus buttongs will move 
  497. through the notebook a single page at a time.  The information for each 
  498. function are divided into the following categories. 
  499.  
  500. The notebook can be displayed regardless of the presense of sample data in 
  501. memory.  When no sample is present, the pages of the notebook will be 
  502. invalidated but can still be viewed. 
  503.  
  504.  
  505. ΓòÉΓòÉΓòÉ 5.4.1. Info ΓòÉΓòÉΓòÉ
  506.  
  507. The Info page displays all of the relevant information about the samples 
  508. currently in memory.  This includes the following categories: 
  509.  
  510. Load Format     One of the formats which the program can save or open (see 
  511.                 FORMAT under the Save Dialog). 
  512. Data Type       The default extension for this file format. 
  513. Data Style      SIGNED, UNSIGNED, ULAW, or ALAW 
  514. Channels        Number of channels in the sample 
  515. Sampling Rate   The number of samples taken each second 
  516. Data Size       BYTE (8 bits), WORD (16 bits), LONG (32 bits) 
  517. Samples         The number of samples that make the file 
  518. Comments        Some sample files may contain comments.  Any comments found are 
  519.                 displayed in this window 
  520. Byte Order      The natural order of the bytes in each sample.  This field can 
  521.                 display either Big Endian or Little Endian 
  522.  
  523.  
  524. ΓòÉΓòÉΓòÉ 5.4.2. Type ΓòÉΓòÉΓòÉ
  525.  
  526. The type of the file is determined by the header written to the beginning of 
  527. the file.  See Save for information how the file type is determined when a file 
  528. is saved to disk.  Additionally, the user may use the this tool to change the 
  529. Load Format in the Info page of the tools notebook.  When the file is saved, 
  530. the file format will automatically be set to whatever has been chosen on this 
  531. page of the notebook. 
  532.  
  533. Each file format utilizes different sample formats for the actual data.  By 
  534. selecting one of the standard formats on this page the info page will show the 
  535. user how the samples will be save.  The fields that are most likely to change 
  536. are the Load Format, Data Type, Data Style, and Data Size. 
  537.  
  538. Do not be too concerned with trying to use this page as the file format and 
  539. related information will automatically be determined when the file is saved. 
  540.  
  541.  
  542. ΓòÉΓòÉΓòÉ 5.4.3. Average ΓòÉΓòÉΓòÉ
  543.  
  544. A sample with an even number of channels may be averaged to produce a sample 
  545. with half the initial number of channels. For example, a sample with four 
  546. channels can be averaged to produce a sample with two channels and a sample 
  547. with two samples can be averaged to produce a sample with one channel. 
  548.  
  549. Channels may be averaged in three ways.  The simplest is to take the left or 
  550. right channel data as the final data.  A more complex method is to average the 
  551. samples of the left and right to produce a center sample. The results of these 
  552. operations are significantly different and can result in very different output 
  553. samples. 
  554.  
  555. When a sample contains four channels, it is composed of four sound sources at 
  556. 45 degrees in each quadrant.  This corresponds to the Front Left, Front Right, 
  557. Rear Left, or Rear Right.  To average these into two channels the user can 
  558. select to use any of the four channels or to average based on the left or 
  559. right. Each of these results in very different output samples.  The individual 
  560. control of the four channel sound samples is an enhancement to SOX but is 
  561. provided to allow a source sample to be broken into its individual components. 
  562. Have you looked at the page for this effect?  If you have, then you might be 
  563. confused.  The question is, how do you provide the ability to average channels 
  564. from any combination of four possible sources to either one or two possible 
  565. outputs.  The answer that I have implemented is simply a column of check boxes 
  566. for each output channel.  To select or average any combination of the channels 
  567. into either of the output channels, check the box for the channels from the 
  568. source sample.  To aid in this, two radio buttons have been provided which 
  569. enable or disable the selection of check boxes in the second channel depending 
  570. on the number of output channels selected. 
  571.  
  572. To guide the user, when a radio button is selected the check boxes are 
  573. automatically set to produce the same results as SOX. 
  574.  
  575.  
  576. ΓòÉΓòÉΓòÉ 5.4.4. Dupe ΓòÉΓòÉΓòÉ
  577.  
  578. This function will duplicate channels. 
  579.  
  580. Note:  Not implemented yet. 
  581.  
  582.  
  583. ΓòÉΓòÉΓòÉ 5.4.5. Reverse ΓòÉΓòÉΓòÉ
  584.  
  585. This effect allows the user to reverse a section (or all) of a sample. 
  586.  
  587. To select the entire sample, select the Entire Sample button on the notebook 
  588. page for the reverse effect.  To select a portion of the sample, the user may 
  589. either enter the timemarks for the start and end of the effect or may use the 
  590. mouse pointer in the graphical display to select the start and end. 
  591.  
  592. If the button for Select Part is pressed, the Start and End fields will be 
  593. enabled. The timemarks must be entered using the format mm:ss.ssss where mm is 
  594. the number of minutes into the sample, and ss.ssss is the number of seconds 
  595. into the sample.  When the entry field is selected with the mouse, the current 
  596. marker will be displayed.  When a new value is entered and another dialog item 
  597. is selected, the display will be updated. 
  598.  
  599. To select the begin or end of the reverse effect using the display, either 
  600. select the desired marker and drag it to the desired position or simply click 
  601. the new position for the marker.  Mouse button 1 selects the Start an Mouse 
  602. button 2 is used to select the end. It may be necessary to zoom out on the 
  603. sample to view both markers.  The display indicates the current timemarker at 
  604. the left of the display, the current timemark for the position of the mouse, 
  605. and the zoom factor for the display.  The vertical scroll bar to the right of 
  606. the display is used to adjust the zoom factor for the display.  When the mouse 
  607. is used to select part of a sample, the Select Part button is automatically 
  608. selected. 
  609.  
  610.  
  611. ΓòÉΓòÉΓòÉ 5.4.6. Echo ΓòÉΓòÉΓòÉ
  612.  
  613. The echo effect will modify a sample to provide attenuation at specific points 
  614. in a sample.  The operator must specify the points where the echo effects are 
  615. to start and an attenuation or Volume for the echo.  The attenuation determines 
  616. the length of time that it takes for the echo to die away.  If the Attenuation 
  617. specified for all of the echo points is greater than 1, then the echo will 
  618. "melt" rather than fading away.  If an attenuation is set to 0 or less, the 
  619. Echo point is ignored.  I found it very difficult to figure out exactly what 
  620. SOX was trying to do here, but the results of the effect seem to be similar. 
  621. When playing with SOX to figure out what it was doing, I found that the echo 
  622. effect was one of the most difficult to get to work because of the complex user 
  623. interface.  Hopefully the echo notebook page will overcome this limitation and 
  624. make this effect simple and understandable. 
  625.  
  626. The echo effect presents an interesting challenge to the user interface.  How 
  627. do you provide the user with an intuitive method to set the echo locations and 
  628. the strength of the echo from a dialog box?  Well, look at the ECHO notebook 
  629. page and follow along in the explanation of the operation.  This notebook page 
  630. includes a graphical display of the current sample, a text entry field for 
  631. editing (e.g. adding or deleting) time marks, and a volume control for setting 
  632. the strength of the echo. 
  633.  
  634.  
  635. ΓòÉΓòÉΓòÉ 5.4.6.1. Echo Graphical Display ΓòÉΓòÉΓòÉ
  636.  
  637. The ECHO notebook is centered around the graph at the top of the page.  This 
  638. display is the primary point of control. However, to allow for a bit more 
  639. direct control, the user may use the entry fields to add and delete echo points 
  640. too. To explain it all, I will start with the graphical display first and then 
  641. lead to the secondary controls. 
  642.  
  643. Once a sample has been loaded into memory, the graphical display will become 
  644. active.  The display is controlled through two slider bars for the position in 
  645. the sample and for the magnification. The sample is normalized so that the 
  646. largest sample value will hit the limit of the display.  This makes the display 
  647. volume independent but gives maximum clarity of the actual waveform in memory. 
  648. Markers may be added or moved to set the echo points in the waveform.  To aid 
  649. the operator in locating the desired echo point, the display contains a status 
  650. bar for the starting timemark for the sample in the window, the current 
  651. timemark under the mouse, and the magnification factor. 
  652.  
  653.  
  654. ΓòÉΓòÉΓòÉ 5.4.6.1.1. Echo Display Scrolling ΓòÉΓòÉΓòÉ
  655.  
  656. To move to the right or left in the display, the horizontal slider bar may be 
  657. used.  Pressing the end arrows moves the display one displayed sample to the 
  658. left or right.  When the slider bar is pressed, the display will move one half 
  659. screen to the right or left.  The user may move the display to a region quickly 
  660. by selecting the slider button and dragging it to the appropriate position. 
  661. The display is immediately updated to display the current position. 
  662.  
  663. The display area at the bottom of the graph provides a timemark indicator for 
  664. the first sample appearing at the left of the graph.  This provides a reference 
  665. for moving through the data.  The time marker is displayed in the form of 
  666. m:ss.ssss where m is the number of minutes into the sample and ss.ssss is the 
  667. number of seconds into the sample. 
  668.  
  669.  
  670. ΓòÉΓòÉΓòÉ 5.4.6.1.2. Echo Display Zoom ΓòÉΓòÉΓòÉ
  671.  
  672. Even the smallest sample contains more data than can fit on the graphical 
  673. display.  For this reason the vertical slider to the right of the graphical 
  674. display is used to adjust the viewing magnification of the samples.  The 
  675. maximum magnification of the samples is determined by the length of the sample 
  676. and is calculated by dividing the total sample length by the largest number of 
  677. data points which may be scrolled through on the display.  The display is 
  678. limited to the maximum size of an signed 16 bit value due to the limitations of 
  679. the signals for the horizontal slider bar. This results in a maximum of 32767 
  680. data points which can be displayed and scolled through. 
  681.  
  682. Initially, the magnification is set for the maximum displayable.  To decrease 
  683. the magnification (i.e. zoom out) on the sample, move the slider down the bar. 
  684. The arrows on the ends of the bar can be used to increase or decrease the 
  685. magnification in increments of 1.  Selecting between the button and the arrows 
  686. doubles or halves the magnification. If the button is selected, the 
  687. magnification can be set immediately to a value.  Markers are displayed for the 
  688. nearest point in the zoom.  However, markers can only be set on exact multiples 
  689. of the zoom.  Therefore, when trying to move a marker, if it is set at a 
  690. different magnification, it may not be possible to move the marker without 
  691. returning to that zoom.  Essentially, the marker is displayed but cannot be 
  692. selected because that exact sample point is not visible. I considered making 
  693. the mouse select the nearest marker, but this is a point of confusion if many 
  694. markers are displayed at the same location for a specific magnification. 
  695.  
  696. The current magnification is displayed in the status area of the display in the 
  697. form of "x1/nnnnn" where "nnnnn" is replaced by the current magnification 
  698. number (i.e. number of points represented by a single point on the display). 
  699. If the display says that the zoom is x1/2, then the magnification of the 
  700. display is halved.  If this sounds confusing, then just play with the notebook 
  701. page for a bit to get a feel for the operation of the zoom. 
  702.  
  703.  
  704. ΓòÉΓòÉΓòÉ 5.4.6.1.3. Echo Display Status Bar ΓòÉΓòÉΓòÉ
  705.  
  706. Before going on, another area of the display needs to be described.  The center 
  707. number on the status area of the display indicates the timemark for the current 
  708. (or last) mouse position. Whenever the mouse is moved into the display area, 
  709. this number will be updated to indicate the time offset for that particular 
  710. point.  This takes into account the magnification. 
  711.  
  712.  
  713. ΓòÉΓòÉΓòÉ 5.4.6.1.4. Echo Adding Echo Points ΓòÉΓòÉΓòÉ
  714.  
  715. Now for the fun part.  To add an echo point to the sample, move the mouse to 
  716. the place where you desire the echo.  The status display will provide a 
  717. reference for the timemark. When the proper position has been selected, click 
  718. the mouse and a blue marker will be placed.  If the mouse is released, the 
  719. marker will be set at that location in the sample.  If the mouse is not 
  720. released, the marker may be dragged across the display. This marker may be 
  721. moved later if necessary by other means too. 
  722.  
  723. Note:  If at any time the mouse pointer is moved outside of the display before 
  724.        the mouse button is released, the marker will not be set and the blue 
  725.        mark will be erased from the display. 
  726.  
  727.  
  728. ΓòÉΓòÉΓòÉ 5.4.6.1.5. Echo Moving Echo Points ΓòÉΓòÉΓòÉ
  729.  
  730. A echo marker may be moved by positioning the mouse pointer over the marker and 
  731. pressing the mouse button.  If the marker is on a multiple of the zoom level, 
  732. it will be selected and will follow the mouse as long as the button is pressed. 
  733. When the button is released, the marker will be placed at that position. 
  734.  
  735. A marker may be moved to another time delay by entering the desired delay 
  736. directly through the Time Mark entry field. 
  737.  
  738. Note:  If the mouse is moved off the display area, the marker will be restored 
  739.        to its original position. 
  740.  
  741.  
  742. ΓòÉΓòÉΓòÉ 5.4.6.2. Echo Time Mark entry field ΓòÉΓòÉΓòÉ
  743.  
  744. For each marker displayed, the timemark is stored in a Combo Box.  This box is 
  745. like an entry field in that the user can edit the time directly; however, it 
  746. also has a drop down box that can scroll vertically through all of the 
  747. different markers.  This type of box provides a great deal of flexibility for 
  748. the user. 
  749.  
  750. To add a marker at a specific time, position the cursor in the Timemark box and 
  751. edit the time index.  The format is the same as that used to display the time 
  752. marks in the main display.  Enter the number of minutes followed by the 
  753. seconds.  The granularity of the seonds is on the order of 1/10000 of a second. 
  754. For example, entering 6:54.4253 would accept a time mark at 6 minutes, 54.4253 
  755. seconds.  If a value is entered with is beyond the maximum sample of the file 
  756. or less than 0, then the data is ignored. 
  757.  
  758. Once the desired time mark has been entered, the user may press the Add button 
  759. to place the marker in the current database.  All timemarks added to the 
  760. display use the volume specified for the last timemark, or 0 if no volume has 
  761. been set yet. 
  762.  
  763. When the listbox is pulled down for the timemarks, each of the timemarks that 
  764. have been entered are displayed in a vertically and horizontally scrollable 
  765. window.  Up to 32 markers may be placed in the file and any markers which are 
  766. unused are displayed with the word "EMPTY".  The markers are placed in the 
  767. database in the order that they are entered unless a free slot is open (from 
  768. being deleted).  The user may select any of the time marks using the combo box. 
  769. If the selected timemark is not empty, the the display will be updated to 
  770. display the selected timemark in the center of the graph.  In the event that 
  771. the timemark is too close to the end or beginning of the sample to display in 
  772. the center of the graph, the timemark will be displayed without being centered. 
  773. Once a timemark has been selected, the Del button may be pressed to delete the 
  774. marker from the database.  The entry field is not cleared in order to allow the 
  775. user to directly edit the timemark which was deleted and add it later. 
  776.  
  777.  
  778. ΓòÉΓòÉΓòÉ 5.4.6.3. Echo Volume Entry Field ΓòÉΓòÉΓòÉ
  779.  
  780. The volume for each timemark may be set by specifying a value in the volume 
  781. entry field.  This is a simple entry field in which the user can type or delete 
  782. numbers.  Since the volume (attenuation) for each timemark may range from 0 to 
  783. infinity, the only method for entering the volume is through the keyboard. 
  784. Sorry, no sliders here.  As each character is typed, it is stored.  The user 
  785. does not have to press enter or any key to accept the value. 
  786.  
  787. I have not found a big use for numbers greater than 1, but I could not find any 
  788. reason to limit the user to a specific range of numbers.  Anyone who has 
  789. experience with this effect and knows of a reason for a limitation should 
  790. contact the author and I will be happy to set up something to make entry of the 
  791. Volume easier. 
  792.  
  793. Note:  The most common mistake for the echo effect is in forgetting to enter a 
  794.        value in the Volume field.  Remember that you must provide an 
  795.        attenuation for the echo in the Volume entry field to make the echo 
  796.        point valid. 
  797.  
  798.  
  799. ΓòÉΓòÉΓòÉ 5.4.7. Band Pass ΓòÉΓòÉΓòÉ
  800.  
  801. This tool provides the ability to apply a band-pass filter to a sample. The 
  802. frequency response for the filter is designed to drop logarithmically around a 
  803. center frequency.  The slope of the drop at the desired start (Wp) and end (Ws) 
  804. of the filter varies with the distance between the Wp and Ws.  This width is 
  805. used to determine the slope of the dropoff at the edges of the filter.  The 
  806. frequencies at Wp and Ws will be approximately half of their original 
  807. amplitudes and all frequencies outside of the Center - Wp and the Center + Ws 
  808. will be eliminated.  The bandpass filter can be mode oriented to pitched 
  809. signals (i.e. voice, singing, or instrumental music) or can be modified by 
  810. adding noise to the filter so that un-pitched signals can be effectively 
  811. processed. 
  812.  
  813. Note:  SOX limits the use of the bandpass filter such that the center frequency 
  814.        must be less than or equal to half the sampling rate for the wave. 
  815.        Although PMsndX does not enforce this limitation, the results of 
  816.        filtering beyond this limit prevents the filter from having much effect. 
  817.        To aid the user in locating the maximum effective center frequency, a 
  818.        light blue vertical bar is placed at half the sampling rate for the 
  819.        data. 
  820.  
  821. The transormation for the Bandpass filter was taken from a a program called 
  822. MUSIC56K (as documented in the MUSIC56K source code) and implemented in C++ for 
  823. this program. 
  824.  
  825.  
  826. ΓòÉΓòÉΓòÉ 5.4.7.1. Filter Display ΓòÉΓòÉΓòÉ
  827.  
  828. Operation of the bandpass filter tool is probably one of the most complex 
  829. interfaces in the toolbox.  It is based on a simple principle.  The entire 
  830. display of the filter represents the frequency response of the filter and is 
  831. operated like a slider.  However, since the Start frequency and the Stop 
  832. frequency are independent, the sliding bar is divided into identical controls 
  833. for each filter edge. Before getting into the operation of the controls the 
  834. display needs to be explained to establish the terms that will be used. 
  835.  
  836. As mentioned, the display is designed to illustrate the frequency response of 
  837. the bandpass filter (independent of any added noise).  The center of the Start 
  838. (Wp) and End (Ws) of the filter are marked by vertical BLUE bars.  The Center 
  839. (Wc) of the filter is marked by a vertical RED bar.  These three markers 
  840. provide the means for the user to modify the filter.  The region to the left of 
  841. the RED center frequency is always the start of the filter.  The user may click 
  842. the mouse to the left of Wp to decrease Wp by 1000 Hz.  Clicking between Wp and 
  843. Wc increases Wp by 1000 Hz.  Likewise, clicking between Wc and Ws decreases Ws 
  844. by 1000 Hz and clicking to the right of Ws increases Ws by 1000 Hz.  The user 
  845. may also click the mouse near Ws or Wp to drag the respective ends of the 
  846. filter quickly. 
  847.  
  848. To provide fine control of the filter, Right and Left arrows are provided for 
  849. both Wp and Ws.  Clicking on either the right or left arrow will increase the 
  850. indicated filter edge by 1 Hz.  To increase or decrease the filter edges by 10 
  851. Hz, the user may select the plus or minus corresponding to the filter edges. 
  852. The left set of controls affects Wp and the right set of controls affects Ws. 
  853.  
  854.  
  855. ΓòÉΓòÉΓòÉ 5.4.7.2. Entry Fields ΓòÉΓòÉΓòÉ
  856.  
  857. As the mouse is used to adjust Wp and Ws, the exact frequencies for Wp, Ws, Wc, 
  858. and the filter Width are updated in the text input fields.  The user can use 
  859. the mouse to select one of the input fields and modify it directly.  To accept 
  860. a value in the entry field and recalculated the dependant frequencies select 
  861. another window or click on another item which moves the focus from the 
  862. notebook.  The rules for the fields are as follows: 
  863.  
  864.  1. If the Center frequency is modified, new values for Wp and Ws are 
  865.     immediately calculated using the current Width. If Wp or Ws are outside of 
  866.     the possible ranges, then Wp or Ws are set to the limit of the acceptable 
  867.     range and the Width and Center are recalculated. 
  868.  2. If the Width of the filter is modified, new values for Wp and Ws are 
  869.     immediately calculated using the current Center frequency.  If Wp or Ws are 
  870.     then outside of the acceptable ranges, Wp or Ws is then set to its limit 
  871.     and the Center and Width are recalculated. 
  872.  3. If Wp is changed, the Width and Center are automatically recalculated to 
  873.     reflect the new start of the filter. 
  874.  4. If Ws is changed, the Width and Center are automatically recalculated to 
  875.     reflect the new end of the filter. 
  876.  
  877.  
  878. ΓòÉΓòÉΓòÉ 5.4.7.3. Noise ΓòÉΓòÉΓòÉ
  879.  
  880. The bandpass filter has been selected because of the desirable effect on 
  881. typical sounds that will be processed by PMsndX such as voice or music. 
  882. However, if other types of noise are to be filtered, noise can be added to the 
  883. filter which results in a sharper peak of the filter.  To add this noise, 
  884. select the checkbox for "Add filter noise". Selecting the checkbox again will 
  885. disable the filter noise. 
  886.  
  887. Note:  The display of the frequency response for the filter does not reflect 
  888.        added noise. 
  889.  
  890.  
  891. ΓòÉΓòÉΓòÉ 5.4.8. Low Pass ΓòÉΓòÉΓòÉ
  892.  
  893. A Low Pass filter can be applied to a sample to eliminate high frequencies. 
  894. Filtering is accomplished in the digital domain through the use of a very 
  895. simple second order digital Fourier transform.  Future implementation may have 
  896. a more complex Fourier transform; however, the chosen function is desirable 
  897. because it provides a smooth dropoff without significant ringing. The 
  898. performance of the filter is determined by the cutoff frequency and the rate of 
  899. drop.  If the dropoff is made too quickly, the filter will exhibit a ringing 
  900. effect at the begin and end of the dropoff.  If the dropoff is performed too 
  901. slowly, the filter will supress more frequencies toward the end of the desired 
  902. range.  The more orders of the filter (more stages), the better the frequency 
  903. response; however, more orders increase the time for filtering significantly. A 
  904. two order filter works adaquately. 
  905.  
  906.  
  907. ΓòÉΓòÉΓòÉ 5.4.8.1. Gain ΓòÉΓòÉΓòÉ
  908.  
  909. When performing the digital convolution of the sample with the step function a 
  910. Gain factor is used to normalize the output data.  This acts as a Volume 
  911. control for the sample to prevent losses due to numerical overflow.  Values for 
  912. the gain range from 0 to 1 in increments of 0.01.  A slider bar is used to set 
  913. the gain of the low pass filter.  When the low pass filter is first brought up, 
  914. the Gain will default to a value of 0.8.  If this is changed, it will remain at 
  915. the new setting until the session is terminated. 
  916.  
  917.  
  918. ΓòÉΓòÉΓòÉ 5.4.8.2. Frequency ΓòÉΓòÉΓòÉ
  919.  
  920. The Frequency response of the low pass filter is determined by a the 
  921. centerpoint of the dropoff at the end of the step function.  When performing a 
  922. digital filter, it is not possible to prevent the gradual drop at the end of 
  923. the step function due to the convolution of the samples used in the 
  924. transformation.  This is true for analog components also. The centerpoint of 
  925. the dropoff can be set in three ways. The user may enter the specific fruquency 
  926. in the text entry box in the lower right corner or may use the filter display 
  927. like a sliding bar.  As is typical of a sliding bar, the mouse may be used to 
  928. capture the cutoff frequency by pressing the mouse button while the mouse is 
  929. near the cutoff frequency.  By holding the button down, the user may drag the 
  930. frequency to the desired range.  Additionally, the user may click to the right 
  931. or the left of the frequency cutoff to increase or decrease the frequency by 
  932. 1000 Hz. The right and left arros in the corners of the display may be used to 
  933. increase or decrease the frequency by 1 Hz. The plus and minus buttons in the 
  934. corners of the display may be used to increase or decrease the frequency by 10 
  935. Hz. The frequency response curve illustrates the dropoff that occurs at the end 
  936. of the step function. 
  937.  
  938.  
  939. ΓòÉΓòÉΓòÉ 5.4.9. Rate ΓòÉΓòÉΓòÉ
  940.  
  941. Once a sample has been loaded into memory, the current rate information is 
  942. displayed on the RATE page of the notebook. The user can change the rate of the 
  943. sample using this page of the tools notebook. 
  944.  
  945. The rate information page is dividied into groups of buttons and slider bars. 
  946. These are for Standard Rates, Non-Standard Rates, Quality, Do It, and Help. 
  947.  
  948. Note:  Changing the sampling rate may degrade the quality of the sound. 
  949.  
  950.  
  951. ΓòÉΓòÉΓòÉ 5.4.9.1. Standard Rates ΓòÉΓòÉΓòÉ
  952.  
  953. The user may select from a set of standard sampling rates for common computer 
  954. formats or may specify a specific rate. OS/2 and Windows use standard rates 
  955. which are multiples of 11025 Hz.  Sun, DEC, and NeXT computers commonly use a 
  956. sampling rate of 8000 Hz.  Standard rates of 8000, 11025, 22050, and 44100 Hz 
  957. have been provided for the user to select. 
  958.  
  959.  
  960. ΓòÉΓòÉΓòÉ 5.4.9.2. Non-Standard Rates ΓòÉΓòÉΓòÉ
  961.  
  962. If the user wishes to use a sampling rate which is not one of these, the button 
  963. for Non-Standard should be pressed.  This will activate the slider bar and user 
  964. input windows to allow the user to specify the rate.  The slider bar can be 
  965. used to quickly change the rate in the input window or the user may select the 
  966. input window and type in the desired rate. 
  967.  
  968.  
  969. ΓòÉΓòÉΓòÉ 5.4.9.3. Quality ΓòÉΓòÉΓòÉ
  970.  
  971. When changing the sampling rate, each new sample point must be interpolated 
  972. from the current set of samples.  This can be done in a number of ways.  PMsndX 
  973. allows the user to specify the quality of this interpolation between samples. 
  974. Choosing a value of 1 will use linear interpolation which is quick, but causes 
  975. distortion.  Choosing a higher value will take longer to perform, but will 
  976. create a better approximation to the original waveform. 
  977.  
  978.  
  979. ΓòÉΓòÉΓòÉ 5.4.9.4. Do It ΓòÉΓòÉΓòÉ
  980.  
  981. If the rate specified by the user is the same as the sampling rate for the data 
  982. currently in memory, the DO IT button is disabled.  If the sampling rate is 
  983. changed, the DO IT button will be activated.  Pressing this button will convert 
  984. the change the data in memory to reflect the information specified by the user. 
  985.  
  986.  
  987. ΓòÉΓòÉΓòÉ 5.4.9.5. Help ΓòÉΓòÉΓòÉ
  988.  
  989. To open the HELP engine with for information on the Rate page, select the HELP 
  990. button. 
  991.  
  992.  
  993. ΓòÉΓòÉΓòÉ 5.4.10. Speed ΓòÉΓòÉΓòÉ
  994.  
  995. This function will change the playback speed of a sample. This is the same 
  996. thing as setting a phonograph to a different speed such that the sound is 
  997. played too fast or too slow.  The controls for this effect simply specify the 
  998. new playback speed.  Once a new speed is selected, the sample is resampled to 
  999. interpolate the new playback points. As a result, a sample is still played at 
  1000. the same rate, but the data is modified to play at the new rate.  This allows 
  1001. the sample to be stored in a file which is of a standard rate. 
  1002.  
  1003. The user may select any of the standard rates including 8000 Hz, 11025 Hz, 
  1004. 22050 Hz, and 44100 Hz.  Additionally, the user may specify the playback speed 
  1005. to be either double (x2) or half (x1/2) or may specify a specify playback speed 
  1006. by selecting the User button.  If a speed other than the current speed is 
  1007. specified, the DOIT button will be activated which will allow the user to 
  1008. perform the change. 
  1009.  
  1010.  
  1011. ΓòÉΓòÉΓòÉ 5.4.11. Vibro ΓòÉΓòÉΓòÉ
  1012.  
  1013. This function is in SOX and has been added to PMsndX to maintain compatibility 
  1014. with the functions of SOX.  This function performs the "world-famous" Fender 
  1015. Vibro-Champ sound effect to a sound sample by using a sine wave as the 
  1016. amplitude of the volume at each sample.  This tool requires that the user set 
  1017. the Speed, and the Depth of the sine wave. 
  1018.  
  1019. The code for this effect was taken directly from source code from Lance Norskog 
  1020. and Sundry and converted to C++ for this program. 
  1021.  
  1022.  
  1023. ΓòÉΓòÉΓòÉ 5.4.11.1. Speed ΓòÉΓòÉΓòÉ
  1024.  
  1025. The speed setting gives the frequency of the sine wave in Hertz.  The range of 
  1026. values for the slider are from 0 to 30 in increments of 1 Hertz.  A value of 0 
  1027. would be useless for a frequency so this is automatically changed to 0.001.  By 
  1028. default, the speed is initially set to 0.001. 
  1029.  
  1030.  
  1031. ΓòÉΓòÉΓòÉ 5.4.11.2. Depth ΓòÉΓòÉΓòÉ
  1032.  
  1033. The depth setting gives the the amount by which the volume will be cut into by 
  1034. the sine wave.  The range of values for the slider are from 0.0 to 1.0 in 
  1035. increments of 0.01.  The initial value of the slider is 0.5. 
  1036.  
  1037.  
  1038. ΓòÉΓòÉΓòÉ 5.4.12. Volume ΓòÉΓòÉΓòÉ
  1039.  
  1040. Most anyone who has received a sound sample from different sources has had the 
  1041. problem that the recorded volume is inconsistent between different samples. 
  1042. After all, there is no standard recording level for the different machines that 
  1043. sound can be recorded from.  To allow the user to adjust the volume of a 
  1044. sample, PMsndX provides a tool to adjust the volume.  Volume can be adjusted by 
  1045. either specifying the Maximum or by simply multiplying by a fixed value. 
  1046.  
  1047.  
  1048. ΓòÉΓòÉΓòÉ 5.4.12.1. Maximum Volume ΓòÉΓòÉΓòÉ
  1049.  
  1050. By specifying a maximum value for the sound sample, all sound samples can be 
  1051. set to have a similar maximum.  The obvious use for this function is to allow a 
  1052. library of sounds to be set at the same volume.  The value used for the maximum 
  1053. volume is based on a percentage of the maximum data that can be held in a 
  1054. single sample.  As an example, a value of 100% for the volume represents a 
  1055. value of 127 for a signed byte sample. 
  1056.  
  1057. When the button for the Maximum is selected, the slider bar directly beneath 
  1058. the button is activated.  Initially, this will be set to the current volume in 
  1059. terms of the percentage of the maximum value for the sample.  The volume may be 
  1060. adjusted by setting the slider to a value between 0 and 100 percent of the 
  1061. maximum. 
  1062.  
  1063. Since the value is based on a percentage of the maximum value of the data that 
  1064. can be stored in a sample, clipping is not possible. 
  1065.  
  1066.  
  1067. ΓòÉΓòÉΓòÉ 5.4.12.2. Fixed Volume ΓòÉΓòÉΓòÉ
  1068.  
  1069. When the button for the Fixed value is selected, the slider bar directly 
  1070. beneath the button is activated as well as the checkbox for clipping.  The 
  1071. fixed bar provides the means to multiply all sound samples by a fixed value 
  1072. between 0 and 2 in increments of 0.1. A value of 1 makes no change.  Any value 
  1073. greater than 1 increases the volume and any value less than 1 decreases the 
  1074. volume.  A value of 2 doubles the volume of the sample. 
  1075.  
  1076. When using fixed sampling it is possible to exceed the maximum data that may be 
  1077. stored for a sample.  The checkbox for clipping may be selected to prevent this 
  1078. clipping.  If the checkbox is set, if the fixed multiple will result in 
  1079. clipping, then the maximum multiple will be set to the maximum value that will 
  1080. not result in clipping.  If the clipping box is not set, data may exceed the 
  1081. maximum that may be stored for the sample. 
  1082.  
  1083.  
  1084. ΓòÉΓòÉΓòÉ 5.5. Settings ΓòÉΓòÉΓòÉ
  1085.  
  1086. The window positions and file paths are maintained as long as PMsndX is 
  1087. running.  When PMsndX is terminated, it will not save the current positions and 
  1088. paths for file operations unless the boxes are checked in the SETTINGS dialog 
  1089. box.  Selecting these buttons has no effect on remembering the current window 
  1090. positions during a single session; rather, they only affect saving the 
  1091. information between sessions. 
  1092.  
  1093. From the SETTINGS dialog box the user may select to save the current window 
  1094. positions, open file path, save file path, maximum memory and enable MMPM/2 
  1095. Support requirements of the program. 
  1096.  
  1097. The SETTINGS information is stored in the file pmsndx??.ini in the directory 
  1098. where PMsndX was started.  The question marks in the file name represent the 
  1099. version number for the program.  This is intended to allow future versions of 
  1100. the program to avoid conflicts in the event that the initialization file format 
  1101. changes. 
  1102.  
  1103. Note:  The information in the SETTINGS dialog box is only saved when the 
  1104.        program is terminated.  If the SAVE CURRENT items are deselected, then 
  1105.        the information will not be saved between sessions. 
  1106.  
  1107.  
  1108. ΓòÉΓòÉΓòÉ 5.5.1. Window Positions ΓòÉΓòÉΓòÉ
  1109.  
  1110. During a session, the user can move any of the dialog boxes around on the 
  1111. screen.  If the WINDOW POSITIONS box is checked, these window positions will be 
  1112. saved when the program is terminated.  If this button is deselected before the 
  1113. program is terminated, the next session will revert to the previous window 
  1114. positions saved by the program.  By default, if no window position has been 
  1115. saved for a particular window, the window will be opened in the lower left 
  1116. corner of the desktop. 
  1117.  
  1118.  
  1119. ΓòÉΓòÉΓòÉ 5.5.2. file Open path ΓòÉΓòÉΓòÉ
  1120.  
  1121. The file path for loading samples into memory may be saved between sessions by 
  1122. selecting the FILE OPEN PATH button.  If this button is selected, the last file 
  1123. open path will be saved when PMsndX is terminated.  If this button is 
  1124. deselected before the program is terminated, the next session will revert to 
  1125. the path from the previous session. If no information is saved for the program 
  1126. at any time, the current path will become the default path for open operations. 
  1127.  
  1128. Note:  This box may be selected from either the SETTINGS dialog box or from the 
  1129.        SAVE DIRECTORY button on the OPEN dialog box. 
  1130.  
  1131.  
  1132. ΓòÉΓòÉΓòÉ 5.5.3. file Save path ΓòÉΓòÉΓòÉ
  1133.  
  1134. The file path for saving samples to a file may be saved between sessions by 
  1135. selecting the FILE SAVE PATH button.  If this button is selected, the last file 
  1136. save path will be saved when PMsndX is terminated.  If this button is 
  1137. deselected before the program is terminated, the next session will rever to the 
  1138. path from the previous session. If no information has not been saved between 
  1139. sessions, the current path will become the default path for save operations. 
  1140.  
  1141.  
  1142. ΓòÉΓòÉΓòÉ 5.5.4. Maximum Sample Memory ΓòÉΓòÉΓòÉ
  1143.  
  1144. PMsndX takes advantage of OS/2's advanced memory management facilities.  When 
  1145. the program is started, it only takes up the memory required for the executable 
  1146. to load.  PMsndX then reserves the amount of memory specified by the SETTINGS 
  1147. box from OS/2 but does not commit this memory.  This means that the program has 
  1148. requested that OS/2 allocate the necessary resources to manage the amount of 
  1149. memory specified.  Until the memory is actually committed it is not taken from 
  1150. the system's memory pool.  When a sound sample is loaded into memory, PMsndX 
  1151. then requests that OS/2 commit the necessary memory before it loads the sample. 
  1152. When a new sample is loaded, the previous memory is decommitted and the 
  1153. procedure is repeated. 
  1154.  
  1155. Although this minimizes the actual amount of physical memory required by 
  1156. PMsndX, it still provides the potential to cause OS/2 to have to commit more 
  1157. memory than is available on the system.  To avoid this problem, PMsndX provides 
  1158. the user with the ability to limit the amount of memory which can be committed 
  1159. by OS/2.  The user may either specify that the program automatically determine 
  1160. the maximum or that it set the maximum at a specific value. 
  1161.  
  1162. Memory is primarily used to hold samples for operations; however, whenever the 
  1163. sound is manipulated in such a way that either the output has a different 
  1164. number of samples or the operation requires the samples to remain in tact 
  1165. during the entire operation, additional memory is used to hold the new data. 
  1166. Once the operation has been completed, the memory is freed.  When setting the 
  1167. maximum memory, the user must take into account the size of the data in memory 
  1168. as well as the size of the results of any operations. With the exception of 
  1169. Sampling Rate changes, the maximum memory requirements will not exceed twice 
  1170. the size of a sample.  When changing rate, the size is dependent on the new 
  1171. sampling rate.  If the new rate is higher than the current rate, the memory 
  1172. requirements will increase.  If the new rate is lower than the original rate, 
  1173. the memory requirements will shrink. 
  1174.  
  1175.  
  1176. ΓòÉΓòÉΓòÉ 5.5.4.1. Auto ΓòÉΓòÉΓòÉ
  1177.  
  1178. If the user selects the AUTO mode for memory (the default), PMsndX will limit 
  1179. the memory usage to 32 megabytes.  This is generally more memory than most 
  1180. systems have but allows for a very large sample file to be loaded. 
  1181.  
  1182.  
  1183. ΓòÉΓòÉΓòÉ 5.5.4.2. Value ΓòÉΓòÉΓòÉ
  1184.  
  1185. Since the minimum OS/2 memory block size is 4096 (4k) bytes, the user may 
  1186. specify the number of 4k pages for the limit.  The user may either use the up 
  1187. and down arrows to increment or decrement the amount of memory or may place the 
  1188. cursor in the window and type the specific value. 
  1189.  
  1190.  
  1191. ΓòÉΓòÉΓòÉ 5.5.5. MMPM ΓòÉΓòÉΓòÉ
  1192.  
  1193. PMsndX supports playing samples from memory directly to the MMPM digital audio 
  1194. device of OS/2.  This allows samples to be played without having to save the 
  1195. sample to disk in the native .WAV format.  The settings dialog box provides 
  1196. controls for disabling or enabling MMPM support and for controlling the actions 
  1197. taken when a file is loaded (e.g. Play sample on load, convert to a standard 
  1198. rate when loaded, and exit after play from the command line).  Additionally, 
  1199. the digital audio device  may be specified. 
  1200.  
  1201.  
  1202. ΓòÉΓòÉΓòÉ 5.5.5.1. Enable MMPM/2 Support ΓòÉΓòÉΓòÉ
  1203.  
  1204. If the MMPM/2 capabilities of the program are not needed or if MMPM support is 
  1205. not installed on a particular system, the MMPM may be disabled from the 
  1206. settings dialog box.  By disabling the MMPM/2 support, the button on the main 
  1207. control panel for MMPM is disabled.  By default the program will disable MMPM 
  1208. support; however, if the MMPM button is selected, a message is displayed to the 
  1209. user to indicate that the setting should be turned on from the settings box. 
  1210.  
  1211. The controls for MMPM and the ability to play the "playlist" using MMPM utilize 
  1212. the files SW.DLL and MDM.DLL.  These are part of the standard MMPM distribution 
  1213. and must be present in the DLL path for the MMPM portion of this program to 
  1214. operate.  The MMPM support is not linked into the executable of this program. 
  1215. Rather, it is only loaded when the user enables it.  This allows the program to 
  1216. run on machines which do not have MMPM installed. 
  1217.  
  1218. The MMPM/2 functionality of PMsndX has been implemented to share the audio 
  1219. device with other programs on the system. By disabling the MMPM/2 support, the 
  1220. audio device is freed up completely and all of the tasks (six in total) are 
  1221. released. 
  1222.  
  1223.  
  1224. ΓòÉΓòÉΓòÉ 5.5.5.2. Play sample on load ΓòÉΓòÉΓòÉ
  1225.  
  1226. If this box is selected, a sample is immediately played when it is loaded into 
  1227. memory.  To provide control during playback, the MMPM dialog box is opened 
  1228. after the file has been loaded.  When this feature is used in conjunction with 
  1229. the exit after play feature, PMsndX provides the ability to play any supported 
  1230. sample file format from the command line and have the program exit when it is 
  1231. finished. 
  1232.  
  1233. If this parameter is not specified, the sample will still be loaded from the 
  1234. command line; however, it will not be played until the user accesses the MMPM 
  1235. dialog. 
  1236.  
  1237. Note:   When a filename is specified on the command line, the control panel and 
  1238.        the dialog boxes are not opened.  The intention of this operation is to 
  1239.        allow the program to play without being intrusive. 
  1240.  
  1241.  
  1242. ΓòÉΓòÉΓòÉ 5.5.5.3. Standard rate on load ΓòÉΓòÉΓòÉ
  1243.  
  1244. Not implemented yet! 
  1245.  
  1246. If a sample is sampled at a rate other than one supported by the MMPM/2 module 
  1247. of OS/2, this feature will allow the program to resample the file at the 
  1248. nearest supported rate as it loads the file.  If this option is not selected, 
  1249. the file will simply refuse to play if it is at a different sampling rate than 
  1250. supported by OS/2. 
  1251.  
  1252.  
  1253. ΓòÉΓòÉΓòÉ 5.5.5.4. Exit after Command line play ΓòÉΓòÉΓòÉ
  1254.  
  1255. This option provides the ability for PMsndX to exit after playing the sample 
  1256. when the file is loaded from the command line.  This is primarily intended to 
  1257. provide a means to play any of the supported formats from the command line. 
  1258.  
  1259.  
  1260. ΓòÉΓòÉΓòÉ 5.5.5.5. Device ΓòÉΓòÉΓòÉ
  1261.  
  1262. Obviously not every machine has the same digital audio device.  PMsndX provides 
  1263. a means to use a different audio device than the default digital audio 
  1264. interface.  By default the device name is Waveaudio01.  Any Waveaudio device 
  1265. may be selected by entering the device name in the Device entry field. 
  1266.  
  1267.  
  1268. ΓòÉΓòÉΓòÉ 5.5.6. Do It ΓòÉΓòÉΓòÉ
  1269.  
  1270. After the user has set all of the information in the SETTINGS dialog box can be 
  1271. applied by pushing the DO IT button.  When this button is pressed, the dialog 
  1272. box is inactivated and the settings are applied. 
  1273.  
  1274. Note:  If a sample is currently loaded into memory and the Maximum Sample 
  1275.        Memory is changed, the sample data will be flushed from memory.  To warn 
  1276.        the user of this, a warning box will be displayed. 
  1277.  
  1278.  
  1279. ΓòÉΓòÉΓòÉ 5.5.7. Oops ΓòÉΓòÉΓòÉ
  1280.  
  1281. To dismiss the SETTINGS box without using the values set by the user, the OOPS 
  1282. button can be used.  This has the same effect as pushing the SETTINGS button on 
  1283. the main control panel when the SETTINGS box is displayed.  All information 
  1284. entered by the user is cleared and the SETTINGS remain unchanged. 
  1285.  
  1286.  
  1287. ΓòÉΓòÉΓòÉ 5.5.8. Help ΓòÉΓòÉΓòÉ
  1288.  
  1289. Pressing the HELP button displays help on teh SETTINGS dialog box. 
  1290.  
  1291.  
  1292. ΓòÉΓòÉΓòÉ 5.6. MMPM ΓòÉΓòÉΓòÉ
  1293.  
  1294. So, you are interested in playing some samples from my little program?  Good. 
  1295.  
  1296. The ability to play a sample is not intended to provide the full capabilities 
  1297. of the digital audio player.  It is intended to allow samples to be played 
  1298. without having to save them to disk.  Additionally, this feature allows the 
  1299. user to play a file of any format currently supported by PMsndX.  The sample 
  1300. rates are limited to those supported by the MMPM device and if a sample is 
  1301. loaded with an odd sample rate which is not supported, it must be converted to 
  1302. a useable sample rate before it can be played. 
  1303.  
  1304. If you don't have MMPM/2 installed with your OS/2, don't worry.  If you disable 
  1305. the MMPM support from the settings dialog box, it will not attempt to open the 
  1306. audio device. 
  1307.  
  1308. The controls for the MMPM player are basically the same as those used on the 
  1309. digital audio player so no additional explanation is provided. 
  1310.  
  1311. O.K., let's face it.  MMPM is pretty cool and it is not extremely difficult to 
  1312. program.  However, to take advantage of the advanced features of the system, a 
  1313. great deal needs to be done.  I was not able to find a good reference book for 
  1314. programming MMPM code, so I winged it and got something going.  No doubt this 
  1315. will be a problem in the future.  The current implementation is very simple and 
  1316. uses about 6 tasks to handle the queueing of data and running the little 
  1317. buttons to look like the IBM buttons for the digital audio player. 
  1318.  
  1319. Note:  Recording has not been implemented at this time. 
  1320.  
  1321.  
  1322. ΓòÉΓòÉΓòÉ 5.7. Exit ΓòÉΓòÉΓòÉ
  1323.  
  1324. When the EXIT button is pressed, the program terminates.  If the Settings box 
  1325. or the SAVE DIRECTORY from the Open or Save dialog boxes have been set to save 
  1326. information, the data will be saved to the initialization file before the 
  1327. program exits.  all windows of PMsndX including any dialog boxes are removed 
  1328. from the screen when the program terminates. 
  1329.  
  1330.  
  1331. ΓòÉΓòÉΓòÉ 6. Technical Issues ΓòÉΓòÉΓòÉ
  1332.  
  1333. Memory Usage: I have worked with means for storing and converting from one 
  1334. format to another efficiently.  Initially I tried to store things in a data 
  1335. structure which was a union of all of the types of data that are used by the 
  1336. sound types.  However, converting from one format to another was difficult and 
  1337. each effect had to be able to understand the initial and final format.  This 
  1338. became unwildly considering that there can be either signed or unsigned samples 
  1339. of sizes byte or word.  As new effects were added, it became unmanagable.  At a 
  1340. sacrafice to memory efficiency, I have changed it to store all data as a signed 
  1341. SHORT (2 byte) sample.  The effects then operate genericly on the samples and 
  1342. the only time that the type of data is important is when reading or writing the 
  1343. samples.  The savings in complexity justified the memory requirements.  As a 
  1344. result, if a sample is 1k of bytes (.wav format), then in memory it will take 
  1345. up 2k.  Currently the program will only read and write 8 and 16 bit samples. 
  1346. Since I don't know of any sound cards that can sample at greater bit sizes, 
  1347. this is the limit.  In the future, this approach to memory usage can be easily 
  1348. extended to 32 bits without rewriting every part of the program.  In fact, to 
  1349. change the storage sizes, two definitions have to be changed and then the 
  1350. proper input/output routines written.  Simple? I think so. 
  1351.  
  1352. Additional known faults: 
  1353.  
  1354.  1. Currently, the Quality setting in the Rate only supports a linear 
  1355.     approximation.  This appears to be the same that SOX supports as they 
  1356.     result in similar output. 
  1357.  2. The buttons for Play and Record have no function at this time.  This 
  1358.     functionality will be added later. 
  1359.  3. There is no drag and drop capability yet. 
  1360.  4. A file must be loaded through the Open button.  PMsndX ignores any 
  1361.     additional parameters on the command line. 
  1362.  5. There is currently no means to override the load file type. 
  1363.  6. Volume changes affect both channels equally.  If one channel is sampled at 
  1364.     a higher volume, there is no method currently available to mormalize the 
  1365.     two channels. 
  1366.  
  1367.  
  1368. ΓòÉΓòÉΓòÉ 7. About the Author ΓòÉΓòÉΓòÉ
  1369.  
  1370. My name is William Scott Hiles but I usually go by the name Scott.  I have a 
  1371. masters degree in signal processing and satellite communications. 
  1372. Unfortunately, my occupation utilizes very little of my formal education and 
  1373. takes more advantage of my less formally learned talents.  I work as an 
  1374. electrical engineer for the Navy in the area of LAN and WAN research. My job is 
  1375. centered around promoting open systems in networking within the Navy and I am a 
  1376. Navy expert on fiber optic networking.  I have worked with the ANSI X3 
  1377. committees for the past 5 years and currently (1993-1994) am the chairman of 
  1378. the FDDI Repeater specification.  Enough of that dribble...the point is that I 
  1379. don't use my education in my job. 
  1380.  
  1381. Which leads me into the purpose of this program.  I am an electrical engineer, 
  1382. and my heart lies in hardware design and programming.  Well, with this program 
  1383. I can at least satisfy my need to create software.  So, this program came about 
  1384. because I was playing with sampling and recreating sound with my Sound Blaster 
  1385. 16 when I had the need to convert from the .wav format to the Sun .au format. 
  1386. SOX is the only thing that I was able to find that could do what I needed. 
  1387. However, I quickly realized that SOX is great for the general case, but not so 
  1388. great in more specific cases such as changing the sampling rate of a file. SOX 
  1389. is good enough for the human ear, but not good enough for the computer.  So, 
  1390. rather than live with SOX or just write a resampling program, I wrote PMsndX to 
  1391. provide the functionality of SOX but enhance it to provide the capabilities I 
  1392. needed. 
  1393.  
  1394. My resources are modest.  I am 29 (1993) and have programmed everything from a 
  1395. PC to a 286 for the past 10 years.  I dumped my 286 in February of 1993 and got 
  1396. me a nice 486.  I decked the thing out and got OS/2.  I had been playing with 
  1397. OS/2 since 1.3 on machines that I did not own, but this was the first time I 
  1398. had it at home to play with as I pleased. Programming under OS/2 provided a 
  1399. unique challenge with unlimited creative abilities.  The company called 
  1400. WiSHware which is listed in the About box was formed as a shareware/freeware 
  1401. incorporated name for anything I write.  I have a significant library of 
  1402. programs for DOS and even a couple for Windows.  PMsndX is the second program 
  1403. for OS/2 that I have written.  The first one was not well received as it did 
  1404. not provide a significant function to the community.  Big deal.  I use it at 
  1405. home and I don't care. 
  1406.  
  1407. So that is my history and my qualification.  I am a bit surprised that you read 
  1408. this far.  Congratulations. By the way, did you wonder why I chose a little 
  1409. blue motorcycle for the icon? I can easily be reached by my current email 
  1410. address (whiles@relay.nswc.navy.mil) or through US mail at: 
  1411.  
  1412. Scott Hiles 
  1413. 4421 Savannah St. 
  1414. King George, VA 22485 
  1415.  
  1416.  
  1417. ΓòÉΓòÉΓòÉ 8. Shareware ΓòÉΓòÉΓòÉ
  1418.  
  1419. During the development stages of PMsndX (i.e. until version 1.0 is available) 
  1420. PMsndX is free to all for distribution. After version 1.0 is finished, the 
  1421. program will then be distributed as shareware. 
  1422.  
  1423. I have put a lot of effort into making this program robust and very pleasing. 
  1424. In actuality, 90 percent of the work on the program has been around the user 
  1425. interface because the code for doing the actual effects is only about 500 lines 
  1426. compared with roughly 10,000 lines of code for the user interface.  It has 
  1427. taken me more than three months to get this program to where it is now, and I 
  1428. would hope that if you like the program and use it, you will appreciate it 
  1429. enough to send me a little cash to help fund future work.  I don't expect much. 
  1430. I think a round number like $25.00 would be nice, but you can do whatever you 
  1431. feel like.  Just don't insult me by sending me a penny or something like that. 
  1432. With my current financial status (i.e. poor) I cannot afford a optimizing 
  1433. compiler.  With a few donations the program could benefit nicely.  (hint, hint) 
  1434. The section describing the Author provides my email and US postal mail 
  1435. addresses. 
  1436.  
  1437. Note:   If you tested the program during the development stages, you will get a 
  1438.        FREE copy of the final program. 
  1439.  
  1440.  
  1441. ΓòÉΓòÉΓòÉ 9. Future Work ΓòÉΓòÉΓòÉ
  1442.  
  1443. The scope and goals for PMsndX are growing day by day. Currently I plan to have 
  1444. all of the functions of SOX as well as a few others listed below. 
  1445.  
  1446.  1. Drag, Drop, Cut, and Paste operations 
  1447.  2. Add a scripting language for automating operations 
  1448.  3. Command line overrides/initialization 
  1449.  4. Playback, Recording, and Cut/Paste editing 
  1450.  5. Normalization across channels 
  1451.  6. Add other filters such as Butterworth, Chebyshev and others. 
  1452.  7. Add High pass filtering 
  1453.  8. Add a Band Stop filter 
  1454.  
  1455.  
  1456. ΓòÉΓòÉΓòÉ 10. Tradeoffs ΓòÉΓòÉΓòÉ
  1457.  
  1458. Although SOX has a difficult command line, it is very effective for large 
  1459. samples because it processes the samples in managable blocks.  As a result, SOX 
  1460. does not require much memory to operate.  PMsndX provides the user with a 
  1461. simpler interface at the expense of reqources on the host computer. This can be 
  1462. a significant factor when manipulating large files on a system that is limited 
  1463. in memory resources.  This should be taken into consideration.  PMsndX is 
  1464. useless if it does not have the resources necessary to operate.  When OS/2 uses 
  1465. its swap file to provide more memory, the performance of PMsndX as well as any 
  1466. other programs on the system will suffer significantly. 
  1467.  
  1468.  
  1469. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1470.  
  1471. SOX originated on Unix and provides a means to convert sound from one format to 
  1472. another and to add effects to sound samples.  The interface to this program is 
  1473. the command line with various options and flags. 
  1474.  
  1475.  
  1476. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1477.  
  1478. Unix is a registered trademark of ATT laboratories. 
  1479.  
  1480.  
  1481. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1482.  
  1483. JoeView is an excellent program written by Joe Burkley.  If you ever need to 
  1484. view a graphics image of virtually any format, this is the program for you!!! 
  1485.  
  1486.  
  1487. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1488.  
  1489. Now, here is where my creativity is somewhat lacking.  Unlike the makers of 
  1490. BMW, I don't have the resources to hire a company to find the best icons for a 
  1491. the buttons, so I did it the easy way.  I just made a stab at it and figured 
  1492. that if anyone had any complaints or comments, they would let me know and I 
  1493. would change them.  Come on, one of the easiest things to do to a program is to 
  1494. recompile the resource bitmaps.  If you have suggestions, just let me know and 
  1495. maybe you might influence me to change them. 
  1496.  
  1497.  
  1498. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1499.  
  1500. The bits in a word are stored such that the leftmost bit is stored first in the 
  1501. first byte and the rightmost bit is stored last in the last byte.  If a word is 
  1502. composed of 16 bits, the word would be written to a file starting with bit 16 
  1503. and ending in bit 0. 
  1504.  
  1505. The number 0x1234 (0001 0010 0011 0100) is actually stored as 0001 0010 0011 
  1506. 0100. 
  1507.  
  1508.  
  1509. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1510.  
  1511. The bits in a word are stored such that the leftmost bit is stored first in the 
  1512. last byte and the rightmost bit is stored last in the first byte.  If a word is 
  1513. composed of 16 bits, the word would be written to a file starting with bit 7 
  1514. and ending in bit 8. 
  1515.  
  1516. The number 0x1234 (0001 0010 0011 0100) is actually stored as 0011 0100 0001 
  1517. 0010.