DIGITAL SIGNAL MIXING ARCHITECTURE

Abstract: An improved digital signal mixing architecture for applications such as digital mixing consoles is provided. The architecture provides a software configurable mixing system that is expandable up to more than 48 channels. The architecture comprises a master DSP device coupled to a plurality of slave DSP devices on a DMA bus. The master performs functions including data bus arbitration, calculating coefficient variables, and transferring the variables to slave DSPs. The master is interconnected to each of the slaves in a manner that enables the master to command each of the slaves to write the results of its input signal processing to the internal memory of each of the other slaves. The master commands the slaves to transmit processed input signals to each other, so that each processed input signal is stored in the memory of each slave. Once each slave has the results of every processed input signal, the master commands any combination of the slaves to mix any of the processed input signals to create a mixed signal that is sent to its outputs for conversion to an analog signal. Mixing combinations are controlled by scripts that are interpreted by software. The digital mixing architecture of the present invention provides a system that is software configurable, so that a mixing console embodying the invention is easily reconfigurable and upgradeable. Additionally, the software configurable characteristics and channel expandability of the invented architecture provide a digital mixing console that is low cost to upgrade or reconfigure.

Description: DIGITAL SIGNAL MIXING ARCHITECTURE Field Of The Invention The present invention relates generally to digital signal processing, and more particularly, to an improved architecture for a digital signal mixer for processing audio signals. Background Of The Invention An audio mixer serves as the central component of any professional audio system by electronically blending, routing and enhancing sound sources, such as voices, musical instruments, sound effects, and audio tape, video tape and other live or pre-recorded material. Historically, mixing has been accomplished in analog, partially because of limitations in technology and because inputs (instruments, voices, etc.) are in analog, as well as outputs. However, analog mixers have limited ability to recall or reconfigure the signal flow and other limitations or effects on audio mixing. Therefore, the professional audio mixer market (estimated by industry sources at approximately $1,000,000,000 in 1998) has looked to digital signal processing for the ability to manipulate the signal. Digital signals can be memorized and recalled, unlike analog, giving a total recall of all console parameters and real time automation of the same. But, to date, digital signal processors have been very expensive, with pricing of upward of $ 1 ,000,000 per unit and useful only in a single location because of size. No digital signal processor has been able to achieve, at a consumer price point of less than $15,000 per unit, and of portable size, a multiplicity of functions including real time processing, an internal control processing unit with real time upgradeable and reconfigurable capabilities, remote processing and manipulation through device interfaces, hard disk and floppy drives, on-board and remote video monitor, and optional effects integration. Summary Of The Invention In accord with the present invention, a digital signal mixing architecture is defined that is capable of providing a mixing system expandable to provide a plurality of N channels (N = 48 or more), e.g., from 1 to 48 channels, depending upon the desired configuration of the architecture. Further, it is envisioned that systems incorporating the invention may be combined to form a mixing system capable of mixing more channels than is possible by a single system. In the preferred embodiment, the invented architecture comprises a master integrated digital signal processor (DSP) device coupled to a plurality of slave integrated digital signal processor (DSP) devices on a Direct Memory Access (DMA) bus. The master DSP performs functions that include data bus arbitration, calculating coefficient variables for each slave DSP, and transferring the coefficient variables to the slave DSPs. The slave DSP devices each preferably comprise a DSP device having an arbitrary number, such as n, of audio converters coupled thereto for processing n number of channels. The audio converters convert analog input signals to digital signals for processing by the DSP, and convert the processed digital signal to analog for output of the analog signal. Each slave DSP can process from 1 to n channels (n = 8 or more), typically ranging from 1-8, depending upon such factors as the number of converters, processing power requirements, and system functionality such as equalization and dynamics processing. Additionally, some of the channel signal inputs may provided in a digital format that is directly inputted to a slave DSP. In this case, an input converter would not be provided to convert the format of the inputted signal from analog to digital. Also, it may be desirable to output some signals in a digital format. Consequently, an output converter would not be used to convert the format of a converted input signal- from digital back to analog. Although the preferred embodiment employs analog to digital and digital to analog conversion for every channel, another embodiment could be differently configured. Selected channels could provide analog to digital (input only conversion), digital to analog (output only conversion), or digital to digital (no input or output conversion) formats. For example, a 48 channel audio mixing console comprising the digital signal mixing architecture of the present invention may comprise a master DSP and 24 slave DSPs, with each slave processing 2 channels of digital audio. Thus, the resulting system comprises a software configurable mixing system having 48 inputs and 48 outputs. In a second example, a 16 channel audio mixing system using the invented mixing architecture could comprise a master DSP coupled to 4 slave DSPs, with each slave processing 4 channels of digital audio signals. This configuration results in a software configurable mixing console having 16 inputs and 16 outputs. A system having greater than 48 channels is achieved by providing a top level master DSP coupled to a plurality of second level master DSPs connected to their slave DSPs. In such a configuration, as an example, the combination of two 48 channel audio mixing systems, each comprising a second level master DSP coupled to 24 slave DSPs, would result in an audio mixing console capable of mixing 96 channels. The invented system achieves these features by coupling the master DSP to each of the slave DSPs and interconnecting the slave DSPs in a manner that enables the master to command each of the slave DSPs to write the results of its input signal processing to the internal memory of each of the other slave DSPs. The master DSP sends commands to the slave DSPs that instruct the slaves to transmit processed input signals to each other, so that each processed input signal is stored in an internal memory of each slave. Wherein, if there are 4 slave DSPs, each slave will have 4 processed input signals stored in its internal memory. Once each slave DSP has the results of every processed input signal in its internal memory, the master can command any combination of the slaves to mix any of the processed input signals to create a mixed signal to send to its outputs to provide mixed digital signals ready for digital-to-analog (D/A) conversion or output. In use, the master DSP device is initially activated to prepare the master to receive data from a Central Processing Unit (CPU) motherboard disposed within the mixer console. The CPU motherboard downloads data comprising a set of instructions, known as an executable file, to the master DSP. Once the master DSP has received the executable file from the CPU motherboard, the master is reinitialized for processing the executable file. The CPU motherboard then downloads executable slave DSP files which the master DSP distributes via a data bus to the slaves and writes the files into their internal memory. The slave DSPs then initialize themselves to prepare the system for running a digital audio signal mixing sequence. With analog inputs, analog input signals are first converted to representative digital samples by the audio converters. A stream of input data, representative of the digital samples, is transmitted to the inputs of the slave DSPs for processing. The slaves perform various prescribed signal enhancement functions, such as equalization and compression for instance, on each digital sample and place the resulting data into a selected output memory location. After each sample is processed by each slave, the master DSP instructs slave DSP 1 to place its processed signal on the data bus. The master then latches the data into the memory of selected slave DSPs, depending upon the instructions contained in the master's executable file. The master then instructs slave DSP 2 to place its processed signal on the data bus. The master then latches the data from slave DSP 2 into the memory of selected slave DSPs. This process is repeated until the memory of each slave DSP contains the processed signal of each of the slave DSPs. Once the memory of each slave DSP contains the processed signal of each of the slave DSPs, the master DSP generates a signal that instructs the slave DSPs to mix the processed signals in various combinations to create a plurality of output signals, representative of the number of slaves. The various combinations of mix are determined by default coefficient variables that are loaded into the memory of the slaves when their executable files are initially downloaded. Each slave then sends its mixed output signals to its associated audio converters, for providing a mixed analog output signal (or direct output if digital outputs connected to signal). This process is continuously repeated, and is only interrupted when the master DSP receives a new instruction from the CPU motherboard. When the new instruction is received from the CPU motherboard, the master DSP calculates new coefficient values and places the new values onto the DMA bus and writes the values into the memory of the selected slaves. The new coefficient values overwrite the default values and modify the audio outputs accordingly. Scripts are employed by the CPU motherboard to configure and control the mixer console. An image of a virtual mixer console may be displayed on a video monitor and the user may employ a keyboard and/or a pointing device to select objects in the image. Scripts are written in plain text. An editor may be employed to edit the scripts, so that features are enabled/disabled and the image displayed to the user is customized. Script updates may be downloaded from a remote computer or provided in a physical media, such as a floppy disk. Point to point modems, network interface cards and hubs may be employed to connect the CPU motherboard to the remote computer. New scripts and updates are data encrypted and the serial number of the mixer console is used as the public encryption key. In the preferred embodiment, RSA data encryption is used. However, other data encryption methods may also be employed to provide data security. Additionally, a look-up table is employed to produce text displayed to the user, and any one of a plurality of languages may be selected. Thus, the digital mixing architecture of the present invention provides a system that is software configurable, so that a mixing console embodying the invention is easily reconfigurable and upgradeable. Additionally, the software configurable characteristics and channel expandability of the invented architecture provides a digital mixing console that is low cost to upgrade or reconfigure. Brief Description Of The Drawings The objects and features of the present invention, which are believed to be novel, are set forth with particularity in the appended claims. The present invention, both as to its organization and manner of operation, together with further objects and advantages, may best be understood by reference to the following description, taken in connection with the accompanying drawings, in which: FIGURE 1 is a block diagram showing an exploded view of a slave digital signal processor of a preferred embodiment of an architecture for a DSP system in accord with the present invention; FIGURE 2 is a block diagram showing n channels of a slave DSP; FIGURE 3 is a block diagram showing a first portion of a data processing path using the architecture of the present invention; FIGURE 4 is a block diagram showing a portion of the data path using the architecture of the present invention; FIGURE 5 is a block diagram showing a third portion of the data path; FIGURE 6 is an overview schematic diagram of showing the architecture of the present invention, and several external elements; FIGURE 7 is a flow chart illustrating the steps implemented in software by the master and slave DSPs; FIGURE 8 is a schematic block diagram of a computer system incorporated in the architecture of the present invention; FIGURE 9 is block diagram of the software modules incorporated into the architecture of the present invention; FIGURE 10 is a flow chart showing the steps employed to train the software for use with the mixer console; FIGURE 11 is a flow chart illustrating the steps implemented at the startup of the mixer console; FIGURE 12 is a flow chart displaying the steps used to interpret the configuration script; FIGURE 13a is a first page of a text file that is inteφreted by the mixer script engine to produce the image of the desktop manager for the user; FIGURE 13b is a second page of the text file that is interpreted by the mixer script engine to produce the image of the desktop manager for the user; and FIGURE 13c is a third page of the text file that is inteφreted by the mixer script engine to produce the image of the desktop manager for the user. Description Of The Preferred Embodiments The following description is provided to enable any person skilled in the art to make and use the invention and sets forth the best modes presently contemplated for carrying out this invention. However, various modifications to the disclosure will be readily apparent to those skilled in the art. Referring to FIGURE 6, an overview 100 of the hardware architecture employed in the present invention is shown. A mixer console 76 includes a Central Processor Unit (CPU) motherboard 66 that is coupled to a mixer control board 60. A plurality of switches 61 and lights 63 are connected to mixer control board 60. Further, control actuators associated with mixer control board 60 are included to automatically position and/or lock the location of a particular type of switch, such as a linear slider, a push button, or a rotary knob (not separately shown). A Musical Instrument Device Interface (MIDI) port 71 is coupled to mixer control board 60. In the preferred embodiment, a serial (RS-232) port is employed to couple mixer control board 60 to CPU motherboard 66. CPU motherboard 66 is also coupled to a Liquid Crystal Display (LCD) 74, which provides a user with a visual indication of the status and/or operation of controls on mixer console 76. In another embodiment, LCD display 74 may be another type, such as vacuum fluorescent or Light Emitting Diode (LED). Also, switches 61 and lights 63, which are controlled by CPU motherboard 66, further provide the user with a visual indication of the status and/or operational information related to the state of the mixer control board. CPU motherboard 66 is in direct communication with a DSP board 62 through a special high speed serial port that is capable of operating at 900 kilobaud (currently running at 115 kilobaud in the preferred embodiment). Alternatively, a Universal Serial Bus (USB) or Fire Wire communication link could be employed to couple CPU motherboard 66 to DSP board 62 and mixer control board 60. DSP board 62 includes a master DSP 12 and from one to N slave DSPs (S r S N ) that are coupled in parallel with master DSP 12 on a Direct Memory Access (DMA) bus 28. In the preferred embodiment, only one DSP board 62 is provided, and it includes up to a maximum of 48 slave DSPs (i.e., N=48 or more). Coefficient values for use in determining the signal processing that will be applied are determined for all of the slave DSPs by master DSP 12, and these values are placed into a plurality (N) of latches 19, which are coupled in parallel to DMA bus 28. Each latch 19 corresponds to a particular slave DSP. Typically, a slave DSP Sj controls an Analog to Digital Converter (ADC) 18a that receives an analog signal on an analog input line 24 and converts the analog signal into a corresponding digital signal that includes time varying digital values. Once the digital signal has been processed by slave DSP Sj a Digital to Analog Converter (DAC) 18b is used to convert the values in the digital signal output from the slave DSP into an analog signal that is supplied on an analog output line 30. The digital output signal of slave DSP S t is stored in Sj latch 17, which is coupled in parallel to DMA bus 28. It is envisioned that a plurality of DSP boards may be coupled to CPU motherboard 66, so that the number of slave DSPs for processing analog signals may be increased accordingly. Additionally, a channel's signal input may provided in a digital format that does not require analog to digital conversion prior to processing by slave DSP S. In this case, ADC 18a would not be provided to convert the input format of the channel's signal from analog to digital. Further, it may be desirable to output the channel's signal from slave DSP S in a digital format. Thus, DAC 18b would not be provided to convert the output format of the channel's signal from digital to analog. However, additional circuitry may be provided to enable slave DSP S to input and output the particular format of the digital signal, e.g., circuitry for processing Alesis Coφoration's Alesis Digital Audio Tape (AD AT), Tascam Coφoration's Tascam Digital Interface Format (TDIF), and the Audio Engineers Society/European Broadcast Union (AES/EBU) formats. Although the preferred embodiment is shown providing signal converters for every input and output, another embodiment could be differently configured. Selected channels could provide analog to digital (input only conversion), digital to analog (output only conversion), or digital to digital (no input or output conversion) formats. CPU motherboard 66 may optionally be coupled to a remote computer 52, so that additional services can be remotely provided or controlled. One such additional service would be updating software executed by CPU motherboard 66. Another such additional service might enable a technical service representative to troubleshoot a problem with mixer console 76 from a geographically remote or distant location. A video display 54, a pointing device 72 and a keyboard 50 are also preferably coupled to CPU motherboard 66, so that the user may control the operation of mixer console 76 based upon a displayed virtual image of the console. The user may employ pointing device 72 and/or keyboard 50 to select and/or modify elements in the virtual image that affect the operation of mixer console 76. However, the user may also operate mixer console 76 with switches 61 and observe the status of lights 63 when video display 54, pointing device 72, and keyboard 50 are not connected to CPU motherboard 66. An accessory card 78 is also preferably disposed within console 76 to provide additional features, such as selected audio effects, digital outputs, and synchronization signals. Accessory card 78 is then coupled to CPU motherboard 66 through a proprietary bus; a plurality of accessory boards may be connected to this bus. It is envisioned that third party developers may be licensed to provide accessory cards for the present invention. Although not shown, internal accessory boards may be coupled to CPU motherboard 66 that provide additional features, such audio effects. Referring to FIGURE 7, an overview flowchart 130 indicates the functional or logical steps performed by DSP board 62 in response to an instruction from CPU motherboard 66. From a start block, the logic moves to a block 132 in which master DSP 12 receives an instruction from CPU motherboard 66. The logic flows to a block 134, in which master DSP 12 determines the coefficients for each appropriate slave DSP in accord with the received instruction. The logic then advances to a block 136. In this block, master DSP 12 strobes a series of latches 19 (in FIGURE 6) that store the new coefficients. These latches are directly coupled to DMA bus 28 and each is associated with a particular slave DSP. The logic advances to a block 138, in which master DSP 12 strobes or commands each pertinent slave DSP to load its new coefficients from the latch 19 that is associated with that slave DSP. After these coefficients are loaded, a new output signal is provided by the slave DSP to another latch on DMA bus 28 that is associated with the slave. Next, the logic steps to a block 140, and each slave DSP is strobed or commanded to store each of the new output signals produced by the slave DSP in a memory location that corresponds to that slave DSP. Finally, the logic advances to an end block and the processing of the received instruction is complete. In FIGURE 8, an exemplary computer system 16 incoφorated in the architecture of the present invention includes CPU motherboard 66, a processor 31, a memory 64, an Industry Standard Architecture (ISA) bus 56, and a Peripheral Component Interconnect (PCI) bus 33. A PCI bus controller 58 and an ISA bus controller 57 are employed by processor 31 to monitor and control PCI bus 33 and ISA bus 56, respectively. In fact, most newer PCI bus controls implement the ISA bus behind the PCI bus, so the processor 31 accesses the ISA bus via the PCI bus controller, but, for simplification, separate ISA and PCI bus controllers are shown in the Figure. Memory 64 includes read only memory (ROM) 49 and random access memory (RAM) 35. The basic routines that are employed to transfer information between the components of CPU motherboard 66 are implemented by a basic input/output system (BIOS) 36, which is stored in ROM 49. An operating system 45 and a software program 46 are loaded into RAM 35 before the software program is executed by the processor. In the current preferred embodiment, operating system 45 includes a kemel that employs Microdigital Coφoration's SMX suite of products; however, the invention is not in any way limited to use of this operating system or operation with this kernel. It should be noted that the SMX suite of products is ideally suited for real time control systems, because it employs pre-emptive tasking. Further details of the kernel used in the operating system are discussed below. Certain aspects of the present invention are implemented by operating system 45 using a plurality of routines provided by software program 46. Other programs that may also be loaded into RAM 35 include device drivers that are associated with the devices coupled to CPU motherboard 66, through either ISA bus 56 or PCI bus 33, which manage interrupts asserted by the associated device. CPU motherboard 66 optionally is coupled to a hard disk drive 37, which can be used to store software programs, script files, and data. Although not required, the CPU motherboard may also be coupled to access the memory on other nonvolatile storage devices such as a magnetic disk drive 38, and an optical disk drive 40. These nonvolatile storage devices are coupled to either PCI bus 33 or ISA bus 56 by a hard disk drive interface 44, a magnetic disk drive interface 43, and an optical disk drive interface 42, as appropriate. Magnetic disk drive 38 is employed for reading and writing to a removable magnetic disk 39, while optical disk drive 40 provides for reading from or writing to a removable optical disk 41, such as a Compact Drive-Read Only Memory (CD-ROM) disk, digital versatile/video disk (DVD), or other optical media. Each drive and their associated media provide for the nonvolatile storage of computer readable instructions, and other data for use by CPU motherboard 66. In the preferred embodiment, different types of data may be stored by hard disk drive 37, magnetic disk 39, optical disk 41, ROM 49, and RAM 35. Furthermore, other types of media, such as magnetic cassettes and flash memory cards (not shown), may be employed by CPU motherboard 66 for storing data. A user of CPU motherboard 66 may employ input devices such as pointing device (mouse) 29 and keyboard 50, to input commands and/or data. Although not shown, other types of input devices may also be employed with CPU motherboard 66, including a microphone, joystick, game pad, satellite dish, and scanner. An input device is coupled by an input/output (I/O) device interface 53 to processor 31 through either PCI bus 33 or ISA bus 56. A plurality of I/O device interfaces (not separately shown) may be employed to provide various ports, such as serial, parallel, game, small computer serial interface (SCSI), universal serial bus (USB) and Fire Wire, for connecting different types of input/output devices to CPU motherboard 66. For instance, a mixer board 60 may be coupled to a port using an appropriate I/O interface. Also, interfaces for one or more analog-to-digital converters (ADCs), digital-to-analog converters (DACs) - other than those on DSP board 62, digital input/output, encoders, video frame grabbers, and other equipment that might be used in a process may optionally be included. Display 54 is connected to CPU motherboard 66 through a video adapter 48 that is coupled to processor 31 through either PCI bus 33 or ISA bus 56. In FIGURE 8, CPU motherboard 66 is shown operating in a networked environment that employs logical connections to one or more remote computers, such as a remote computer 52, which may be a server, a router, a network personal computer (NETPC), or another CPU motherboard, and typically will include many of the elements described above that are used on or with CPU motherboard 66. A network interface 59 is coupled to processor 31 through either ISA bus 56 or PCI bus 33. Network interface 59 is also coupled through a local area network (LAN) 51 to remote computer 52. LAN 51 is employed to provide the connection between CPU motherboard 66 and a networked environment that may include an office network, an intranet, and the Internet. In the networked environment, programs that are executable by CPU motherboard 66 may be stored in the memory of remote computer 52. Moreover, it will be appreciated by those skilled in the art that other means, such as a modem 47, may be employed to establish a connection, such as through a wide area network (WAN), between CPU motherboard 66 and remote computer 52. Additionally, it is envisioned that network interface 59 and modem 47 could be disposed external to mixer console 76. In FIGURE 8, DSP board 62 is coupled to I/O controller 53. As noted above, a high speed serial communication port is employed for communication between DSP board 62 and CPU motherboard 66. DSP board 62 enables the real time processing of audio signals by executing over 3 billion instructions a second. Further, DSP board 62 can process all signals on all channels in 20 microseconds or less. Although DMA bus 28 is shown as 16 bits wide, the present invention may be implemented on a bus that is 32 bits wide or greater. Also, the bus resolution is compressed to a lower resolution using dithering while retaining signal integrity below the noise floor. For example, the 16 bit DMA bus provides 20 bit resolution using UV22® software licensed from Apogee Coφoration. Referring now to FIGURE 1, a digital signal mixing architecture 10 for applications such as digital mixing consoles configured according to the present invention is illustrated. In such an application, a preferred embodiment of architecture 10 is capable of providing a mixing system that is expandable from 1 to N (N = 48 or more) channels depending upon the desired configuration of the architecture. Further, using a building block approach, a plurality of systems incoφorating this preferred embodiment of architecture 10 may be combined to form a mixing system capable of mixing substantially more than 48 channels. In the preferred embodiment, the architecture 10 includes master integrated DSP (DSP) device 12 coupled to the plurality of slave integrated DSP (DSP) devices S via DMA bus 28 that is used for sending commands to the slaves S and for moving data between the slaves. The master DSP 12 is provided to perform a number of system host functions including data bus arbitration, downloading of processing algorithms, transferring coefficient variables, and communication to external peripheral devices through RS232, RS422 (ESAM), MIDI ports, and CPU motherboard 66, for example. The slave DSP devices S each preferably comprise a DSP device S connected to an arbitrary number, such as n, of ADC 18a and DAC 18b for processing n channels C. ADCs 18a convert analog input signals 20 to digital samples for processing by the slave DSPs S, and the DACs 18b convert the processed digital samples to analog signals that are combined for output as mixed analog signals 22. Referring to FIGURE 1 and FIGURE 2, each of the slave DSPs S is preferably adapted to process n channels C, with n ranging from 1-8, depending upon such factors as the number of converters 18, processing power requirements, and system functionality (which includes consideration of requirements for equalization and dynamics processing), for example. Particularly, each of the slaves S is configured with an input line 24 for each ADC 18a coupled thereto. Processing logic circuitry 26 is coupled to the input lines 24 for performing various prescribed signal enhancement or sweetening functions, such as equalization and compression for instance, on each received digital sample and for placing the resulting data into a selected output memory location, such as channel out internal memory locations Ml-Mn. The processed sample is then mixed (as discussed hereinbelow) for output to the appropriate DAC 18b, which produce the mixed analog output signals 22. The master DSP 12 sends commands to the slave DSPs S that instruct the slaves DSPs S to transmit the processed input signals to each other via DMA bus 28, so that each processed input signal is stored in the internal memory location M of each slave S. Thus, if there are four slave DSPs, each slave DSP S and the master DSP will have four processed input signals stored in its internal memory locations M1-M4. Once each slave DSP S has the results of every processed input signal in its internal memory location M, master DSP 12 can command any combination of the slave DSPs S to mix any of the processed signals to create a mixed digital signal to send to its outputs 30 thereby providing mixed digital signals for D-A conversion by the DACs 18b, which produce the mixed analog output signals 22. Referring now to FIGURE 3 of the drawings, a first portion of a data processing path is shown generally at 32. In use, master DSP device 12 is initially activated by an EPROM device (not shown), for example, to prepare the master DSP to receive data from a peripheral device, such as CPU motherboard 66. CPU motherboard 66 downloads data comprising a set of instructions, known as an executable file, to master DSP 12. Once the master DSP has received the executable file from the CPU motherboard 66, master DSP 12 is reinitialized for processing the executable file. CPU motherboard 66 then downloads executable slave DSP files to the master DSP 12, which the master DSP distributes via DMA bus 28 to the slave DSPs S and writes the files into their internal memory locations M. The master DSP executable file contains instructions relating to such host functions, including data bus arbitration, transferring coefficient variables, and communication to external peripheral devices, while the slave DSP executable files contain instructions such as default coefficient variables. After the slave DSPs S have received their executable files, the slave DSPs S initialize themselves to prepare architecture 10 for running a digital audio signal mixing sequence. While it is to be understood that a current preferred embodiment of architecture 10 is capable of providing a mixing system that is expandable from 1 to 48 channels, for illustrative puφoses, the following discussion is directed to a four channel system. Referring still to FIGURE 3, analog input signals are first converted to representative digital samples by the ADCs 18a. After conversion, a stream of input data, representative of the digital samples generated by ADCs 18a, are transmitted to input lines 24 of the slave DSPs S for processing. The processing logic circuitry 26 of the slave DSPs S performs various prescribed signal enhancement functions, such as equalization and compression, on each digital sample and places the resulting digital data into the corresponding channel out memory location Ml-Mn. The data processing path 32 continues as shown in FIGURE 4, wherein after each digital sample is processed by each slave DSP S, master DSP 12 instructs slave DSP SI to place its processed digital signal, which is stored in its channel out memory location Ml-Mn, on DMA bus 28. Master DSP 12 then latches the data into the memory location M of selected slave DSPs SI -Sn, depending upon the instructions contained in the master DSP's executable file. Master DSP 12 then instructs slave DSP S2 to place its processed signal, which is stored in its channel out memory locations Ml-Mn, on DMA bus 28. Master DSP 12 then latches the data from slave DSP S2 into the memory location M of the master DSP and selected slave DSPs Sl-Sn. This process is repeated until the memory locations M of each slave DSP contains the processed signal of each of the other slave DSPs. As there are only four slave DSPs S in this example, each slave DSP S will have four processed input signals stored in its internal memory locations M1-M4. Referring now to FIGURE 5, once the memory locations M1-M4 of each slave DSP S contain the processed signal of each of the slave DSPs S, master DSP 12 generates a signal that instructs the slave DSPs S to mix the processed signals, using mixing logic 34, in various defined combinations to create a plurality of output signals corresponding in number to the number of slave DSPs S. The various combinations of mix are determined by default coefficient variables that were loaded into the memory of the slave DSPs S when their executable files are initially downloaded. Each slave DSP S then sends its mixed output signals to its associated DAC 18b, for providing the mixed analog output signal 22. This process is continuously repeated, and is only interrupted when master DSP 12 receives new coefficient variables from CPU motherboard 66. When new variables are received from CPU motherboard 66, master DSP 12 places the new variables onto DMA bus 28 and writes the variables into the memory locations Ml-Mn of the selected slave DSPs Sl-Sn. The new coefficient variables overwrite the default values and modify the audio output signal accordingly. In FIGURE 9, an overview 95 of the software employed by the present invention is shown. The operating system employs a kernel 80 that includes a task manager 82 for scheduling pre-emptive tasks according to predetermined priorities. A serial communication module 85 controls the serial transfer of data between CPU motherboard 66 and other components, such as mixer control board 60. A loader 86 enables the execution of compiled code, and a device driver 88 implements the operation of I/O devices, e.g., keyboard 50, mouse 29, and display 54. Further, a BIOS 84 is included with kernel 80 to control the operation of various subsystems associated with input and output to and from CPU motherboard 66. Also, a file system 83 is included to organize files within the operating environment. An automation engine 87 inteφrets a configuration script 89 that defines the type (model) and components (switches and lights) provided on mixing console 76. Automation engine 87 constantly monitors the communication with the mixing console and controls the operation of CPU motherboard 66, DSP board 62, and mixer control board 60. For example, if the user adjusts a fader switch (not separately shown) that is coupled to mixer control board 60, then automation engine 87 immediately implements code that directs DSP board 62 to process the channel signals in a manner that corresponds to the disposition of the fader switch. When an automatic mode is enabled by the user, automation engine 87 directs mixer control board 60 to employ its control actuators to move switches to a particular location, illuminate specific lights, and to provide instructions to DSP board 62 for the processing analog input signals in accord with the disposition of the switches and controls. Also, when mixer console 76 is in a manual mode, automation engine 87 provides instructions to DSP board 62 that map the processing of the analog signals to the disposition or state of the switches. A mixer script engine 90 inteφrets a desktop script 92 and produces a desktop manager 94 for display to the user. An image of a virtual mixer console 96 is produced in the initial window displayed to the user in the desktop manager 94. An event manager 91 handles the display in the desktop manager environment, e.g., the position and selection of objects in the image of virtual mixer console 96. Automation engine 87 implements the highest priority tasks and event manager 91 asserts the lowest priority tasks. In this way, the audio signal processing tasks implemented by mixer console 76 are always given a higher priority than displaying the image of virtual mixer console 96. The highest priority task is associated with user input, which may occur if the user selects objects in the image of virtual mixer console 96 or moves any of the switches. In any case, no more than a 10 millisecond latency occurs before an analog signal is processed by the components of mixer console 76. Turning now to FIGURE 10, an overview 103 of an automatic training sequence implemented by the present invention is shown. The logic proceeds from a start block to a decision block 105 and determines if there is a switch map and an LED map available for use by automation engine 87. These maps provide addresses that correspond to the actual switches and lights coupled to mixer control board 60. If true, the logic jumps to an end block and the automatic training sequence logic is terminated. When the determination at condition block 105 is false, the logic advances to a block 107, which indicates that automation engine 87 polls mixer control board 60 for each address that corresponds to a switch in the mixer console, which is coupled to the control board. The logic moves to a block 109, and a switch map is built that associates each such switch with a corresponding address. The logic flows to a block 111, which indicates that engine 87 polls mixer control board 60 for each address that corresponds to a indicator light coupled to the control board. The logic advances to a block 113. This block provides for building an light emitting diode (LED) map that associates each indicator light or LED with a corresponding address. Finally, the logic steps to the end block and the automatic training sequence logic is complete. It is envisioned that the initial training sequence for automatic engine 87 could also be performed manually by the user. For example, the user of mixer console 76 could manually actuate every switch and control disposed on the console, so that automation engine 87 could sense the presence (address) for each device, including the indicator lights. In FIGURE 11, an overview 102 of the startup sequence of the present invention is shown. Moving from a start block, the logic advances to a block 104 in which a switch map is loaded that identifies the corresponding address for each switch disposed in mixing console 76. The logic moves to a block 106, in which the LED map is loaded, identifying the corresponding address for each indicator light on the mixing console. Next, the logic flows to a block 108. In this block, automation engine 87 inteφrets configuration script 89. This script indicates a type of feature or function and enables/disables operational features of mixing console 76. For example, a surround sound mixing control may be enabled by configuration script 89, and an equalizer control may be disabled by the script. The logic then steps to a block 110, and automation engine 87 creates an automation engine buffer for storing a plurality of values, such as preset configurations. The logic advances to a block 112, wherein mixer script engine 90 inteφrets desktop script 92, which is employed to define the image presented to the user in the initial window of desktop manager 94. The desktop script determines the virtual switches, lights, and controls displayed to the user in a particular window. The displayed objects in each window are graphical representations of the corresponding elements of mixing console 76, and show the states of those elements. Next, the logic moves to a block 114. In this block, the image of the initial window of desktop manager 94 is displayed to the user. In the preferred embodiment, the initial window includes the image of virtual mixer console 96. However, the initial window may also be configured to provide software controls that enable the user to select a different window that displays the image of the virtual mixer console or additional mixer console features. Finally, the logic flows to an end block and terminates. Looking now to FIGURE 12, further details of the logical steps implemented in block 108 are provided. Moving from a start block, the logic flows to a block 116, indicating that automation engine 87 sets a type for mixing console 76, which is identified in the configuration script. The logic flows to a block 118 in which the address for each switch and light is set. Moving to a block 120, the logic sets the name for each addressed switch and indicator light. The logic advances to a block 122, and a maximum value for each switch is set. The logic then proceeds to a block 124. In this block, the initial value (or state) for each switch and indicator light is set. Typically, the indicator light and switch initial values are zero. The logic moves to a block 126, where each switch and indicator light is designated as either an automatic or non-automatic device. Finally, the logic returns to the main routine. In FIGURES 13 A, 13B, and 13C, an exemplary representation of a desktop script that employed by mixer script engine 90 is provided. The script text may be edited with a text editor, such as Microsoft Coφoration's NOTEPAD™. An important feature of the present invention is the use of a script that employs real language text to define the operation of mixer console 76 and to define the images displayed to the user. Also, since the scripts are inteφreted, they may be updated on the fly without requiring any reboot of CPU motherboard 66. It is envisioned that the user of the present invention may obtain updated configuration and desktop scripts to correct software bugs and to provide new features for mixer console 76. These updates may be provided through a network connection to remote computer 52, or over the Internet, or may be stored and transferred from a physical media, such as a floppy disk. Script updates are preferably encrypted to prevent unauthorized changes in the operation and control of the mixer console. In the preferred embodiment, RSA encryption is used and the serial number of mixer console 76 is employed as the public encryption key. In this manner, script updates can be provided that are limited for use with a particular mixer console. It is also contemplated that an editor may be provided for the user to edit the desktop and/or configuration scripts - at least to a limited extent. The editor would enable the user to customize the look and feel of the images of the virtual mixer console and enable/disable features of the mixer console 76. Also, it is envisioned that new combinations of features could be developed by the user with the editor. A look-up table is employed by mixer script engine 90 to build the real language text displayed to the user. The software enables the user to select any one of a plurality of different languages in the look-up table as the real language text. Also, the software will automatically clip out of range parameters in a script and define hot keys. Additionally, the ordering of the text in a script determines screen overlap for objects and/of windows defined by the text. Further, scripts can be nested in calls from selected objects in the initial window produced for the desktop manager. In the present invention, the user may employ a "swipe command" to instantaneously change the state of a plurality of switches with the passage of a cursor over objects (virtual switches) displayed in the image of virtual mixer console 96. Preset configurations for controls associated with mixer console 76 may be stored and enabled, or the configurations may be changed. A plurality of different audio effects may also be implemented by the software. For example, the center point of a plurality of channels for a surround sound mix may be selected with a software control. Further, two different center points may be selected so that moφhing and flyback effects may be produced. A plurality of addressable software controls may be configured to correspond to a single channel. Also, it is envisioned that a plurality of script templates could be provided to the user for enabling different features and displays. Alternative embodiments of the present invention may be used for processing audio signals in radio and television studios, live performances, and public address systems. Further, the present invention could be employed to control a plurality of lights in a studio or during a live performance. Thus, the architecture of the present invention provides a system that is software configurable, so that it can be applied to many other applications besides its disclosed use in a mixing console. An application embodying the present invention is easily reconfigurable and upgradeable, since the architecture is readily extensible. As applied in the above disclosed example, the software configurable characteristics and channel expandability of the present invention provide a clear benefit. In this example, a 48 channel audio mixing console employing the architecture of the present invention and including a master DSP and 24 slave DSPs, with each slave processing 2 channels of digital audio were disclosed. This system thus comprises a software configurable mixing system having 48 inputs and 48 outputs. In the other example discussed above, a 16 channel audio mixing system including a master DSP coupled to four slave DSPs was disclosed, with each slave processing four channels of digital audio signals. This configuration provided a software configurable mixing console having 16 inputs and 16 outputs. It is also contemplated that a system having greater than 48 channels can be achieved by providing a top level, master DSP coupled to two 48 channel audio mixing systems, each comprising a second level, master DSP coupled to 24 slave DSPs. Such a system would be capable of mixing 96 channels. Although the present invention has been described in connection with the preferred form of practicing it, those of ordinary skill in the art will understand that many modifications can be made thereto within the scope of the claims that follow. Accordingly, it is not intended that the scope of the invention in any way be limited by the above description, but instead be determined entirely by reference to the claims that follow.

