Quick viewing(Text Mode)

United States Patent (19) 11 Patent Number: 5,969,283 L00ney Et Al

United States Patent (19) 11 Patent Number: 5,969,283 L00ney Et Al

USOO5969283A United States Patent (19) 11 Patent Number: 5,969,283 L00ney et al. (45) Date of Patent: Oct. 19, 1999

54 ORGANIZER AND 5,510,573 4/1996 Cho et al...... 84/610 ENTERTAINMENT CENTER 5,616,876 4/1997 Cluts ...... 84/609 5,619,425 4/1997 Funahashi et al. ... 434/307 AX 75 Inventors: Brian M. Looney, Lexington, Mass.; 5,670.730 9/1997 Grewe et al...... 84/609 Dale R. McMullin Parker Colo.: 5,679,911 10/1997 Moriyama et al. ------84/601 Joseph Pasciuto, Bellingham; Edward T. Doyle, Westford, both of Mass. Primary Examiner Stanley J. Witkowski Attorney, Agent, or Firm-Cesari and McKenna LLP 73 Assignee: Looney Productions, LLC, Lexington, Mass. 57 ABSTRACT A music organizer and entertainment center provides a 21 Appl. No.: 09/098,843 center having a microprocessor, Sound card functions and 22 Filed: Jun. 17, 1998 high-volume data Storage and retrieval units for playing 9 back music according to a variety of predetermined catego 51 Int. Cl...... G09B 5700; G09B 15/04; ries. Music can be played back in random form or can be HO4L 9/00; G 10H 1/46 played back according to a particular pre-Selected order. The 52 U.S. Cl...... 84/609; 84/639; 84/478; categories are provided by Service provider who delivers 84/633; 380/19; 380/25; 380/49; 380/53; Selected titles and/or Songs to the end user. The Songs are 434/307 A typically loaded using a custom CD-ROM provided from the 58 Field of Search ...... 84/601, 602, 609-614, Service provider. The music is provided in data-compressed 84/633–640, 477 R, 478, DIG. 6; 434/307 R, form and is decompressed and processed through a Sound 307 A; 380/19-21, 23–25, 30, 49, 50, 53 card during playback. The categories can include a variety of parameterS Such as title, artists, date, Speed, dance 56) References Cited characteristics, Subjective energy level and music Style, Such as easy-listening, upbeat, etc. U.S. PATENT DOCUMENTS 5,486,645 1/1996 Suh et al...... 84/610 18 Claims, 27 Drawing Sheets

132 SCREEN FUNCTIONS RAM

------MEMORY 190 TELEVISION SCREEN - r ------r m rw m r - -r m ---

INPUT SPEECH 146------v/2 RECOGNITION

TELEVISION SOFTWARE SCAN VIDEO CARD E

CONVERTER DECOMPRESSION : X

SOFTWARE C 2------. N 92nh NTT,SONG; H TELEVISION INFORMATION A SCAN DATABASE N

CONVERTER MOAEC : G SPEECH E TELEVISION | COMPUTER WOCABULARYYYY - - - - new or a a run - we --- SCREEN MOAEC OUTPUT SEARCH AND PLAY : INTERFACE OUTPUT | k ... a as a as a m r -m me aw a . . . . U.S. Patent Oct. 19, 1999 Sheet 1 of 27 5,969,283

iiirii

S& XXXXd KXXX XXXXXXXXC XXXXXXXXXKX CXXXXXXXXXXXXXX &KXXXX XXXXXX XXXXXXXXXXXXXXXX KXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXX KXXX XXXXXXXXXXXXX KXX XXXXXXXXXXKXXC C KXXXXXXXXXXXXXXXXXXX) XXXXXXXXXXXXXXXXXX N: 25 AM 1200 XXXXXXXXXXXXXX KXXX

XXXXXXX XXXXXXXX 56 62 58 60 64

FIG. 1 U.S. Patent Oct. 19, 1999 Sheet 2 of 27 5,969,283

U.S. Patent Oct. 19, 1999 Sheet 4 of 27 5,969,283

(VS)VNEBHOS

008 Z09 709

ETLILÅ\/TdS|C] SEÅ 809|NHERHOSAWTc|SIC] (€S)0NBEHOS

NEERHOS

(ZS)ZNEBHOS 909

U.S. Patent 5,969,283

089 ESWEWIWOWIWGAWBLWGdn (VS)yNBEHOS |NOLLf18 SORHOOEY;SONOSMENHALIM

969

U.S. Patent Oct. 19, 1999 Sheet 10 Of 27 5,969,283

EWWNET|-

ETH-I(JECIVOTWOH-]\/IV/C)

U.S. Patent Oct. 19, 1999 Sheet 12 0f 27 5,969,283

Z69

U.S. Patent 5,969,283

TÕTTTTET

U.S. Patent Oct. 19, 1999 Sheet 14 of 27 5,969.283 (L)!!!!!

099 9G7 997 U.S. Patent Oct. 19, 1999 Sheet 15 0f 27 5,969,283

TÕTT?T U.S. Patent Oct. 19, 1999 Sheet 16 0f 27 5,969,283

0£7

TÕENT T?T

ElEEE|E|F|F|FEET) S

U.S. Patent Oct. 19, 1999 Sheet 17 Of 27 5,969,283

- Z19^019

8

- es

- - - -

- Z TEW

*•-

*•WÅ•* }•?•*

!

999

U.S. Patent 5,969,283

U.S. Patent 5,969,283

}}ENWOdOl U.S. Patent Oct. 19, 1999 Sheet 20 Of 27 5,969,283

U.S. Patent 5,969,283

CN CN CD

U.S. Patent 5,969,283

08

U.S. Patent 5,969,283

U.S. Patent 5,969,283

8

