Abstract:
There is disclosed a method, system and apparatus for enabling the sharing of computer system resources by multiple input devices. The multiple input devices utilize a device driver for all of the multiple input devices, with the method comprising: the device driver allocating a device identifier to each of the multiple input devices; the device driver receiving data from each of the multiple input devices by reference to the device identifier; and the device driver passing the received data to an application for processing.

Description:
FIELD OF THE INVENTION 
       [0001]    This invention relates to a method, system and apparatus for simultaneously sharing system resources by multiple input devices and refers particularly, though not exclusively, to such a method, system and apparatus where the input devices use the same device driver. 
       BACKGROUND OF THE INVENTION 
       [0002]    The home and, in some cases, office or commercial computer has become an active centre for entertainment. Often they are used to output audio produced by digital musical instruments such as, for example, guitars, MIDI-compliant keyboards, and so forth. However, if more than one musical instrument is to be connected, and the same interfacing software is to be used, difficulties arise as a plurality of instruments cannot use the same device driver at the same time. 
         [0003]    Resources from the computer may be limited, and latency, the delay of audio output after input into the digital musical instruments, may result if more than one instrument is connected to the computer and used simultaneously. This is undesirable as it would be impossible to teach music to multiple users, play music as a band/group, or jam in a group. A real time collaboration capability for the instruments is lacking. 
         [0004]    There is currently also no device which is able to function as a hub for a plurality of digital musical instruments that facilitates playing music as a band/group, or jam in a group. 
       SUMMARY OF THE INVENTION 
       [0005]    In accordance with a first preferred aspect there is provided a method for enabling the sharing of a computer system resources by multiple input devices connected (wired or wirelessly) to the computer system where device latency is diminished. The multiple input devices all utilize the same device driver. The device driver allocates a device identifier to each of the multiple input devices. The device driver receives data from each of the multiple input devices by reference to the device identifier. The device driver passes the received digital audio data to an application for processing. Preferably, the application may have multi-channel input and output. The wired connections may be connected through sockets such as P/S 2, USB, IEEE 1394, RCA, and SCART while the wireless connection may be using protocols such as UWB, USB wireless, Bluetooth, infrared, and radio frequency. 
         [0006]    The multiple input devices may be substantially identical and may be devices such as “Prodikeys” from Creative Technology Ltd, an alphanumeric keyboard or a musical instrument with electronic output. It is preferable that the device driver is either an emulator or a pointer to appropriate drivers. The device identifier may preferably be either a port address or a port identity. 
         [0007]    Preferably, the computer system may be selected from the group comprising: a desktop computer, a personal computer, a portable notebook, a laptop computer, a PDA, a standalone console and a peripheral attachable to the aforementioned devices. 
         [0008]    The method may further comprise displaying on a screen a graphic user interface for controlling functions of the multiple input devices. The graphic user interface may be able to be operated by each of the multiple input devices or by a a computer input device such as a mouse or alphanumeric keyboard. The graphic user interface may comprise a plurality of function buttons for controlling a first aspect of each of the multiple input devices. The first aspect may be a chord structure. 
         [0009]    The graphic user interface may further comprise a plurality of boxes, there being one box for each of the multiple input devices. Each of plurality of boxes may be for controlling at least one performance characteristic of the input device. The at least one performance characteristic may be one or more of: volume, pitch shift, octave, and instrument, or instrument audio characteristics for audio reproduction. 
         [0010]    The graphic user interface may also comprise a master control box for controlling one or more of: volume, pitch shift, octave, instrument audio characteristics for audio reproduction or other control boxes. 
         [0011]    According to a second preferred aspect there is provided a computer usable medium comprising a computer program code that is configured to cause a processor to execute one or more functions to perform the above method. 
         [0012]    According to a third preferred aspect there is provided a graphic user interface for controlling functions of multiple input devices, each of the multiple input devices being connectable to a computer system each of the multiple input devices using the one device driver; the graphic user interface being able to be operated by each of the multiple input devices. 
         [0013]    The graphic user interface may comprise a plurality of function buttons for controlling a first aspect of each of the multiple input devices. The first aspect may be a chord structure. 
         [0014]    The graphic user interface may be comprise a plurality of boxes, there being one box for each of the multiple input devices. Each of plurality of boxes may be for controlling at least one performance characteristic of the input device. The at least one performance characteristic may be one or more of: volume, pitch shift, octave, and instrument audio characteristics for audio reproduction. 
         [0015]    The graphic user interface may further comprise a master control box for controlling at least one of: volume, pitch shift, octave, instrument audio characteristics for audio reproduction and other control boxes. 
         [0016]    According to a fourth preferred aspect there is provided a computer usable medium comprising a computer program code that is configured to cause a processor to execute one or more functions to generate on a screen the graphic user interface describe above. 
         [0017]    According to a fifth preferred aspect there is provided a system for enabling the sharing of a computer system resources by multiple input devices each being connectable to the computer system, the system comprising: a device driver simultaneously and independently utilizable by each of the multiple input devices; the device driver including an identifier allocator for allocating an identifier to each of the multiple input devices; and an output application for outputting processed data received by the device driver from the multiple input devices. 
         [0018]    The system may further comprise a graphic user interface for controlling functions of the multiple input devices, the graphic user interface being able to be operated by each of the multiple input devices. The graphic user interface may be as described above. 
         [0019]    According to a sixth preferred aspect there is provided an apparatus for enabling the sharing of system resources by multiple input devices connectable to the apparatus, the apparatus comprising: a device driver simultaneously and independently utilizable by each of the multiple input devices; the device driver including an identifier allocator for allocating an identifier to each of the multiple input devices; and an output application for outputting processed data received by the device driver from the multiple input devices. The apparatus may be connectable to devices like a desktop computer, a personal computer, a portable notebook, a laptop computer, a mobile phone or a PDA. 
         [0020]    The apparatus may preferably include at least one speaker driver and at least one screen. The apparatus may also be powered by either a DC or an AC power supply. 
         [0021]    For all aspects, the multiple input devices may be substantially identical, and may be a musical instrument. In such a case, the data received by the device driver may be digital audio. 
         [0022]    Preferred aspects of the method, system and apparatus may be used when teaching music to a group or when playing music in a group. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0023]    In order that the present invention may be fully understood and readily put into practical effect, there shall now be described by way of non-limitative example only preferred embodiments of the present invention, the description being with reference to the accompanying illustrative drawings. 
           [0024]    In the drawings: 
           [0025]      FIG. 1  is a schematic view of a computer installation with multiple input devices; 
           [0026]      FIG. 2  is an illustration of the system architecture; 
           [0027]      FIG. 3  is a flow chart for the operation of the system; and 
           [0028]      FIG. 4  is an illustration of a GUI for control of the multiple input devices. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0029]    To refer to  FIG. 1  there is shown a desktop computer system having a central processing unit  10 , monitor  12 , speakers  14  and two input devices  16 ,  18 . As shown, the input devices  16 ,  18  are both “Prodikeys” keyboards manufactured by Creative Technology Ltd, although any form of input device may be used. The input devices  16 ,  18  are shown as being identical. Although this is preferred, they may be different. Other input devices that may be used include MIDI keyboards, electric guitars, electric pianos, alphanumeric keyboards and other electronic instruments. However, they should be able to use a universal device driver  24  ( FIG. 2 ) in the CPU  10 . The universal device driver  24  may be an emulator or it may act as a pointer to appropriate drivers. A graphical user interface (GUI)  40  for use together with the input devices  16 ,  18  is shown on the monitor  12 . The GUI  40  is solely for illustrative purposes and outlook and features incorporated within GUI  40  may vary. The CPU  10  may be in a desktop computer, a personal computer, a portable notebook, a laptop computer, a PDA, a standalone console or a peripheral attachable to the aforementioned devices. 
         [0030]    As shown in  FIGS. 1 and 2 , each device  16 ,  18  is connected to the CPU  10  by use of a cable connection  17 ,  19  respectively with a USB or IEEE 1394 connector respectively at its end. In that way they connect to the appropriate socket  22  within CPU  10 . As shown in  FIG. 2 , a third device  20  uses the same device driver  24 . Alternatively, or additionally, the devices  16 ,  18  may be wirelessly connected to the CPU  10 . The wireless protocols used may include UWB, USB wireless, Bluetooth, infrared, and radio frequency. 
         [0031]      FIG. 2  may also represent an alternative embodiment. In this embodiment, CPU  10  may be a standalone device similar to a video games console. The CPU  10  may have at least one processor to process signals from devices  16 ,  18  and  20 . The CPU  10  may also have a memory component, which may be non-volatile in nature. The memory component may be at least one hard disk, or flash memory. The memory component aids in solving the problem of playback latency for devices  16 ,  18  and  20 . The CPU  10  may also have a sound card incorporated within to allow processing of audio signals from the input devices  16 ,  18 ,  20  for the playback of sound. The sound card may also include a MIDI synthesizer. 
         [0032]    There may also be a plurality of sockets  22 . Each socket  22  may be the same or may be of a different type, such as, for example, P/S 2, USB, IEEE 1394, RCA, SCART, and the like. The different types of sockets available allow for a range of different devices to be connectable to the CPU  10 . A dongle to facilitate the wireless connection of devices  16 ,  18  and  20  may also be connected to the CPU  10 . The wireless protocols used may include UWB, USB wireless, Bluetooth, infrared, and radio frequency. It is possible that developments in wireless protocols may enable devices  16 ,  18  and  20  to be portable to a range beyond state/national boundaries and yet still remain connected to the CPU  10 . In such an embodiment, devices  16 ,  18  and  20  may have at least one sound output such as, for example, a speaker or a set of earphones receiving signals from the CPU  10  so that a user of one of the devices may be able to collaborate musically Damming) in real time with other users of devices. 
         [0033]    The CPU  10  may have a screen incorporated with (it as is the case of a notebook computer) to display a GUI  40 . The screen may be an LCD, TFT or OLED panel. Alternatively, the CPU  10  may also be connectable to an external display unit or to another computer system such as, for example, a desktop computer, personal computer, portable notebook, laptop, a mobile phone and a PDA. 
         [0034]    The CPU  10  may also include at least one speaker driver for the output of audio signals generated by the devices  16 ,  18 , and  20 . A woofer may also be included in the CPU. Alternatively, the CPU  10  may be connectable to a set of at least one speaker for the transmission of sounds from the devices  16 ,  18 , and  20 . 
         [0035]    In such an embodiment, a group of users may conveniently jam with each other at nearly any location, as the CPU  10  may be powered by DC power (portable batteries or lighter socket of the car) or from an AC mains supply (including drawing power from a computer connected to it). 
         [0036]    To refer to  FIGS. 2 and 3 , when all three devices  16 ,  18 ,  20  are connected to CPU  10  ( 31 ), the universal device driver  24  is loaded ( 32 ) to be used for each device  16 ,  18 ,  20 . The device driver  24  establishes and allocates an identifier (“ID”) for each device  16 ,  18 ,  20  ( 33 ). As each, device  16 ,  18 ,  20  is connected to a different port, this may be by reference to the port identity/address. The device driver  34  then allows all devices  16 ,  18 ,  20  to access ( 34 ) the device driver  24  and subsequently be operable with the use of the necessary application  26  in the usual manner ( 35 ). 
         [0037]    Each device  16 ,  18 ,  20  may then operate simultaneously yet independently of each other when the universal device driver  24  is being utilized. For example: if all devices  16 ,  18 ,  20  are “Prodikeys”:
       (a) one device  16  could be operating to produce the sound of an electric piano and thus the data sent by device  16  to device driver  24  would be digital audio to replicate the sound of an electric piano;   (b) one device  18  could be operating to produce the sound of an electric guitar and thus the data sent by device  18  to device driver  24  would be digital audio to replicate the sound of an electric guitar; and   (c) one device  20  could be operating to produce the sound of a trumpet and thus the data sent by device  20  to device driver  24  would be digital audio to replicate the sound a trumpet.       
 
         [0041]    The device driver  24  processes all the received data and passes it to the application  26 , in this case a sound card within CPU  10 , for processing by the application  26 , and then reproduction by speakers  14 . The application  26  may allocate RAM and cache memory for each device  16 ,  18 ,  20  and the utilisation of cache memory may allow sound to be transmitted nearly instantaneously from each device  16 ,  18 ,  20 . The application  26  may have a multi channel input for digital signals from each device  16 ,  18 ,  20 . The application  26  may also have a multi channel output for the transmission of processed signals. Such a setup may to prevent latency from affecting the real time transmission and harmonisation of sounds from devices  16 ,  18 ,  20 . 
         [0042]    In this way the devices  16 ,  18 ,  20  can be used to create a band (in the case of devices being musical instruments and/or “Prodikeys”) using one computer, one device driver  24 , and one application  26 . The band may also be created using the standalone version of the CPU  10 . 
         [0043]      FIG. 4  shows the graphic user interface  40  (“GUI”) used for controlling the input devices  16 ,  18 ,  20 . In this case it is for controlling “Prodikeys”. The functions of the GUI  40  in  FIG. 4  is merely illustrative as it should be noted that the main purpose of the GUI  40  is to allow access to core (not all) capabilities of each input device within the confines of the limited screen space permitted by a display screen (the higher the number of users, the smaller the screen space allocated for each user). As such, the GUI  40  may have more or fewer features than as shown in  FIG. 4  depending on the number of input devices connected. 
         [0044]    The GUI  40  is for display on the monitor  12  and is operable in conjunction with the device driver  24  and a graphics application on CPU  10 . Users of any one of the devices  16 ,  18 ,  20  may be able to operate the GUI  40  and thus be able to control certain aspects of the operation of their own devices  16 ,  18 ,  20 . 
         [0045]    A master device may be manually designated by selecting a device using the GUI  40  or automatically designated once the device is connected/plugged at a predetermined port identity/address. A user of the master device may be able to control certain or all aspects of the master device as well as certain or all aspects of the other non-master devices using the GUI  40 . In an instance whereby the master device is unable to control a cursor, a cursor control device connected to the CPU  10  like a computer mouse may be used to access functions on the GUI  40 . 
         [0046]    The GUI  40  may have a number of function keys  41  for providing a basic chord structure to the audio. The chord structures may be pre-set, or set by reference to a menu of available chords. It also has a box  42  for controlling an automatically generated rhythm/accompaniment in accordance with known techniques. A second box  43  is used for the master device. The nature of the audio produced may be selected from three pre-programmed buttons shown as E, D and C. The three buttons can each be programmed to enable the reproduction of audio that resembles one of a set list of instruments including, but not limited to, trumpet, trombone, tuba, clarinet, flute, oboe, bassoon, saxophone (soprano, alto, tenor, baritone), violin, viola, cello, double bass, guitar, electric guitar, bass guitar, glockenspiel, xylophone, vibraphone, celesta, harp, piano, organ, electronic organ, harpsichord, and so forth. A volume slider  44 , pitch shift control  45 , and octave setting control  46  are also provided. 
         [0047]    A similar box  47 ,  48 ,  49  is provided for all other members of the “band”. As the GUI  40  is on monitor  12 , and as all devices  16 ,  18 ,  20  are connected to CPU  10 , each of the devices  16 ,  18 ,  20  can be used for controlling the various functions of the GUI  40 . Each member may be able to control their devices simultaneously and independently. The user of the designated master device may be able to control all devices including the master device and all functions of the GUI  40 . 
         [0048]    In another practical application of the present invention, the GUI  40  may be projected onto a screen and a musical keypad  50  of the GUI  40  may have the relevant keys illuminated in an environment where multiple users of Prodikeys connected to a single processing unit are able to learn to play songs on Prodikeys in a group learning environment. 
         [0049]    Whilst there has been described in the foregoing description preferred embodiments of the present invention, it will be understood by those skilled in the technology concerned that many variations or modifications in details of design or construction may be made without departing from the present invention.