home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Multimed / Multimed.zip / pmsndx10.zip / PMSNDX.HLP (.txt) < prev    next >
OS/2 Help File  |  1994-08-21  |  271KB  |  1,732 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Introduction ΓòÉΓòÉΓòÉ
  3.  
  4.                                    PMsndX 1.0
  5.                                        by
  6.                                 William S. Hiles
  7.                              copyright WiSHware Inc.
  8.  
  9. First off, what is PMsndX?  PMsndX is the acronym that I created to mean 
  10. Presentation Manager sound eXchange. PMsndX was written specifically for OS/2 
  11. to provide an editor for sound samples of many different formats.  The editor 
  12. goes beyond just a cut and paste tool like the Digital Audio applet provided 
  13. with OS/2 by providing a rich set of tools for manipulating samples in memory. 
  14. PMsndX utilizes a large set of features of OS/2 and if present, the MMPM/2 
  15. interface is used to allow playback of any of the supported formats from 
  16. memory. 
  17.  
  18. Using dialog boxes, PMsndX provides an intuitive user interface for utilizing 
  19. the clipboard, MMPM/2 playback, and algorithms for adding special effects to 
  20. samples.  Everything is integrated together to make it easy to manage the 
  21. process of extracting or building samples in many different formats. 
  22.  
  23. Wow, you are still reading!  Well, now for some information on the user 
  24. interface.  There is nothing more frustrating than trying to use a program with 
  25. a difficult or complex user interface.  Twelve years ago I started programming 
  26. a TI99/4A in assembly language and from the start I have put more effort into a 
  27. clean user interface than anything.  It wasn't till I ran across JOEVIEW that I 
  28. realized that OS/2 had one of the most capable environments that I had seen. 
  29. Presentation Manager programming has got to be one of the easiest environments 
  30. to use and is a breeze compared to Microsoft Windows or the X environment. 
  31.  
  32. In any case, I spent more time on the user interface of this program than I 
  33. ever thought possible.  It is designed around a single coordinating window 
  34. populated by bitmaps.  Each bitmap has some sort of image that changes when the 
  35. button is pushed.  To make sure that the literate people out there (or the icon 
  36. impaired) understand the buttons, I put a bit of text on them to describe the 
  37. function. 
  38.  
  39. Now, I have used programs on a lot of platforms and I have my favorites along 
  40. with those that annoy me too.  My pet peeves are the applications like Procomm 
  41. for Windows which just assumes that you want the darn thing to fill up your 
  42. screen.  Or something like Microsoft Word which has so many menus and submenus 
  43. that it is hard to remember where a function is.  So, taking this into account, 
  44. I designed the interface such that the main functions of the program are 
  45. accessible from the main panel.  Pressing the button for the function will then 
  46. bring up a dialog box which asks the user for the necessary information. 
  47. Pushing the button again will remove the dialog box.  I prefer this interface 
  48. because it provides a single point of control.  Well, you just need to play 
  49. with it for a bit to get an understanding of what I am talking about here. 
  50.  
  51.  
  52. ΓòÉΓòÉΓòÉ 2. Conventions ΓòÉΓòÉΓòÉ
  53.  
  54. Throughout the documentation provided with PMsndX a number of terms are used 
  55. which may be common to Presentation Manager programs but uncommon to 
  56. conversational English.  There are also terms which are specific to PMsndX 
  57. which may be new to a user of this program.  The intent of this section is not 
  58. to recreate the OS/2 documentation; rather, it is intended to identify some 
  59. basic terms necessary to understand the language used in this documentation. 
  60.  
  61. Presentation Manager: 
  62.    The Presentation Manager is the Graphical User Interface (GUI) for most OS/2 
  63.    systems.  There are other GUIs available for OS/2 but this is the most 
  64.    common and the one that comes with OS/2 out of the box.  In general most 
  65.    people refer to the Presentation Manager by the acronym PM. 
  66.  
  67. SYSTEM MENU: 
  68.    Every PM program for OS/2 generally provides a SYSTEM MENU through an icon 
  69.    in the upper left corner of the window interface to the user.  By default, 
  70.    the system menu will contain the basic functions necessary to control the 
  71.    window for on the OS/2 PM desktop. 
  72.  
  73. TITLE BAR: 
  74.    In order for a window to be moved about the desktop with the mouse, a window 
  75.    must have a titlebar.  This is the thick bar at the top of the window.  The 
  76.    titlebar provides another function in that it allows the program to display 
  77.    relevant messages to the user. 
  78.  
  79. MINIMIZE BUTTON: 
  80.    A PM program may provide various control buttons for a window in the top 
  81.    right corner of a window.  One of these buttons is the MINIMIZE button. When 
  82.    the user selects this button, the window will be removed from the desktop 
  83.    and replaced by a small icon somewhere on the screen.  In most cases, the 
  84.    icon is placed at the bottom of the screen.  To restore the window the user 
  85.    can double click on the icon or can use a mouse button to bring up a menu 
  86.    and select Restore. 
  87.  
  88. MAIN CONTROL PANEL: 
  89.    The main control panel for PMsndX is the window that is initially displayed 
  90.    when the program is executed.  This window is the main point of control for 
  91.    the program and provides access to all of the above mentioned controls as 
  92.    well as access to all of the functions of the program. 
  93.  
  94. ACCELERATOR KEYS: 
  95.    The buttons on the main control panel and many of the controls in the 
  96.    associated tools provide accelerator keys.  These are marked on the displays 
  97.    by an underline.  To access the particular item without using the mouse, 
  98.    hold down the ALT key and press the underlined key.  As an example, to 
  99.    activate the OPEN button on the main control panel, hold down the ALT key 
  100.    and press the letter o. 
  101.  
  102.  
  103. ΓòÉΓòÉΓòÉ 3. Mouse Pointer ΓòÉΓòÉΓòÉ
  104.  
  105. The mouse pointer is used as an indication of the state of the program.  When 
  106. the program is processing, the mouse pointer will be changed to a small dial 
  107. with 10 markers on the dial.  The percentage of work completed is then 
  108. indicated by the hand of the dial.  When the dial reaches the vertical 
  109. position, the work has been completed. 
  110.  
  111. There is one exception to this operation.  When the echo effect is used, the 
  112. dial for the pointer will rotate more than once. This is because the results of 
  113. the echo effect change the length of the data depending on the markers and 
  114. volumes such that the resulting length is unpredictable. 
  115.  
  116. PMsndX uses multiple threads to accomplish many of its tasks.  As a result, 
  117. when a file is loaded the clock may turn more than once because each thread 
  118. will run as the resources that it is waiting on complete.  An example of this 
  119. is opening a file when the playback box is open.  In this case, as soon as the 
  120. file is completely loaded, the playback task will immediately start copying it 
  121. to the buffer for the playlist and the clock will turn around a second time. 
  122.  
  123.  
  124. ΓòÉΓòÉΓòÉ 4. System Menu ΓòÉΓòÉΓòÉ
  125.  
  126. As with any OS/2 program written for the Presentation Manager, PMsndX has an 
  127. icon in the top left corner of the control window.  Pressing this icon will 
  128. bring up a menu of system operations. 
  129.  
  130. The menu items provided in the system menu are: 
  131.  
  132. Restore        Restore the windows after being minimized 
  133. Move           Move the control window 
  134. Minimize       Minimize all of the windows of PMsndX to an icon 
  135. Close          Close the all windows and exit 
  136. About          Display information about the author and version and 
  137.                registration 
  138. Welcome        Display information about what is new to this version 
  139. Help           Bring up the help system 
  140. Reset Size     Reset the size of the main control panel to the default 
  141.  
  142.  
  143. ΓòÉΓòÉΓòÉ 4.1. Restore ΓòÉΓòÉΓòÉ
  144.  
  145. During the use of PMsndX, the user may select to Minimize the windows to an 
  146. icon on the desktop.  To restore the window from the icon the user may either 
  147. double click on the icon or may press a mouse button while the pointer is over 
  148. the icon to bring up the system menu and select the restore item. 
  149.  
  150.  
  151. ΓòÉΓòÉΓòÉ 4.2. Move ΓòÉΓòÉΓòÉ
  152.  
  153. PMsndX provides the standard controls for moving the windows around on the 
  154. desktop.  It is generally easiest to use the mouse to select the titlebar of 
  155. the window and drag the window to the new location.  If the user uses the 
  156. system menu to move the window, the mouse will be centered in the control 
  157. window and any movement of the mouse will move the window until a mouse button 
  158. is pressed. 
  159.  
  160.  
  161. ΓòÉΓòÉΓòÉ 4.3. Minimize ΓòÉΓòÉΓòÉ
  162.  
  163. All of the windows of PMsndX can be minimized quickly by either selecting the 
  164. minimize button on the upper right corner of the control panel or by using the 
  165. Minimize menu item of the system menu.  Either action performs the same 
  166. function. 
  167.  
  168.  
  169. ΓòÉΓòÉΓòÉ 4.4. Close ΓòÉΓòÉΓòÉ
  170.  
  171. To exit PMsndX the user can select the Close menu item from the system menu. 
  172. This is the default selection of the menu which enables the user to double 
  173. click on the PMsndX icon in the top left corner of the control panel to exit 
  174. the program.  The user may also use the Exit button on the control panel to 
  175. perform the same function. 
  176.  
  177.  
  178. ΓòÉΓòÉΓòÉ 4.5. About ΓòÉΓòÉΓòÉ
  179.  
  180. To find out the current version and other information about PMsndX the About 
  181. menu item can be selected from the system menu.  This display also shows the 
  182. current registration status of the program and the registration can be updated 
  183. by pressing the REGISTER button. 
  184.  
  185. PMsndX is just one of the programs written by the Author for Intel based 
  186. machines.  All programs developed under the WiSHware Inc. name have been 
  187. developed solely by the author (duhh, the Author is the sole member of the 
  188. company) and are copyrighted by US Copyright laws. 
  189.  
  190.  
  191. ΓòÉΓòÉΓòÉ 4.6. Welcome ΓòÉΓòÉΓòÉ
  192.  
  193. The HISTORY.TXT file contains a very complete list of all the changes between 
  194. each of the versions.  When viewed as a whole, it also summarizes the total 
  195. functionality of PMsndX.  Each version has specific changes which are 
  196. highlighted in the Welcome display. This display also shows the current 
  197. registration status of the program and the registration can be updated by 
  198. pressing the REGISTER button. 
  199.  
  200.  
  201. ΓòÉΓòÉΓòÉ 4.7. Help ΓòÉΓòÉΓòÉ
  202.  
  203. Selecting this option from the system menu performs the same function as 
  204. pressing the Help button on the main control panel.  This brings up the online 
  205. help system for PMsndX. 
  206.  
  207.  
  208. ΓòÉΓòÉΓòÉ 4.8. Reset Size ΓòÉΓòÉΓòÉ
  209.  
  210. The default button size for the display is 64x64. At any time, the user may 
  211. select to reset the size of the main control panel so that it returns to the 
  212. defaults.  The main control panel may be resized, using the border of the 
  213. window. 
  214.  
  215.  
  216. ΓòÉΓòÉΓòÉ 5. Resizing the main panel ΓòÉΓòÉΓòÉ
  217.  
  218. In accordance with the recommended Common User Access (CUA) guidelines, the 
  219. main control panel may be resized using the border of the window.  The 
  220. horizontal and vertical proportions of the buttons is always fixed such that 
  221. the overall window proportions will display the buttons properly. When the 
  222. width of the main panel is changed, the height is automatically adjusted to 
  223. maintain the proper shape of the buttons. 
  224.  
  225. Note:  Note.  To resize the window, either the corners or the vertical sides of 
  226.        the window must be used.  The horizontal sides of the window have no 
  227.        effect when used alone. 
  228.  
  229.  
  230. ΓòÉΓòÉΓòÉ 6. Buttons ΓòÉΓòÉΓòÉ
  231.  
  232. The main control panel provides the user with access to all tools and functions 
  233. trough a set of buttons.  Each button contains an icon and a single word which 
  234. describes the function of the button. The buttons have been designed as toggle 
  235. type push buttons.  To select a particular button, the mouse must be positioned 
  236. over the button and the first mouse button pressed.  This will depress the 
  237. button and activate a dialog for the desired function.  The dialogs present 
  238. information to the user about the desired operation and request input from the 
  239. user to complete the operation. 
  240.  
  241. The control panel is the main point of control for both activating and 
  242. deactivating a particular function.  The dialog boxes can be removed from the 
  243. screen by positioning the mouse over a depressed button and pressing the first 
  244. mouse button.  The dialog box will be removed and the button will return to the 
  245. non-depressed position. It is important to note that when a dialog box is 
  246. removed through this means, any information in the dialog is ignored and the 
  247. function is canceled.  For each dialog box, the user must enter all of the 
  248. information required and then select the appropriate action on the push buttons 
  249. at the bottom of the dialog box. The Open and Save Dialog boxes may also be 
  250. removed once the file operation has been completed.  This is the default 
  251. operation but may be changed so that the dialogs are not automatically 
  252. dismissed by deselecting the "AUTO Dismiss" box in the lower right corner of 
  253. the dialog window. 
  254.  
  255. Now for the buttons.  There are six buttons on the main control panel.  These 
  256. are listed below with a brief explanation of their function. 
  257.  
  258.                Opens and reads a new sample file 
  259.                Saves the current sample to a file 
  260.                Plays the current sample to an audio device 
  261.                Edit using the Clipboard 
  262.                Displays options to save between sessions 
  263.                Displays a notebook of tools 
  264.                Displays general help about PMsndX 
  265.                Exit PMsndX 
  266.  
  267.  
  268. ΓòÉΓòÉΓòÉ 6.1. Open ΓòÉΓòÉΓòÉ
  269.  
  270. The dialog box for opening a file and reading the sample into memory is 
  271. accessed from the OPEN button on the main control panel.  When reading in a 
  272. file, PMsndX will attempt to open the file as the type indicated by the 
  273. extension on the filename.  However, in the event that the file cannot be 
  274. loaded by the extension, PMsndX will automatically try to determine the type of 
  275. the file as it reads it.  If the sample header does not match any of the known 
  276. header types, PMsndX will refuse to load the file. 
  277.  
  278. When loading a file, the user may select to force PMsndX to load a file in a 
  279. specific format.  This is required to load headerless formats (i.e. the formats 
  280. marked as RAW).  To override the file format, select one of the buttons in the 
  281. Format box. 
  282.  
  283. Note:  If a Format override is specified, the file must still match the given 
  284.        format if it contains a header.  PMsndX will automatically recognize the 
  285.        header format and load it using the correct format. 
  286.  
  287. Once a file has been selected, either double click on the file name or press 
  288. the Load button.  During the time that the file is being loaded, the user may 
  289. press the Abort button to stop the loading process.  All data which may have 
  290. previously been loaded will be discarded. 
  291.  
  292. The File Type pulldown box works in combination with the File EA pulldown box. 
  293. To select all files of a particular type based on the name of the file (e.g. 
  294. *.wav, *.au, *.iff, etc.) first select the name extension from the File Type 
  295. pulldown list, and then select <All Files> from the File EA pulldown list. 
  296.  
  297. By default, the OPEN dialog box is automatically dismissed when the file has 
  298. been loaded.  If an error occurs during the loading process, the dialog will 
  299. not automatically dismiss itself.  To disable this feature (i.e. force the 
  300. dialog box to remain visible even after a file has been loaded) deselect the 
  301. AUTO Dismiss checkbox in the lower right corner of the window. 
  302.  
  303.  
  304. ΓòÉΓòÉΓòÉ 6.2. Save ΓòÉΓòÉΓòÉ
  305.  
  306. The dialog box for saving a file to disk is accessed from the SAVE button on 
  307. the main control panel.  When saving a file, the extension of the file will 
  308. automatically determine the type of output to write for the file (e.g. if the 
  309. extension entered by the user is .wav, then the file will be saved in WAVE 
  310. format.) or the user may override the file type by selecting one of the buttons 
  311. for the type of file. 
  312.  
  313. When saving a file, the extension of the file normally determines the format to 
  314. save the file in.  The primary use of this feature will be to promote the use 
  315. of standard file name extensions for the various sample types. However, the 
  316. user may specify that the information is stored in a particular format 
  317. regardless of the file extension.  In the event that no extension is specified 
  318. for the file, the PMsndX will automatically save the file under the specified 
  319. name under the format currently selected in the FORMAT field.  The available 
  320. formats for file operations are listed below. If the file type of Undefined is 
  321. selected, then the extension of the file will be used to determine the file 
  322. type. 
  323.  
  324. APPLE (.aif)   Apple 8/16 bit unsigned multi-channel samples 
  325. SUN (.au)      Sun/DEC/NeXT 8 or 16 bit single channel signed data samples or 8 
  326.                bit ULaw samples. 
  327. MAC (.hcm)     Apple Macintosh 8 bit single channel samples 
  328. RAW (.ub)      Raw 8 bit single channel unsigned samples without header 
  329.                information. 
  330. RAW (.sb)      Raw 8 bit single channel signed samples without header 
  331.                information. 
  332. RAW (.uw)      Raw 16 bit single channel unsigned samples without header 
  333.                information. 
  334. RAW (.sw)      Raw 16 bit single channel signed samples without header 
  335.                information. 
  336. RAW (.ul)      Raw 16 bit U-Law single channel samples 
  337. IRACAM (.sf)   Software produced 16 bit signed samples. 
  338. PC (.voc)      Creative Voice file format, 8 bit single channel unsigned 
  339.                samples 
  340. SAMP (.smp)    Turtle beach samplevision files. 
  341. PC (.wav)      Windows or OS/2 8 bit unsigned/16 bit signed multi-channel data 
  342.                samples 
  343.  
  344. The Save Directory checkbox allows the user to save the current save path 
  345. between sessions without having to open the Settings dialog box.  when this box 
  346. is selected, if the OK button is selected, the specified directory path will be 
  347. saved when the program has is terminated. If the SAVE DIRECTORY is deselected 
  348. before the program is terminated, the path will not be saved.  All file paths 
  349. are remembered during each session and the SAVE DIRECTORY box allows the user 
  350. to store this path between sessions. 
  351.  
  352. Note:  The file path is not saved until the program has been terminated. 
  353.  
  354. By default, the SAVE dialog box is automatically dismissed when the file has 
  355. been loaded.  If an error occurs during the loading process, the dialog will 
  356. not automatically dismiss itself.  To disable this feature (i.e. force the 
  357. dialog box to remain visible even after a file has been loaded) deselect the 
  358. AUTO Dismiss checkbox in the lower right corner of the window. 
  359.  
  360.  
  361. ΓòÉΓòÉΓòÉ 6.3. Playback ΓòÉΓòÉΓòÉ
  362.  
  363. So, you are interested in playing some samples from my little program?  Good. 
  364.  
  365. The ability to play a sample is not intended to provide the full capabilities 
  366. of the digital audio player.  It is intended to allow samples to be played 
  367. without having to save them to disk.  Additionally, this feature allows the 
  368. user to play a file of any format currently supported by PMsndX.  The sample 
  369. rates are limited to those supported by the audio device and if a sample is 
  370. loaded with an odd sample rate which is not supported, it must be converted to 
  371. a useable sample rate before it can be played. 
  372.  
  373. Note:  Whenever a sample is loaded and the PLAYBACK dialog is open, PMsndX will 
  374.        attempt to load the audio buffers with the sound data.  If the sample 
  375.        cannot be played (the number of channels or the sampling rate is not 
  376.        supported by the audio adapter) a warning is displayed.  PMsndX will not 
  377.        attempt to play a file that the audio adapter does not support. 
  378.  
  379. If you don't have MMPM/2 installed with your OS/2, don't worry.  PMsndX has 
  380. been written to provide as much of its capabilities as it can with or without 
  381. MMPM/2 installed. None of the tools, nor the editor require MMPM/2 to perform. 
  382. However, the playback button will be marked out if MMPM/2 is not installed 
  383. because there will be no means to play the sounds. 
  384.  
  385. When the playback button is pressed, a dialog box is opened which contains a 
  386. set of standard controls for playing sounds.  A checkbox is provided to allow 
  387. the samples to automatically repeat when the end of the playback is reached. 
  388.  
  389. The controls for the playback player are basically the same as those used on 
  390. the digital audio player provided with the MMPM/2 package for OS/2. 
  391.  
  392.           Starts or continues playback. 
  393.           Starts recording. 
  394.           Stops playback. 
  395.           Pauses playback. 
  396.  
  397. Note:  Recording has not been implemented at this time.
  398.  
  399. The Playback dialog provides a checkbox to allow a sample to be looped such 
  400. that it will continuously repeat.  When this checkbox is selected, the repeat 
  401. function is enabled. Playback can be stopped by deselecting the repeat checkbox 
  402. (in which case, the sample will complete playback befor stopping) or by 
  403. pressing the button. 
  404.  
  405. The Playback dialog also has the capability of playing a selected range and/or 
  406. a selected channel.  If the edit dialog is active, the range and channels for 
  407. manipulation may be used to select the part of a sample to be played. When the 
  408. Use Channel Selection box is selected, the selected channel will be played. 
  409. This allows the user to extract and play individual channels.  Similarly, when 
  410. the Use Range Selection box is selected, the specified range in the editor will 
  411. be played. 
  412.  
  413. Note:  If the edit dialog window is not open, the full sample (including all 
  414.        channels) is automatically used. 
  415.  
  416.  
  417. ΓòÉΓòÉΓòÉ 6.4. Edit ΓòÉΓòÉΓòÉ
  418.  
  419. The editor is designed to be compatible with the format of data pasted to the 
  420. clipboard using the OS/2 Digital Audio Application to allow bi-directional use 
  421. of the clipboard between the two applications.  To describe the use of the 
  422. editor each of the categories of controls will be described.  Most are very 
  423. obvious, but some (particularly the operation buttons) have rules of 
  424. operation). 
  425.  
  426. The editor is the central point of control for selecting the range and channels 
  427. for all operations.  As a result, when an operation is being performed (as 
  428. indicated by the mouse pointer displayed as a clock face) if the range is 
  429. changed or the channel to manipulate is changed, a warning beep will be 
  430. produced; however, the display will indicate that the selection has been made. 
  431. For the editor, the change will be made, but the rest of the tools and playback 
  432. will not be updated until another selection is made causing changes to the 
  433. channels or range.  Additionally, attempts to perform operations (i.e. Cut, 
  434. Paste, Copy, Remove, and Zero) will result in a audible warning and the 
  435. function will not be performed. 
  436.  
  437. As with the other tools, operations which take a significant amount of time to 
  438. accomplish will provide an indicator for the percentage of the task completed. 
  439. Operations which copy data to the clipboard or delete data from memory utilize 
  440. the DMA memory transfers and are fast enough that the indicator is not used. 
  441. Operations which copy data from the clipboard use the indicator because the 
  442. operation is much more complicated. 
  443.  
  444. Note:  The editor has been written without the use of the MMPM/2 libraries. 
  445.        Although MMPM/2 has all the functions necessary to perform the clipboard 
  446.        operations, they can only be used if MMPM/2 is installed.  Since this 
  447.        program has been written to do its core work on any OS/2 system (with or 
  448.        without MMPM/2), everything is done manually.  This provided a bit more 
  449.        control over the PASTE operation and it is still very quick. 
  450.  
  451. The editor has been written to provide a robust method of manipulating parts 
  452. (or all) of a sample.  The functions are broken down into groups (marked by a 
  453. box around the group). 
  454.  
  455. Channel Displayed: 
  456.  
  457. The edit dialog box allows the user to view a single channel at a time through 
  458. the graphical display.  The channel to be displayed is selected using radio 
  459. buttons which are enabled based on the number of channels in the current sample 
  460. in memory. 
  461.  
  462. Area: 
  463.  
  464. When using the Copy, Cut, Zero, and Remove operations, the user selects the 
  465. area of the sample to be affected by either selecting the entire sample or 
  466. selecting a part of the sample.  When the radio button for the "Entire Sample" 
  467. is selected, the start and end will be set to the beginning and end of the 
  468. sample respectively.  To select a part, the user may either select the Select 
  469. Part radio button or use the left or right buttons to select the start and end 
  470. respectively for the interval of the operation. 
  471.  
  472. Selection: 
  473.  
  474. The user may specify a specific time for the begin or end of the interval for 
  475. the desired operation by typing the time directly.  The editor will 
  476. automatically adjust the time down to the nearest actual sample.  To activate 
  477. the Selection entry fields, select the Select Part radio button in the Area 
  478. field. 
  479.  
  480. Manipulate: 
  481.  
  482. This is probably the one field to draw the most confusion.  This group of 
  483. buttons allows the user to specify which channel to operate on.  By default the 
  484. editor will operate on all channels of a sample.  However, the user may select 
  485. a specific channel for the operation by pressing the "Selected Chan" radio 
  486. button and then selecting the channel for the operation.  Once the operation is 
  487. performed, the Manipulate group will default back to All Channels. 
  488.  
  489.  The editor is integrated into the PMsndX such that the Tools and the Playback 
  490. dialogs utilize the information from the editor.  Each tool indicates that it 
  491. uses the range or channels selected in the editor through a checkbox in the 
  492. lower left corner of the tool.  The Playback dialog provides checkboxes to 
  493. enable or disable the usage of the channel and range selection. 
  494.  
  495. Each of the groups provides the user with a means to select the parameters of 
  496. the various operations.  Each operation has a set of rules defining how they 
  497. behave under the various conditions.  These are defined in the following text. 
  498.  
  499. Rules for cut: 
  500.  
  501. 1.  If the channel to operate on is "ALL", the copy all of the data over the 
  502. specified interval and shift all data over to the left. 
  503.  
  504. 2.  If the channel to operate on is specified, then copy the data over the 
  505. specified interval for that single channel to the clipboard, and shift the data 
  506. after the interval over to the left while clearing the end of the data for the 
  507. specified channel. 
  508.  
  509. Rules for paste: 
  510.  
  511. The PASTE button is used the paste the contents of the clipboard into memory. 
  512. If the SHIFT key is pressed the text on the PASTE button will change to MERGE. 
  513. When the MERGE button is pushed, the editor will merge the data from the 
  514. clipboard with the data in memory.  When the merge function is used the rules 
  515. for PASTE apply except that the data is averaged equally instead of being 
  516. inserted. 
  517.  
  518. The paste operation varies depending on the number of channels in the current 
  519. sample and the number of samples in the data on the clipboard. After the paste 
  520. operation, the start marker will be set at the beginning of the sample pasted 
  521. from the clipboard and the end marker will be set to the end of the new data. 
  522.  
  523. 1.  If there is no current data, then just copy the clipboard directly to 
  524. memory. 
  525.  
  526. 2.  If the number of pasted channels is the same as the current data, then past 
  527. the data in based on the selected channel for manipulation. 
  528.  
  529. Note:  When merging, the data is averaged based on the selected channel for 
  530.        manipulation.  Any excess difference between the length of the two will 
  531.        be left unafffected.
  532.  
  533. 3.  If the number of pasted channels is 1, then just copy the data to the 
  534. channel(s) selected for manipulation and insert blank space for the 
  535. corresponding channels which are not being manipulated.  If the number of 
  536. channels for manipulation is "ALL" then duplicate the data for the single 
  537. channel across all channels of the current data. 
  538.  
  539. Note:  If the number of merged channels is 1, then average the data from the 
  540.        clipboard to the channel(s) selected for manipulation.  If the length of 
  541.        the samples does not match the data will be averaged for the common 
  542.        length of the two and excess will not be modified.
  543.  
  544. 4.  If the number of pasted/merged channels is less than the current number of 
  545. channels (but greater than 1), then 
  546.  
  547. a) if the channels selected for manipulation is set to "ALL" then copy the 
  548. channels from the clipboard directly into the current sample and zero out the 
  549. non-existent channels. 
  550.  
  551. Note:  When merging, average the data from the clipboard directly into the 
  552.        current sample and leave the non-existent channels unaffected.
  553.  
  554. b) copy the first channel from the pasted sample into the selected channel for 
  555. manipulation. 
  556.  
  557. Note:  When merging, average the first channel from the clipboard with the 
  558.        selected channel for manipulation.
  559.  
  560. 5.  If the pasted/merged sample has more channels than the current sample, then 
  561.  
  562. a) if the channels selected for manipulation is set to "ALL" then create the 
  563. new channels in the existing data and set all non-existent channels in the 
  564. existing data to zero. 
  565.  
  566. Note:  When merging, average the existing channels and copy the clipboard data 
  567.        directly to the channels that did not exist in memory. 
  568.  
  569. b) copy the first channel from the pasted sample into the selected channel for 
  570. manipulation. 
  571.  
  572. Note:  When merging, the first channel is merged into the selected channel for manipulation.
  573.  
  574. 6.  If all of this fails, then just warn the user and give up. 
  575.  
  576. Rules for Copy Operation: 
  577.  
  578. 1.  If the channel to operate on is ALL, copy all of the data over the 
  579. specified interval to the to the clipboard. 
  580.  
  581. 2.  If the channel to operate on is specified, then copy that single channel to 
  582. the clipboard. 
  583.  
  584. Rules for Zero operation: 
  585.  
  586. Set the data over the specified interval to 0 for the channels specified. 
  587.  
  588. Rules for Remove operation: 
  589.  
  590. 1.  If the channel to operate on is "ALL", then remove the data over the 
  591. interval specified and shift all data to the left. 
  592.  
  593. 2.  if the channel to operate on is specified, then remove the data for that 
  594. channel over the interval and shift the end of that channel to the left while 
  595. zeroing out the end of the channel. 
  596.  
  597. Rules for Clear operation: 
  598.  
  599. This operation clears all data from the clipboard.  It has no effect on data 
  600. currently in memory. 
  601.  
  602. UNDO: 
  603.  
  604. PMsndX utilizes a lot of memory to ensure that the current data in memory is 
  605. not lost if an operation fails.  Normally the original data is deleted from 
  606. memory once an operation is completed to reduce the long term memory 
  607. requirements of the program.  However, If the Enable UNDO checkbox is selected 
  608. from the settings display, PMsndX will store a single buffer for performing one 
  609. level of UNDO. 
  610.  
  611. After any operation from the toolbox, any of the manipulations from the editor, 
  612. or after loading a new file, if the UNDO option is enabled, the current data 
  613. will be stored in a buffer.  Pressing the UNDO button from the editor will swap 
  614. the current memory with the buffer.  Pressing UNDO again will swap them back. 
  615. With this setup, the UNDO functions as a redo button. 
  616.  
  617. Note:  The UNDO capability is only available in the registered version of 
  618.        PMsndX. 
  619.  
  620.  
  621. ΓòÉΓòÉΓòÉ 6.5. Settings ΓòÉΓòÉΓòÉ
  622.  
  623. PMsndX can store a number of settings that users commonly set in a file called 
  624. pmsndx.ini.  This file is always located wherever the executable program is 
  625. found. 
  626.  
  627. From the SETTINGS dialog box the user may select to save the current window 
  628. positions, open file path, save file path, maximum memory and enable MMPM/2 
  629. Support requirements of the program. 
  630.  
  631. The window positions and file paths are maintained as long as PMsndX is 
  632. running.  When PMsndX is terminated, it will not save the current positions and 
  633. paths for file operations unless the boxes are checked in the SETTINGS dialog 
  634. box.  Selecting these buttons has no effect on remembering the current window 
  635. positions during a single session; rather, they only affect saving the 
  636. information between sessions. 
  637.  
  638. Note:  The information in the SETTINGS dialog box is only saved when the 
  639.        program is terminated.  If the SAVE CURRENT items are deselected, then 
  640.        the information will not be saved between sessions. 
  641.  
  642. Window Positions During a session, the user can move any of the dialog boxes 
  643. around on the screen.  If the WINDOW POSITIONS box is checked, these window 
  644. positions will be saved when the program is terminated.  If this button is 
  645. deselected before the program is terminated, the next session will revert to 
  646. the previous window positions saved by the program.  By default, if no window 
  647. position has been saved for a particular window, the window will be opened in 
  648. the lower left corner of the desktop. 
  649.  
  650. File Open Path The file path for loading samples into memory may be saved 
  651. between sessions by selecting the FILE OPEN PATH button.  If this button is 
  652. selected, the last file open path will be saved when PMsndX is terminated.  If 
  653. this button is deselected before the program is terminated, the next session 
  654. will revert to the path from the previous session. If no information is saved 
  655. for the program at any time, the current path will become the default path for 
  656. open operations. 
  657.  
  658. Note:  This box may be selected from either the SETTINGS dialog box or from the 
  659.        OPEN DIRECTORY button on the OPEN dialog box. 
  660.  
  661. File Save Path The file path for saving samples to a file may be saved between 
  662. sessions by selecting the FILE SAVE PATH button.  If this button is selected, 
  663. the last file save path will be saved when PMsndX is terminated.  If this 
  664. button is deselected before the program is terminated, the next session will 
  665. revert to the path from the previous session. If no information has not been 
  666. saved between sessions, the current path will become the default path for save 
  667. operations. 
  668.  
  669. Note:  This box may be selected from either the SETTINGS dialog box or from the 
  670.        SAVE DIRECTORY button on the OPEN dialog box. 
  671.  
  672. Maximum Sample Memory PMsndX takes advantage of OS/2's advanced memory 
  673. management facilities.  When the program is started, it only takes up the 
  674. memory required for the executable to load.  PMsndX then reserves the amount of 
  675. memory specified by the SETTINGS box from OS/2 but does not commit this memory. 
  676. This means that the program has requested that OS/2 allocate the necessary 
  677. resources to manage the amount of memory specified.  Until the memory is 
  678. actually committed it is not taken from the system's memory pool.  When a sound 
  679. sample is loaded into memory, PMsndX then requests that OS/2 commit the 
  680. necessary memory before it loads the sample.  When a new sample is loaded, the 
  681. previous memory is decommitted and the procedure is repeated. 
  682.  
  683. Although this minimizes the actual amount of physical memory required by 
  684. PMsndX, it still provides the potential to cause OS/2 to have to commit more 
  685. memory than is available on the system.  To avoid this problem, PMsndX provides 
  686. the user with the ability to limit the amount of memory which can be committed 
  687. by OS/2.  The user may either specify that the program automatically determine 
  688. the maximum or that it set the maximum at a specific value. 
  689.  
  690. Memory is primarily used to hold samples for operations; however, whenever the 
  691. sound is manipulated in such a way that either the output has a different 
  692. number of samples or the operation requires the samples to remain in tact 
  693. during the entire operation, additional memory is used to hold the new data. 
  694. Once the operation has been completed, the memory is freed.  When setting the 
  695. maximum memory, the user must take into account the size of the data in memory 
  696. as well as the size of the results of any operations. With the exception of 
  697. Sampling Rate changes, the maximum memory requirements will not exceed twice 
  698. the size of a sample.  When changing rate, the size is dependent on the new 
  699. sampling rate.  If the new rate is higher than the current rate, the memory 
  700. requirements will increase.  If the new rate is lower than the original rate, 
  701. the memory requirements will shrink. 
  702.  
  703. If the user selects the AUTO mode for memory (the default), PMsndX will limit 
  704. the memory usage to 32 megabytes.  This is generally more memory than most 
  705. systems have but allows for a very large sample file to be loaded. 
  706.  
  707. If the user chooses to limit the memory to a specific value, the AUTO checkbox 
  708. can be turned off and a value may be entered.  Since the minimum OS/2 memory 
  709. block size is 4096 (4k) bytes, the user may specify the number of 4k pages for 
  710. the limit.  The user may either use the up and down arrows to increment or 
  711. decrement the amount of memory or may place the cursor in the window and type 
  712. the specific value. 
  713.  
  714. Enable MMPM/2 Support 
  715.  
  716. PMsndX supports playing samples from memory directly to the MMPM/2 digital 
  717. audio device of OS/2.  This allows samples to be played without having to save 
  718. the sample to disk in the native .WAV format.  The settings dialog box provides 
  719. controls for disabling or enabling MMPM/2 support and for controlling the 
  720. actions taken when a file is loaded (e.g. Play sample on load, convert to a 
  721. standard rate when loaded, and exit after play from the command line). 
  722. Additionally, the digital audio device may be specified. 
  723.  
  724. If the MMPM/2 capabilities of the program are not needed or if MMPM/2 support 
  725. is not installed on a particular system, the MMPM/2 may be disabled from the 
  726. settings dialog box.  By disabling the MMPM/2 support, the button on the main 
  727. control panel for playback is disabled.  By default the program will enable 
  728. MMPM/2 support.  If MMPM/2 is available but disabled and the playback button is 
  729. selected, a message is displayed to the user to indicate that the setting 
  730. should be turned on from the settings box. 
  731.  
  732. The controls for MMPM/2 and the ability to play the "playlist" using MMPM/2 
  733. utilize the files SW.DLL and MDM.DLL.  These are part of the standard MMPM/2 
  734. distribution and must be present in the DLL path for the MMPM/2 portion of this 
  735. program to operate.  The MMPM/2 support is not linked into the executable of 
  736. this program.  Rather, it is only loaded when the user enables it.  This allows 
  737. the program to run on machines which do not have MMPM/2 installed. 
  738.  
  739. The MMPM/2 functionality of PMsndX has been implemented to share the audio 
  740. device with other programs on the system. However, if by disabling the MMPM/2 
  741. support, the audio device is freed up completely. 
  742.  
  743. Play on Load 
  744.  
  745. If the Play on Load box is selected, a sample is immediately played when it is 
  746. loaded into memory.  To provide control during playback, the playback dialog 
  747. box is opened after the file has been loaded.  When this feature is used in 
  748. conjunction with the exit after play feature, PMsndX provides the ability to 
  749. play any supported sample file format from the command line and have the 
  750. program exit when it is finished. 
  751.  
  752. If this parameter is not specified, the sample will still be loaded from the 
  753. command line; however, it will not be played until the user accesses the 
  754. playback dialog. 
  755.  
  756. Note:  When a filename is specified on the command line, the control panel and 
  757.        the dialog boxes are not opened.  The intention of this operation is to 
  758.        allow the program to play without being intrusive. 
  759.  
  760. Exit after Play 
  761.  
  762. The Exit after Play option provides the ability for PMsndX to exit after 
  763. playing the sample when the file is loaded from the command line.  This is 
  764. primarily intended to provide a means to play any of the supported formats from 
  765. the command line. 
  766.  
  767. Device 
  768.  
  769. Obviously not every machine has the same digital audio device.  PMsndX provides 
  770. a means to use a different audio device than the default digital audio 
  771. interface.  By default the device name is Waveaudio01.  Any Waveaudio device 
  772. may be selected by entering the device name in the Device entry field. 
  773.  
  774. After the user has set all of the information in the SETTINGS dialog box, the 
  775. DO IT button must be used to save the changes. When this button is pressed, the 
  776. dialog box is dismissed and the settings are applied. 
  777.  
  778. Note:  If a sample is currently loaded into memory and the Maximum Sample 
  779.        Memory is changed, the sample data will be flushed from memory.  A 
  780.        warning box will be displayed to indicate the result of this operation. 
  781.  
  782. To dismiss the SETTINGS box without saving any changes, the CANCEL button can 
  783. be used.  This has the same effect as pushing the SETTINGS button on the main 
  784. control panel when the SETTINGS box is displayed.  All information entered by 
  785. the user is cleared and the SETTINGS remain unchanged. 
  786.  
  787.  
  788. ΓòÉΓòÉΓòÉ 6.6. Tools ΓòÉΓòÉΓòÉ
  789.  
  790. Using a notebook to display the TOOLS has some unique presentation advantages. 
  791. Primarily the notebook allows the effects to be displayed in a single dialog 
  792. window.  Since each effect is mutually exclusive of any other tool this 
  793. approach displays the maximum information that the user can utilize at any 
  794. time.  Another approach would have been to develop a dialog box for each tool. 
  795. This approach has the disadvantage that it would require a second control panel 
  796. to select the specific tools.  This would violate the approach of providing a 
  797. single control panel for the user and would necessitate managing a number of 
  798. different windows which could potentially clutter the screen.  The notebook is 
  799. a clean and aesthetically pleasing means for managing the tools. 
  800.  
  801. The heart of manipulating the samples is accessed from the TOOLS notebook. 
  802. Some of the pages of the notebook provide information while others let the user 
  803. apply a particular effect on the current sound sample.  The TOOLS notebook can 
  804. be dismissed by pressing the TOOLS button on the main control panel or by 
  805. pressing the DISMISS button at the bottom of the Tools notebook. The tabs on 
  806. the notebook provide access to the Info, Type, Average, Duplicate, Band Pass, 
  807. Low Pass, Rate, Speed, Echo, Invert, Reverse, Vibro, Volume, Fade, and Balance 
  808. functions for manipulating the samples. 
  809.  
  810. The notebook may be navigated by either selecting the tab on the right of the 
  811. book for the desired function or by using the small Plus and Minus buttons at 
  812. the bottom of the notebook.  Using the Plus and Minus buttons will move through 
  813. the notebook a single page at a time.  The information for each function are 
  814. divided into the following categories. 
  815.  
  816. To select the tabs using the keyboard, the focus for the notebook must be set 
  817. for the notebook container (by clicking the mouse outside of one of the tools 
  818. or by pressing the ALT key and the UP arrow). Selecting any character that is 
  819. underlined will bring that page to the top of the display. 
  820.  
  821. The notebook can be displayed regardless of the presence of sample data in 
  822. memory.  When no sample is present, the pages of the notebook will be 
  823. invalidated but can still be viewed. 
  824.  
  825.  
  826. ΓòÉΓòÉΓòÉ 6.6.1. Info ΓòÉΓòÉΓòÉ
  827.  
  828. The Info page displays all of the relevant information about the samples 
  829. currently in memory.  This includes the following categories: 
  830.  
  831. Load Format     One of the formats which the program can save or open 
  832. Data Type       The default extension for this file format. 
  833. Data Style      SIGNED, UNSIGNED, ULAW, or ALAW 
  834. Channels        Number of channels in the sample 
  835. Sampling Rate   The number of samples taken each second 
  836. Data Size       BYTE (8 bits), WORD (16 bits), LONG (32 bits) 
  837. Samples         The number of samples that make the file 
  838. Comments        Some sample files may contain comments.  Any comments found are 
  839.                 displayed in this window 
  840. Byte Order      The natural order of the bytes in each sample.  This field can 
  841.                 display either Big Endian or Little Endian 
  842.  
  843.  
  844. ΓòÉΓòÉΓòÉ 6.6.2. Type ΓòÉΓòÉΓòÉ
  845.  
  846. The type of the file is determined by the header written to the beginning of 
  847. the file.  See Save for information how the file type is determined when a file 
  848. is saved to disk.  Additionally, the user may use the this tool to change the 
  849. Load Format (displayed in the Info page of the tools notebook).  When the file 
  850. is saved, the default file format will automatically be set to whatever has 
  851. been chosen on this page of the notebook.  Changing the file name extension or 
  852. selecting a file format in the SAVE dialog will override this setting. 
  853.  
  854. Each file format utilizes different headers for the actual data.  By selecting 
  855. one of the standard formats on this page the Info page will show the user how 
  856. the samples will be saved.  The fields that are most likely to change are the 
  857. Load Format, Data Type, Data Style, and Data Size. 
  858.  
  859.  
  860. ΓòÉΓòÉΓòÉ 6.6.3. Average ΓòÉΓòÉΓòÉ
  861.  
  862. A sample with an even number of channels may be averaged to produce a sample 
  863. with half the initial number of channels. For example, a sample with four 
  864. channels can be averaged to produce a sample with two channels and a sample 
  865. with two samples can be averaged to produce a sample with one channel. 
  866.  
  867. Channels may be averaged in three ways.  The simplest is to take the left or 
  868. right channel data as the final data.  A more complex method is to average the 
  869. samples of the left and right to produce a center sample. The results of these 
  870. operations are significantly different and can result in very different output 
  871. samples. 
  872.  
  873. When a sample contains four channels, it is composed of four sound sources at 
  874. 45 degrees in each quadrant.  This corresponds to the Front Left, Front Right, 
  875. Rear Left, or Rear Right.  To average these into two channels the user can 
  876. select to use any of the four channels or to average based on the left or 
  877. right. To select or average any combination of the channels into either of the 
  878. output channels, check the box for the channels from the source sample.  To aid 
  879. in this, two radio buttons have been provided which enable or disable the 
  880. selection of check boxes in the second channel depending on the number of 
  881. output channels selected. 
  882.  
  883.  
  884. ΓòÉΓòÉΓòÉ 6.6.4. Dupe ΓòÉΓòÉΓòÉ
  885.  
  886. Channels can be duplicated such that a single channel sample can be made to 
  887. have two channels which are identical or two channels can be duplicated to form 
  888. four channels. 
  889.  
  890. When copying two channels to 4, PMsndX allows the user to specify which of the 
  891. input channels will be placed on the output channels.  In this way, a single 
  892. channel of a dual channel sample can be copied to any of the four output 
  893. channels. 
  894.  
  895.  
  896. ΓòÉΓòÉΓòÉ 6.6.5. Band Pass ΓòÉΓòÉΓòÉ
  897.  
  898. This tool provides the ability to apply a band-pass filter to a sample. The 
  899. frequency response for the filter is designed to drop logarithmically around a 
  900. center frequency.  The slope of the drop at the desired start (Wp) and end (Ws) 
  901. of the filter varies with the distance between the Wp and Ws.  This width is 
  902. used to determine the slope of the dropoff at the edges of the filter.  The 
  903. frequencies at Wp and Ws will be approximately half of their original 
  904. amplitudes and all frequencies outside of the Center - Wp and the Center + Ws 
  905. will be eliminated.  The bandpass filter can be mode oriented to pitched 
  906. signals (i.e. voice, singing, or instrumental music) or can be modified by 
  907. adding noise to the filter so that un-pitched signals can be effectively 
  908. processed. 
  909.  
  910. Note:  To aid the user in locating the maximum effective center frequency, a 
  911.        light blue vertical bar is placed at half the sampling rate for the 
  912.        data. 
  913.  
  914.  The transformation for the Bandpass filter was taken from a a program called 
  915. MUSIC56K (as documented in the MUSIC56K source code) and implemented in C++ for 
  916. this program. 
  917.  
  918. Operation of the bandpass filter tool is probably one of the most complex 
  919. interfaces in the toolbox.  It is based on a simple principle.  The entire 
  920. display of the filter represents the frequency response of the filter and is 
  921. operated like a slider.  However, since the Start frequency and the Stop 
  922. frequency are independent, the sliding bar is divided into identical controls 
  923. for each filter edge. Before getting into the operation of the controls the 
  924. display needs to be explained to establish the terms that will be used. 
  925.  
  926. As mentioned, the display is designed to illustrate the frequency response of 
  927. the bandpass filter (independent of any added noise).  The center of the Start 
  928. (Wp) and End (Ws) of the filter are marked by vertical BLUE bars.  The Center 
  929. (Wc) of the filter is marked by a vertical RED bar.  These three markers 
  930. provide the means for the user to modify the filter.  The region to the left of 
  931. the RED center frequency is always the start of the filter.  The user may click 
  932. the mouse to the left of Wp to decrease Wp by 1000 Hz.  Clicking between Wp and 
  933. Wc increases Wp by 1000 Hz.  Likewise, clicking between Wc and Ws decreases Ws 
  934. by 1000 Hz and clicking to the right of Ws increases Ws by 1000 Hz.  The user 
  935. may also click the mouse near Ws or Wp to drag the respective ends of the 
  936. filter quickly. 
  937.  
  938. To provide fine control of the filter, Right and Left arrows are provided for 
  939. both Wp and Ws.  Clicking on either the right or left arrow will increase the 
  940. indicated filter edge by 1 Hz.  To increase or decrease the filter edges by 10 
  941. Hz, the user may select the plus or minus corresponding to the filter edges. 
  942. The left set of controls affects Wp and the right set of controls affects Ws. 
  943.  
  944. As the mouse is used to adjust Wp and Ws, the exact frequencies for Wp, Ws, Wc, 
  945. and the filter Width are updated in the text input fields.  The user can use 
  946. the mouse to select one of the input fields and modify it directly.  To accept 
  947. a value in the entry field and recalculated the dependent frequencies select 
  948. another window or click on another item which moves the focus from the 
  949. notebook.  The rules for the fields are as follows: 
  950.  
  951.  1. If the Center frequency is modified, new values for Wp and Ws are 
  952.     immediately calculated using the current Width. If Wp or Ws are outside of 
  953.     the possible ranges, then Wp or Ws are set to the limit of the acceptable 
  954.     range and the Width and Center are recalculated. 
  955.  2. If the Width of the filter is modified, new values for Wp and Ws are 
  956.     immediately calculated using the current Center frequency.  If Wp or Ws are 
  957.     then outside of the acceptable ranges, Wp or Ws is then set to its limit 
  958.     and the Center and Width are recalculated. 
  959.  3. If Wp is changed, the Width and Center are automatically recalculated to 
  960.     reflect the new start of the filter. 
  961.  4. If Ws is changed, the Width and Center are automatically recalculated to 
  962.     reflect the new end of the filter. 
  963.  
  964. The bandpass filter has been selected because of the desirable effect on 
  965. typical sounds that will be processed by PMsndX such as voice or music. 
  966. However, if other types of noise are to be filtered, noise can be added to the 
  967. filter which results in a sharper peak of the filter.  To add this noise, 
  968. select the checkbox for "Add filter noise". Selecting the checkbox again will 
  969. disable the filter noise. 
  970.  
  971. Note:  The display of the frequency response for the filter does not reflect 
  972.        added noise. 
  973.  
  974.  
  975. ΓòÉΓòÉΓòÉ 6.6.6. Low Pass ΓòÉΓòÉΓòÉ
  976.  
  977. A Low Pass filter can be applied to a sample to eliminate high frequencies. 
  978. Filtering is accomplished in the digital domain through the use of a very 
  979. simple second order digital Fourier transform.  Future implementation may have 
  980. a more complex Fourier transform; however, the chosen function is desirable 
  981. because it provides a smooth dropoff without significant ringing. The 
  982. performance of the filter is determined by the cutoff frequency and the rate of 
  983. drop.  If the dropoff is made too quickly, the filter will exhibit a ringing 
  984. effect at the begin and end of the dropoff.  If the dropoff is performed too 
  985. slowly, the filter will suppress more frequencies toward the end of the desired 
  986. range.  The more orders of the filter (more stages), the better the frequency 
  987. response; however, more orders increase the time for filtering significantly. A 
  988. two order filter works adequately. 
  989.  
  990. When performing the digital convolution of the sample with the step function a 
  991. Gain factor is used to normalize the output data.  This acts as a Volume 
  992. control for the sample to prevent losses due to numerical overflow.  Values for 
  993. the gain range from 0 to 1 in increments of 0.01.  A slider bar is used to set 
  994. the gain of the low pass filter.  When the low pass filter is first brought up, 
  995. the Gain will default to a value of 0.8.  If this is changed, it will remain at 
  996. the new setting until the session is terminated. 
  997.  
  998. The Frequency response of the low pass filter is determined by a the 
  999. centerpoint of the dropoff at the end of the step function.  When performing a 
  1000. digital filter, it is not possible to prevent the gradual drop at the end of 
  1001. the step function due to the convolution of the samples used in the 
  1002. transformation.  This is true for analog components also. The centerpoint of 
  1003. the dropoff can be set in three ways. The user may enter the specific frequency 
  1004. in the text entry box in the lower right corner or may use the filter display 
  1005. like a sliding bar.  As is typical of a sliding bar, the mouse may be used to 
  1006. capture the cutoff frequency by pressing the mouse button while the mouse is 
  1007. near the cutoff frequency.  By holding the button down, the user may drag the 
  1008. frequency to the desired range.  Additionally, the user may click to the right 
  1009. or the left of the frequency cutoff to increase or decrease the frequency by 
  1010. 1000 Hz. The right and left arrows in the corners of the display may be used to 
  1011. increase or decrease the frequency by 1 Hz. The plus and minus buttons in the 
  1012. corners of the display may be used to increase or decrease the frequency by 10 
  1013. Hz. The frequency response curve illustrates the dropoff that occurs at the end 
  1014. of the step function. 
  1015.  
  1016.  
  1017. ΓòÉΓòÉΓòÉ 6.6.7. Rate ΓòÉΓòÉΓòÉ
  1018.  
  1019. Once a sample has been loaded into memory, the current rate information is 
  1020. displayed on the RATE page of the notebook. The user can change the rate of the 
  1021. sample using this page of the tools notebook. 
  1022.  
  1023. Note:  Changing the sampling rate may degrade the quality of the sound. 
  1024.  
  1025.  The user may select from a set of standard sampling rates for common computer 
  1026. formats or may specify a specific rate. OS/2 and Windows use standard rates 
  1027. which are multiples of 11025 Hz.  Sun, DEC, and NeXT computers commonly use a 
  1028. sampling rate of 8000 Hz.  Standard rates of 8000, 11025, 22050, and 44100 Hz 
  1029. have been provided for the user to select. 
  1030.  
  1031. If the user wishes to use a sampling rate which is not one of these, the button 
  1032. for Non-Standard should be pressed.  This will activate the slider bar and user 
  1033. input windows to allow the user to specify the rate.  The slider bar can be 
  1034. used to quickly change the rate in the input window or the user may select the 
  1035. input window and type in the desired rate. 
  1036.  
  1037.  
  1038. ΓòÉΓòÉΓòÉ 6.6.8. Speed ΓòÉΓòÉΓòÉ
  1039.  
  1040. This function will change the playback speed of a sample. This is the same 
  1041. thing as setting a phonograph to a different speed such that the sound is 
  1042. played too fast or too slow.  The controls for this effect simply specify the 
  1043. new playback speed.  Once a new speed is selected, the sample is resampled to 
  1044. interpolate the new playback points. As a result, a sample is still played at 
  1045. the same rate, but the data is modified to play at the new rate.  This allows 
  1046. the sample to be stored in a file which is of a standard rate. 
  1047.  
  1048. The user may select any of the standard rates including 8000 Hz, 11025 Hz, 
  1049. 22050 Hz, and 44100 Hz.  Additionally, the user may specify the playback speed 
  1050. to be either double (x2) or half (x1/2) or may specify a specify playback speed 
  1051. by selecting the User button.  If a speed other than the current speed is 
  1052. specified, the DOIT button will be activated which will allow the user to 
  1053. perform the change. 
  1054.  
  1055.  
  1056. ΓòÉΓòÉΓòÉ 6.6.9. Echo ΓòÉΓòÉΓòÉ
  1057.  
  1058. The echo effect will modify a sample to provide attenuation at specific points 
  1059. in a sample.  The operator must specify the points where the echo effects are 
  1060. to start and an attenuation or Volume for the echo.  The attenuation determines 
  1061. the length of time that it takes for the echo to die away.  If the Attenuation 
  1062. specified for all of the echo points is greater than 1, then the echo will 
  1063. "melt" rather than fading away and consequently may take a long time to 
  1064. complete.  If an attenuation is set to 0 or less, the Echo point is ignored. 
  1065.  
  1066. The echo effect presents an interesting challenge to the user interface.  How 
  1067. do you provide the user with an intuitive method to set the echo locations and 
  1068. the strength of the echo from a dialog box?  Well, look at the ECHO notebook 
  1069. page and follow along in the explanation of the operation.  This notebook page 
  1070. includes a graphical display of the current sample, a text entry field for 
  1071. editing (e.g. adding or deleting) time marks, and a volume control for setting 
  1072. the strength of the echo. 
  1073.  
  1074. The ECHO notebook is centered around the graph at the top of the page.  This 
  1075. display is the primary point of control. However, to allow for a bit more 
  1076. direct control, the user may use the entry fields to add and delete echo points 
  1077. too. To explain it all, I will start with the graphical display first and then 
  1078. lead to the secondary controls. 
  1079.  
  1080. Once a sample has been loaded into memory, the graphical display will become 
  1081. active.  The display is controlled through two slider bars for the position in 
  1082. the sample and for the magnification. The sample is normalized so that the 
  1083. largest sample value will hit the limit of the display.  This makes the display 
  1084. volume independent but gives maximum clarity of the actual waveform in memory. 
  1085. Markers may be added or moved to set the echo points in the waveform.  To aid 
  1086. the operator in locating the desired echo point, the display contains a status 
  1087. bar for the starting timemark for the sample in the window, the current 
  1088. timemark under the mouse, and the magnification factor. 
  1089.  
  1090. To move to the right or left in the display, the horizontal slider bar may be 
  1091. used.  Pressing the end arrows moves the display one displayed sample to the 
  1092. left or right.  When the slider bar is pressed, the display will move one half 
  1093. screen to the right or left.  The user may move the display to a region quickly 
  1094. by selecting the slider button and dragging it to the appropriate position. 
  1095. The display is immediately updated to display the current position. 
  1096.  
  1097. The display area at the bottom of the graph provides a timemark indicator for 
  1098. the first sample appearing at the left of the graph.  This provides a reference 
  1099. for moving through the data.  The time marker is displayed in the form of 
  1100. m:ss.ssss where m is the number of minutes into the sample and ss.ssss is the 
  1101. number of seconds into the sample. 
  1102.  
  1103. Even the smallest sample contains more data than can fit on the graphical 
  1104. display.  For this reason the vertical slider to the right of the graphical 
  1105. display is used to adjust the viewing magnification of the samples.  The 
  1106. maximum magnification of the samples is determined by the length of the sample 
  1107. and is calculated by dividing the total sample length by the largest number of 
  1108. data points which may be scrolled through on the display.  The display is 
  1109. limited to the maximum size of an signed 16 bit value due to the limitations of 
  1110. the signals for the horizontal slider bar. This results in a maximum of 32767 
  1111. data points which can be displayed and scrolled through. 
  1112.  
  1113. Initially, the magnification is set for the maximum displayable.  To decrease 
  1114. the magnification ( i.e. zoom out) on the sample, move the slider down the bar. 
  1115. The arrows on the ends of the bar can be used to increase or decrease the 
  1116. magnification in increments of 1.  Selecting between the button and the arrows 
  1117. doubles or halves the magnification. If the button is selected, the 
  1118. magnification can be set immediately to a value.  Markers are displayed for the 
  1119. nearest point in the zoom.  However, markers can only be set on exact multiples 
  1120. of the zoom.  Therefore, when trying to move a marker, if it is set at a 
  1121. different magnification, it may not be possible to move the marker without 
  1122. returning to that zoom.  Essentially, the marker is displayed but cannot be 
  1123. selected because that exact sample point is not visible. I considered making 
  1124. the mouse select the nearest marker, but this is a point of confusion if many 
  1125. markers are displayed at the same location for a specific magnification. 
  1126.  
  1127. The current magnification is displayed in the status area of the display in the 
  1128. form of "x1/nnnnn" where "nnnnn" is replaced by the current magnification 
  1129. number (i.e. number of points represented by a single point on the display). 
  1130. If the display says that the zoom is x1/2, then the magnification of the 
  1131. display is halved.  If this sounds confusing, then just play with the notebook 
  1132. page for a bit to get a feel for the operation of the zoom. 
  1133.  
  1134. Before going on, another area of the display needs to be described.  The center 
  1135. number on the status area of the display indicates the timemark for the current 
  1136. (or last) mouse position. Whenever the mouse is moved into the display area, 
  1137. this number will be updated to indicate the time offset for that particular 
  1138. point.  This takes into account the magnification. 
  1139.  
  1140. Now for the fun part.  To add an echo point to the sample, move the mouse to 
  1141. the place where you desire the echo.  The status display will provide a 
  1142. reference for the timemark. When the proper position has been selected, click 
  1143. the mouse and a blue marker will be placed.  If the mouse is released, the 
  1144. marker will be set at that location in the sample.  If the mouse is not 
  1145. released, the marker may be dragged across the display. This marker may be 
  1146. moved later if necessary by other means too. 
  1147.  
  1148. Note:  If at any time the mouse pointer is moved outside of the display before 
  1149.        the mouse button is released, the marker will not be set and the blue 
  1150.        mark will be erased from the display. 
  1151.  
  1152.  A echo marker may be moved by positioning the mouse pointer over the marker 
  1153. and pressing the mouse button.  If the marker is on a multiple of the zoom 
  1154. level, it will be selected and will follow the mouse as long as the button is 
  1155. pressed.  When the button is released, the marker will be placed at that 
  1156. position. 
  1157.  
  1158. A marker may be moved to another time delay by entering the desired delay 
  1159. directly through the Time Mark entry field. 
  1160.  
  1161. Note:  If the mouse is moved off the display area, the marker will be restored 
  1162.        to its original position. 
  1163.  
  1164.  For each marker displayed, the timemark is stored in a Combo Box.  This box is 
  1165. like an entry field in that the user can edit the time directly; however, it 
  1166. also has a drop down box that can scroll vertically through all of the 
  1167. different markers.  This type of box provides a great deal of flexibility for 
  1168. the user. 
  1169.  
  1170. To add a marker at a specific time, position the cursor in the Timemark box and 
  1171. edit the time index.  The format is the same as that used to display the time 
  1172. marks in the main display.  Enter the number of minutes followed by the 
  1173. seconds.  The granularity of the seconds is on the order of 1/10000 of a 
  1174. second.  For example, entering 6:54.4253 would accept a time mark at 6 minutes, 
  1175. 54.4253 seconds.  If a value is entered with is beyond the maximum sample of 
  1176. the file or less than 0, then the data is ignored. 
  1177.  
  1178. Once the desired time mark has been entered, the user may press the Add button 
  1179. to place the marker in the current database.  All timemarks added to the 
  1180. display use the volume specified for the last timemark, or 0 if no volume has 
  1181. been set yet. 
  1182.  
  1183. When the listbox is pulled down for the timemarks, each of the timemarks that 
  1184. have been entered are displayed in a vertically and horizontally scrollable 
  1185. window.  Up to 32 markers may be placed in the file and any markers which are 
  1186. unused are displayed with the word "EMPTY".  The markers are placed in the 
  1187. database in the order that they are entered unless a free slot is open (from 
  1188. being deleted).  The user may select any of the time marks using the combo box. 
  1189. If the selected timemark is not empty, the display will be updated to display 
  1190. the selected timemark in the center of the graph.  In the event that the 
  1191. timemark is too close to the end or beginning of the sample to display in the 
  1192. center of the graph, the timemark will be displayed without being centered. 
  1193. Once a timemark has been selected, the Del button may be pressed to delete the 
  1194. marker from the database.  The entry field is not cleared in order to allow the 
  1195. user to directly edit the timemark which was deleted and add it later. 
  1196.  
  1197. The volume for each timemark may be set by specifying a value in the volume 
  1198. entry field.  This is a simple entry field in which the user can type or delete 
  1199. numbers.  Since the volume (attenuation) for each timemark may range from 0 to 
  1200. infinity, the only method for entering the volume is through the keyboard. 
  1201. Sorry, no sliders here.  As each character is typed, it is stored.  The user 
  1202. does not have to press enter or any key to accept the value. 
  1203.  
  1204. I have not found a big use for numbers greater than 1, but I could not find any 
  1205. reason to limit the user to a specific range of numbers.  Anyone who has 
  1206. experience with this effect and knows of a reason for a limitation should 
  1207. contact the author and I will be happy to set up something to make entry of the 
  1208. Volume easier. 
  1209.  
  1210. Note:  The most common mistake for the echo effect is in forgetting to enter a 
  1211.        value in the Volume field.  Remember that you must provide an 
  1212.        attenuation for the echo in the Volume entry field to make the echo 
  1213.        point valid. 
  1214.  
  1215.  
  1216. ΓòÉΓòÉΓòÉ 6.6.10. Invert ΓòÉΓòÉΓòÉ
  1217.  
  1218. A sample is composed of numbers which are digital snapshots of an analog wave 
  1219. at regular intervals.  These numbers can take on positive and negative values 
  1220. which push or release the cone of a speaker to produce sound. The range and 
  1221. channels for this function are selected through the editor. 
  1222.  
  1223. Any series of samples may be inverted such that all positive values become 
  1224. negative and all negative values become positive.  To the human ear, there is 
  1225. no difference in the sound produced; however, mathematically, the new wave is 
  1226. very different.  An inverted wave may be added to a normal wave to 
  1227. mathematically subtract one from another. When this function is combined with 
  1228. the MERGE function of the editor, samples can be added together to eliminate 
  1229. common frequencies. 
  1230.  
  1231.  
  1232. ΓòÉΓòÉΓòÉ 6.6.11. Reverse ΓòÉΓòÉΓòÉ
  1233.  
  1234. This effect allows the user to reverse a section (or all) of a sample.  The 
  1235. range and channels for this function are selected through the editor. 
  1236.  
  1237.  
  1238. ΓòÉΓòÉΓòÉ 6.6.12. Vibro ΓòÉΓòÉΓòÉ
  1239.  
  1240. This function performs the "world-famous" Fender Vibro-Champ sound effect to a 
  1241. sound sample by using a sine wave as the amplitude of the volume at each 
  1242. sample.  This tool requires that the user set the Speed and the Depth of the 
  1243. sine wave. 
  1244.  
  1245. The speed setting gives the frequency of the sine wave in Hertz.  The range of 
  1246. values for the slider are from 1 to 30 in increments of 1 Hertz.  A value of 0 
  1247. would be useless for a frequency and is not allowed. 
  1248.  
  1249. The depth setting gives the amount by which the volume will be cut into by the 
  1250. sine wave.  The range of values for the slider are from 0.0 to 1.0 in 
  1251. increments of 0.01.  The initial value of the slider is 0.5. 
  1252.  
  1253.  
  1254. ΓòÉΓòÉΓòÉ 6.6.13. Volume ΓòÉΓòÉΓòÉ
  1255.  
  1256. Most anyone who has received a sound sample from different sources has had the 
  1257. problem that the recorded volume is inconsistent between different samples. 
  1258. After all, there is no standard recording level for the different machines or 
  1259. different software. 
  1260.  
  1261. To allow the user to adjust the volume of a sample, PMsndX provides a tool 
  1262. which can either adjust the volume by multiplying every sample by a fixed 
  1263. amount or by multiplying the samples by a value based on the limit of the data 
  1264. that can held in memory. 
  1265.  
  1266. By specifying a maximum value for the sound sample, all sound samples can be 
  1267. set to have a similar maximum.  The obvious use for this function is to allow a 
  1268. library of sounds to be set at the same volume.  The value used for the maximum 
  1269. volume is based on a percentage of the maximum data that can be held in a 
  1270. single sample.  As an example, a value of 100% for the volume represents a 
  1271. value of 127 for a signed byte sample. 
  1272.  
  1273. When the button for the Maximum is selected, the slider bar directly beneath 
  1274. the button is activated.  Initially, this will be set to the current volume in 
  1275. terms of the percentage of the maximum value for the sample.  The volume may be 
  1276. adjusted by setting the slider to a value between 0 and 100 percent of the 
  1277. maximum. 
  1278.  
  1279. Since the value is based on a percentage of the maximum value of the data that 
  1280. can be stored in a sample, clipping is not possible. 
  1281.  
  1282. When the button for the Fixed value is selected, the slider bar directly 
  1283. beneath the button is activated as well as the checkbox for clipping.  The 
  1284. fixed bar provides the means to multiply all sound samples by a fixed value 
  1285. between 0 and 2 in increments of 0.1. A value of 1 makes no change.  Any value 
  1286. greater than 1 increases the volume and any value less than 1 decreases the 
  1287. volume.  A value of 2 doubles the volume of the sample. 
  1288.  
  1289. When using fixed sampling it is possible to exceed the maximum data that may be 
  1290. stored for a sample.  The Allow Clipping checkbox may be selected to allow the 
  1291. data to be clipped.  If the checkbox is not set and if the fixed multiple will 
  1292. result in clipping, then the multiple will be set to the maximum value that 
  1293. will not result in clipping.  If the clipping box is set, data may exceed the 
  1294. maximum that may be stored for the sample which will result in noise. 
  1295.  
  1296.  
  1297. ΓòÉΓòÉΓòÉ 6.6.14. Fade ΓòÉΓòÉΓòÉ
  1298.  
  1299. This effect allows the user to either fade in or fade out the volume of a 
  1300. sample.  Fading the data in a sample is produced by increasing or decreasing 
  1301. the volume of the sample over a period.  To fade a sample in is to slowly 
  1302. increase the volume of the sample from 0 to the normal volume of the sample 
  1303. over a block of time.  To fade the sound out is just the opposite in which the 
  1304. volume of the sample is slowly reduced over a period. 
  1305.  
  1306. The FADE tool provides three methods for fading which provide a robust means 
  1307. for controlling the volume of the data over the specified range of operation. 
  1308. These are Linear, Slow Geometric, and Fast Geometric. 
  1309.  
  1310.  
  1311. ΓòÉΓòÉΓòÉ 6.6.15. Balance ΓòÉΓòÉΓòÉ
  1312.  
  1313. When a sample has more than one channel, the volume of the individual channels 
  1314. can be varied.  The balance of the channels can be achieved either 
  1315. instantaneously or over a period of time.  These are the same basic functions 
  1316. as used in the FADE and SWAP effects and are Linear, Slow Geometric, and Fast 
  1317. Geometric, and Step. 
  1318.  
  1319. The volume of a sample may vary by either starting at the specified percentage 
  1320. of the current volume for each channel and progressively approaching full 
  1321. volume.  This is similar to fading in a sample and is achieved by selecting the 
  1322. "IN" button.  The opposite effect is achieved when the volume starts at the 
  1323. current volume and progressively decreases to a percentage of the current 
  1324. volume. 
  1325.  
  1326. When balancing a sample, the user must specify a percentage for each channel. 
  1327. When fading in, this is the percentage that the volume will start at for each 
  1328. respective channel. When fading out, this is the final percentage of the 
  1329. original volume.  The display at the top of this dialog varies depending on the 
  1330. number of channels in the current sample. 
  1331.  
  1332.  
  1333. ΓòÉΓòÉΓòÉ 6.7. Help ΓòÉΓòÉΓòÉ
  1334.  
  1335. PMsndX is equipped with extensive on line help that can be accessed by pressing 
  1336. the HELP button from the main control panel.  When this button is selected a 
  1337. window will appear which will display the table of contents for the system. 
  1338.  
  1339. Links to other text is displayed in a blue-green color and can be selected to 
  1340. jump to that description in the text. When the control panel buttons appear in 
  1341. a tabular form, the buttons are active links in the help like the blue-green 
  1342. colored text.  Pressing these buttons will jump to the respective text. 
  1343.  
  1344.  
  1345. ΓòÉΓòÉΓòÉ 6.8. Exit ΓòÉΓòÉΓòÉ
  1346.  
  1347. When the EXIT button is pressed, the program terminates.  If the Settings box 
  1348. or the SAVE DIRECTORY from the Open or Save dialog boxes have been set to save 
  1349. information, the data will be saved to the initialization file before the 
  1350. program exits.  Before exiting, PMsndX requests verification that the user 
  1351. wants to exit to prevent accidentally exiting. All windows of PMsndX including 
  1352. any dialog boxes are removed from the screen when the program terminates. 
  1353.  
  1354. If the data in the memory buffers has been modified, PMsndX will warn the user 
  1355. that there are modified buffers and ask for verification that the user really 
  1356. wants to exit. 
  1357.  
  1358.  
  1359. ΓòÉΓòÉΓòÉ 7. Technical Issues ΓòÉΓòÉΓòÉ
  1360.  
  1361. Memory Usage: I have worked with means for storing and converting from one 
  1362. format to another efficiently.  Initially I tried to store things in a data 
  1363. structure which was a union of all of the types of data that are used by the 
  1364. computers.  However, converting from one format to another was difficult and 
  1365. each effect had to be able to understand the initial and final format.  This 
  1366. became unwieldy considering that there can be either signed or unsigned samples 
  1367. of sizes byte or word.  As new effects were added, it became unmanageable.  At 
  1368. a sacrifice to memory efficiency, I have changed it to store all data as a 
  1369. signed SHORT (2 byte) sample.  The effects then operate generically on the 
  1370. samples and the only time that the type of data is important is when reading or 
  1371. writing the samples.  The savings in complexity justified the memory 
  1372. requirements.  As a result, if a sample is 1k of bytes (.wav format), then in 
  1373. memory it will take up 2k.  Currently the program will only read and write 8 
  1374. and 16 bit samples. Since I don't know of any sound cards that can sample at 
  1375. greater bit sizes, this is the limit.  In the future, this approach to memory 
  1376. usage can be easily extended to 32 bits without rewriting every part of the 
  1377. program.  In fact, to change the storage sizes, two definitions have to be 
  1378. changed and then the proper input/output routines written.  Simple? I think so. 
  1379.  
  1380. Additional known faults: 
  1381.  
  1382.  1. The button for Record has no function at this time.  This functionality 
  1383.     will be added later. 
  1384.  2. There is no drag and drop capability yet. 
  1385.  
  1386.  
  1387. ΓòÉΓòÉΓòÉ 8. About the Author ΓòÉΓòÉΓòÉ
  1388.  
  1389. My name is William Scott Hiles but I usually go by the name Scott.  I have a 
  1390. masters degree in signal processing and satellite communications. 
  1391. Unfortunately, my occupation utilizes very little of my formal education and 
  1392. takes more advantage of my less formally learned talents.  I work as an 
  1393. electrical engineer for the Navy in the area of LAN and WAN research. My job is 
  1394. centered around promoting open systems in networking within the Navy and I am a 
  1395. Navy expert on fiber optic networking.  I have worked with the ANSI X3 
  1396. committees for the past 5 years and currently (1993-1994) am the chairman of 
  1397. the FDDI Repeater specification.  Enough of that dribble...the point is that I 
  1398. don't use my education in my job. 
  1399.  
  1400. Which leads me into the purpose of this program.  I am an electrical engineer, 
  1401. and my heart lies in hardware design and programming.  Well, with this program 
  1402. I can at least satisfy my need to create software.  So, this program came about 
  1403. because I was playing with sampling and recreating sound with my Sound Blaster 
  1404. 16 when I had the need to convert from the .wav format to the Sun .au format. 
  1405. After finding a little program that would convert Sun audio files to the PC 
  1406. format I found that it had problems with the new version of .WAV files.  So, I 
  1407. set out to write something that worked with the latest versions.  Well, from 
  1408. there it was not difficult to add other formats, and then I started playing 
  1409. with manipulations and so forth.  Over about 9 months of very time consuming 
  1410. work, I came up with the present program called PMsndX. 
  1411.  
  1412. My resources are modest.  I am 29 (1993) and have programmed everything from a 
  1413. PC to a 486 for the past 10 years.  I dumped my 286 in February of 1993 and got 
  1414. me a nice 486.  I decked the thing out and got OS/2.  I had been playing with 
  1415. OS/2 since 1.3 on machines that I did not own, but this was the first time I 
  1416. had it at home to play with as I pleased. Programming under OS/2 provided a 
  1417. unique challenge with unlimited creative abilities.  The company called 
  1418. WiSHware which is listed in the About box was formed as a shareware/freeware 
  1419. incorporated name for anything I write.  I have a significant library of 
  1420. programs for DOS and even a couple for Windows.  PMsndX is the second program 
  1421. for OS/2 that I have written.  The first one was not well received as it did 
  1422. not provide a significant function to the community.  Big deal.  I use it at 
  1423. home and I don't care. 
  1424.  
  1425. So that is my history and my qualification.  I am a bit surprised that you read 
  1426. this far.  Congratulations. By the way, did you wonder why I chose a little 
  1427. blue motorcycle for the icon? Very simply put, the modern day sportsbike 
  1428. represents the art of functional integration while still maintaining the 
  1429. quality and sound of much more expensive motorcycles. 
  1430.  
  1431. I can easily be reached by my current email address 
  1432. (whiles@relay.nswc.navy.mil) or through US mail at: 
  1433.  
  1434. Scott Hiles 
  1435. 4421 Savannah St. 
  1436. King George, VA 22485 
  1437.  
  1438.  
  1439. ΓòÉΓòÉΓòÉ 9. Shareware ΓòÉΓòÉΓòÉ
  1440.  
  1441. During the development stages of PMsndX (i.e. until version 1.0 is available) 
  1442. PMsndX is free to all for distribution. After version 1.0 is finished, the 
  1443. program will then be distributed as shareware.  Anyone who does not want to 
  1444. register later versions will still be able to use all of the releases before 
  1445. 1.0. 
  1446.  
  1447. Licensing and registration fees apply to the user interface and style of the 
  1448. program but do not apply to the algorithms used to create the effects.  These 
  1449. algorithms are public domain and may be copied and distributed freely. 
  1450.  
  1451. I have put a lot of effort into making this program robust and very pleasing. 
  1452. It has taken me more than nine months and 24,000 lines of code to get this 
  1453. program to where it is now, and I would hope that if you like the program and 
  1454. use it, you will appreciate it enough to send me a little cash to help fund 
  1455. future work.  I don't expect much. 
  1456.  
  1457. Asking for money is a sticky thing.  The big problem is to give people a 
  1458. program so that they can play with to see what it can do and yet hold back 
  1459. enough to get people to want to register the program.  I put a lot of thought 
  1460. into this and have considered the many ways that authors achieve their goals. 
  1461. My solution was to disable the ability to read or write any formats other than 
  1462. the PC .WAV and the Sun .AU types, and disable the UNDO capibility. 
  1463. Additionally, the multi-channel capability of the program is disabled and the 
  1464. clipboard will not copy or cut anything less than the entire sample in memory. 
  1465.  
  1466.  
  1467. ΓòÉΓòÉΓòÉ 10. Registration ΓòÉΓòÉΓòÉ
  1468.  
  1469. I have three options which I can offer which seem to follow with common 
  1470. SHAREWARE practice.  I have looked in stores for something that provides 
  1471. anything similar and found that a commercial product for Windows with half the 
  1472. functions cost considerably more.  A registration form is provided and the 
  1473. following are the options for registration. 
  1474.  
  1475. 1.  $15.00 will get you a password that will enable all of the functions of the 
  1476. current version. 
  1477.  
  1478. 2.  $30.00 will get you a password that will enable all of the functions for 
  1479. all versions up to the next major release.  If you chose to register using 
  1480. option 1 first and then want to upgrade, I will give you a $10 credit and you 
  1481. can get option 2 for $20.00. 
  1482.  
  1483. 3.  $50.00 will get you a password that will enable all of the functions for 
  1484. all future versions.  If you have chosen to register using option 2 first, I 
  1485. will give you a $20 credit and you can get the lifetime registration for 
  1486. $30.00.  If you have registered with option 1 first, then I will give you $10 
  1487. credit and you can get the lifetime registration for $40.00. 
  1488.  
  1489. Note:  Please note.  These prices cover just the registration.  Shipping 
  1490.        charges for the disks through the Postal service are extra.  If you 
  1491.        order the program through the mail, add $3.00 to cover the media and 
  1492.        shipping costs. 
  1493.  
  1494.  The section describing the Author provides my email and US postal mail 
  1495. addresses. 
  1496.  
  1497. Now, what do you get when you register.  Well, you obviously get a password 
  1498. that will enable all functions of the program.  The functions that are disabled 
  1499. for unregistered users are: 
  1500.  
  1501. Formats   Only .AU and .WAV formats can be loaded and saved 
  1502. Editor    The Cut and Paste operations of the editor only work for the full 
  1503.           sample (i.e. will not work for ranges) 
  1504. Undo      The UNDO function is disabled 
  1505.  
  1506. In addition to that, I can provide limited technical support through regular 
  1507. phone service, email, or the US Postal service.  A number of people have 
  1508. contacted me to ask for special programs (e.g. programs that will just play any 
  1509. format without the overhead of the editor or a program that will just convert 
  1510. between formats).  These will be fairly easy to create using the existing 
  1511. objects of PMsndX.  If you are registered for PMsndX, these programs will 
  1512. automatically recognize the registration and work on your system. 
  1513.  
  1514. If and when you register, you will receive a password through whatever means 
  1515. that you prefer.  If you choose the postal service, you will receive it via 
  1516. disk along with the latest copy of the program (remember to include an 
  1517. additional $3.00 to cover the shipping and media).  If you choose to receive 
  1518. your registration through email, you will receive an email message that can be 
  1519. imported using the FILE button of the registration dialog.  Registrations will 
  1520. be sent after your form of payment has cleared. 
  1521.  
  1522. Although not currently provided, credit cards will eventually be accepted if 
  1523. the program makes enough profit to afford the service.  Please allow at least 
  1524. two weeks to receive your registration. 
  1525.  
  1526. Since PMsndX is provided as ShareWare, there is no provision for refunds.  In 
  1527. the event that you are dissatisified with the operation of PMsndX due to an 
  1528. error in loading or saving a format, contact me and I will fix the program if 
  1529. you can provide me with a copy of the file that is causing the problem. 
  1530.  
  1531.  
  1532. ΓòÉΓòÉΓòÉ 11. Entering Registration Info ΓòÉΓòÉΓòÉ
  1533.  
  1534. Once you receive your registration you have a couple of options for entering it 
  1535. into the program.  First, pull up either the Welcome or About dialog box from 
  1536. the system menu of PMsndX.  Press the REGISTER button to bring up the 
  1537. registration dialog box. 
  1538.  
  1539. You may enter the data directly into the entry fields or you may have the 
  1540. program scan a data file for your registration information. When entering data, 
  1541. enter it exactly as it is shown in the file or text for your registration.  The 
  1542. Name field must not have any additional spaces and it must be entered in exact 
  1543. case. The password is 16 characters long and will never contain any space 
  1544. characters.  It is case sensitive so be careful to get the case right. 
  1545. Passwords never contain the upper case letter O or the upper case letter I to 
  1546. avoid confusion with similar looking numbers. 
  1547.  
  1548. When PMsndX scans a file for the password information, it looks for the 
  1549. following keys: 
  1550.  
  1551. PMsndX Name: 
  1552. Through version: 
  1553. PMsndX Password: 
  1554.  
  1555. These lines can be anywhere in a file so there is no need to remove a mail 
  1556. header or extra information.  PMsndX will search the file for the specific text 
  1557. that it is looking for and extract it. 
  1558.  
  1559. The registration information is stored in the file called os2.ini.  This allows 
  1560. a copy of PMsndX to be run from a network and each machine can have it's own 
  1561. registration. This also allows the pmsndx.ini file to be copied form one 
  1562. machine to another without violating the licensing agreement.  Four items are 
  1563. stored in the os2.ini and total about 100 bytes.  Any .ini editor can be used 
  1564. to remove this information if the user wishes to delete PMsndX from the system. 
  1565.  
  1566. Note:  The information in the os2.ini file is only written when the program is 
  1567.        registered.  This avoids adding stuff to the os2.ini file unless the 
  1568.        user has chosen that the program is worth keeping. 
  1569.  
  1570.  
  1571. ΓòÉΓòÉΓòÉ 12. Tradeoffs ΓòÉΓòÉΓòÉ
  1572.  
  1573. When PMsndX is operating on a sample for the clipboard, playback, or the tools, 
  1574. it stores the entire sample in memory.  This has the advantage that the program 
  1575. can double buffer the sample for faster operation; but, it has the disadvantage 
  1576. that it can take up a tremendous amount of memory to hold large samples. 
  1577. PMsndX provides the user with a simple interface at the expense of resources on 
  1578. the host computer. 
  1579.  
  1580.  
  1581. ΓòÉΓòÉΓòÉ 13. Copyright ΓòÉΓòÉΓòÉ
  1582.  
  1583. The author makes NO WARRANTY or representation, either expressed or implied, 
  1584. with respect to PMsndX, its quality, accuracy, merchantability, or fitness for 
  1585. a particular purpose.  This software is provided "AS IS" and you, its user, 
  1586. assume the entire risk as to its quality and accuracy. 
  1587.  
  1588. This software is copyright (C) 1994, William S. Hiles.  All rights Reserved 
  1589. except as specified below. 
  1590.  
  1591. Permission is hereby granted to use, copy, and distribute this software (or 
  1592. portions thereof) for any purpose, without fee, subject to these conditions: 
  1593.  
  1594. (1) The seven files, pmsndx.exe, pmsndx.hlp, readme.txt, history.txt, 
  1595. license.txt, order.txt and file_id.diz must always be included during 
  1596. distribution. Any alterations to the files must be clearly documented.  No 
  1597. changes may be made to the About screen or any of the copyright information. 
  1598.  
  1599. (2) Permission for use of this software is granted only if the user accepts 
  1600. full responsibility for any undesirable consequences.  The author accepts NO 
  1601. LIABILITY for damages of any kind. 
  1602.  
  1603. (3) Permission is not granted for the use of the author's name or company name 
  1604. in advertising or publicity relating to this software or products derived from 
  1605. it. 
  1606.  
  1607. (4) Users are granted permission to collect fees for the distribution of 
  1608. PMsndX, (such as BBS's that have a membership fee or a downloading charge, or 
  1609. FTP sites that sell cdrom versions of their archives) but users are 
  1610. specifically prohibited from selling PMsndX as a product or bundling PMsndX 
  1611. with other products that are then sold. 
  1612.  
  1613. (5) Unless otherwise negotiated in writing with the Author, registration 
  1614. passwords for PMsndX may not be distributed in part or in whole.  Registrations 
  1615. are provided to individuals (or for site licensing as negotiated at time of 
  1616. registration) and may not be distributed or transferred. 
  1617.  
  1618.  
  1619. ΓòÉΓòÉΓòÉ 14. Acknowledgements ΓòÉΓòÉΓòÉ
  1620.  
  1621. Of course, IBM deserves a great deal of recognition for providing an operating 
  1622. system that is robust and stable and affordable enough for the general user. 
  1623. Many thanks to IBM for a fine job on creating OS/2. 
  1624.  
  1625. A special thanks is required for Linden deCarmo for his help in understanding 
  1626. the MMPM/2 portion of OS/2. 
  1627.  
  1628. Many thanks to the fine group of people who made suggestions for corrections 
  1629. and improvements in this program.  This team of very patient individuals from 
  1630. around the world comprised the Beta Test team.  Each and every one of them 
  1631. contributed in some way to the development of PMsndX.  Their names are listed 
  1632. below (in alphabetical order). 
  1633.  
  1634. David Charlap 
  1635. Christopher W. Curtis 
  1636. Linden deCarmo 
  1637. Terrance L. Eck 
  1638. Scott E. Garfinkle 
  1639. Jesse Gearhart 
  1640. Nicole Greiber 
  1641. Christopher Hemmer 
  1642. Rick Huebner 
  1643. Mark R. Johnson 
  1644. Dov Nelkin 
  1645. Lara Olofsson 
  1646. Steve Patrick 
  1647. Rupa Schomaker 
  1648. Kamal Shakker 
  1649. Brett Sherron-Ferrell 
  1650. Jimmy Shaw 
  1651. Kent Williams 
  1652.  
  1653. And of course, that special person and the kids who took the many hours of 
  1654. clicking away at the keyboard in stride.  They stuck by me throughout this 
  1655. entire thing, read all the documentation, tested the user interface, and 
  1656. actually began to understand how sound really works. 
  1657.  
  1658. Sounds like a Grammy award, huh. 
  1659.  
  1660.  
  1661. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1662.  
  1663. JoeView is an excellent program written by Joe Burkley.  If you ever need to 
  1664. view a graphics image of virtually any format, this is the program for you!!! 
  1665.  
  1666.  
  1667. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1668.  
  1669. The only exception to the operation of the control panel buttons is the HELP 
  1670. button.  Since the HELP is spread across all dialogs within the program, the 
  1671. help system is independent of the source of its invocation.  For this reason 
  1672. the HELP button is not animated. 
  1673.  
  1674.  
  1675. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1676.  
  1677. The .WAV format is actually defined as a RIFF file.  The header and data are 
  1678. very robust and there are extensions for proprietary keywords and formats. 
  1679. PMsndX only supports the standard PCM format and will not load proprietary 
  1680. formats.  You will receive a STYLE error if it contains an unsupported format. 
  1681.  
  1682.  
  1683. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1684.  
  1685. The bits in a word are stored such that the leftmost bit is stored first in the 
  1686. first byte and the rightmost bit is stored last in the last byte.  If a word is 
  1687. composed of 16 bits, the word would be written to a file starting with bit 16 
  1688. and ending in bit 0. 
  1689.  
  1690. The number 0x1234 (0001 0010 0011 0100) is actually stored as 0001 0010 0011 
  1691. 0100. 
  1692.  
  1693.  
  1694. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1695.  
  1696. The bits in a word are stored such that the leftmost bit is stored first in the 
  1697. last byte and the rightmost bit is stored last in the first byte.  If a word is 
  1698. composed of 16 bits, the word would be written to a file starting with bit 7 
  1699. and ending in bit 8. 
  1700.  
  1701. The number 0x1234 (0001 0010 0011 0100) is actually stored as 0011 0100 0001 
  1702. 0010. 
  1703.  
  1704.  
  1705. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1706.  
  1707. There are four methods of transitioning channels in a sample. These methods are 
  1708. used in various tools to provide a smooth transition from one end of a range to 
  1709. another.  The four types of transitions are listed in the following text. 
  1710.  
  1711. The first method is linear.  In this case, the increase or decrease in the 
  1712. volume is constant over time.  This can be defined by the mathematical 
  1713. equation: 
  1714.  
  1715. volume(t) = volume(t) * t/interval 
  1716.  
  1717. A second method for adjusting the volume is to use a geometric expression so 
  1718. that the sample transitions slowly in the beginning of the range and then 
  1719. changes quickly toward the end of the range. To transition a sample out slowly 
  1720. over time a form of the function: 
  1721.  
  1722. volume(t) = volume(t) * (1 - (t/interval))┬ñ 
  1723.  
  1724. The third method is exactly the reverse of the slow transition in which the 
  1725. transition moves very quickly in the beginning of the range and then slowly 
  1726. reaches the end of the range. The equation for this is as follows: 
  1727.  
  1728. volume(t) = volume(t) * (t/interval)┬ñ 
  1729.  
  1730. Finally a fourth method is to have the samples make an immediate transition or 
  1731. a step.  In this case, the transition is made immediately at the beginning of 
  1732. the range.