5,969.283 1 2 MUSIC ORGANIZER AND ahead of time by a Service provider. Music is played back in ENTERTAINMENT CENTER any desired order based upon those categories from an onboard database that can include a large number of Songs This application includes a Microfiche Appendix purSu or titles. ant to 37 CFR 1.96(c) that contains a computer program 5 The music organizer and entertainment center provides a listing of program commands in the commercially available center having a microprocessor, Sound card functions and high-volume data Storage and retrieval units for playing Visual Basic language for implementing various functions of back music according to a variety of predetermined catego one embodiment of the center of the present invention ries. Music can be played back in random form or can be described herein. The total number of microfiche and the played back according to a particular pre-Selected order. The total number of frames in the Microfiche Appendix are 2 and categories are provided by Service provider who delivers 103, respectively. A portion of the disclosure of this patent Selected titles and/or Songs to the end user. The Songs are document or patent disclosure contains material, which is typically loaded using a custom CD-ROM provided from the Subject to copyright protection. The copyright owner has no Service provider. The music is provided in data-compressed objection to the facsimile reproduction by anyone of the form and is decompressed and processed through a Sound patent document or the patent disclosure, as it appears in the 15 card during playback. The categories can include a variety of Patent and Trademark Office patent file or records, but parameterS Such as title, artists, date, Speed, dance otherwise reserves all copyright rights whatsoever. characteristics, energy level and music Style. FIELD OF THE INVENTION The user Selects between a variety of graphical user interface Screens that are arranged on a display. The display This invention relates to music recording and playback can comprise a touch Screen, or can include a variety of Systems, and more particularly to a System that enables cursor-moving functions for operating different display Storage and playback of a wide range of individual music “buttons' defined on the Screen. Alternatively voice recog Selections/Songs according to a pre-programmed list of nition Software can be used to provide a voice operation categories. 25 capability to the user. Likewise, voice Synthesis can be used to inform the user of various System operations. BACKGROUND OF THE INVENTION The interface can be organized according to various music The Storage of music on digital media has presented a categories that each appear as buttons. Within each button number of opportunities to miniaturize Storage devices for can be contained Sub-categories for further organization. All music, thus enabling larger amounts of music to be stored in categories are croSS indexed with categories that are pre one place, and to radically alter the presentation of this defined within various fields of the database, that stores the music. In addition to the actual music Sound data, new data data for each Song in an appropriate file having the various related to certain characteristics of the music can now be category flags appended thereto. Conventional database overlaid in the Storage media. This enables a listener to Software Such as AcceSSE) can be used in forming organize and playback music in a highly customized manner. 35 the database for compressed music data and categories. The It is no longer Strictly necessary to Store music in one format music is preferably compressed using MPEG3 and a stan (e.g., a single disc or record) and playback individual dard Sound card, typically having high-fidelity characteris Selections from this disc or record according to a strict ticS is used to playback the decompressed music. The music organization Scheme. Likewise, advances in data compres is Stored in a hard drive or other high-volume Storage Sion and Storage technology have enabled much larger 40 medium on the System in compressed form. Compression of quantities of digital data to be stored on magnetic disc and the music, as well as loading of appropriate category flags is optical media than previously. The “Red Book” format accomplished at the Service provider's facility based upon common to music compact discS is Somewhat inefficient due the users orders. Orders can be taken and filled to its slow Sample rate, and a much larger amount of data can electronically, via the Internet. Alternatively, oral orders can be compressed on a standard data optical disc (CD-ROM), 45 be made, that are filled by preparing a CD-ROM containing and decompressed and replayed using any number of readily the Selected Songs in compressed form. A master list can be available playback Software routines. contained on the database of the users System. This master In addition, most computers and data processing devices list can be used to Select the various Songs from the Service are now equipped with multimedia programs and advanced provider; the CD-ROM can include updates to the master list high-fidelity Sound. 50 that are loaded along with the Songs. The CD-ROM and/or individual songs can include a It is, therefore, an object of this invention to provide a Special code or identification that is keyed to the user's music organizer and entertainment center that takes advan tage of the latest advances in music data compression, System's code. In this manner only the user's System can Storage and data processing capabilities. It is a further object load the Songs on its hard drive. A docking mechanism can 55 be provided to all or part of the System to allow Songs to be of this invention to provide a user with the ability to fully moved to different playback devices. In this manner the user customize playback of music according to a variety of can have a library of Songs to playback in a variety of parameters including categories of music. The graphical portable and fixed base units including vehicles. presentation of playback and Storage controls should be easy One of the categories provided to Selections can be to use and learn, and should take advantage of color and 60 ratings. Ratings are typically provided ahead of time by the other visual aids. Service provider and are appended to the Overall database of categories. The user has, in the center, a facility for blocking SUMMARY OF THE INVENTION out any Songs from being listed or Searched that exceed a This invention overcomes the disadvantages of the prior predetermined rating category. A password is used to control art by providing a music organizer and entertainment center 65 the block-out function. This password is initially entered by that enables customized playback of music having a variety the user or is provided ahead of time by the service provider. of predetermined categories that are provided, typically, It must be entered in order to control the block-out function. 5,969.283 3 4 The center can also be provided with an auto exit func alternate embodiment of this invention utilizing a base unit tion. When an initial Screen is called, the user can indicate and docking principle; how many minutes he or she wishes the center to playback FIG. 20 is yet another alternate embodiment of a music Songs. When that number of minutes has elapsed, the center organizer and entertainment center utilizing a docking prin automatically shuts off. ciple for a main hard drive; It is contemplated that with appropriate data Storage FIGS. 21 and 22 are perspective views of yet another techniques and playback facilities, the center can organize exemplary music organizer and entertainment center for use Video and image data as well as music data. Particular video in mobile environments including, for example, the docking data compression and playback hardware and Software are element shown in FIG. 20; typically required for Such playback. FIG. 23 is a plan view of the graphical user interface BRIEF DESCRIPTION OF THE DRAWINGS screen of FIG. 12 detailing a favorite hits function; FIG. 24 is a plan view of the fourth graphical user The foregoing and other objects and advantages of the interface Screen showing a display of the Service provider's invention will become more clear with reference to the 15 available library; following detailed description, as illustrated by the drawings FIG. 25 is a plan view of the graphical user interface in which: Screen of FIG. 24 showing the use of a rating category; FIG. 1 is a perspective View of an exemplary music FIG. 26 is a plan view of the graphical user interface organizer and entertainment center according to an embodi screen of FIG. 24 showing a password entry window for ment of this invention; retrieving rated music, FIG. 2 is a perspective View of an exemplary music FIG. 27 is a plan view of a modified first graphical user organizer and entertainment center designed for portability interface Screen according to another embodiment of the according to an alternate embodiment of this invention; invention, including an auto-exit function; and FIG. 3 is a schematic block diagram of the hardware FIG. 28 is a plan view of the graphical user interface architecture of an exemplary music organizer and entertain 25 screen of FIG. 27 showing a shut-down time control win ment center, dow. FIG. 4 is a Schematic flow diagram illustrating a basic control data path for the music organizer and entertainment DETAILED DESCRIPTION OF ILLUSTRATIVE center of this invention; EMBODIMENTS FIG. 5 is a schematic flow diagram illustrating the use of A generalized embodiment of a music organizer and a graphical user interface Screen Selected according to the entertainment center 50 is is detailed in FIG. 1. For the flow diagram of FIG. 4; purposes of this description the term “center” will be used to FIG. 6 is a schematic flow diagram showing the selection of a graphical user interface Screen Selected according to the describe any of the music organizer and entertainment center flow diagram of FIG. 4; 35 Systems described herein. FIG. 7 is a schematic flow diagram showing the selection The center 50 is a stand-alone unit powered by household current using a conventional power cord 52. The chassis 54 of a graphical user interface Screen Selected according to the of the center includes at least two integral Speakers 56 to flow diagram of FIG. 4; provide Stereo Sound. A variety of horn-folding and acoustic FIG. 8 is a Schematic flow diagram of a graphical user 40 enhancement techniques can be used to increase the perfor interface Screen Selected according to the flow diagram of mance of the Speakers. Alternatively, Separable Speakers can FIG. 4; be used, placed at remote locations in a room. The front FIG. 9 is a schematic flow diagram of the playback panel 58 of the center can include a variety of knobs, proceSS using the graphical user interface Screens Selected Switches and displays. In this embodiment, a basic LCD according to the flow diagram in FIG. 4; 45 display 60 is shown and a retractable tray mechanism for FIG. 10 is a Schematic flow diagram showing the Saving receiving an optical data or music compact disc is also and loading of play lists using the music organizer and provided 62. This tray 62 is conventional according to this entertainment center according to this invention; embodiment, extending outwardly and retracting inwardly FIG. 11 is a plan view of a first graphical user interface based upon a Switch 64. The transport mechanism and Screen, 50 reading mechanism can be conventional. The center FIG. 12 is a plan view of a Second graphical user interface includes a flip-up type display 70 according to this embodi Screen, ment. The display is located on the top 72 of the center and FIG. 13 is a more-detailed plan view of the second is retractable into a recess 74. A large button 76 is provided graphical user interface Screen of FIG. 12; to support the display 70 in an upright position. This button 55 can be spring-loaded. When it is pushed downwardly, it FIG. 14 is a more-detailed plan View showing the Saving allows the display to be adjusted into different position. A of music play list Selections using the graphical user inter latch mechanism 78 can be provided to the display 70 and face Screen of FIG. 12; to the recess 74. The latch mechanism allows the display to FIG. 15 is a more-detailed plan showing the loading of a be locked into a close position, or, alternatively, released for music play list using the graphical user interface Screen of 60 deployment as shown. The display, itself, includes a Screen FIG. 12; 80 having any acceptable size, format and display technol FIG. 16 is a plan view of a third graphical user interface ogy. For example, a color active-matrix Screen, Such as that Screen, found in a laptop computer can be used. The pixel dimen FIG. 17 is a plan view of a forth graphical user interface Sions are generally comparable to those of a laptop computer Screen, 65 display. The display itself includes a graphically user inter FIGS. 18 and 19 are perspective views of an exemplary face with a Series of displayed graphical user interface music organizer and entertainment center according to an “buttons' 82 that can be actuated using a touch-Screen layer 5,969.283 S 6 applied to the display 80. The touch-screen hardware and Input/output exchange of data is provided through a hard controller Software are conventional and commercially drive storage 190, also of conventional design. As will be available. Alternatively, a mouse or other cursor-moving described further below, the hard drive storage interacts with mechanism, Such as a track ball, can be provided to the the CPU 130 using onboard software. This software includes chassis 54. a speech recognition Software block 200 a Sound decom With reference to FIG. 2, an alternate embodiment of a pression software block 210, a sound information database center 90 is detailed. This is center comprises a laptop 220 the center's proprietary speech vocabulary 230 and the arrangement having a base 92 and a foldable display Section center's search and play interface 240. 94. This center can comprise, in essence, a modified laptop A significant feature of the center, to be described in computer with all the basic components of a modern mul 0 greater detail below, is the organization of individual Songs timedia computer System. Certain com or Selections according to specific categories, that are deter ponents not Specifically required for the purposes of this mined ahead of time, on a partially Subjective basis, by the embodiment can be omitted. For example, a display 96 Service provider. These categories are carried in a database, having buttons 98 as described above can be provided. A 15 along with the raw digital music data, and allow the user to plurality of Speakers 100 can also be provided representing playback each of the individual Selections based upon spe base, midrange, tweeters, etc. Volume and Screen display cific categories in a random or ordered manner. The use of controls 102 can also be provided as well as a basic categories for Storage and playback empowers the user in an alphanumeric keyboard 104 of conventional design. A entirely new way. Songs can be chosen based upon a specific retracting compact disc tray and reader 106 can also be desire or mood that relates to categories Such as music age, provided. An onboard battery (not shown) provides power energy, Speed, style, dance, or rating. Experienced listeners while an AC/DC converter 108 recharges the unit based can enjoy new convenience in music playback. Newer upon household current provided by a power cord 110. Note listeners typically find their use of the center to be highly that automotive DC current can also be used. educational, as they quickly learn to associate certain types 25 of categories with Specific Selections, artists and Songs, and The generalized architecture of a center is further detailed in FIG. 3, complete with optional components. The “heart” can enjoy the benefit of a full display of the Song data via the of the center is its central processing unit or CPU 130. The center's Screen. CPU, in a preferred embodiment comprises a Pentium(R II With reference to the above-described architecture, the microprocessor having an operating Speed of 266 MHz or procedure by which individual Songs become categorized greater available from Intel. The architecture of this micro and eventually made available for a user to playback accord processor is well-known. It is adapted to accept inputs from ing to particular categories will be described in Summary: a variety of hardware components. These hardware compo 1. Musical Source material is first purchased or otherwise nents are, themselves, commercially available and can be acquired by the Service provider that Services the music interfaced with the CPU 130 by those of ordinary skill. In 35 organizer and entertainment center of this invention. This Summary, the components involved in a complete center will music is typically obtained in Standard Red Book compact now be described. disc format on individual music albums and Singles. A random access memory (RAM) 132 is provided to 2. A Standard compact disc player, DAT or other audio support the CPU 130. This RAM typically provides twenty playback medium is used by the Service provider in 40 conjunction with a main computer having a large data megabytes of Storage or greater. A keyboard and/or cursor base. A hard drive rated at five gigabytes or larger is used moving mouse interface is also provided. The keyboard 134 in conjunction with the database. can be omitted in certain embodiments where a touch-Screen 3. Music is played by the playback device into a data is used for all onboard functions. For example, the touch compression card commercially available from, for Screen, shown as a touch-Screen interface 136, and used in 45 example, Dialog FourTM. This data compression card conjunction with the monitor Screen 140, can include a compresses the music into the commercially available touch-keyboard thereon for entering alphanumeric charac MPEG3 format. A CPU, similar to that shown in FIG. 3 ters. Where a monitor 140 is used, a video driver card 142 stores the music in the hard drive of the service provider of conventional design is provided. A conventional televi in compressed form. Individual Songs are each given their 50 own file identifier for later processing. Sion can also be utilized. Where a television Screen is used 4. Compressed music is Subsequently catalogued using a for displaying data, a Scan converter 146 can be provided. conventional database program Such as Microsoft The scan converter 146 can be used for output 150 to the Access(R 2.0 in this embodiment. The following television Screen and/or input 152 from, for example, a categories, among others can be used in conjunction with television remote control 154. In this manner both input and 55 the database program to catalog each individual musical output via a television and/or computer monitor can be Selection-Song title, artist, date, main music category, accomplished. A microphone 160 and appropriate Voice Sub-main music category, Special music category, Sub recognition card 162 can also be provided in conjunction music category, music style, dance type, music Speed and with the CPU. Additionally, a CD-ROM, with appropriate a subjective music “energy level” determined by the 60 Service provider. These categories are used Subsequently driver card 170 can also be provided. For output, a sound by the center's operating System as described below. All card, available from a variety of commercial Sources Such as categories are Stored in the Service provider's hard drive the Soundblaster(R) driver 180 can be employed and appro for Subsequent retrieval. priate amplifiers and speakers 182 can be provided. The 5. A master list of available music, in the form of individual amplifiers and Speakers are conventional and receive inputs 65 Selections or Songs, is complied by the Service provider. from the Sound card in the form, typically, of analog audio Individual customers or Subscribers are Solicited to Select Signals. Songs or groups of Songs or Selections from a Service 5,969.283 7 8 provider. According to a preferred embodiment, the 9. If downloading of Song data is completed Successfully, Selected Songs are copied from the Service provider hard then the data becomes resident on the center's disc drive drive to a writable data compact disc in MPEG3 com or other high-volume random acceSS memory Storage pressed format. The center operating System Software and unit. New Songs are appended to a list that contains any Access(R 2.0 database program available from Microsoft, previous Songs. This information is displayed in a manner Inc. of Redmond, Wash. can also be loaded unto this to be described further below. compact disc when the playback device does not already 10. The CD-ROM is subsequently removed from the center contain these Software packages. and Stored for backup purposes. At this time, the user can The package of data compressed Songs and other Software Select various Songs downloaded in the previous Steps if applicable, is tagged with a distinct Serial number or other using various graphical user interface and/or voice com identifier and/or format that matches a pre-loaded Serial mands to be described further below. 11. Upon playback, Song data is decompressed from its number or format in the subscriber's particular center. This stored format using MPEG3 data compression. The Serial number or format has been pre-loaded in the center decompressed Song data is then played in a Standard from Software made available by the service provider. For “wave” format using, for example, Winplay 30R available example, a commercially private or public key encryption 15 from MicroSoft, or another data-to-Sound Software pro algorithm can be provided to the subscriber. The data in the cedure. It is contemplated that the Software procedure be compact disc includes an appropriate encryption key that compatible with an appropriate Sound card, as described matches one already present in the center. Compressed data above. Speakers and an amplifier are used to deliver can be decrypted and “unlock' based upon a match between music to the user, as also described above. the key provided by the service provider and the key Reference will now be made to the flow diagrams illus provided by the center. In any case, a technique for locking trated in FIGS. 4-10, and corresponding graphical user information So that only a desired center can read the interface display Screen illustrations will also be referenced. information and, hence, play the Songs, is provided. This These display screens are shown in FIGS. 11-17. prevents copyright infringement and unauthorized playback 25 Referring first to FIG. 4, the user initializes the program of Songs by other units that have not paid appropriate license in a program Start Step 300. A title Screen, not shown, is fees for receiving the music. displayed 302. Any acceptable title screen can be used. The 6. AS noted above, a formatted, data-compressed disc is title Screen prompts the user to enter the program in Step 304. provided to the Subscriber via a physical transfer of the If the user does not desire to enter the program, it ends in disc. In other words, the disc is mailed or otherwise step 306. If the user enters the program, then Screen1 is delivered to the Subscriber. It should be noted that, while an optical disc is the preferred form of data transfer entered in step 308. Screen1 is shown in the display 310 in according to an embodiment of this invention, another FIG. 11. Note that the various screens, entitled Screen1, form of Storage media Such as tape, circuit chips, remov Screen2, Screen3 and Screen4 are denoted respectively by able hard drive, or any other acceptable high-volume data buttons S1 (312), S2 (314), S3 (316) and S4 (318). These Storage can be used to transfer Song data. Likewise, the 35 buttons appear on the bottom of all display Screens used formatted compressed data can be transferred via a radio herein So that a user can quickly Select between different or telephone network link, assuming that appropriately control Screens. The blank control fields are displayed in wide bandwidths is available to enable the transfer to step 320. Based upon these fields, a user selects between occur in a Sufficiently short period of time. All these Screen1 controls in step 322, Screen2 controls in step 324, techniques of transferring formatted, compressed, cus 40 Screen3 controls in step 326 and Screen4 controls in step tomized Song data are expressly contemplated according 328. to this invention. It is desired primarily that the data Note that the Screen2 display 330 is shown in FIGS. 12, include various categories as described above with refer 13, 14 and 15. Likewise, Screen3 displays 332 are shown in ence to Step 4. FIG. 16 and Screen4 displays 336 are shown in FIG. 17. When the subscriber receives the customized song data on 45 These screen displays will be described further below. the disc or other medium, the customer installs the disc in his With reference to Screen1, as shown in FIG. 11, various or her center by following conventional installation and media channels for playing back music can be established. instructions provided with the disc. AS noted, the center In this example, Channel 1 340 and Channel2 342 are either includes well known CD-ROM installer routines, such provided. Each channel includes an individual Set of Speed as those found in popular Windows( operating System avail 50 and playback buttons 344 having conventional control Sym able from MicroSoft or, alternatively, Specialized installation bols allowing, for example, play, Stop, pause, forward and Software is included with the disc transferred from the reverse. Additional controls 346 can also be provided for the Service provider. All data on the disc is typically transferred channels and can be used, for example, for Specialized into the high-volume hard drive or other Storage media functions Such as mixing of Songs and overriding of Songs provided with the center. The Song data, therefore, resides in 55 using, for example, external microphone inputs. Note that, in the center formatted in the Access(E 2.0 database as particular, a fade control 348 is provided. described above. The categories appended to each Song as FIG. 5 details user operations utilizing Screen2 after part of the database program also reside in the centers hard branching from step 350. Screen2 is shown generally in FIG. drive at this time. 12, as noted above. By branching to the Searching Step 352, 7. The center's Software loads data related to individual song 60 Selections and categories into appropriate database loca a user can Search the main categories of music recognized by tions. the system. The begin search button 354 (FIG. 12) controls 8. The center polls data in the downloaded disc to determine the Searching of main categories. AS noted, a variety of whether the appropriate identification code and/or Serial categories Such as artists, as shown in FIG. 12, can be number, matching that of the center is present. If not, then 65 Searched. The Selection of an appropriate category is noted the downloading proceSS in terminated, and the user is in block 358. Various text can be entered using a keyboard advised to contact the Service provider. 360 (FIG. 12) according to the block 362. The particular 5,969.283 10 element being Searched as shown in the window 364 causes A Set of buttons of particular interest are used to organize the System program to access a main Song database entitled the search list 451 so that the song titles therein are displayed My Data in block 364. The request can be canceled in block in a desired manner. The organize button 453 allows dis 370, which causes a branching back to the initial screen plays to be refined. In particular, by pressing either ascend block 350. The button 372 enables cancellation. ing or descending buttons 455 and 457, respectively, the If no cancellation occurs, then block 374 determines Search results can be displayed in corresponding order. whether the requested category and text within the category Another button of interest as detailed in FIG. 13 is the exists. In addition, categories and information can be char “dance mix' button 452. This button is a default selection acterized according to a variety of colors, as displayed in the button that Selects and Searches for dance music having a partial window of categories 380 and the more complete particular Speed. In a preferred embodiment, this function window, as shown in FIG. 13 as window 382. If the Specifically Selects, at random, from the My Data database particular category and/or text does not exists, then block three dance category Songs with a fast Speed category 388 notes its absence and Suggests ordering the desired followed by two dance category Songs having a slow speed music. This block then branches to the cancellation block category. These Songs, the order three fast and then two slow 370. Conversely, if the particular categories and/or text 15 are placed in the music play list for playback at the earliest exists, then the appropriately organized Songs are displayed available time. according to block 390 in the window 392. FIG. 15 shows a file listing window 460 having a four Screen2 acts generally, as a main control Screen for separate play list files 462 that can be selected. The selected Searching and playing any Selections within the center. The play list file 462 can be transferred to the main music play illustrated window 382 in FIG. 13 shows some of the list window 430 by pressing the open button 464 within the possible categories that can be organized by the Service window 460. provider and cross-referenced within the database with Before discussing the System procedure further, it is noted respect to each individual Selection. “Other category' but that pressing the category button as detailed in Step 410 tons 400 are provided for future expansion. If one of the (FIG. 5) twice (e.g., “double click”) as shown in block 470, main category buttons in the window 382 is Selected, as 25 causes the particular category button to display Screen3480 shown in block 410, then the routine determines whether a (FIG. 16). The display of Screen3 is detailed in block 472. Single or double “click” of the user interface has occurred. Screen3 provides a window 482 with Subcategories that fall If a Single click occurs as shown in block 412, then the under a particular music category. The Sub-categories are System prompts the user to Select a music "speed” in block listed as individual buttons 484. These categories can com 414 according to screen button 416. The user is then prise a variety of parameterS Such as time frame, Special prompted to input an appropriate time duration within which occasions, type of music, etc. In addition, the basic catego music will be played in block 418 based upon button 420. ries Such as speed or “energy” can be included as Sub Given these parameters, the System accesses the database in categories under a particular category. Step 422 to determine music matching, the Selected criteria 35 Further reference is made to FIG. 6. The controls for for time and category. Songs are entered in a play list Screens 2 and 3 will be described first, in further detail. according to the categories based upon blockS 424, 426 and When a particular Song in a play list is Selected by, for 428. In particular, according to block 428, the Songs can be example, highlighting a Song with the cursor as detailed in randomized after the time and category criteria have been block 500, the song can be played immediately by pushing met to provide a “disc-jockey type playback which is 40 the Now button 502 as detailed generally in block 504. Any somewhat arbitrary. The play list for the given time is current song being played is interrupted in block 506 and the detailed in window 430. The number of Songs in the play list Selected Song is played instead. Subsequently, the play list currently remaining as shown in window 432 and the time begins playing songs in the prior order in block 508. Conversely, if the sort command is given in block 510, then remaining is shown in window 434. Time values are based 45 Songs are Sorted in ascending or descending order according upon pre-entered time values provided by the Service pro to a Selected category in block 512. A Song in the Search list vider in the original database. Like other criteria, time of a is selected in block 514. The song selected can be played Song can be determined as an individual criteria. Conversely, according to the Now block 504. Alternatively, the pick the time of Song can be measured based upon the size of the block 516 can be used to put the searched song at the end of data file and upon other criteria well known to those of 50 a given play list as shown in block 518. If the play list song ordinary skill. is "clicked' twice as shown in block 519 then the search list At any time, a portion of the current search list 451 is Song Selected is placed to the top of the play list in block displayed, showing the various depicted categories Such as 520. In addition, a listing of favorite hits/selections can be title, artist, publication date, music category music Style, requested by the user in block 524. This causes the search dance type, music Speed and energy in row-and-column 55 list to be filled that have been pre-selected in block 526 and form. The Search list represents the Selections located by a song from the search list is selected in block 514. Block pressing one or more category buttons. Songs from the 514 then branches to the now block 504 and continues as search list can be appended to the end of the play list 430 by, described. for example clicking on their entry in the search list 451. Referring again to block 520, if a Song is placed at the top Once a Selected play list is created, the user has the option 60 of the play list the song is updated in Screen1 in block 530. to load and/or save the play list using respective buttons 438 The song is then played based upon the play block 532. If and 440. If the save button 440 is pressed, then a confirma the mix up command is entered by the user in block 540, tion window 450 is displayed as shown in FIG. 14. This then songs in the play list are randomly mixed in block 542 particular play list is assigned a name and can be replayed 65 and Screen1 is updated in block 530. As described above, the at any give time by calling up the particular play list from a play command 532 causes Songs to be played in the play list CU. order Selected in block 508. 5,969.283 11 12 The selection of Screen3, shown in block 560, then the using known techniques in block 614. If a pause, Stop or System determines whether a main category was Selected in mixed command is received in block 616 then these Steps, block 562. If not, then an error message is displayed in block is described above, are carried out. In particular, a pause or 564 and the original screen is re-displayed in block 566. If Stop ends playing of the Song either temporarily (e.g., until a main category is Selected in block 562, then the System accesses the MyData database of Songs and categories in pause is pressed again) or permanently, in case of a stop block 568. Any appropriate Sub-categories are listed based command. Volume adjustment and other equalizer values can be upon that particular main category in block 570. Sub provided according to block 618 and 620. These act upon the categories are Sorted and displayed on appropriate default playback of a Song using known techniques. When the sub-category buttons 572 shown in the window 482 in FIG. particular Song has ended in blockS 622 the System checks 16. The user can Select appropriate Sub-category buttons by whether it has reached the end of the current play list in “clicking” on them as shown in block 574. The MyData block 624 if not, media channels are Switched in block 626 database is accessed in block 576 based upon the selected and the next song on the play list is located in block 628. Sub-categories and all Songs that match the main and Sub This song information is transferred back to block 604 and category selections are listed in block 578. This listing is 15 the name of that new song is located in block 606. The shown in the search window 332. Note that the search process continues as described above. window 332 displayS Various category information Such as If the end of the play list is reached in block 624, then title, artist, date, music category, music is style, dance type, Screen1 controls are cleared in block 630. The system awaits music Speed and energy. Of course, this can also be included further instructions at this time. as desired by the Service provider who originally formats FIG. 10 describes the saving and loading of play list in Such categories. In addition, custom category information more detail. If a Save command is initiated by the user in can be included based upon the user's desires. block 650, then all song data and associated colored data for FIG. 8 relates to the selection of Screen4 as shown in the display from the current play list is collected 652. The block 550. Screen4 is also illustrated generally as the display file save window is placed on the screen in block 654. The 336 in FIG. 17. The display is organized to display all songs 25 user can Select an appropriate file name for Saving the within the user's library and the broader service provider's particular play list file in block 656. Again, the display for library. The display 336 includes columns showing data test this procedure is detailed in FIG. 14 status 552, Song identification number 554, disc number If a load command is entered by a user as shown in block (e.g., the disc on the Service provider on which the Song 660, then the file load window is displayed in block 662. The resides 556) the catalog song number 558, the title 590, the display for this window in shown in FIG. 15. artist 592, the music style 594, the dance type, if any, 596, Song and color data are read from the Selected file in the speed 598, the time in seconds 570, the energy level, if block 664 and the current play list is updated and/or replaced any, 572 and any other appropriate category. with all song in color data from the loaded file in block 666. It is Specifically noted that category information is pro The entire library of the service provider can be provided 35 in this format to the users, So that the user can Select the Vided by the Service provider appended to each Song in the Songs that it wishes to order at later times. A Series of buttons database. The accessing of Songs having Such data appended can be provided within Screen4. The first button, Button1, thereto occurs according to applicant's unique graphical user shown in block 580 instructs the user to insert an appropriate interface based upon provider categories. The association of CD-ROM containing music and category data in block 582. 40 various database identifiers to each Song is implemented The user is then prompted to use Button2, shown in block using conventional database programs Such as the above 584. This button lists all compressed data files based on the described Microsoft Access(E 2.0. The association of cat particular disc and directory selected in block 586. The user egory objects to Song data should be conventional to those is then prompted by Button3 in block 588. Activating this of ordinary skill. The storage of MPEG3 data compressed button causes the copying of all compressed files from the 45 disc over to the directory if these files are not already present Song files is accomplished in the same manner as other data in block 560. The user is then prompted by Button4 in block stored as files in a database. The Microfiche Appendix 562. Activating this button accesses the main database in included in the subject application pursuant to 37 CFR block 564. Songs on the CD-ROM are compared to the data 1.96(c) contains a listing of program commands in the records within the center in block 566. The MyData database 50 commercially available Visual Basic language for imple is updated with new songs in block 567. At any time, the menting various functions of the center according to this canceled button can be pressed as shown in block 598, embodiment. which returns to the Button1 prompt of block 580. Using the hardware and Software elements described Reference is now made to FIG. 9. If a Play (see button above, FIGS. 18 and 19 detail a docking mechanism in 601, FIG. 14) or Now button on the screen is selected in 55 which music is Stored on a hard drive or other electronic block 600, Screen1 is displayed showing the various play medium in a main data handling unit 700 with a flip-up back controls in block 602. The MyData database is display 702 and associated keyboard 704 that can include accessed in block 604. The file MID that matches the playback controls 706 (e.g., play, Stop, pause, forward and selected song is searched for by the system in block 606. The reverse). The unit 700 can be “docked” to a base unit 708 60 that includes a connector 710 for interfacing with an asso file is loaded from the disc in block 608. Again, this file is ciated connector in the unit 700. A cable 712 can intercon retrieved from the disc in MPEG3 data compressed format. nect the base unit 708 with appropriate speakers or ampli A particular color for the Song, which may correspond to a fiers. The unit 700, hence, can include the music data for the given set of categories, as well as a title and other data are System and can be moved from location to location So that provided to one of the media channels in Screen1 in block 65 there is no need to purchase additional playback units to play 610. The song begins playing in block 612 as soon as the music provided from the Service provider with the particular data is ready. A time countdown for the Song is initiated code. 5,969.283 13 14 FIG. 20 illustrates and alternate embodiment for docking by a user on the current play list 797 can be flagged by unit in which a base unit 730 includes speakers 732, a power “clicking” on the individual titles. A colored flag 798 coupling 734, a flip-up display 736 and a removable memory appears next to flagged Songs. Unflagging can involve a storage device, such as a compact hard drive 738. The hard Second click on a flagged Song or a separate delete button on drive is shown removed in phantom 740. A connector 742 the Screen. The flagged Songs 799A appear as top Selections can interface with an associated connector (shown in 799B on the current search music categories list 803. By phantom) 744 on the base unit. The hard drive, itself, it clicking on the create favorite hits button 796, these favor moved from base unit to base unit So that, again, there is ites can be saved, So that they always appear at the top of the need to purchase music only once, and that music is iden search categories list 803. In this manner, they can be tified to a particular hard drive. The base unit can also retrieved to place on the play list within Seconds. Again, any include a CD-ROM shelf 748 for reading music during the song on the search categories list 803 can be transferred to original loading process. In certain remote units, the the play list for playback in a desired order (typically CD-ROM may be omitted, since all music is contained on first-in-first-out) by simply clicking or-double clicking on the hard drive and loading of music is accomplished with the 15 the Specific Search list Song entry. base unit 730. A mother board 750 controls the operations of FIGS. 24, 25 and 26 detail an alternate view of Screen4, the unit. as discussed above. The display 800 includes an overall FIGS. 21 and 22 illustrate a mobile playback system listing of the Selections available from the Service provider. according to this invention. The above described docking A list of over one hundred thousand titles can be included in units in FIGS. 19 and 20 can be utilized in conjunction with the MyData database, as selections are delivered from the this unit. In other words, an entire hard drive or unit can be Service provider. The category fields described above are interfaced with an onboard automotive base unit to enable provided for each title 801-namely, artist 802, date of music in the hard drive or docking unit to be played within publication 804, specific music category 806 (e.g. “rock,” a car or other vehicle. In this embodiment, the automotive 25 “jazz,” “alternative,” etc.), music style 808, dance type 810, interior 760 is provided with a main audio system 762. music speed 812 and energy 814. In addition, an ownership Various cords 764 interconnect the main System to a contact column 816 is provided that indicates whether the music display unit 766 that, in this embodiment, is located on the data accompanying the title is present in the users own sun visor 768 where the driver 770 can easily access it. It is database. If so, the entry states “yes,” otherwise a “no” contemplated that the display unit can be located at any indication is provided to the column 816 next to the par acceptable location. Alternatively, the unit can be entirely ticular title. In addition a rating column 818 is now is operated by voice commands, with no display unit, and provided with an appropriate entry field in the database. In instead, a voice response System implementing conventional this example Songs that the Service provider may not think voice-generating software. With further reference to FIG. 35 are Suitable for certain listeners due to content are appended 22, the Sun visor 768 is lowered to reveal the display 766 with a rating, as appropriate. In this example, all Songs not having a screen 780. The wires 764 interconnect the display rates are acceptable to all. A specific rating letter Such as “G” with a power source 782, that can be part of the main audio can also be placed next to Such Songs in the column 818. systems 784 or can be separate. The wires also connect the Higher rated Songs can include the rating letter PG, or display 780 with the main audio system 784, or alternatively, 40 Stronger rating letter R, on their particular title row. The can be routed directly to the vehicle's onboard database depicted ratings are exemplary only. The actual Song titles reader 786. The database reader is any microprocessor-based shown should not be taken to have these actual ratings. The System as described above. It can be exclusively a disc drive music Selection list of Screen2 would also display ratings or other high-volume data reader or can include many of the 45 when they are used. Note that a variety of levels of rating processing functions performed by the center. Alternatively and rating criteria can be used. In general Such ratings are the processor functions can be performed within the display defined and appended to individual Songs be the Service 766. The display 766 includes a microphone 788 for voice provider. activation. AS described above, conventional voice FIG. 25 illustrates the activation of Screen4's rating recognition Software can be used in conjunction with the 50 button 820. This button calls a window 822 that prompts the center. A hand grip 790 is provided for moving the display blocking of R and/or PG-rated Songs. In this manner, higher to an acceptable position. The database reader interfaces rated Song titles cannot be viewed or played. This function with an onboard docking unit or disc 792, as described is enable and disabled using a password that is entered after above. This can be removed when not in use for placement 55 striking the password button 824 in the window 822. This in another database reader, Such as the base unit 730 shown button calls a password-entry window 826, detailed in FIG. in FIG. 20. Music is routed from the database reader 786 or 26. Once an initial password is entered, it must be reentered the display 766 depending upon where the microprocessor to change the rating blocking function or to change the are located, back to the main audio unit 784 where ampli password itself. 60 FIGS. 27 and 28, finally, illustrate an auto-exit option fication occurs. The music is played back on appropriate appended to the display 850 of Screen1 in this embodiment. speakers 794. An auto-exit button 852 can be clicked to call an automatic Reference is now made to additional features that can be shut-down window 854. By clicking a “yes” button 856 in implemented according to certain embodiments of the this window, the center calls another window (FIG.28) with invention. FIG. 23 details a favorite hits function that can be 65 an auto-shutdown keyboard 860. The window 860 includes applied to Screen2. The display 795 includes a favorite hits a numeric keyboard 862 for entering shutdown time in category creation button 796. Favorite hits, when identified minutes. A time box 864 indicates the selected time. Press 5,969.283 15 16 ing the “OK” button 866 causes the shutdown time to be disc message, prompting the user to load-in the optical disc acted upon. Playback will occur until the time has been containing the desired date. Of course, this is only one elapsed. At any time, the cancel button 870 can be activated example of a System that handles Video data using the to cause the shutdown routine to cease and/or the window underlying interface and organizational Structure of the 860 to be removed from Screen1. present invention. The architecture and database Storage techniques, as well Note that the graphical user interface herein has been as the various graphical user interface functions described described in terms of its primary functions. Any buttons on above can be readily adapted to handle images and full the display Screens detailed herein not expressly described motion video as well. The primary addition to the above can be assumed to perform functions that are described embodiments would be a Screen capable of play Straightforward, and particularly noted on the buttons ing back Video of appropriate Size interconnected to the themselves, such as “OK” and “Cancel.” All functions not center's processor by an appropriate Video driver card that is specifically described should be clear to those of ordinary typically commercially available. In addition, appropriate skill. data compression/decompression routines applicable to full 15 The foregoing has been a detailed description of a pre motion video and/or images is desirable. In Substance, the ferred embodiment of the invention. Various modifications data for Video packages is Stored with various categories and additions can be made without departing from the Spirit Similar to or the same as those applicable to music described and Scope of this invention. For example, a variety of colors above. The graphical user interface is organized identically, can be used for different keys and buttons, categories can be as is control and manipulation of playback. In the case of identified based on certain colors. Voice recognition and music Videos, most or all of the same categories as music can Voice-playback functions can be provided to any of the be used, with the addition, perhaps of certain Video-Specific embodiments described herein. Various interface devices categories. can be used, Such as touch Screens, light pens and alike. In A Sufficiently large hard-drive can be used to Store a large 25 addition, the database, data compression and playback Sys database of movies and/or other video data. Where storage tems and Software described herein can be substituted for is problematic, one example contemplates that the center's any other acceptable System or Software. The particular processor can interface with a commercially available, layout the graphical displays and content of various buttons multi-disc CD-ROM or DVD (Digital Versatile/Video Disc) in the display can also be varied. Again, it is expressly drive. The drive is interfaced to the processor using com contemplated that particular category buttons on Screen2 are mercially available interface hardware. The raw video data displayed in different colors, and that Specific colors can be can be retrieved as needed from the play-ready optical discs used to highlight certain windows or underlying Selections according to a request by the user entered via the MyData in a display, as well as the status of various functions. database which carries the underlying video category data 35 Accordingly, this description is meant to be taken only by asSociated with each Video title in its list. Any titles not way of example and not to otherwise limit the Scope of the currently held in the optical unit, can trigger a load-optical invention. 5,969.283 17

APPENDIX

MOAEC CODE Updated 6/2/98 Author: Dale McMullin al Media: Microsoft Visual Basic V.5.0 Total Lines: 5,245 *Recorder.frn Sub UpdateList() Dim i As Integer, final As Integer Dim color AS Long Dim songdata(9) As Variant On Error GoTo Stoploop MusicListing. Rows Screen2. Datal. DatabaseName = App. Path & "\music.mdb." Screen2. Data2. DatabaseName - App. Path & "\music.mdb." Screen2. Data3.DatabaseName = App. Path & "mydata.mdb." Screen2. Data3. RecordSource = "LP Complete Music Guide" Screen2 Data Refresh Screen2. Data2...Refresh Screen2. Datal. Recordset. MoveLast Screen2. Datal Recordset.MoveFirst - final = Screen2. Datal. Recordset. RecordCount oopTop:Do While Not Screen2 Data). Recordset.EOF And StoplistingList = False DoEvents If PauseList = True Then New PauseStartTime = Timer() - TimeSoFar MousePointer = 1 Screen2 DataS. RecordSource = "LP Complete Music Guide" Screen. Data Recordset.MoveNext i = Screen2 Data. Recordset. AbsolutePosition lfi < 0 Or Stoplistinglist = True Then Exit Do songdata () = Screen2. Datal Recordset. Fields("Title") Screen. DataS. Refresh Screen. Data3 Recordset. FindFirst "Title = " & songdata () & " If Screen. Data3 Recordset. NoMatch Then song data (9) it "' lf Display Library = False Then GoTo LoopTop Else songdata (9) = "yes" End If songdata(2) = Screen2. Data). Recordset. Fields("artist") songdata(3) = Screen2. Datal Recordset. Fields("date") songdata(4) = Screen2. Datal Recordset. Fields("mainl") songdata(5) = Screen2. Datal. Recordset. Fields("Mstyle") songdata(6) = Screen2 Datal. Recordset. Fields("Dtype") songdata(7) = Screen2.Data). Recordset. Fields("Speed") songdata.(8) = Screen Data Recordset. Fields("Energy") Screen2. Data2...RecordSource = "Music Colors" Screen2. Data2...Refresh Screen2. Data2...Recordset. Find First "Main l = " & songdata(4) & " color = Val(Screen2. Data2...Recordset. Fields("colorlD")) For X = 4. To 8 DoEvents Screen2 Data.RecordSource = X MOAEC MASTER CODE (page 1) Sunspot Software and Graphics 303-305-7637 5,969.283 19 20

Screen2. Data2...Refresh Screen2. Data2...Recordset. FindFirst "tag = "& songdata(X) & " songdata(X) = Screen2. Data2. Recordset. Fields("Label") Next X lf DisplayLibrary = True Or (DisplayLibrary = False And songdata(9) = "yes") Then Musiclisting. Addltem songdata (9) & Chr(9) & songdata(1) & Chr(9) & Songdata(2) & Chr(9) & songdata(3) & Chr(9) & songdata(4) & Chr(9) & song data(5) & Chr(9) & songdata(6) & Chr(9) & songdata(7) & Chr(9) & songdata(8) MusicListing.row = MusicListing. Rows - For j = 0 To 9 MusicListing. Col = MusicListing. CellBackColor F color Next j MusicListing. Col = 0 End if If Stoplisting List = True Then GoTo Stoploop DoEvents Loop Stoploop: If Screenl.wp. Link Mode <> LINK_NONE And PauseList = True Then Screenl.wp.LinkExecute "pause" Pause List = False End If MousePointer = 0 Screen2. Data). DatabaseName = App. Path & "my data.mdb" Screen. Data2. DatabaseName = App. Path & "my data.mdb." Screen2. Data3.DatabaseName = App. Path & "mydata.mdb." Screen2 Datal. RecordSource = "LP Complete Music Guide" Screen2. Data2 RecordSource = "iP Complete Music Guide" Screen2. Data3. RecordSource - "Music Colors" st Exit Sub End Sub

ivate Sub Clearlist Click() Musiclisting. Row's = } Stoplisting List - True If RatingBox. Visible = True Then RatingBox. Visible = False End Sub Private Sub Exit System Click() response - MsgBox ("Are you sure you want to exit the system?", 4) If response = vbNo Then Exit Sub Else Exit 3utton Pushed = True End Ital End if End Sub Private Sub Form Activate()

MOAEC MASTER CODE (page 2) Sunspot Software and Graphics 303-805-637 5,969.283

lf MusicListing. Rows > 2 Or Screen. ActiveForm. Names "Recorder" Then Exit Sub If First Library = True Then paused.",answer 4) = MsgBox("Are you sure you want to create the Library?" & Chr(13) & "Any music playing will be automatically If answer - wbno Then Exit Sub If SongPlaying = True And Screenl.wp. LinkMode <> LINK_NONE Then Screenl.wp. LinkExecute "pause" PauseList = True End if Load choices choices. Show End if lf Cancel Library = True Then Cancel Library = False Screen. Show Screen2 SetFocus Exit Sub Eise First Library = False End if Updatelist End Sub Private Sub Form Load() Recorder. Window State = 2 First Library = True StoplistingList = False is RatingBlock = "none" 3. Rating Option(0). Value = Trus password = "MOAEC End Sub Private Sub Form Query. Unload Cancel AS Integer. Unload Mode As Integer) Dim Msg Declare variable. lf Exitbutton Pushed Faise Then Msg = "Do you really want to exit the application?" Else ExitButton Pushed = True End Ital End If End Sub Private Sub For in Resize() On Error Resume Next If Window State = 2 Then For X = 1 To 3 MOAEC MASTER CODE (page 3) Sunspot Software and Graphics 303-305-7637 5,969.283 23 24

Screen Show(X). Left = ScreenShow(X - 1). Left + 1200 Next X For X = OTo 3 Screen Show(X). Top - Screen. Height - 155 Next X MusicListing. Height = Screen. Height - 2300 Else

For X = To 3 Screen Show(X). Left = ScreenShow(X - 1). Left + 1200 Next X For X = 0. To 3 Screen Show(X). Top = Recorder. Height - 1 155 Next X MusicListing. Height = Recorder. Height - 2300 End If Title. Left = (Recorder. Width ; 2) - 3500 Exit System. Top = Screen Show(0). Top Search Again. Top = Screen Show(0). Top Rating. Top = Screen Show(0). Top Search Again. Height = Exit System. Height Music Listing, left = (Recorder. Width 2) - (MusicListing. Width 2) Stoplist Update. Top = ScreenShow(0). Top StopListUpdate. Left = Recorder. Width - 560 ClearList. Top - ScreenShow (0). Top ClearList. Left = Stoplist Update. Left. 85 d Sub Private Sub Form Cnload Cance! As Integer) is Endlt.All End Sut vate Sub Music Listing Click ( ; ... lf Rating Box. Visible = True Then Rating Box. Visible = False Musiclisting. SelectionMode = flex Selection Free a MusicListing. Sort = 1. End Sub Private Sub MusicListing DblClick() if RatingBox. Visible = True Then RatingBox, Visible = False MusicListing.SelectionMode = flexSelection Free Musiclisting. Sort = i End Sub Private Sub Rating Click() Dim answer AS String answer - inputBox("Please enter your password.") If answer <> password Then MsgBox "The password was incorrect." Exit Sub Else RatingBox. Visible = True MOAEC MASTER CODE (page 4) Sunspot Software and Graphics 303-305-7637 5,969.283 25

End If

End Sub Private Sub Rating Cancel Click() RatingBox. Visible = False If RatingBlock = "none" Then RatingOption(0). Value = True Elself RatingBlock = "PG" Then Rating Option(1). Value = True Elself RatingBlock = "R" Then Rating Option(2). Value = True End If End Sub Private Sub RatingOK Click() Dim message As String RatingBlock - RatingTemp lf RatingBlock = "none" Then message = "No music " Elseif Rating Block = "PG" Then a message = "PG and R rated music" Elself Rating Block = "R" Then message - "R rated music" End If RatingBox. Visible = False MsgBox (message & "will be blocked from search. display, and play.") End Sub : Private Sub Rating Option Click(index As integer) : If Rating Option(0). Value = True Then ... RatingTemp = "none" Elself Rating Option(i). Value = True Then as RatingTemp = "PG" Elself Rating Option'). Value = True Then ... RatingTemp = "R". .. Else RatingTemp = "none" End If End Sub Private Sub Rating Password Click() New Password = InputBox ("Please type your new password") If NewPassword l = "Then Exit Sub New Password2 = InputBox("Please confirm you new password.") If New Password2 = "Then Exit Sub If New Password2 = New Password. Then password - New Password MsgBox "Password changed successfully." Else MsgBox. "Error entering new password." End if End Sub

MOAEC MASTER CODE (page 5) Sunspot Software and Graphics 303-305-7637 5,969.283 27 28

Private Sub Screen Show. Click(Index As integer) Dinn i As Integer On Error Resume Next If RatingBox. Visible = True Then RatingBox.Visible = False If (SelCatl = "And Index = 2) Then MsgBox ("Please select a main category from screen 2 before viewing this screen!") Exit Sub End If

For i = 0 To 3 Screen2.Screen Show (i). BackColor = &H8000000F Screen Show(i). BackColor = &H8000000F Screen Show(i). ForeColor = &H80000012 Next Select Case index Case 0 Screen DD. Group = "Screeni" Screen2. Hide Screen2.cat screen. Visible = True

Screen2.catscreen. Visible = False Screen2. Fav HitsScrn Visible - False For i = 0 To 4 Screen. Screen Show (i). BackColor = &H 8000000F Screen). Screen Show(index). ForeColor = &H 8000002 Next Screen Screen Show (Index). BackColor = &HC0& Screen. Screen Show (Index). ForeColor = &H 8000000E Screen. Show If Screen WindowState <> Then Screen WindowState = 2 Exit Sub Casel Screen2DD Group = "Screen2" Screen cat screen. Visible = True Screen.cat 2screen. Visible - False Screen2. FawhitSScrt. Visibi: = False For i = 0. To : Screen. Screen Show (i). BackColor = &H8000000F Screen2. ScreenShow (index). ForeColor = &H80000012 Next Screen2. Screen Show(Index). BackColor = &HC0& Screen2 Screen Show(index). ForeColor = &H8000000E Screen2. Show If Screen2. WindowState <> 2. Then Screen2 Window State = 2 Exit Sub Case 2 Screen2.DD Group = "Screen" SelCat = Menn Cat Screen2.catl screen. Visible - False Screen2.catscreen. Visible = True Screen2. Fav HitsScin. Visible = False For i = 0 To 4 Screen. Screen Show(i). BackColor = &H8000000F MOAEC MASTER CODE (page 6) Sunspot Software and Graphics 303-805-7637 5,969.283 29 30

Screen2. Screen Show(lindex). ForeColor = &H80000012 Next Screen2. Screen Show(Index). BackColor = &HC0& al Screen2. ScreenShow(index). ForeColor = &H8000000E Screen2. Show If Screen2. WindowState C2 Then Screen2 WindowState = 2 Exit Sub Case 3 Screen2DD. Group = "Screen4" Recorder. ScreenShow(Index). BackColor = &HC0& Recorder. ScreenShow(Index). ForeColor = &H8000000E Screen Hide Screen2. Hide Recorder. Show If Recorder. Window State <> 2 Then Recorder. WindowState = 2 Recorder. Refresh Screen2.catl screen. Visible = True Screen2.catscreen.visible = False Screen. Fav Hits Scrin. Visible - False

End Select dSub Private Sub SearchAgain Click() response = MsgBox ("Are you sure you want to Reset the library Display?" & Chr(13) & "Any music playing will be automatically fresponse = vbNo Then Exit Sub Else if Rating Boy Visible = True Then RatingBox. Visible = False If Song Playing True Ard Screen wp. Link Mode <> LINKNONE Then Screen.wp. LinkExecute "pause" Pause list - rue Endlf load choices choices. Show 1 If Cancel Library = True Then Cancellibrary = False Screen2 Show Screen2 SetFocus Exit Sub

End if StoplistingList = False UpdateList End If End Sub Private Sub StopListUpdate Click() StoplistingList = True If RatingBox. Visible = True Then RatingBox. Visible = False MOAEC MASTER CODE (page 7) Sunspot Software and Graphics 303-305-7637 5,969.283 31 32

If Screen.wp LinkMode <> LINK_NONE And PauseList = True Then Screen.wp. LinkExecute "pause" Pausetlist = False End. If End Sub "Loader.firm Private Sub Form Activate() Dim ftime, wtime As integer Loader. Refresh MousePointer = } ftime = Timer() wtime = 0 App. Help File = App. Path & "mohelp.hlp" Load title frn title frim. Animationl AutoPlay = True titlef Im, Animation2. AutoPlay - True titlefrin. Animationl Open App. Path & ".cdla.avi" titlefim Animation Open App. Path & "cab.avi" st titlefrm. Animation Play titlefrm. Animation2. Play titlefrin. MMControll fiename = App. Path & "Intro.way" Call title frn. Main

touchscreen = True

: Do While wtime < 10 it wtime = Timer() - ftime DoEvents

oop titlefrn.Show loader. Hide MousePointer = () Unload Loader End Sub "choices.frn Private Sub For in Load) DisplayLibrary - False End Sub Private Sub OKButton Click(Index. As linteger) If index = Then Cance Library = Trus. End if Unload choices End Sub Private Sub Option Click() DisplayLibrary = False MOAEC MASTER CODE (page 8) Sunspot Software and Graphics 303-305-7637 5,969.283 33 34

Recorder. Title. Caption = " Current Music You Own" End Sub Private Sub Option2Click() DisplayLibrary = True Recorder. Title. Caption = "The Complete MOAEC Music Library" End Sub *Screen.frn Private Declare Function mciSendCommand A Lib "WinMM" (ByVal widevicel D AS Long, ByVal message As Long, ByVal dwParaml As Long, dwparam2. As Any) As Long Private Declare Function inciSend String A Lib "WinMM" (ByVal mciCommand As String. ByVal returnStr As String. ByVal returnLength. As Integer, ByVal call Back. As Integer) As Long Private Declare Function GetProfileString Lib "kernel32" Alias "GetProfileString.A" (ByVal pappName AS String. ByVal pKey Name As String. ByVallpDefault. As String, ByVallpReturnedString AS String, ByVal nSize AS Long) As Long

Const MCI OPEN = &H803 Const MCCLOSE = & H804 5. Const MCl_PLAY = &H806 is Const MC OPEN TYPE = & H200& Const MCIOPEN ELEMENT = &H200& Const MC) WAIT = &H2&

rivate Type MCIWAVE OPEN PARMS dwCallback. As long wDeviceIDAS Long lpstrDeviceType As String lpstrElementName As String lpstralias As String dwBufferSeconds As Long End Type Private Type MCI PLAY PARMS dwCallback. As Long dwFrom As Long dwTo As Long End Type Private Function StartApp(appmanne As String) As Long On Error Resume Next StartApp = (Shell(appmame)) DoEvents MOAEC MASTER CODE (page 9) Sunspot Software and Graphics 303-305-7637 5,969.283 35 36

If Start App = 0 Then MsgBox "Couldn't start" & appname 'StartApp = 0 "End End If End Function Private Function CreateLink() As integer

On Error Resume Next "set DDE parameter wp.LinkMode = NONE wp. Link Item = " wp. LinkTopic = "Win Play 3 audio" wp. Link Mode = LINK MANUAL imp = Err If (tmp = 0) Then WinPlayConnected = 1 Else s: WinPlayConnected = 0 End If CreateLink = timp End Function Sub Adjust Volume(SliderNum. As integer)

Dim new volume As long Dim first As Integer Dim other AS integer Dim left Vol. As Long Dim RightVol. As Long Din fadevalue AS Variant lf ((SliderNunn = 0 Or SliderNum = 1) And channel = 1) Or ((SliderNum = 2 Or SliderNum = 3) And channel = 2) Then If (channel = 1 And mixerbar. Value < 0) Or (channel = 2 And mixerbar. Value > 0) Then fadevalue = Abs(mixerbar, Value) f 100 Iffadevalue < 0.5 Then fadevalue = 0 Endlf If SliderNunn = 0. Or SiderNunn = 1 Then first = 1 other = 0 Elseif SliderNunn = 2 Or SiderNum = 3 Then first = 3 other = 2 End If

If SliderNunn = first Or SliderNum = other Then MOAEC MASTER codE (page 10) Sunspot Software and Graphics 303-805.7637 5,969.283

Text2.Text - old volume left Vol = CLng (Val("&H" & Hex(volumesldr(other). Value)) - 1) RightVol = CLng(Val("&H" & Hex(fadevalue * (65535 - volumesldr(first). Value)) & Hex(fadevalue" (65535 volumesldr(other). Value)))) new volume = RightVol Call waveOutSetVolume(VolumelD, new volume) End If End If End Sub

Sub Playwave(WaveFile AS Variant, songlength As Double) Dim Ltime As Long Dim Y As Long "Dim X As Long Dim errorCode AS Integer Dim return Str As Integer Dim errorStr As String * 255 Dim MaxMsecs As Double Dim volumecode As Long Dim pitch. As Long Dim mixinc As Integer Din count. As Double Dim Piggy Back. As Double Dim checker AS Integer On Error GoTo errorhandler play (channel). Enabled = True pause(channel). Enabled = True Screen i.Stop(channel). Enabled - True Screen stop{OtherChannel). Enabled = False wp. LinkExecute "set PlayList" & Wavefile Ltime = Timer() X = 0 Do While X < S - X = Tinner () - Ltine Loop wp. LinkExecute "play" Stoplist - False If channel - Then other = 0 If channel = 2 Then other = 3 PlayLab(channel). Visible - True Quelabchannel). Visible = False If channel = Then mixerbar. Value = -00 lf channel = 2 Then nixerbar. Value = 00 NewPauseStartTime = Timer() Do While X < TimeSerial(0, 0, songlength) DoEvents If Tinner() > AutoExitTime - 30 And Tinner() < AutoExitTime - 27 And AutoExit Event = True Then EndMsgBox If ("MOAEC WILL SHUTDOWN IN 30 SECONDS!!!" & Chr(13) & " Press CANCEL to prevent auto exit.") MOAEC MASTER CODE (page 11) Sunspot Software and Graphics 303-305-7637 5,969.283 39 40

If Timer() > AutoExitTime And AutoExitEvent = True Then 'Send Key's "{enter;" EnditAll 'Call Exit Windows(&HO, &HO) Endlf If PauseList = True Then New PauseStart Time = Timer() - TimeSoFar End If If Pause list = Faise Then nexttrack(). Enabled = True prevtrack(1). Enabled = True nexttrack(2). Enabled = True prevtrack(2). Enabled = True TimeSoFar Timer() - New PauseStartTime Let X = TimeSerial(0, 0, (TimeSoFar)) TimeElapsed(channel). Text = Format (TimeSerial(0, 0, SongsTime + song length) - X, "hh:mm:ss") Text(channel), Text = Format (TimeSerial(0, 0, song length) - X, "hh:mm:ss") Screen2 timebox. Text = Format(TimeSerial(0, 0, SongsTime + songlength) - X, "hh:mm:ss") End. If

If StopList = True Then X = TimeSerial(0, 0, 0) New PauseStart Time = Timer() If Prey Track War = True Then PrevTrack War = False StopList = False wp LinkExecute "play" Ed If End if If NextTrack War = True Then X = TimeSeria (0, 0, song length) NextTrack War = False End If loop PlayLab(channel). Visible = False Quelab(channel). Visible = True Exit Sub errorhandler: MsgBox ("Sorry....There was a problem playing this music selection.") End Sub

Private Sub eject Click() Dim files. As String Dim in As Integer lfwp. LinkMode <> LINKNONE Then On Error Resume Next fileopendlg. Action = } End If MOAEC MASTER code (page 12) Sunspot Software and Graphics 303-805-7637 5,969.283 41 42

End Sub

Private Sub Command 1 Click() lfwp.LinkMode <> LINKNONE Then wp. LinkExecute "dialog options output" End. If End Sub Private Sub AutoExit Click()

On Error GoTo endsub lf AutoExit. Caption = "CANCEL". Then response - MsgBox ("Are you sure you want to cancel auto shutdown?", 4) if response = vb No Then Exit Sub Else

AutoExit Event = False AutoExit. Caption = "AUTOEXIT" End If Ese lf Song Playing = False Then Exit Sub response = MsgBox ("Are you sure you want to set MOAEC to shut down automatically?", 4) If response = vibSo Then Exit Sub Else AutoExit, Caption = "CANCEL" TimeFrane Visible = Tie keyboard. Visible = True Time input Set Focus End if

End If tendsub. End Sub Private Sub backup Click () If Timeinput. Visible = True Then Timelinput. Set ocus Send Key's "{end}." Send Keys" backspace." Send Key's "{tab}" End if End Sub Private Sub Current SongExpanded Click(Index. As Integer) Current SongExpanded (Index). Visible = False End Sub Private Sub cursong click(Index As Integer) MOAEC MASTER CODE (page 13) Sunspot Software and Graphics 303-805.7637 5,969.283 43 44

Current SongExpanded(Index). Visible = True End Sub Private Sub ENTERKEY Click() If Timelnput. Visible = True Then TimeOK.SetFocus Send Keys" (enter." End If End Sub Private Sub Exit System Click() response = MsgBox ("Are you sure you want to exit the system?", 4) If response = vbNo Then Exit Sub Else Exitbutton Pushed = True End ItAF End If End Sub Private Sub Form Gotfocus) On Error Resume Next Screen2DD. Group = "Screen!" End Sub Public Sub Form Load) Dim old volume AS Long

Din oidrate AS Long Dim new volume AS Long : Dim VolunePoint. As Long : Dinn volumeDAS Long im volumecode As Long Dim tinp As String * 256 Dim WinPlays Name. As String im in As Integer StoplistingList = True Screen. WindowState = 2 autonix F True NextTrack War = False AutoExite vent = False volinc(0) = Master(0). Value volinc(i) = Master(l). Value 'Open DDE connection with WinPlay3 If CreateLink() <> NONE Then 'get path to winplay3 from win.in n = GetProfileString("WinPlay3", "ProgramFile", "WinPlay3. Exe", tmp, 256) WinPlay3Name = LeftS(tmp, n) If StartApp(WinPlay3Narne & " DDE") Then Select Case CreateLink) Case 0 "dde server started MOAEC MASTER CODE (page 14) Sunspot Software and Graphics 303-305-7637 5,969.283 45 46