Claims: The invention in which an exclusive right is claimed is defined by the following: 1. A real time system for digitally processing and mixing audio signals, comprising: (a) a computer that includes a memory and a processor; (b) an analog to digital converter that converts an input audio signal into a corresponding digital signal; (c) a digital signal processor that processes the digital signal as a function of at least one predefined coefficient, producing a processed signal; (d) a mixer control that produces a value employed by the computer to control the digital signal processor; (e) a script that is implemented by the computer, the script defining the operation of the mixer control and the digital signal processor; and (f) a digital to analog converter that converts the processed signal into an output. 2. A real time system for digitally processing and mixing audio signals, comprising: (a) a computer that includes a memory and a processor; ( ) an analog to digital converter that converts an input audio signal into a corresponding digital signal; (c) a slave digital signal processor that processes the digital signal as a function of at least one predefined coefficient, producing a processed signal; (d) a master digital signal processor that calculates the predefined coefficient for the slave processor, the master digital signal processor and the slave digital signal processor being coupled to a data bus; (e) a mixer control that produces a value employed by the computer to control the master digital signal processor; (f) a script that is implemented by the computer, the script defining the operation of the mixer control, the master digital signal processor, and the slave digital signal processor; and (g) a digital to analog converter that converts the processed signal into an output. 3. A real time system for digitally processing and mixing audio signals, comprising: (a) a computer that includes a memory and a processor; (b) a slave digital signal processor that processes a digital signal as a function of at least one predefined coefficient, producing a processed signal; (c) a master digital signal processor that calculates the predefined coefficient for the slave processor, the master digital signal processor and the slave digital signal processor being coupled to a data bus; (d) a mixer control that produces a value employed by the computer to control the master digital signal processor; and (e) a script that is implemented by the computer, the script defining the operation of the mixer control, the master digital signal processor, and the slave digital signal processor, so that the processed signal is provided as an output.

Inventors: MACKIE GREG C, TUDOR ROBERT J, WATTS PETER F, MACKIE, GREG, C., TUDOR, ROBERT, J., WATTS, PETER, F.
Applicants: MACKIE DESIGNS INC, MACKIE DESIGNS INC.
Application year: 1998
Main classification: H03G
IPC codes: H03H17, H04H60