XEROX DSL 2 4 1 DSL 1 4 By: Henry Thompson (HThompson.pa@Xerox.com) DSL - a Digital Signal Laboratory for an 1109 with Busmaster and D/A - A/D options 0. Introduction These notes are not by any means complete documentation. Please mail HThompson.pa@xerox.arpa if you are interested in using this package so I can arrange for you to receive expanded documentation and package updates as and when they become available. The aim of DSL is to provide a digital signal laboratory for the acquisition, display, exploration and production of digitized signals via the Busmaster and an IBM PC equiped with a Data Translation DT2801-series board. See the documentation for the PCDAC Lispusers package for basic information about this configuration. The display and manipulation facilities are available on any machine running Interlisp-D - only record and playback require tteh special-purpose hardware. DSL operates in terms of an abstraction called a signal segment. It provides facilities for capturing analog data and saving its digitized representation in a signal segment, for collecting together signal segments into directories, for manipulating the display of this data, for marking out and saving sub-segments of existing segments, and for synthesizing from signal segments back to sound. It is intended to support further processing of signals, such as spectral analysis, within DSL, but this is not yet included. I. DSL Command Menu Loading DSL will give you a background menu command DSL which will create (or manifest) the DSL command window icon, which expands as needed for displaying information. Middle-bugging this window/icon will give you the DSL command menu, whose commands are briefly described below. All these commands have documentation strings in the menu, so if you need reminding just hold the button down long enough for the prompt to appear. Checkout Only relevant on an 1109 with all the relevant kit attached - runs a basic confidence check on the equipment. NoticeDir A tree-structured directory system is provided for keeping track of signal segments. This structure is rooted in one or more hash files. Use this command to activate an existing directory file. There is a sub-command for creating new, empty directory files. UpdateDir Offers a menu of currently activated directory files, and closes and re-opens the one selected, thereby bringing its external form into a consistent state. CloseDir Offers a menu of currently activated directory files, and closes the one selected and forgets about it and its contents. DirList Lists all the top-level signal segments known to the system, whether in an active directory file or free-floating. MakeSS Creates a new, empty signal segment. Prompts for a name, a file of speech data in, the default maximum amplitude to display, the sample rate to be used, the data format to be used (either Interlisp-D standard or DEC VAX/ILS) and the sample offset to be used (the default will take whatever is specified by the PCDAC board record q.v.). The naming structure for signal segments is rather like the UNIXTM directory system. A top-level segment whose local name is foo has /foo as its full name, and a sub-segment of that segment named word1 has /foo/word1 as its full name, and so on. Somewhat confusingly, in the prompts for making new (sub-)segments the local, un-prefixed name is to be given, e.g. foo, word1, whereas in identifying existing segments for display full names are to be given, e.g. /foo/word1. If the file of speech data is destined to be recorded into, it should be local, that is, on DSK, CORE or PSEUDO-DSK. ShowSS Display an existing signal segment. Prompts for a selection from either an active directory file, those segments known but not yet in any directory, or by name typed in. SInce only top-level segments will be presented for selection, if you want to go directly to a sub-segment, e.g. /foo/word1, use the {typein} option. SaveSS* Save a selected signal segment and all its sub-segments on its directory file, or on a selected or created directory file if it is currently homeless. A subcommand saves the given segment only without its sub-segments. DeleteSS* Delete a selected signal segment and all its sub-segments from its directory file. A subcommand deletes the given segment only without deleting its sub-segments. II. Signal Segment Command Menu Once you have a signal segment display window, left or middle-buttoning therein will produce a menu of segment-related commands. Again, all these commands have documentation strings in the menu, so if you need reminding just hold the button down long enough for the prompt to appear. Some of the structure of these commands may seem overly complex, as they are designed to cope with the anticipated eventual system where a given segment may be comprised of a number of aspects, such as spectral, phonemic, textual, acoustic, etc. At the moment only the Data aspect is supported, so some of this flexibility is of no great use. Display Will plot in the window the selected aspect - Data is the only possibility. Displays the time-amplitude waveform, the time origin (in seconds) of the left-hand edge of the display, the vertical scale endpoints and scale factor, and the time compression of the display, initially 1 (every point displayed). The time-amplitude display can be scrolled, and the compression changed by a middle-button menu. A compression of e.g. 10 means only every tenth point is plotted. Describe Brings up inspectors on the segment in various ways. AddAspect Add a new named aspecty SetProperty Give a value to a property of an aspect of the segment. To see what properties are relevant to the Data aspect, use the Display command on a segment. You can use this command and/or the Display inspector to e.g. change the filename of the speech data for a segment, say if you copy it from local disk where it was created to a file server. Save* Reproduces the SaveSS* command described above. Has sub-commands for Save, Delete* and Delete. Spawn Brings up a new display of a selected sub-segment. Either use the middle button to get a menu of all available sub-segments, or use the left button to grab the displayed mark at one end or the other of the desired sub-segment. Here and elsewhere you can scroll before selecting as long as you are careful to click in the scroll-bar first. Link Add another display of the same segment below the existing one(s). It will have an offset so that a double-length display is acheived, and will scroll in sympathy. Sub-commands Twin and Zoom exist which create new displays at no offset and with 10-to-1 reduction in compression respectively. This latter is especially helpful as it allows you to use an upper, compressed window for crude positioning and the lower, full scale window for fine tuning. Clip Create a new data file just for this (presumably sub-) segment. Has a sub-command for clipping the file of a sub-segment of this one. Play Play out the data through the D/A - requires one be connected. Has a sub-command for playing a selected sub-segment. Record Record into the segment from the A/D - requires one be connected. Prompts for an estimated duration - you are more likely to avoid losing data to {DSK} files if this is correct. Safest to record to {CORE} files - remember this when creating new segments. Has a sub-command to copy existing data from {CORE} to {DSK} and modify the segment. ToggleMarks Change the state of the mark display toggle - it starts out on, so marks are displayed. JumpTo Scroll the display to center the selected mark. Gives you a menu of all sub-segments - select with left button for the beginning of the sub-segment, middle button for the end. NewSS Create a new sub-segment of the displayed one. Prompts for a (local) name and beginning and end points. You can scroll before positioning first the beginning, then the end, and as long as you hold the button down the mark will track the mouse displaying name, position in seconds and amplitude at that point. Has a sub-command to add back in a previously removed named sub-segment. ChangeMark Allows you to move a previously placed mark by grabbing it with the left button or selecting from a middle-button menu. Once you've grabbed it you can scroll before starting to position it. Has sub-commands to allow you to move a whole sub-segment by moving either end, to delete a selected sub-segment, or to remove one from its parent without deleteing it. III. Example of use If you are not sure of the correctness of the hardware setup, use the PCDAC test facility to set levels etc. using the Scope command (q.v.). Create a new segment using the MakeSS command in the DSL command window - call it test and give {CORE}test.sd as the data file, 1000 as the display amplitude, 10K as the sample rate, DLion/MCmp as format and default as offset. Provide a reasonably large landscape rectangle for the display, perhaps about the shape and size of a 3x5 card on its side. Record 5-10 seconds of speech into it using the Record command. Note that you have to stop recording (with the STOP key) before you can do anything else. Also note that somewhat confusingly the only indication you have that it has started recording is the prompt which says to "Type STOP to stop"! Use the Play command to confirm that you got it. Try changing the compression by mid-but in the compression window - 10 looks good. Scroll around to see what you've got, and reshape the window if you need to. Mid-but Zoom (to the right of Link) to bring up a 10-to-1 expanded window below (this may require moving the whole ensemble - don't worry, they travel together). Using the compressed window, extract a word or phrase by mid-but New SS, giving it a name when prompted, e.g. the word you think it is, then respond to the cursor with "ss" in it by selecting first the left, then the right hand ends of the segment. As long as you hold the left-but down, you can move the cursor around - the display shows time at the bottom and value and name at the top. Now Mid-but Play SubSS (right of Play) and grab one end of the segment with the "ss" jaws cursor to hear the sub-segment. If you haven't got the boundaries right, then use ChangeMark in the lower, expanded window to drag a mark to a better position, then replay. If you have several marks close together, you may get a menu to arbitrate a selection - don't ever take the 'all' option - it's not implemented yet. Use the Save command to save this all away - you will be prompted to name a directory file to create. Remember that if you close this window and then use ShowSS to restart it, or if you come back to this segment in a later session via its directory entry, you must Display Data to see it. Also, if you intend using this segment again, you must take independent steps to preserve the data file. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC ) STARTINGPAGE# 1) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC )) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC )) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC )) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC )) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC )) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL)))))(È (È(ŠŠ8(ŠŠ8DÈÈ PAGEHEADING RUNNINGHEAD( MODERN MODERN MODERN MODERN MODERN €MODERNLOGOMODERN MODERN  HELVETICA   HRULE.GETFNMODERN   HRULE.GETFNMODERN   HRULE.GETFNMODERN   HRULE.GETFNMODERN  HRULE.GETFNMODERN -  T  ü ß 1 Ì  ¯  n      œ  y  s  ’ <  ;  “  X x     Ü   £  v  Ø  5      V   0     U  ³    ‡  v  W   X  ±     i  w  R      ‰ , 1 U M ¢ † z # f % *“ëzº