Case NO APP RESPONDED MsgBox "Sorry, still can't connect." End Select End If

End If

Call waveOutCetID(VolumeHandle, Volumel D) Call waveOut OetVolume(VolumeID, old volume) PlaySpeed(0). Value = oidvolume PlaySpeed()), Value = old volume Master(0). Value = 49000 Master(l). Value = 49000 volumesldr(8), Value = 49000 volumesldr(9). Value - 49000 For i = 4. To 5 volumesldr(j). Value = .4900? Next i For i = OTO 3 volumesldr(j). Value c. 49000 Next i mixerbar. Walue = 00 Call waveOutSetVolune(VolumeID, CLng (Val ("&H" & Hex () 6000) & Hex (16000)))) PlaySpeed(0). Value = 5 PlaySpeed 1). Value = 5

Private Sub Form Resizet)

On Error Resume Next If Window State = 2 The For X = 1 To 4 Screen Show(X). Left = Screen Show (X - 1). Left + 1200 Next X For X = 0. To 4 ScreenShow(X). Top = Screen. Height - 1 155 Next X Exit System. Top = Screen. Height - 1155 Label10. Top = Screen. Height - 155 Else For X = 1 To 4 ScreenShow(X). Left ScreenShow(X - ). Left - 1200 Next X For X = 0. To 4 ScreenShow(X). Top = Screen 1. Height - 1155 Next X Exit System. Top = Screen. Height - 155 Label10. Top = Screen). Height - ) 155 MOAEC MASTER CODE (page 15) Sunspot Software and Graphics 303-305-7637 5,969.283 47 48

End If Label O.Left = Screen, Width - 455 Exit System.Left = 20 Channell(l). Left = (Screen 1. Width ; 2) - 8 Channell(3).Left = (Screenl. Width 2) + 8 Picture. Width = Screen. Width - 460 Picturel. Top = Screen). Height - 3255 For X = 0. To 3 Channell (X). Width = (Screen). Width ; 2) - 353 Next X For X = OTo PlaySpeed(X).Left = (Channel}(0). Width ; 2) - 1200 Next X Label3(0). Left = PlaySpeed(0). Left + 720 Label3(1). Left = PlaySpeed(0). Left - 600 Label3(3).Left = PlaySpeed(0). Left + 720 Label3(4). Left = PlaySpeed(0). Left - 600 Label3(2).Left = PlaySpeed(0). Left - 2520 Label3(5). Left = PlaySpeed(0). Left + 2520 Label4(0). Left = PlaySpeed(0). Left 720 ... Label4(1). Left = PlaySpeed(0). Left - 720

For X = 1 To 2 play (X). Left = {(Channel}(0). Width 2) - 1425) Screen). Stop(X), left = ((Channell(0). Width 2) - 1425) - 570 pause(X). Left = ((Channell (0). Width 2) - 1425) - 1140 prevtrack(X). Left = ((Channell (0). Width 2) - 1425) -- 70 nexttrack(X). Left = ((Channel 1 (0). Width ; 2) - 1425) - 2280 cursong (X). Left = Channel ( ; ). Width - 275 QuelabtX).left = cursong }. left PlayLab(X). Left = cursong(l).Left ... Next X

- For X = 2 To 3 Channell (X). Height = Screen Height - Channell (0). Height - Picturel Height - 1600 Next X volumesldr(0). Left = 0.209" Picturel. Width volumesldr(). Left = 0.267 * Picturel, Width volumesldr(2).Left = 0.36" Picture. Width volumesldr(3). Left = 0.418 * Picturel. Width volumesldr(4). Left = 0.6734 Picturel. Width volumesldr(5). Left = 0.73 i5 " Picturel. Width volumesldr(8). Left = 0.828" Picturel. Width volumesldr(9). Left = 0.894 " Picture. Width Master(O). Left = 0.5225" Picture). Width Master(l). Left = 0.5806." Picturel. Width labell(l). Left = volumesldr(0). Left + l20 Label)(2).Left = volumesldr(2).Left + 120 Labell (4).left a volumesldr(4). Left + 120 Labell (5). Left = volunesldr(8). Left - 120 Labell (6). Left = volumesldr(9), Left - 120 Labell(3). Left = Master(0). Left - 20 MOAEC MASTER CODE (page 6) Sunspot Software and Graphics 303-305-7637 5,969.283 49 50

AutoExit. Top = ExitSystem. Top For X = 1 To 2 Current SongExpanded (X). Left = (Screen). Width / 2) - 5408 Next X EQ (0). Top = (Channel 1(2). Height 2) - 100 EQl(l).Top = (Channell(2). Height 2) - 100 EQ (0). Left = (Channell(2). Width 2) - 2280 EQ1 (1). Left = (Channell(2). Width 2) - 2280 End Sub Private Sub Form. Unload (Cance! As Integer) If wp. LinkMode <> LINK_NONE Then wp. LinkExecute "stop" wp. LinkExecute "exit" End If WinPlay3 Connected = 0 wp. LinkMode = LINKNONE EnditA

End Sub Private Sub label10. Click)

Private Sub Letters Click Index AS integer) - 'type the letter pressed in the text field slf Timelinput. Visible = True Then Timeinput. Set Focus Send Key's LCase? Letterst Index). Caption) Send Keys" tab."

End Sub i Private Sub Master Clickindex. As Integer) vol inc{0} = Master(0), Value volinc(1) = Master(). Value End Sub Private Sub Master Scroll (Index As integer) Dim volinc2(2) As Long volinc2(Index) = Master(Index). Value - volinc(Index) Select Case index Case 0 volumesldr(0), Value = OrigVol(0) - volinc2(0) volumesldr(2), Value - OrigVol(2) + volinc2(0) volumesldr(4). Value = OrigVol(4) + volinc2(0) MOAEC MASTER copE (page 17) Sunspot Software and Graphics 303-305-7637 5,969.283 51 52

Case volumesldr(l). Value = OrigVol(l) + volinc2()) volumesldr(3). Value = OrigVol(3) + volinc2(1) volumesldr(5), Value = OrigVol(5) + volinc2(l) End Select volinc(Index) = Master(Index). Value End Sub

Private Sub mixerbar Change() lf (mixerbar. Value <= 0 And channel = 1) Then AdjustVolume () ) Elself (mixerbar. Value >= 0 And channel = 2) Then Adjust Volume (2) Endlf End Sub ivate Sub mixerbar Scroll)

If (mixerbai, Value <= O And channel = 1) Then AdjustVolume () } Eiself (mixerbar. Value >= 0. And channel = 2) Then Adjust Volume (2) End. If End Sub Private Sub Mix Fade Click()

is. If Mix Fade. Caption = "AUTOMIX OFF" Then MixFade. Caption = "AUTOMIX ON." automix = True Else Mix Fade. Caption = "AUTOMIX OFF" autonix - False End If End Sub Private Sub nexttrack Click(index As Integer) If index = channel Then If wp. Link Mode <> LINK_NONE Then response = MsgBox ("Are you sure you want to skip to the next song?", 4) If response = vbNo Then Exit Sub Else Nextrack War = True End if End If End if End Sub MOAEC MASTER CODE (page 18) Sunspot Software and Graphics 303-305-7637 5,969.283 53 54

Private Sub pause Click(Index. As Integer) If channel = Index. Then If Stoplistinglist = False Then MsgBox ("Your library is still updating" & Chr(13) & "Please switch to Screen 4 to resume play.") Exit Sub End If lfwp. LinkMode <> LINK_NONE Then wp.LinkExecute "pause" If PauseList = True Then PauseList = False Else PauseList F True End. If End if Endf End Sub Private Sub play Click(Index AS Integer) If wp. LinkMode <> LINK NONE Then if Index = OtherChannel And Stoplist = True Then NextTrack War = True Elself index = channel Then PauseList = False wp. LinkExecute "play." Stoplist = False nd If

ivate Sub PlaySpeed Scroli index. As linteger) Dim oldrate AS Long

Dim volumecode As long Bim new rate As long

End Sub Private Sub RestartMus Click() Dim SoundCom As long SoundCom - waveOut Restart (VolumeID) Text2.Text = SoundCon End Sub Private Sub prevtrack Click(index As Integer) If channel = Index. Then lfwp.LinkMode <> LINKNONE Then wp. LinkExecute "stop" StopList = True PauseList = False PrevTrack War = True MOAEC MASTER CODE (page 19) Sunspot Software and Graphics 303-805-637 5,969.283 55 56

End If End If End Sub

Private Sub ScreenShow Click(Index As integer) Dim i As Integer On Error Resume Next If (SelCatl = " And index = 2) Then MsgBox ("Please select a main category from screen 2 before viewing this screen") Exit Sub End if Screen2. Category(1). Visible = False cat count = 0 'disable speed buttons since switching to screen 3 For i = 0 To Screen2. SongSpeed.count - Screen2. Song Speedi). Enabled = False Screen2. SongSpeedi). BackColor = &H8000000F Next i Screen2 Mix. Enabled = Faise Screen2. PlayTime. Enabled = False Screen2. Mix. BackColor = &H8000000F Screen2. Play Time. BackColor = &H8000000F or i = 0. To 4 Screen2 ScreenShow (i). BackColor = &H8000000F ScreenShow (i). BackColor = &H 8000000F Screen Show (i). ForeColor = &H 800000l. Next i

elect Case index Case 0 Screen2. DD Group - "Screen!" Screen2. Hide - Screen.catscreen. Visible - False Screen2. Fav Hits Scrin. Visible = False Exit Sub Case Screen2. DD. Group = "Screen2" Screen2.catscreen. Visible = False Screen2 Fav Hits Scrin. Visible = False For i = 0 To 4 Screen2. Screen Show(i). BackColor = &H8000000F Screen2. ScreenShow(Index). ForeColor = &H800000l 2 Next i Screen2. ScreenShow{Index). BackColor = &HC0& Screen2.ScreenShow(Index). ForeColor = &H8000000E Screen2. Show If Screen2. Window State <> 2 Then Screen2. WindowState = 2 Exit Sub Case 2 If isDDW in Running() Then Screen2. DD. Group = "Screen2" MOAEC MASTER CODE (page 20) Sunspot Software and Graphics 303-805.7.637 5,969.283 57 58

SeCatl = Mem Cat Screen2.cal2screen. Visible = True Screen2. Favits Scrin. Visible = False For j = 0 To 4 Screen2 ScreenShow(i). BackColor = &H8000000F Screen2.Screen Show(Index). ForeColor = &H80000012 Next Screen2.Screen Show(Index). BackColor = &HC0& Screen2. ScreenShow(index). ForeColor = &H8000000E Screen2.Show lfScreen2. WindowState <> 2 Then Screen2. WindowState = 2 Exit Sub Case 3 Screen2.DD.Group = "Screen4" Recorder, Screen Show(Index). BackColor = &HCO& Recorder. Screen Show(Index). ForeColor = &H 8000000E Screen Hide Screen2.Hide Recorder. Show If Recorder. WindowState <> 2. Then Recorder. WindowState = 2 Recorder. Refresh Screen2.catscreen. Visible = False Screen. Fay Hits Scin. Visible = False nd Select make the button pressed the right color

nd Sub rivate Sub stop Click Index AS Integer) If channe = Index then lfwp. Link Mode <> LINK_NONE Then ... wp. LinkExecute "stop" Stoplist = True play (OtherChannel). Enabled = True End if End if End Sub Private Sub undo Click() End Sub Private Sub TimeCancel Click() TinneFrame. Visible = False keyboard. Visible = False End Sub Private Sub TimeOK Click() Dim Timer1 As Long MOAEC MASTER CODE (page 2) Sunspot Software and Graphics 303-80S-7637 5,969.283 59 60

Dim timer2. As Long On Error GoTo endsub If Val(Time input. Text).<> 0. Then AutoExit Start = Timer() AutoExitTime = AutoExitStart + (Val (TimeInput. Text) * 60) AutoExite vent = True End If TimeFrame. Visible = False keyboard. Visible = False endsub: End Sub Private Sub volumesldr Change(Index As Integer) AdjustVolume (Index) OrigVol(Index) = volumesldr(Index). Value End Sub Private Sub volumesldr Scroll (Index As Integer) On Error Resume Next Adjust Volume (Index) End Sub Private Subwp Link Close() f WinPlayConnected <> 0. Then End If wp.LinkMode = LINK_NONE End Sub : vate Subw p LinkErrori link in As i.ieger : MsgBox ("Link error") :End Sub

creen2.frn Sub DD Speech Recognized(Word As String, Word Value As String) Dim CurOontrol. As Control Dim VoiceFlag As Boolean Dim Saved Name As String On Error GoTo errorhandler

If Word = "classical)" Then Category}(0). SetFocus If Word = "jazz)." Then Categoryl (1). Setfocus if Word = "folk)" Then Category l(2). SetFocus If Word = "oldies." Then Category 1(3). SetFocus lf Word = "(country)." Then Categoryl (4). SetFocus If Word = "pop" Then Categoryl(5). Set Focus If Word = "soul)" Then Category (6). SetFocus If Word = "(R and B)." Then Category (7). SetFocus MOAEC MASTER CODE (page 22) Sunspot Software and Graphics 303-305-7637 5,969.283 61 62

If Word = "blues)" Then Category) (8). Set Focus If Word = "calypso)" Then Categoryl (9). Set Focus if Word = "disco." Then Categoryl(10). SetFocus If Word = "funk)" Then Category) () l). Setfocus If Word = "rock)." Then Category (12). SetFocus If Word = "metal)." Then Categoryl (13). Setfocus If Word = "top 40)." Then Category) (14). Setrocus If Word = "rap)." Then Categoryl (15). Set Focus lf Word = "reggae" Then Categoryl (16). SetFocus If Word = "alternative)" Then Category 1 (17). SetFocus lf Word = "ethnic" Then Categoryl (18). SetFocus If Word = "religion)." Then Categoryl (19). Setfocus If Word = "special events)" Then Categoryl (20). SetFocus lf Word = "funny)" Then Category}(2)). Setfocus If Word = "easy listening." Then Category)(22). SetRocus if Word = "favorite hits)" Then Category (23). SetFocus If Word = "special dance." Then Category (24). SetFocus If Word = "special mixes." Then Category (25). Set Focus If Word = "dance)." Then Category (26). Set Focus If Word = "energy." Then Category (27). Set Focus If Word = "sound effects)" Then Categoryl (28). SetFocus if Word = "sound tracks)" Then Categoryl (29). SetFocus If Word = "television}" Then Category (30). Set Focus If Word = "Dance Mix" Then Mix. Set Focus if Word = "(Clear" Then ClrSrch. Set Focus lf Word = "Undo" Then undo. Set Focus If Word = "Search List." Then searchlist. Set Focus If Word = "Play List." Then Playlist(0). Set Focus lf Word = "(Search) " Then search. Set Focus If Word = "Expand]" And Expandlist. Caption = "EXPAND" Then Expand List. Set ocus Elself Word = "Shrink)" And Expand List. Caption = "SHRINK" Then Expand List. Set Focus End if - If Word = "ELoad) " Then loadPlay. Set Focus lf Word = "Save)." Then SavePlay. Set Focus lf Word = "Next" Then AddList(0), SetFocus If Word = "Pick" Then AddList(1). SetFocus If Word = "Delete)" Then delete. Setfocus lf Word = "Title)." Then SearchCat(1). Setfocus If Word = "Artist)." Then Search Cat(2). Set Focus If Word = "Date" Then Search Cat(3). Setfocus If Word = "Song Category." Then SearchCat(4). SetFocus If Word = "Dance Type" Then SearchCat(6). Set Focus . If Word = "Music Style)." Then SearchCat(5). SetFocus If Word = "Speed)." And SearchCat()). Enabled = True Then SearchCat(7). Setfocus If Word = "Energy)." Then SearchCat(8). Setfocus If Word = "Speed" And AliSpeeds. Enabled True Then AllSpeeds. Set Focus If Word = "(Fast" And SongSpeed(0). Enabled F True Then SongSpeed(0). SetFocus MOAEC MASTER CODE (page 23) Sunspot Software and Graphics 303-305-7637 5,969.283 63 64

"If Word = "Fast)." Then SongSpeed(0). SetFocus lf Word = "Medium" And SongSpeed(1). Enabled = True Then SongSpeed()). Setrocus If Word = "Slow)" And SongSpeed(2). Enabled = True Then SongSpeed(2). Setfocus If Word = "Time)" And PlayTime. Enabled = True Then PlayTime.SetFocus lf Word = "30" Then Timelnput.Setocus Timelnput. Text = 30 End If If Word = "OK" And timebox.Visible = True Then TimeOK. SetFocus If Word = "Begin Search" And SearchScreen. Visible = True Then BeginSearch.Set Focus lf Word = "Cancel" And timebox. Visible = True Then TimeCancel. Set Focus lf Word = "Cancel." And SearchScreen. Visible = True Then Cancel. SetFocus If Word = "(Cancell" And cat2screen. Visible = True Then Cancel SubScreen. Setrocus "If word = "minutes)" Then Text2.SetFocus If Word = "Play." Then PlayButton. Set Focus If Word = "(Now)" Then Now. SetFocus "If word = "screen "Then ScreenShow(0). SetFocus "If word = "screen 2." Then ScreenShow( 1). Set Focus "If word = "screen 3." Then ScreenShow (2). Set Focus "If word = "screen 4)." Then Screen Show (S). Set Focus Send Key's "" torhander. Exit Sub nd Sub

ub Gray Out() 'disable and gray out speed, mix, and time buttons Mix Enabled = False AllSpeeds. Visible = True AllSpeeds. Enabled = False Play Time. Enabled = False Mix. BackColor - &H8000000F AliSpeeds. BackColor = &H8000000F Play Time. BackColor = &H 8000000F For i = 0 To SongSpeed count - 1 SongSpeed(i). Enabled = False SongSpeed(i). BackColor &H8000000F Next i End Sub Sub Load NewSong(Songfile As String) Din memhandle As Long Dim memPointer AS Long Dim fileName As String Dim retValue As Long Dim nBytes As Long Dim fileSize As long Dim origStr As String Dim strSize As Long Dim textStr As String

On Error GoTo noFilename MOAEC MASTER CODE (page 24) Sunspot Software and Graphics 303-80S-7637 5,969.283 65 66

fileName = Songfile File:Pointer = CreateFile(fileName. GENERIC READ Or GENERICWRITE, 0&, 0&, OPEN EXISTING, FILEATTRIBUTE NORMAL, 0&) fileSize = GetFileSize(FilePointer, 0) memHandle = GlobalAlloc(GMEM MOVEABLE Or GMEM ZEROINIT, fileSize) memPointer = GlobalLock(memHandle) retValue = ReadFile(File:Pointer, ByVal memPointer, fileSize, nBytes, 0&) Call Screen}. Playwave(fileName, song length) CloseHandle (File:Pointer) GlobalUnlock (memHandle) GlobalFree (memHandle) Exit Sub noFilename: End Sub Sub StartPlay (row. As integer, list AS integer) Dim song, song length. As String Dim i,j As Integer Dinn CurControl. As MSFlex Grid "Dim OtherChannel. As linteger On Error GoTo errorhandler fist = ). Then

Set CurGontrol = searchist Elseiflist = 2 Then Set CurControl = Play list (O)

End if "StopList = False If (Curcontrol. Name = Playlist(0). Name And Play list(0). Rows > 1) Or CurControl.Name = searchlist.Name Then If SongPlaying = True Then answer - MsgBox ("Are you sure you want to interrupt the current song?", 4, "Interrupt Song Playing") ... If answer = wbNo Then Exit Sub Eise If channel = Then channel = 2 OtherChanne = } Esef channe = 2 Then channel - OtherChannel .. 2 End if End if End if

Mix-Enabled = False 'switch to sl Screen.Show MOAEC MASTER CODE (page 25) Sunspot Software and Graphics 303-305-7637 5,969.283 67 68

Screen Refresh Screen2. Hide

If Playlist (0). Rows > 1 Then Playlist(0). Col = } Playlist(1). Col = 1 Playlist(0). ColSe! = 2 Playlist(1). ColSel = 8 End. If 'build the songlist array from the play list 'find the song from the play list 'disable mix button If CurControl.Name = searchlist. Narine Then lfsearchlist. Row Sel D 0 Then searchlist. BackColorSel searchlist, Cell BackColor searchiist. ForeColorSe = searchlist. Cell ForeColor For i = 0. To 8 Selsong (i) = searchlist TextMatrix(searchlist.row. i) i. Next Playlist(0). Addltem seisong(0) & Chr(9) & Selsong(l) & Chr(9) & selsong(2) Playlist(1). Additem selsong(0) & Chri9) & selsong(l) & Chr(9) & Selsong(2) "Add a song to the total to be played NumSongs. Text = PlaySongs is "Add the song time to the play time box : End if End If begin playing song list Do Until Playlist? (). Row S < 2 undo. Enabled = False s. For j = 0 To 4 - Screen Show (j). BackColor = &H8000000F Screen Show(j). ForeColor = &H 8000002 Screen. ScreenShow (j). BackColor = &H8000000F Screen 1. ScreenShowj). ForeColor = &H8000002 Next Screen}. ScreenShow(0). BackColor = &HC0& Screen. ScreenShow(0). ForeColor = &H8000000E Screen Refresh

If Playlist(0). Rows > 1 Then Curcontrol.row = row If channel = 1 Then OtherChanne = 2 If channel = 2 Then OtherChannel = } ScreenlPlayLab(OtherChannel). Visible = False Screen 1.Quelab(OtherChannel). Visible = True 'find the first song to be played MOAEC MASTER CODE (page 26) Sunspot Software and Graphics 303-305-7637 5,969.283 69 70

"if the song was already on deck then play it Datal. Refresh Datal. Recordset. MoveLast Data Recordset.MoveFirst

titt Datal. Recordset. Find First "Title = " & CurControl. TextMatrix(row, l) & " and Artist = " & Curcontrol. TextMatrix (row, 2) &

If Isnull (Datal. Recordset. Fields("ID")) Then MsgBox ("There was a problem finding your song file on disk.") Else songlist = "c:\Progra-1\moaec'895.mpg" 'songlist = "C:\Progra-i moaec\" & Datal Recordset. Fields("ID") & "mpg" 'songlist = "ckwindows\media tada.wav" songlist = "e." & Datal. Recordset. Fields("ID") & "mpg" End if song length = Val (Curcontrol. TextMatrix (row, 0)) - 2 Screen).cursong(channel). Text = CurControl. TextMatrix(row, 1) CurControl. Co - Screen cursong (channel). BackColor = Curcontrol. CellBackColor Screen). Text(channel).Text = Format (TimeSerial(0, 0, song length), "hh:mm:ss") If CurControl Name = Playlist (0). Name Then For X = OTo 8 Screen). Current SongExpanded(channel). TextMatrix (i, X) = Playlist(l).TextMatrix(row, X) Screen 1. Current SongExpanded(channel). CellBackColor F Playlist(1). CellBackColor Screenl. Current Song Expanded(channel). BackColorSel = Playlist(1). CellBackColor s: Screen Current SongExpanded(channel). ForeColorSel = Playlist(1). CellForeColor .. Next X Else For X = U 8 = Screeni. Current SongExpanded channel), TextMatrix(, X) = CurControl. TextMatrix(row, X) :. Screenl. Current SongExpanded channel). CellBackColor = CurControl. CellBackColor

- Screen). Current SongExpanded(channel). BackColorSel = Curcontrol. CellBackColor Screen). Current SongExpanded(channel). ForeColorSel = CurControl. CellForeColor Next X End If Datal. Recordset. Close if (CurControl.Name = Playlist(0). Name And Playlist(0).Rows > 2) Or CurControl.Name = searchlist.Name Then If (CurControl.Playlist(0).row Name = = Playlist(0). Name Androw <> 1) Or CurControl.Name = searchlist.Name Then Playlist(1).row = 1 Else Playlist(0).row = 2 Playlist(i).row = 2 End If song length2 = Wai (Playlist(0). TextMatrix(Playlist(0).row, 0)) Screen.cursong(OtherChannel).Text = Playlist(0), TextMatrix(Playlist(0).row, 1) Playlist(0). Col = 1 Screenl.cursong(OtherChannel). BackColor = Playlist(0). CellBackColor Screen). Text) (OtherChannel). Text = Format(TimeSerial(0, 0, songlength2), "hh:mm:ss") Screen TimeElapsed (OtherChannel). Text = Format(TimeSerial(0, 0, 0), "hh:mm:ss") MOAEC MASTER CODE (page 27) Sunspot Software and Graphics 303-805-7637 5,969.283 71 72

For X = 0 To 8 Screen). Current SongExpanded(OtherChannel). TextMatrix(1,X) = Playlist()).TextMatrix(Playlist(0).row, X) Screen). Current SongExpanded(OtherChannel)..CellBackColor = Playlist(1)..CellBackColor Screenl. Current Song Expanded(OtherChannel). BackColorSel = Playlist(1)..CellBackColor Screen.Current SongExpanded(OtherChannel). ForeColorSel = Playlist(1). CellForeColor Next X Else songlist2 = " Screen).cursong(OtherChannel). Text = " Screen.cursong(OtherChannel). BackColor = &H80000009 Screen 1. Text (OtherChannel), Text = Format (TimeSerial(0, 0, 0), "hh:mm:ss") ScreenlTimeElapsed.(OtherChannel). Text = Format(TimeSerial(0, 0, 0), "hh:mm:ss") End if

lf CurControl. Name = searchlist.Name Then SongsTime = SongsTime + CLng(Val(CurControl. TextMatrix(row, O))) SongsTime = Songs Time - CLng (Val(Curcontrol. TextMatrix (row, 0))) timebox. Text = Fornat(TimeSerial(0.0, CLng (SongsTime)), "hh:mmiss")

lf Playlist(0). Rows > 2. Then lf CurControl. Name = Playlist (0). Name And row <> Then Playlist(0).row = row Playlist().row = row Elsef CurControl. Narine - Searchist. Nanne Then Playlist(0) row = Playlist (0). Rows - l Playlist () row = Playlist (O). Rows - 1 Else Playlist (0) row = } Piay list (l).row = 1 End If Playlist (l). Renoveltem (Playlist (0).row) Playlist(0). Remove item (Playlist (O), row)

Eise - Playlist (O). Clear Playlist(1). Clear Playlist(0). Rows = 1 Playlist(1). Rows = 1 Playlist(0). Col = } Playlist()). Col = 1 Playlist(0). ColSel = 2 Playlist(1). ColSel = 8 Playlist(0). Cell BackColor = Playlist(0). BackColorFixed Call Formatheaders End If If CurControl.Name = searchlist.Name Then PlaySongs = PlaySongs + 1 PlaySongs = PlaySongs - ) NumSongs. Text = PlaySongs Playlist(0). Col = Playlist(1). Col = 1 Playlist(0). ColSel = 2 Playlist()). ColSel = 8 MOAEC MASTER code (page 28) Sunspot Software and Graphics 303-805-7637 5,969.283 73 74

Playlist(0). BackColorSel = Playlist(0). CellBackColor Playlist(0). ForeColorSel = Playlist(0). CellForeColor Playlist(1). BackColorSel = Playlist(0). Cell BackColor Playlist()). ForeColorSel = Playlist(0). CellForeColor SongPlaying = True Call Screen Playwave(songlist, song length) If CurControl. Name = searchlist. Name Then Set CurControl = Playlist(0) row = 1

If channel - Then channe = 2 OtherChannel = 1 Else channel = i OtherChanne = 2 End If SongPlaying - False Ed If Loop Else StopList = True

clearall: SongsTime = 0 Playlist(()). Col = } Playlist()). Col = i Playlist(0). ColSet = 2 Playlist()). ColSel = 8 timebox. Text = Format (TimeSerial(0, 0, CLng (SongsTime}). "hh:mm:ss") Playlist (0). Clear Playlist(0). Rows = } Cal Formatheaders Playlist(0). BackColor Sei = Playlist(0). BackColorFixed Playlist(0). ForeColor Sel = Playlist(0). ForeColorFixed Playlist(1).Clear Playlist()). Rows = i Playlist(1). BackColorSel = Playlist()). BackColorFixed Playlist(1). ForeColorSel = Playlist(1). ForeColorFixed searchlist. BackColorSet = &H80000008 searchlist. ForeColorSel = &H8000000E PlaySongs = 0 NumSongs. Text = "O" Screen l.cursong(channel), Text = "" Screen.cursong(channel). BackColor = &H80000009 Screen Textil(channel). Text = Format(TimeSerial(0, 0, 0), "hh:mm:ss") Screen). Time Elapsed (channel). Text = Format(TimeSerial(0, 0, 0), "hh:mm:ss") Screen 1...cursong(OtherChannel). Text = " Screenl, cursong (OtherChannel). BackColor = &H80000009 Screen Text 1 (OtherChannel). Text = Format(TimeSerial(0, 0, 0), "hh:mm:ss") Screen). TimeElapsed (OtherChannel). Text = Format(TimeSerial(0, 0, 0), "hh:mm:ss") MOAEC MASTER CODE (page 29) Sunspot Software and Graphics 303-805.7637 5,969.283 75 76

Now. Enabled = False PlayButton. Enabled = False Now BackColor = &H8000000F PlayButton. BackColor = &H8000000F

Exit Sub errorhandler: MsgBox"There was a problem finding your selected song file." SongPlaying = False

End Sub Sub RestoreSearch List() Currow 2 = 1 Currowl = CurCol = 0 undo. Enabled - False 'clear the playlists Search Songs = 0 searchlist. Allow Big Selection = True

searchlist. Row's = numRows

If nuIn Rows as O Then ClearSearchList CirSrch. Enabled = False

Else CrSrch. Enabled - True searchlist row = 1 searchist. Co = 0 searchlist. Row Sel a nurn Rows - 1 searchlist. CoSell = 8 searchlist Clip = all Cells For is To nuIn Rows - 1 searchlist.row = i For k = OTo 8 searchlist. Coi = k searchlist.CellBackColor = FileColors(i) Next k Search Songs = SearchSongs + 1 Next i searchlist. AllowBigSelection = False searchlist.row F

searchlist. Co) = 0

delete. Enabled = True End If MOAEC MASTER CODE (page 30) Sunspot Software and Graphics 303-305-7637 5,969.283 77

Exit Sub End Sub Sub RestorePlayList() If numRow's = 0. Then ClearPlayList Else Currow 2 = 1 Currow = 1 CurCol = 0 undo. Enabled a False 'clear the playlists PlaySongs = 0 Songslime = 0 NumSongs. Text = 0 timebox. Text = Format (TimeSerial(0, 0, CLng(SongsTime)), "hh:mm:ss") Single PlayTimeText = "00:00:00" Playlist(0). Allow Big Selection = True Playlist ( ). Allow BigSelection = True Playlist (0). Rows = numRows Playlist(0), row = } Playlist (O). Coi = 0 Playlist(0). Row Sei = num Rows - ) Playlist (O). ColSel = 2 Playlist()). Rows = numRows Playlist(1).row = Playlist(1). Col = 0 Playlist (1). Row Sel = numRows - Playlist(1). ColSel = 8 Playlist (0). Clip = all Cells) Playlist ( ).Clip = all Cells For i = 1 To numRows - Playlist (0.row = i For j = 0 To 2 Play list (0). Co - Playlist (0), CetBackColor = FileColors(i) Next j Playlist()).row = i For k = 0 To 8 Playlist(1). Col = k Playlist(1). CellBackColor = FileColors(i) Next k SongsTime = SongsTime + CLng(Val(Playlist(0). TextMatrix (i,0))) timebox. Text = Format(TimeSerial(0, 0, SongsTime), "hh:mm:ss") PlaySongs = PlaySongs NumSongs. Text = PlaySongs Next Playlist(0). AllowBigSelection = False Playlist(1). AllowBigSelection = False Playlist(0).row = 1 Playlist()).row = 1 Playlist (0). Col = 0 Playlist()). Col = 0 Expand List. Enabled = True MOAEC MASTER CODE (page 31) Sunspot Software and Graphics 303-305-7637 5,969.283 79 80

delete. Enabled = True Command Enabled - True Now.Enabled = True Now BackColor = &HFF& PlayButton. Enabled = True PlayButton. BackColor = &HFF8080 Rind Mix. Enabled = True SavePlay. Enabled = True Cal CheckOnDeck End if Exit Sub

End Sub Sub Save Search List() Currowl = search is row CurCo) = 0 undo Enabled = True On Error GoTo eriorhander

searchlist. Allow BigSelection = True searchlist.row = } searchist. Col - 0 searchlist. Row Set = searchlist. Rows - 1 searchlist. ColSe 8 all Cells1 = searchlist Clip numRow, S = searchist. Row's ReDim File Colors (searchist. Rows - For i = ). To searchs: Rov's - searchist row = } FileColors(i) = searchlist. Cell BackColor "Write FileNum. FileColors(i) Next searchlist. Allow BigSelection - False searchlist row = Currow searchlist. Co. FO

Exit Sub errorhandler: Exit Sub End Sub Sub SavePlayList() Currow2 = Playlist).row CurRowl = Playlist(0).row Curco - 0 undo. Enabled = True On Error GoTo errorhandler Playlist(0). Allow BigSelection = True Playlist (O).row = 1 MOAEC MASTER CODE (page 32) Sunspot Software and Graphics 303-805-7637 5,969.283 81 82

Playlist(0). Col = 0 Playlist(0). RowSel = Playlist(0). Rows - 1 Playlist(0). ColSel = 2 ailCells1 = Playlist(0). Clip Playlist(1). Allow BigSelection = True Playlist(1).row = 1 Playlist(1). Col = 0 Playlist()). Row Sel = Playlist(1). Rows - 1 Playlist(1). ColSel = 8 al:Cells2 = Playlist(1).Clip numRows = Playlist(0). Rows ReDin FileColors(Playlist(0). Rows + 1) For i = ) To Playlist(0). Rows - ) Playlist(0).row = i FileColors(i) = Playlist(0). Cell BackColor "Write #FileNum, FileColors(i) Next i Playlist()). Allow BigSelection - False Playlist(0). Allow Big Selection = False Playlist(0).row = CurRow Playlist () row = CurRow Playlist (Q). Col = i Playlist (1) Col = } Exit. Sub

Sub List Fay Hits() if Played Songs( , ), 1) <>" Then Organize. Enabled = True For z = 1 To Zed .. searchlist. Additem PlayedSongs(). Z, 0) & Chr(9) & PlayedSongs(l, z, )) & Chr(9) & PlayedSongs(l, z, 2) & Chr(9) & Played Songst 1. z. 3.} & Chr(9) & Played Songs(1, z. 4) & Chr(9) & PlayedSongs(l. z., 5) & Chr(9) & PlayedSongs(l, z, 6) & Chr(9) & Played Songs( i. z. 7) & Chri9) & Played Songs(l, z, 8) Search Songs = Search Songs - ) searchlist, row = Search Songs For X = 0 To 8 searchlist. Col = X searchlist.CellBackColor = Played Songs(l, z, 9) Next X CrSrch. Enabled = True searchlist. BackColorSe! = searchlist.Cell BackColor Next 2 Else MsgBox ("Sorry...You have no song selections defined as favorite hits.") End if End Sub Sub ClearPlayList() Dim i As Integer 'reset the song variables MOAEC MASTER CODE (page 33) Sunspot Software and Graphics 303-305-7637 5,969.283 83 84

SongsTime = 0 PlaySongs = 0 'clear the fields associated with song count and time timebox. Text = Format (TimeSerial(0, 0, CLng (SongsTime)), "hh:mm:ss") SinglePlayTime. Text = "00:00:00" NumSongs. Text - "0" "purge the contents of the playlist For i = 0 To Playlist(i).Clear Playlist(i). Rows = 1 Playlist.(i). BackColorSel Playlist(0). BackColorFixed Playlist(i). ForeColorSei = Playlist(0). ForeColorFixed Next 'reset column widths and make the smallest list visible Call Formatheaders Playlist(0). Visible = True Playlist()). Visible = False reset the buttons SavePlay Enabled = False Rind Mix. Enated c False Mix. Enabled = False 'i. Now-Enabled = False Now BackColor = &H8000000F Play Button. BackColor = &H8000000F Play Button. Enabled = False Add List(0). Enabled = False Command Enabied = False Expand List. Enabled = False 'reset button colors and return selection to searchlist Now.Back Color = &H8OOOOOOF Mix. BackColor = &H8000000F searchlist. BackColorSel = & 83000008 searchlist. Fore ColorSe = &H8000000E :End Sub "Sub ClearSearchlist) Dim AS Integer reset caption of main search button and text fields search. Caption = "Search Music Categories" For i = 0. To 9 csearch (i).Caption - " Next i "remove all rows of the list searchlist. Clear searchlist. Rows = 1 Call Formatheaders 'reset the searchlist colors searchlist. BackColorSel= searchlist. BackColorFixed searchlist. ForeColorSe} e searchlist. ForeColorFixed searchlist. BackColor = &H8000000E 'reset the main search flag and flag label csearch (0).Caption = "none" searchflag = 0 reset searchdist variables and reset buttons MOAEC MASTER CODE (page 34) Sunspot Software and Graphics 303-305-7637 5,969.283 85 86

SearchSongs = 0 AddList(0). Enabled - False AddList(1). Enabled = False CrSrch. Enabled - False Organize. Enabled = False Now. Enabled = False Now.BackColor = &H8000000F End Sub Sub DeletePlay(RowNum. As integer) If Playlist(0). Rows <= 2 Then Playlist (l), row = 1 For i = 0. To 8 UndoText(i) = Playlist(1). TextMatrix(l, i) Next i ClearPlayList Else PlaySongs = PlaySongs - SongsTime = SongsTime - CLng(Val (Playlist(0). TextMatrix(Row Nun, 0))) timebox. Text = Format (TimeSerial(0, 0, SongsTime), "hh:mm:ss") NumSongs. Text = PlaySongs Playlist (O). Removeltem Row Num Playlist()). Removeltem Row Num

: End. If End Sub Sub Expand ListButs() On Error Resume Next ... Dim X As Integer Dim But Width (9) As integer Dim Butleft (8) As Integer But Width (1) = 24.50 But Width (2) = 1960 ... But Width (S) = 690 But Width.(4) = 1630 Butwidth(s) = 1000 But Width (6) = 1450 But Width (7) = 1 150 But Width.(8) = 080 Butleft(2) = 4.410 But Left(3) = 500 Butleft(4) = 6730 But Left(5) = 7730 Butleft(6) = 980 Butleft(7) = 10330 But Left(8) = 1 40 For X = 1 To 8 SearchCat(X). Width = But Width(X) + (HeadExpand "44.5) Next X For X = 2 To 8 Search Cat(X). Left = SearchCat(X - 1).Left + SearchCat(X - 1),Width - 15 MOAEC MASTER CODE (page 35) Sunspot Software and Graphics 303-805-7637 5,969.283 87 88

Next X End Sub Sub Formatheaders() 'Expands the headers of the spreadsheets to match screen width On Error Resurne Next Playlist(0). FormatString = " Then song length = ValPlaylist(0).TextMatrix (l, 0)) Playlist (0) row = } Play list (1).row = 1 Playlist (0). BackColorSel Playlist (0). Cell BackColor Playlist (0). ForeColorSel = Playlist(0). CellForeColor Playlist ( ). BackColorSet = Playlist()). Cell BackColor Playlist () }. ForeColorSe) = Playlist(). CellForeColor Screen}.cursong(OtherChannel). Text = Playlist (0), TextMatrix (l, l) Screen}.cursong (OtherChannel). Back Colors Playlist(0). CeliBackColor Screen 1. Text (OtherChannel). Text = Format (TimeSerial(0, 0, song length2), "hh:mmiss") ScreenlTimeElapsed(OtherChannel). Text = Format(TimeSerial(0, 0, 0), "hh:mm:ss") For X = 0. To 8 - Screen). Current Song Expanded(OtherChannel). TextMatrix(), X) = Playlist(l).TextMatrix(), X) .. Screen) CurrentSongExpanded(OtherChannel). CellBackColor = Playlist(1). CellBackColor Screen 1. Current Song Expanded(OtherChannel). BackColorSel = Playlist(1). CellBackColor Screen l.current SongExpanded(OtherChannel). ForeColorSel = Playlist(1). CellForeColor Next X Datal. Recordset. Close Else Screenl.cursong(OtherChannel). Text = " Screen cursong(OtherChannel). BackColor = &H80000009 Screen Text (OtherChannel). Text = Format (TimeSerial(0, 0, 0), "hh:mm:ss") Screen 1 TimeElapsed.(OtherChannel). Text = Format (TimeSerial(0, 0, 0), "hh:mm:ss") End If Screen 1. PlayLab(OtherChannel). Visible = False Screen). Quelab(OtherChannel). Visible = True Exit Sub errorhandler: MOAEC MASTER CODE (page 37) Sunspot Software and Graphics 303-805-7637 5,969.283 91 92

Exit Sub End Sub Private Sub AliSpeeds Click() AllSpeeds. Visible = False AliSpeeds. Enabled = False End Sub Private Sub Cancel SubScreen Click() CancelSearch - True End Sub Private Sub ENTERKEY_Click() If searchfield, Wisible - True Then BeginSearch. Set Focus 'Send Key's "{end." Send Keys" (enter;" Else TimeOK. Set Focus Send Keys" enter;" End If End Sub rivate Sub Exit System. Click.( ) response = MsgBox ("Are you sure you want to exit the system'', 4) If response = vb No Then Exit Sub Eise Exit Button Pushed = True Endia is End If End Sub

Private Sub Form Got Focus() In Ero Resume Nex Screen2. DD Group = "Screen." End Sub Private Sub For in Query Unload(Cancel As Integer, UnloadMode AS Integer) Dim Msg' Declare variable. If Exit Button Pushed - False Then Msg = "Do you really want to exit the application?" Else EndtAll ExitButton Pushed = True End If End Sub Private Sub Form Resize() MOAEC MASTER CODE (page 38) Sunspot Software and Graphics 303-805-7637 5,969.283 93

If WindowState = 2 Then Screen.WindowState = 2 Recorder. Window State = 2 Head Expand = 0 Call Formatheaders Call Expand ListButs Head Expand = (Screen2. Width - ) 1565) 443 Cai Formatheaders Call Expand ListButs lf ExpandList. Caption = "EXPAND" Then Picturel. Left = 6720 Picture. Width = Screen. Width - 6830 SinglePlayTime. Left = Screen. Width + 100 Label5. Left = Screen. Width 100 Labell. Left = 440 Else Picture Left = 0 Picture Width = Screen. Width - 95 Playlist(1). Left = 0 SinglePlay Time. Left = 4800 Label5 left - 6:40 Label.Left = 0.4 " Picture. Width End If Picture}. Top = 0 Picture4 Height = Screen. Height - 6290 Picture. Width = Screer. Width - 95 searchlist. Width = Picture4, Width - 100 search list. Height = Picture4 Height - 600 For X = OTC 4 Screen Show X). Top = Screen. Height - ) 155 Next X undo. Top = Screen. Height - 1)55 Help. Top = Screen. Height - 55 SavePlay. Top = Screen. Height - 1490 Play Burton. Top = Screer. Height - 1490 loadPlay. Top = Screen. Height - 995 Now Top = Screen. Height - 995 ScreenShow (O). Left = 0.3 1 "Screen. Width For X = To 4 Screen Show(X). Left = ScreenShow(X - i). Left - 1200 Next X undo. Left = Screen. Width - 2025 Help. Left = Screen. Width - 2985 Label2. Left = 0.4 "Screen. Width search left = Screen. Width - 455 CrSrch left = Screen, Width - 2175 Playlist(0). Width = Picturel. Width - 240 Playlist(). Width = Screen. Width Else Head Expand = 0 maxed = True MOAEC MASTER CODE (page 39) Sunspot Software and Graphics 303-305-7637 5,969.283 95

Call Formatheaders Call Expand ListButs Head Expand = (Screen2. Width - i565) # 340 Cal Expand ListButs Call Formatheaders If ExpandList. Caption = "EXPAND" Then Picture Left = 6720 Picture. Width = 485 Playlist(1). Left = 120 Playlist(0). Left = 20 Label. Left = 440 Eise Picture Left = 0 Picture, Width = 1535 Playlist (). Left = 0 Playlist(0). Left = 0 Label. Left at 4200 End if SinglePlayime, left = 4800 LabelSLeft = 6.O Picture). Top = 0 Picture4. Height = 27.75 Picture. Width = } Searchist. Width = searchlist. Top = 480 searchlist. Height = 2.752 For X = OTo Screen Show (X). Top = 7800 Next X undo. Top - SOC

Help. Top = 7800 Load Play. Top = 756C Now Top = 80.40 SavePlay. Top = 80.40 Play Button. Top = 75.60 Label. Left = 4080 ScreenShow(O). Left si S600 For X = To 4. Screen Show (X). Left = ScreenShow(X - 1). Left - 1200 Next X undo. Left = 95.40 Help. Left = 8580 Search. Left = 6840 CISrch, Left = 92.40 Playlist(0). Width = Picturel. Width - 240 Playlist()). Width = 535 Endf Exit System.Left = undo. Left - 975 Exit System. Top = undo. Top End Sub Private Sub AddList Click(Index As Integer) Dim i AS Integer Dinj As Integer w Din oldcolor, oldcolor, oldcolors As Long MOAECMASTER code (page 40) Sunspot Software and Graphics 303-805.7.637 5,969.283 97 98

Dim oldtime As Integer On Error GoTo errorhander delete.Enabled a True Expand List. Enabled = True SavePlay. Enabled = True Commandl.Enabled = True Rind Mix. Enabled = True If isNull (channel) Then channe = 1 OtherChannel = 2 End If MousePointer = ll 'select the text from the search list Now BackColor = &HFF& Now Enabled = True PlayButton. Enabled = True PlayButton BackColor = &HFF8080 undo. Enabled = True Undo went = 0 If Playlist(0). Rows = Then numRow's = 0 Else SavePlayList End if If searchlist. Rows > = Then "if the PICK button is pushed If Index = 1 Then If Sellist = Then PlaySongs = Play Songs - zed - zed - For i = 0 To S

selsong(i) = searchlist. TextMatrix (searchlist.row, i) Played Songs(l, zed, i) = searchlist TextMatrix(searchlist.row, i) Next Played Songs ... zed,9} = searchlist.Cell BackColor Playlist (O). Addltem selsong (0) & Chr(9) & Selseng(l) & Chr(9) & selsong(2) Playlist( ). Additem seisongs) & Chr(9) & Selsong(l) & Chr(9) & Selsong(2) & Chr(9) & selsong(3) & Chr(9) & selsong (4) & Chr(9) & Selsong(5) & Chr(9) & Selsong(6) & Chr(9) & selsong(7) & Chr(9) & selsong(8) 'add a song to the total to be played NumSongs. Text = PlaySongs Playlist (0) row = Playlist(0). Rows - 1 Playlist(1).row = Playlist()). Rows - 1 'add the song time to the play time box SongsTime = SongsTime + CLng(Val(searchlist. TextMatrix(searchlist row, 0))) timebox. Text = Format(TimeSerial(0, 0, SongsTime), "hh:mm:ss") For z = 0 To 2 Playlist(0). Col = z Playlist(0). Cell BackColor - searchlist. CellBackColor Playlist(0). BackColorSel= searchlist.Cell BackColor Playlist(0). ForeColorSel F searchlist.CellForeColor e Next 2 MOAEC MASTER CODE (page 4) Sunspot Software and Graphics 303-305-7637 5,969.283 99 100

For z = 0 TO 8 Playlist()). Col = z Playlist(l)..CellBackColor a searchlist.CellBackColor Playlist()). BackColorSel = searchlist.CellBackColor Playlist(1). ForeColorSei = searchlist.CellForeColor Nextz End. If "if the NEXT button is pushed Elself index = 0 Then "if the searchlist is selected If SeList = 1 Then zed = zed -- 1 For i = 0. To 8 selsong(i) = searchlist. TextMatrix(searchlist.row, i) Played Songs(l, zed, i) = searchlist. TextMatrix(searchlist.row, i) Next Played Songs(, zed, 9} searchlist.CellBackColor "if the is only one row in the playlist (fixed top) If Playlist(0). Rows = Then Playlist (O). Rows = Playlist(0). Rows - 1

Playlist(1). Rows = Playlist ( ). Rows - 1 NumSongs. Text = PlaySongs time = Cling(Val (searchlist. TextMatrix(searchlist.row. O))) SongsTime = SongsTime + CLng(Val(searchlist. TextMatrix(searchlist.row, O))) timebox. Text = Format (TimeSerial(0, 0, SongsTime), "hh:mm:ss") For j = 0 To 2 Playlist(0). TextMatrix (1.j} = selsong(j) Playlist (0).row = 1 PlaylistO). Col Playlist (0). Cell BackColor = searchlist.CellBackColor Piayist (0). BackColorSel = searchlist. Cell BackColor Playlist (0). ForeColorSe = searchlist. CellForeColor Next For j = 0 To 8 Play list ( ). TextMatrix , j) = selsong() Playlist ().row = 1 Playlist()). Col = i Playlist(1). Cell BackColor = searchlist. CellBackColor Playlist (l). BackColorSe! = searchlist.CellBackColor Playlist(1). ForeColorSe = searchlist.CellForeColor Next j Else "if the is more than one row in the playlist Play list (O). Rows = Playlist(0). Rows + 1 Playlist ). Rows = Playlist(1). Rows PlaySongs = PlaySongs - ) NumSongs. Text = PlaySongs For i = Playlist(0). Rows - 2 To Step-1 For X = 0. To Playlist(X).row = i oldcolor = Playlist(X). Cell BackColor Playlist(X). RowPosition(i) = i : ) MOAEC MASTER CODE (page 42) Sunspot Software and Graphics 303-805-7637 5,969.283 101 102

Playlist(X).row = i Next X For j = 0 To 2 Playlist(0). Col = } 'change color Playlist(0). CellBackColor = oldcolor Playlist(0). BackColorSel=searchlist.CellBackColor Playlisi(0). ForeColorSel= searchlist.CellForeColor Next j For j = 0 To 8 Playlist(1). Col =j 'change color Playlist()). CellBackColor = oldcolor Playlist(1). BackColorSel = searchlist.Cell BackColor Playlist(1). ForeColorSel = searchlist.CellForeColor Next j Next FOI = 0. To 8 selsong (i) = searchlist. TextMatrix (searchlist.row, ) Next For j = 0 To 2 Playlist.0). TextMatrix (l, j) = selsong(j) Playlist (0), row = 1 Playlist (O). Coi = j. Playlist(0). Cell BackColor = searchlist.Cell BackColor Play list (O). BackColorSet = searchlist. CellBackColor Playlist ((). ForeColorSel = searchiist. CellForeColor Next For j = 0 To 8 Playlist? 1), TextMatrix (), j) = selsong(j) Play list()).row = } Playlist()). Col = i Playlist()). Celi BackColor = searchlist.CellBackColor Play list ( ). BackColorSel = searchlist.CellBackColor Playlist (). ForeColorSei - searchlist.CellForeColor Next Songs Time = SongsTime - CLng Val(searchlist. TextMatrix(searchlist.row, 0))) timebox. Text = Format (TimeSerial(0, 0, SongsTime). "hh:mm:ss") End if Else "if the playlist is selected then just move the song to the top If Playlist (0). Rows - Then MsgBox "the Song you want to move is already next." Else X = Playlist (()), row For Y = OTo 8 selsong(Y) = Playlist(1). TextMatrix (X, Y) Next Y oldcolor2 = Playlist(0). CellBackColor oldcolor3 = Playlist(0). CellForeColor MOAEC MASTER CODE (page 43) Sunspot Software and Graphics 303-305-7637 5,969.283 103 104

For i = X - 1 Tol Step Playlist(0).row = i Playlist(1).row = i oldcolor = Playlist(0). CellBackColor For j = 0 To 2 Playlist(0), TextMatrix(i+ 1,j) = Playlist(0). TextMatrix(i,j) Playlist(0).row = i + 1 Playlist(0). Col = j 'change color Playlist (0), CellBackColor = oldcolor Next j For j = 0 To 8 Playlist(1). TextMatrix(i+ 1,j) = Playlist(1). TextMatrix(i,j) Playist(1).row = i + 1 Playlist()). Col =j 'change color Playlist()). CellBackColor = oldcolor Next Next i For j = 0 To 2 Playist? () TextMatrix (, ) = selsong(j) Playlist (0) row = } Playlist (0). Col = i Playlist(G). Cell BackColor = oldcolor2 Playlist (O). BackColorSel = oldcolor? Playlist(0). ForeColor Sel = oldcolor.3 Next For j = 0 To 8 Playlist(1). TextMatrix().j) = selsongG) Play list ).row = } Playlist()). Col = i Play list ( ). Cell Back Color = oldcolor2 Play is . . Bacau of Se) - oldekior Playlist()). ForeColor Sei = oldcolor3 Next End if End if 'searchlist. Renovel ten searchlist. Row Position End if Endf MousePointer = 0 UndoRow = Playlist(0).row Call Check OnDeck Exit Sub errorhandler: MsgBox ("Sory, there was a problem with the song data...unable to add to playlist") MousePointer = 0 End Sub Private Sub backup Click() lf searchfield. Visible = True Then searchfield. Set Focus Send Key's "{end}" MOAEC MASTER CODE (page 44) Sunspot Software and Graphics 303-305-7637 5,969.283 105 106

Send Key's "{backspace}" Send Keys" tab}" Else Timelinput. Set Focus Send Key's "{end}" Send Key's "{backspace}" Send Key's "{tab}" Endlf End Sub Private Sub BeginSearch Click() "loop to search the Access database Dim position, final As Long Dim flag. As Boolean Dim selection. As String Dim Mcat! As String Dim string2 As String "255 Dim SelTag As String Dim tempfield 9). As String Dim final field(0) As String "SaveSearch List On Error GoTo errorhandler keyboard. Visible = False delete. Enabled - False AddList(). Enabled = False Addlist (O). Enabled = False Cance Search - False ... If search flag >= 0 Then i. MsgBox. "Sorry, you have already narrowed your search to ten categories '.'" MousePointer = 0

searchfield. Text = '' search. Enabled = True For i = To 8

Search Cat (). Enabled = False Next Add List 0. Enabled = True Add List ). Enabied = True CirSrch. Enabled - True Organize. Enabled = True Exit Sub End If Undov ent - ) SaveSearchList undo Enabled - True flag = True SearchCats(0, search flag) = colnurn SearchCats(), searchflag) = searchfield. Text csearch (searchflag). Caption = searchfield. Text MousePointer = 1 'search database for first search lf searchflag = 0 Then selection = "*" & Trim(searchfield, Text) & "" If colnun > = 4. Then MOAEC MASTER CODE (page 45) Sunspot Software and Graphics 303-805-7637 5,969.283 107 108

Data2. RecordSource = Trim (Str(colnum)) Data2...Refresh Data3. Refresh Data2...Recordset. MoveLast Data3.Recordset.MoveLast Data2...Recordset.MoveFirst Data3.Recordset.MoveFirst Data2...Recordset.Findfirst "Label LIKE" & selection if Data2...Recordset. NoMatch Then MsgBox ("Sorry....Could not find that entry.") flag = False Else SelTag = Data2...Recordset. Fields("Tag") selection = "& SelTag & " End if End if Main Loop: DoEvents Datal. RecordSource = "LP Complete Music Guide"

Datal. Refresh Data2. Refresh DataS Refresh Datal. Recordset. MoveLast Dalla3. Recordset.Mov elast Datal Recordset. MoveFirst DataS. Recordset. Move First

Data). Recordset. Findi last Cat) & " LIKE" & selection lf Datal Recordset. NoMatch Then flags False final = Dala Recordset. Absoiute Position Data Recordset. MoveFirst lf flag = True Then Search Songs = searchlist Rows - 1 Do Until position = final DoEvents Data Recordset. Find Next Catl & " LIKE" & selection If Data Recordset. NoMatch Then position = Datal. Recordset. AbsolutePosition Eise position = Data Recordset. AbsolutePosition 'assign song color to tracking array Data3. Recordset. MoveFirst flsnu (Data Recordset. Fields("Mainl")) Then Mcat = "none found" MnCatColor(SearchSongs) = &H80000005 Else Mcat = Data Recordset. Fields("Main!") DataS. Recordset. Findfirst "Mainl = "& Mcatl & " MnCatColor(SearchSongs) = Val(DataS. Recordset. Fields("colorlD")) End If MOAEC MASTER CODE (page 46) Sunspot Software and Graphics 303-805-7637 5,969.283 109 110

"find the abbreviations for each category finalfield(9) = Val(DataS. Recordset.Fields("colorlD")) If lsNull(Datal. Recordset. Fields("time")). Then finalfield(0) = 300 Else finalfield(0) = Datal. Recordset. Fields("time") End if if isNull (Datal.Recordset. Fields("Title")). Then finalfield(1) = "NL" Else finalfield(1) = Datal. Recordset. Fields("Title") End if If isNull(Datal. Recordset. Fields("Artist")). Then finalfield (2) - "NL" Else finalfield (2) - Datal. Recordset. Fields("Artist") End if lf isNull Datal. Recordset. Fields("Date")). Then finalfield(S) = "NL" Else finalfield (3) = Data. Recordset. Fields("Date") Endlf lf Isnui i Data}. Recordset. Fields("Mainl")) Then tempfield (4) = "NL" Else tempfield(4) = Datal. Recordset. Fields("Main!") End if If sNul) (Datal Recordset. Fields("Mstyle")) Then tempfield (5) = "NL" Else tempfield (5) = Datal. Recordset. Fields("Mstyle") End. If If souli (Data Recordset. Fields("Dype")). Then tempfield (6) = "NL" Eise tempfield (6) = Data). Recordset. Fields("Dype") End if If is Nui (Data). Recordset. Fieids "Speed")) Then tempfield() = "NL" Else tempfield(7) = Data}. Recordset. Fields("Speed") End If lf Isnull(Datal. Recordset. Fields("Energy")) Then tempfield(8) - " Else tempfield(8) = Data). Recordset. Fields("Energy") End if For X = 4. To 8 Data2...RecordSource = X Data2. Refresh Data2...Recordset. Movelast Data2...Recordset. MoveFirst Data2...Recordset. Find First "Tag = " & tempfield(X) & " finalfield(X) = Data2...Recordset. Fields("Label") MOAEC MASTER CODE (page 47) Sunspot Software and Graphics 303-305-7637 5,969.283 111 112

Next X searchlist. Additem finalfield(0) & Chr(9) & finalfield(1) & Chr(9) & finalfield (2) & Chr(9) & finalfield(3) & Chr(9) & finalfield(4) & Chr(9) & finalfield(5) & Chr(9) & finalfield(6) & Chr(9) & finalfield(7) & Chr(9) & finalfield(8) If isNull (finalfield(0)) Then - searchlist. TextMatrix(searchlist.row, 0) = 300 Endf searchlist.row = SearchSongs + 1 For z = 0 To 8 searchlist, Col = Z. searchlist.CellBackColor = MnCatColor(SearchSongs) Next 2 searchlist. BackColorSel = MnCatColor(SearchSongs) searchlist. ForeColorSel a searchlist. ForeColor SearchSongs = Search Songs + 1 search. Caption = "Narrow Search Results" search flag = End if nove to the next data row in data base

If CancelSearch = True Then Datal. Recordset. Close Data2...Recordset. Close Datas. Recordset. Close MousePointer - 0 SearchScreen. Visible = False searchfield. Text = " search. Enabled = True For i = 1 To 8 Search Catti). Enabled = False Next Add List (O). Enabled True AddList()). Enabled = True CrSrch, Enabled at True Organize. Enabled = True Exit Sub End if Loop if colnuIn a 4 Then Call CheckMain(Cat) If MainCount < 8 Then GoTo Main Loop End if MainCount = 0 End If If SearchSongs > 0. Then flags True Stoppoint: If flag = False Then MsgBox "Your entry was either mispelled or is not found in your current Music Library, Please go to Screen 4 and review and select music from the LP MOAEC Music Library." MousePointer = 0 Data Recordset. Close w Data2...Recordset. Close MOAEC MASTER CODE (page 48) Sunspot Software and Graphics 303-305-7637 5,969.283 113 114

Data3. Recordset. Close keyboard. Visible = True searchfield,Text = " searchfield. SetFocus Exit Sub End if Data.Recordset. Close Data2...Recordset. Close Data3. Recordset. Close

Elself searchflag < 10 And searchflag <> 0. Then "if searchlist is already full, narrow the field For j = 1 To searchflag i = 1 Do While i <= searchlist.Rows - lf searchist. Row's <= 2 Then Exit Do If Search Cats(0,j) <> 9 Then result = lnStr(1, searchlist. TextMatrix (i. Search Cats(0,j)). Search Cats(1,j), 1) If result = 0. Then searchlist, row = i Searchist. Renoveltem searchlist row SearchSongs = SearchSongs - 1 Else is -- End if Elself Search Cats(O.j) = 9 Then result = lnStr( ), searchlist TextMatrix (i, Search Cats(0,j)), Search Cats(1,j), 1) fresult = 0 Then searchlist.row = i searchlist. Rei () 'etern searchist, row SearchSongs = SearchSongs - 1 Else i = - Endlf End if Loop Next search flag - search flag + 1 Endlf 'once the search is complete, hide the screen MousePointer = 0 SearchScreen. Visible = False searchfield. Text = " search. Enabled = True For i = ). To 8 Search Cat (i). Enabled = False MOAEC MASTER CODE (page 49) Sunspot Software and Graphics 303-305-7637 5,969.283 115 116

Next i Add List(0). Enabied = True AddList(1). Enabled = True CrSrch. Enabled - True Organize. Enabled = True Exit Sub errorhandler: MsgBox "Sorry, There was an error accessing music database." & Chr(13) & "Please make sure the database is properly installed or" & Chr(3) & "contact Looney Productions." MousePointer = 0

Search Screen. Visible - False searchfield. Text = " search. Enabled = True For i = ). To 8 Search Cat(i). Enabled = False Next i Addilist(0). Enabled = True AddList(1). Enabled - rue CrSrch. Enabied = True Organize. Enabled = True Exit Sub End Sub Private Sub Cancel Click() keyboard Visible - False Search Screen. Wisible - False searchfield. Text = " search. Enabled as True For i = to 8 Search Cat (i). Enabled - False Next CancelSearch = True End Sub Private Sub Category Click(Index. As Integer) Dim i As integer Dimj As Integer Dim flag As Boolean Dim TempCat, TempCat? As String Dimc As Integer Mix. BackColor = &H8OOOOOOF Play Time. BackColor = &H8000000F Mix. BackColor = &H 8000000F For i = 0. To 3 SongSpeed(i). BackColor = &H8000000F AllSpeeds. BackColor = &H8000000F

Next i

For i = 0 To MOAEC MASTER CODE (page 50) Sunspot Software and Graphics 303-805-7637 5,969.283 117 118

csearch (i). Caption = " Next csearch (0). Caption = "none" searchflag = 0 SelList = 0 SelCat) = Categoryl (index). Tag If Index = 24. Then Cat 1 = "Drype" Elsef Index = 25 Then Catl = "Main" Else Catl = "Main" End If SubCol = "Sub" "if clicked twice, goto category 2 screen and clear time options If Index = 23 Then Call ListFavits Exit Sub End If lf (catl count = }) And (Index - cliktrak) Then Cal titlefim Main Cat Color = Category (index). BackColor Category(0). BackColor = CatColor Category(1). BackColor = CatColor Category(0), Caption - Category l(Index). Tag FavHitslab). Caption = Category (Index). Tag Fay Hilsab. Back Color = CatColor Fay Hits ab2. Back Color = CatColor Category(j). Visible = False catl count = 0 For X = 0 To 23 Category2(X). Caption = " Category2(X). BackColor = &H 8000000F i = - 1 -- Next X i. 'disable speed buttons since switching to screen 3 For i = 0 To Song Speed count - ) AllSpeeds. Enabled = False SongSpeed(i) Enabled = False SongSpeed(i). BackColor = &H8000000F AllSpeeds. BackColor = &H8000000F Next i For i = 0 To S Favhits(i). BackColor = Cat Color Next Mix. Enabled = False Play Time. Enabled = False Mix.BackColor = &H8000000F PlayTime. BackColor = &H8000000F 'change screen lights to screen 3 red r For i = 0. To 4 Screen2. Screen Show(i). BackColor = &H8000000F MOAEC MASTER CODE (page 51) Sunspot Software and Graphics 303-805-7637 5,969.283 119 120

Screen2. ScreenShow(i). ForeColor = &H80000012 Next i flindex <> 23 Then Screen2. ScreenShow(2). BackColor = &HC0& Screen2 ScreenShow(2). ForeColor = &H8000000E catl screen. Visible F False FavhitsScrivisible = False cat 2screen. Visible = True End if For i = 0. To 8 searchdate(i). BackColor = CatColor Next i "Make sure the static categories match the button findex = 20. Then subcatcount = 9 subcattotal - 9 Final Cats(7) = StaticCats(9) Final Cats(8) = StaticCats(10) Final Cats(9) = StaticCats() ) Elsef Index = 8. Then subcat count F 8

subcattotal = 8 Final Cats(7) = StaticCats(8) Final Cats(8) = StaticCats (1) Elseif index = ). Then subcatcount - 7 Subcat total = 7 FinaCats (7) = StaticCats (7) Else subcatcount = 6 subcat Ya! = 6 Endlf make the temporary Suhcats array with tags For X = 1 To subcatiota DoEvents if CancelSearch - True Then GoTo stopme Data. RecordSource - "Subs" Data2 Refresh Datas. Refresh Data2. Recordset. Move Last Datas. Recordset.Movelast Data2. Recordset. MoveFirst DataS.Recordset. MoveFirst Data2. Recordset. Find First "Label = " & FinalCats(X) & " If Data2...Recordset.NoMatch Then flag = True Else SubCats(X) = Data2. Recordset. Fields ("Tag") Endf Next X

MOAEC MASTER CODE (page 52) Sunspot Software and Graphics 303-305-7637 5,969.283 121 122

FIND THE SONG CATEGORY TAG THAT MATCHES THE BUTTON For X = 1 To subcattotal DoEvents If CancelSearch = True Then GoTo stopme lf SelCati = "Energy" Then SelCat, as "EN" Eise Data2...RecordSource = 4 Data2. Refresh Data3 Refresh Data2...Recordset. MoveLast DataS.Recordset. Movelast Data2...Recordset.MoveFirst Datas. Recordset.MoveFirst Data2. Recordset.Findfirst "Label = "& SelCatl & " If Data2...Recordset. NoMatch Then flag = True Else SelTag = Data2...Recordset. Fields("Tag") --

SelCat) = SelTag Men Cat - SelTag End if End If Next X

MainSubloop'fill secondary category buttons with text from data DoEvents lf Cance Search = True Then GoTo stopme Data. Refresh Data Recordset voveLast Datal. Recordset. MoveFirst MousePainter = } Loop Reset: i = () For i = ) To Data). Recordset. Record Count if cat matches the first button, type cat in the screen3 buttons 'that is if cat is not blank If U Case(Datal. Recordset. Fields("Mainl")) = UCase(Trin(SelCath)) And (Datal. Recordset. Fields(SubCol) <>") Then lf sNui (Data. Recordset. Fields(SubCol)) Then i = j + ) GoTo Loop Reset End If "and if it isn't already on a button flag = False 'find new subcategories not default from database subcat count = subcartotal For i = 1 To subcat count If Datal Recordset. Fields(SubCol) = SubCats(l) Then flag = True End if MOAEC MASTER CODE (page 53) Sunspot Software and Graphics 303-305-7637 5,969.283 123 124

Next if flag = False Then SubCats(subcatcount + 1) = Datal Recordset. Fields(SubCol) subcattotal = subcattotal -- End If End. If Data.Recordset. MoveNext Next j Call CheckSub(SubCol) lf SubCount < 1 Then GoTo MainSubLoop SubCount = 0 For X = 1 To subcattotal Data2...RecordSource = "Subs" Data2. Refresh Data3. Refresh Data2. Recordset. MoveLast Data3. Recordset. Movelast Data2...Recordset. MoveFirst Datas. Recordset. MoveFirst

Data2. Recordset. Find First "Tag = "& SubCats(X) & " Next X 'sort Subcats array For t c subcattotal To Step. DoEvents if Cance|Search = True Then GoTo stopme TempCat = FinalCats( - ) TempCa2 = SubCats?t - 1) c = StrCompt I empCat, Final Caist) if c = . Then Final Catsit - } = Final Cats (t) SubCats(t - l} = SubCats(t) Final-Cats(t) = TempCat SubCatsit) = TempCat a subcattotal - End If Next 'fill buttons with the finalcats a Tay For X = 0 To subcattotal - ) Category2(X). Caption = Final Cats(X - ) Category2(X). BackColor = Category (Index). BackColor i = j - ) Next X

'make the last of the buttons (if any) blank Do While i <= 23 Category2(i). Caption = Category2(i). BackColor = &H8000000F i = i - MOAEC MASTER CODE (page 54) Sunspot Software and Graphics 303.80s-7637 5,969.283

Loop stopme: Data2...Recordset. Close Data3.Recordset. Close catl screen. Visible = False cascreen. Wisible a True MousePointer = 0 'reset color of speed buttons CancelSearch = False Exit Sub End If 'otherwise assign button caption to primary category variable cliktrak = Index 'enable speed selection buttons CatColor = Category (Index). BackColor PlayTime. BackColor = CatColor Play Time. Enabled = True Mix-Enabled = True Mix. BackColor F Cat Color

For i = 0 To SongSpeed.count - 1 AllSpeeds. Enabled = True Song Speed(i). Enabled = True SongSpeed(i). BackColor = Cat Color Ai Speeds. BackColor = Cat Color Next i cat count F End Sub Private Sub Category Click (index AS linteger) Dim flag. As Boolean Dinn i As integer Dim tempfield 9). As String Dim finalfield(10) As String If Category2(Index). Caption = But Mem Then MsgBox ("You just picked that button...Please pick another.") Exit Sub End if But Mem = Category2(Index). Caption Catl = "Main" flag - False Category ().Caption = Category2(Index). Caption Category (l). Visible = True If Category2(index). Caption = "Favorite Hits" Then ListFavhits Exit Sub End If If Category2(index). Caption = "ENERGY" Then SubCol = "Energy" 'fill search screen with selections from the categories MousePointer = 1 MOAEC MASTER CODE (page 55) Sunspot Software and Graphics 303-305-7637 5,969.283 127 128

If SelCat) = "SPMIX" Or SelCat) = "Special Mixes" Then Cat - "Main3" SeCa = 'SPMEX" Elseif SelCat 1 = "EN" Or SelCat: = "Energy" Then Cat = "Main2" SeCat) = "EN" Elself SelCatl = "EL" Or SelCat) = "Easy Listening" Then Cat) = "Mstyle" SelCat) = "E" Elself SelCat1 = "Special Dance" Or SelCat) = "SPD" Then Catl = "Dype" SeCatl = "SPD" End If Mainloop: DoEvents Data.Refresh Data3. Refresh Data Recordset. MoveLast DataS. Recordset.Move Last va... Data). Recordset. MoveFirst

Data3. Recordset.MoveFirst

For i = To Data). Recordset. Record Count

if the database field matches search criteria. write it to the searchlist - }})If Then U Case (Data Recordset. Fields(Catl) = SelCatl And UCase(Data Recordset. Fields(SubCol)) = UCase(Trim(SubCats(Index Datas Recordset. MoveFirst lf is Null Datal. Recordset. Fields("Mainl")). Then Mcat) = "none listed" Nfn CatColor(SearchSongs) = &H80000005 Eise M1 cat F Data . Recordse. eidst "wait. ") Datas Recordset. Find First "Main = "& Mcat) & " MnCatColor(SearchSongs) = Val (Data3. Recordset. Fields("colorlD")) final field (9) = Val (DataS. Recordset. Fields("colorID")) If isNui Data Recordset. Fields("time")) Then finalitield 0) = 300 Eise finalfield(0) = Data). Recordset. Fields("time") End if iflsnu (Data Recordset. Fields("Title")). Then finalfield()) = "NL" Eise finalfield, ) = Dalai.Recordset Fields("Title") End if If lsNull (Data Recordset. Fields ("Artist")). Then finalfield(2) = "NL" Else finalfield (2) = Data). Recordset. Fields("Artist") Endlf If isNulleDatal. Recordset. Fields("Date")). Then final field (3) = "NL" MOAEC MASTER CODE (page 56) Sunspot Software and Graphics 303-305-7637 5,969.283 129 130 i

Else finalfield (3) = Datal Recordset. Fields("Date") End If lf isNull(Datal Recordset. Fields("Mainl")). Then tempfield(4) = "NL" Else tempfield(4) = Datal. Recordset. Fields("Mainl") Endlf lf isNull(Datal Recordset. Fields("Mstyle")). Then tempfield (5) = "NL" Else tempfield (5) = Datal. Recordset. Fields("Mstyle") End if If isNull (Datal. Recordset. Fields("Drype")). Then tempfield(6) = "NL" Else tempfield(6) = Datai.Recordset. Fields("Dtype") End if if isNull (Data Recordset. Fields("Speed")). Then tempfield(7) = "NL" - - Else tempfield(7) = Datal. Recordset. Fields("Speed") End if flsnu (Datal. Recordset. Fields("Energy")) Then tempfield.(8) = " Else tempfield(8) = Datal Recordset. Fields("Energy") ... Endf -i. For X = 4. To 8 Data. RecordSource = X Data2 Refresh Data2. Recordset.Mov elast Data2...Recordset. MoveFirst Data. Recordset. FindEirst "Tag = " & tempfield(X) & " finalfield (X) = Data2...Recordset. Fields("Labe") Data2. Recordset. Close New X searchlist. Addltern finalfield(0) & Chr?9) & finalfield()) & Chr(9) & finalfield (2) & Chr(9) & finalfield(3) & Chr(9) & final field 4) & Chr(9) & finalfield (5) & Chr(9) & finalfield (6) & Chr(9) & finalfield(7) & Chr09) & finalfield(8) Stime(searchlist.row) = Datal. Recordset. Fields("time") flag = True SearchSongs = SearchSongs - 1 search. Caption = "Narrow Search Results" search flag - 1 End if searchist.row - SearchSongs For z = 0. To 8 searchlist. Col = 2 searchlist.Cell BackColor = finalfield(9) Next 2 searchlist. BackColorSel= finalfield (9) searchlist.ForeColorSe = searchlist. ForeColor

MOAEC MASTER CODE (page 57) Sunspot Software and Graphics 303-305-7637 5,969.283 131 132

End. If

"move to the next data row in data base Datal. Recordset. MoveNext Next i If Category2(Index) Caption <> "ENERGY" Then Call CheckSub(SubCol) If SubCount Kll Then GoTo MainLoop End if SubCount = 0 SubCol = "Subl" Data Recordset. Close Data3.Recordset. Close MousePointer = 0 Add List(O). Enabled - True Add List (l). Enabled = True CrSrch Enabled = True Organize. Enabled = True lf flag = False Then MsgBox "No matches were found for your search. Please try again." Exit Sub Ed f

End Sub Private Sub ClrSrch Click.( ) "clear a terms off the search St Undov ent - ) SaveSearchlist

Cal ClearSearchList End Sub

Public Sub Command Click() Dim answer As variant answer = MsgBox ("Are you sure you want to delete the current play list?", 4, "Clear Play List") if answer = wbao Then Exit Sub Else Undo Event = 0 SavePlay list ClearPlayList Rindvlix Enabled = False If maxed = True Then Picture left = 60 Picturel. Width = Screen, Width . 6830 SinglePlayTime left = Screen. Width - 100 Label5 left = Screen. Width -- 100 labell. Left = 440

Else Picture. Width = 4.695 Picture left = 670 MOAEC MASTER CODE (page 58) Sunspot Software and Graphics 303-305-7637 5,969.283 133 134

SinglePlayTime. Left = 4680 Label5.Left = 6240 Label.Left a 440 End If Expand List. Left = 120 ExpandList. Caption = "EXPAND" AddList(0). Left = 020 AddList()). Left = 1730 RindMix.Left = 2430 delete. Left = 3070 Command Left = 3840 Playlist(0). Width = Picturel. Width - 240 Playlist(0). Left = 120 Playlist(1). Visible = False End If cal screen. Visible F True Cal Check On Deck End Sub

Private Sub DataCreate Click.( ) "user creates his own song lists and databases 'show a new form End Sub Private Sub datalock Click.( ) Din password As String password = inputBoxt "Please enter the database access password.") Datalocked False End Sub Private Sub delete Cick ( ) Dim answer. As String On Elio Golo errorhander If SongSelected = False Then MsgBox ("No song has been selected for deletion'''") Exit Sub End If answer = MsgBox ("Are you sure you want to delete the selected song?", 4, "Remove Song") If answer = vb Yes Then

If SeList = 2 Then Undo Event c () SavePlayList For i = 0. To 8 Undo Text(i) = Playlist(). TextMatrix (l, i) Next i If Expand List. Caption = "EXPAND" Then Playlist (1) row = Playlist (0).row UndoRow - Playlist (0) row t For i = 0 To 8 MOAEC MASTER CODE (page 59) Sunspot Software and Graphics 303-80S-7637 5,969.283 135 136

UndoText(i) = Playlist()). TextMatrix(Playlist(0).row, i) Next Call DeletePlay (Playlist(0) row) Else Playlist(0).row = Playlist(1).row UndoRow = Playlist()).row For i = OTo 8 Undo Text(i) = Playlist()). TextMatrix (Playlist(0).row, i) Next Call DeletePlay(Playlist().row) End If SongSelected = False Elsef SeList = Then UndoEvent = i SaveSearchList If searchlist Rows <= 2 Then Search. Caption - "Search Music Categories" For i = 0 To cSearch (i). Caption = " Next j Searchist Rova S = Call Formatheaders Searchlist. BackColorSel = Searchlist. BackColorFixed Searchlist. ForeColorSel= searchlist ForeColorFixed cSearch (0). Caption = "none" Search Songs = 0 search flag = 0 Searchist, Cear Searchlist. Back Color = &H8OOOOOOE Searchist. Row, S = } Addlist (O). Enabled = False Addlist ). Enabled it False CirSrch. Enabled = False Organize. Enabled - False Eise indower = 1 X = Searchist row, "For i = x. To searchlist. Rows - Stime(i) = Stime{i : ) "Next For i = OTo 8 UndoText(i) = searchlist. TextMatrix (X, ) Next Searchlist. Reinov eitem searchlist row SearchSongs = SearchSongs - End if End If Call CheckOnDeck undo. Enabled = True SongSelected = False Exit Sub Elseif answer wbNo Then MOAEC MASTER CODE (page 60) Sunspot Software and Graphics 3O3-805.737 5,969.283

Exit Sub End. If

errorhander: Now. BackColor = &H 8000000F Now, Enabled = False Play Button, Enabled = False PlayButton. BackColor = &H8000000F MsgBox "You have no songs to delete!" delete. Enabled = False End Sub

Private Sub Expand List Click() expand the playlist to display all information lf Expand List. Caption = "EXPAND" Then Cat Screen, Wisible = False Play list()). Visible = True Expandist Caption = "SHRINK." lf maxed = True Then Picture Left = 0 Picture. Width = Screen2 Width. 95

SinglePlay Time. Left = 4680 LabelSeft = 62.40 Play list (O). Left = 0 Playlist()), Left = 0 Label left = 0.4) Picturel. Width Ese Picture Width = 5 SO Picire left SinglePay Tims, left = 4680 lates. Left = 6.10 Playlist (O). Left = 0 Playlist()). Left = 0 Label. Left = 42OC Endf Expand List. Left = 20 - 6720 Add List (0). Left = 020 - 6720 Add List()). Left = 730 - 6720 Rnd Mix. Left = 2430 - 6720 delete, Left = 3070 -- 67 Commandl. Left = 3840 - 6720 Playlistil). Row Sel = Play list(0). Row Sei

Else lf maxed = True Then Picture Left = 6720 Picturel. Width = Screen. Width .6830 SinglePlay Time. Left = Screen. Width - 100 Label5.Left = Screen. Width + 100 MOAEC MASTER CODE (page 6) Sunspot Software and Graphics 303-305-763 5,969.283 139 140

Else Picture. Width = 485 Picturel Left = 6720 SinglePlayTime. Left = 4800 Label5.Left - 6500 Endlf Playlist(0). Left = 20 Playlist()). Left = 120 cat screen. Visible = True Playlist(1). Visible = False Expand List. Caption = "EXPAND" ExpandList. Left = 120 Add List(0). Left = 1020 Addlist()). Left = 750 Rind Mix.Left = 2430 delete. Left = 3070 Command left = 38.4 Playlist (0).Row Sel = Playist ( ). Row'Sel - Label Left = 440 End If Addist(0). Enabled = False Add List(i). Enabled = False End Sub Private Sub Fav Hits Click(Index As Integer) But Men = Fav Hits(Index). Caption Fay Hits Frn. Visible = True Fav Hits Lab Visible = True Fay Hits ab2. BackColor - Favits Lab BackColor FavhitsLab2, Caption = Fay Hits(Index). Caption lf Played Songs(1, , ) <> "Then Organize. Enabled = Frue For Z = To zed

searchlist. Addltem Played Songs( i. z. 0) & Chr(9) & Played Songs(l, Z, ) & Chr(9) & PlayedSongs(l, z, 2) & Chr(9) & Played Songs(1, 2, 3) & Chr(9) & Played Songs(), Z. 4) & Chr(9) & Played Songs(1, 2, 5) & Chr(9) & PlayedSongs(l, z, 6) & Chr(9) & Played Songs( !, Z, 7) & Chr(9) & Played Songs( , z, 8) Search Songs = Search Songs + 1 searchlist. row F Search Songs For X = 0. To 8 searchlist. Col = X searchlist.CellBackColor = Played Songs(). Z.9) Next X

CrSrch. Enabled = True Next Z. Else MsgBox ("Sorry...You have no song selections defined as favorite hits.") Endlf r End Sub MOAEC MASTER CODE (page 62) Sunspot Software and Graphics 303-305-7637 5,969.283 141 142

Private Sub Form Load() Dim i As integer Dim running As Boolean Screen2. WindowState = 2 maxed = True Data DatabaseName = App. Path & "\mydata.mdb." Data2. DatabaseName = App. Path & "wmydata.mdb." Data3. DatabaseName = App. Path & "\mydata.mdb" For j = 0. To 9 csearch (i). Caption = " Next i zed = 0 Speed = " channe Fl Search Songs = 0 PlaySongs = 0 Speed = "Any" Datalocked = True SongSelected = False Screen Show(l). BackColor = &HC0& 'assign buttons to color array for reference For i = OTo 35 MnCat Color (i) = Category 1(j). BackColor Next If Voice Activation = True Then If Not Is DDW in Running() Then running = Star DDW in() lf Not running Then MsgBox "Could not start dragon dictate", vbExclamation End End if End if DD. Attach - True lf FindVocabulary ("Moaec") And Not FindGroup("Moaec", "ver.0") Then On Error GoTo VocabAdd Delete Vocabulary ("Moaec") Endlf VocabAdd: If Not FindVocabulary ("Moaec") Then AddVocabulary "Moaec" Call AddGroup("Moaec", "ver 1.0") Call Add Group("Moaec", "Screenl") Call AddGroup("Moaec", "Screen2") Call AddOroup("Moaec", "Screen3") Call AddGroup("Moaec", "Screen4") Call AddWord("Moaec", "Screen2", "classical)", ") Call AddWord ("Moaec", "Screen2", "jazz", ") Call AddWord ("Moaec", "Screen2", "folk",") Call Add Word("Moaec", "Screen2", "oldies)", ") Call AddWord ("Moaec", "Screen2", "country)",") Call AddWord ("Moaec", "Screen2", "pop", ") Call Add Word ("Moaec", "Screen2", "soul)", ") Call Add Word ("Moaec", "Screen", "R and B", ") MOAEC MASTER CODE (page 63) Sunspot Software and Graphics 303-805-7637 5,969.283 143 144

Call Add Word("Moaec", "Screen2", "blues)", ") Call AddWord("Moaec", "Screen2", "calypso)", ") Call AddWord("Moaec", "Screen2", "disco)", ") Call AddWord("Moaec", "Screen2", "funk)", ") Call AddWord("Moaec", "Screen2", "rock)",") Call AddWord ("Moaec", "Screen2", "metal", ") Call AddWord("Moaec", "Screen2", "top 40)", ") Call AddWord("Moaec", "Screen2", "rap",") Call AddWord("Moaec", "Screen2", "reggae)",") Call AddWord("Moaec", "Screen2", "alternative)",") Call Add Word("Moaec", "Screen2", "ethnic", " Call AddWord("Moaec", "Screen2", "(religion",") Call AddWord("Moaec", "Screen2", "special events)",") Call Add Word ("Moaec", "Screen2", "funny",") Call AddWord ("Moaec", "Screen2", "easy listening)",") Call AddWord ("Moaec", "Screen2", "favorite hits)",") Call AddWord("Moaec", "Screen2", "special dance)",") Call AddWord ("Moaec", "Screen2", "Especial mixes)", " Call AddWord? "Moaec". "Screen2", "dance)",") Cal} Add Word ("Moaec". "Screen2", "energy)", ") Call AddWord ("Moaec", "Screen2", "sound effects)", ") Call Add Word "Moaec", "Screen2", "sound tracks)", ") Call Add Word ("Moaec". "Screen2", "(television)", ") Call Add Word ("Moaec", "Screen2", "Dance Mix)", ") Cali AddWord ("Moaec", "Screen2", "Clear", ") Call Add Word ("Moaec". "Screen2", "Undo", ") Call Add Word"Moaec", "Screen2", "Search List)". ") Cal) Add Word ("Moaec", "Screen2", "Play List".") Cali Add Word "Moaec", "Screen2", "Search Call Add Word "Moaec", "Screen2", "Expand)", ") Call AddWord ("Moaec", "Screen2", "Shrink)". ") Call Add Word ("Maaec", "Screen2", "Load)", " Cal Add Word ("Moaec", "Screen2", "Save)", ") Cali Add Word("Moaec", "Screen2", "Next)", ") Call Add Word("Moaec", "Screen2", "Pick)",") Call Add Word ("Moaec", "Screen2", "Delete)",") Call AddWord ("Moaec", "Screen2", "Title)",") Call Add Word("Moaec", "Screen2", "Artist)", ") Call AddWord("Moaec", "Screen2", "Date)",") Call AddWord("Moaec", "Screen2", "Song Category)", ") Call AddWord ("Moaec", "Screen2", "Dance Type)",") Call AddWord("Moaec", "Screen2", "Music Style)",") Call Add Word("Moaec", "Screen2", "(Speed",") Call Add Word("Moaec", "Screen2", "Energy)", ") Call AddWord ("Moaec", "Screen2", "Speed)", ") Call Add Word ("Moaec", "Screen2", "Fast", ") Call AddWord ("Moaec", "Screen2", "Medium)",") r Call AddWord "Moaec", "Screen2", "(Slow)",") MOAEC MASTER CODE (page 64) Sunspot. Software and Graphics 303-305-7637