面向目标的乐器数字接口系统的制作方法

文档序号:6408476阅读:233来源:国知局
专利名称:面向目标的乐器数字接口系统的制作方法
技术领域
本发明通常涉及一种改进的计算机系统,特别是涉及一种用于在两个多媒体部件之间对乐器数字接口信息进行路由选择的系统。
本专利申请的部分内容受版权保护。版权所有者允许对出现在专利局的专利文献或记录中或专利公开中的复制再现,但在其它任何情况下保留所有版权。
背景技术
对计算机系统而言,发展最快的应用恐怕就是多媒体了。用户愈来愈多地使用计算机将图形,声音和图象信息表示给终端用户。用户愈来愈需要一种人与处理控制的接口,以用于管理多媒体的表示。过去,使用时间矩阵和编程语言来完成多媒体的表示。然而,模拟一个灵活的混合电路插件板以使得能够把带有信息表示的音乐或声音表示成展开的多媒体表示是不可能的。
不具有本发明能力的当前多媒体系统的例子是在NEWMEDIA三月刊(1993)上发表的“It’s Showtime”(第36-42页)中所描述的Apple’sOuicktime和Microsoft’s Video for Windows。在IEEE Spectrum三月刊(1993)第22-31页的“Interactive Multimedia”和IEEE Spectrum(1993)第32-39页的“The Technclogy Framework”中讨论了解决在现有技术中遇到的路由选择问题的重要性。所述文章指出了用于控制多媒体产生的美学接口的重要性。
本发明的目的因此,本发明的一个主要目的就是要提供一种系统和一种方法,用于在多媒体表示的过程中由具有存储器和显示器的计算机对乐器数字接口多媒体信息进行连接,路由选择,以及滤波。在该系统中的处理器具有一个与之相连并由其控制的存储器和显示器。在存储器中生成多个多媒体目标并由显示器显示。在存储器中还生成一个连接目标并在显示器上显示,以便把一个多媒体目标连接到一个乐器数字接口目标。最后,通过该连接目标在多媒体目标和乐器数字接口目标之间对信息进行路由选择。
附图的简要说明

图1的方框图示出了依据最佳实施例的一个个人计算机系统;图2简单地示出了在现有技术中使用一个磁带机、一个混频器、一个混响单元、一对话筒和一对扬声器的组合家用音响装置;图3示出了根据一个最佳实施例的媒体部件;
图4示出了根据一个最佳实施例的音频播放器部件;图5示出了根据一个最佳实施例的扇入和扇出端口;图6示出了根据一个最佳实施例的具有零或多个音频输入端口并具有零或多个音频输出端口的音频部件;图7示出了根据一个最佳实施例通过使用一个音频播放器去记录和播放声音注释所使能的声音注释的应用;图8示出最根据一个最佳实施例的声音通信/耳机应答的应用;图9示出了根据一个最佳实施例的一个被外部同步到主时钟的多媒体播放器;图10示出了根据一个最佳实施例的将三种声音,即音乐、音响效果和话外音混合到一起并通过诸如一个扬声器的输出设备加以输出;图11示出了根据一个最佳实施例的某些音频类型;图12示出了根据一个最佳实施例将一种音频类型转换成另一种音频类型的转换处理;图13示出了根据一个最佳实施例的一个远程过程调用;图14示出了根据一个最佳实施例具有用于从其输入缓冲器中读出数据,对数据进行处理以及将处理结果写入其输出缓冲器的一个相关Run()成员功能的音频处理器结构;图15示出了根据一个最佳实施例的音频处理器;图16示出了根据一个最佳实施例在图1 5中所示之网络是如何执行处理的;图17示出了根据一个最佳实施例的一个音频端口;图18示出了根据一个最佳实施例的诸如是一个播放机的音频处理器;
图19示出了根据一个最佳实施例与用于激活一个音频处理器相关的递归逻辑;图20示出了根据一个最佳实施例用于表示与一个用于释放所述音频处理器相关的详细逻辑的流程图;图21示出了根据一个最佳实施例表示与运行一个音频处理器相关的逻辑的流程图;图22示出了根据一个最佳实施例将一个视频数字转换器部件连接到一个观查器部件上以便在计算机屏幕上进行显示的例子;图23示出了根据一个最佳实施例在一个效果处理器中对来自两个视频目标的图象进行混合并将其结果显示于计算机屏幕上的一个例子;图24示出了根据一个最佳实施例如何使用图形端口;图25示出了根据一个最佳实施例表示与一个输出端口的Write成员功能相关的逻辑的流程图;图26示出了根据一个最佳实施例的一个输入端口的读出处理;图27示出了根据一个最佳实施例的一个输入端口的下一个成员处理;图28示出了根据一个最佳实施例两个部件MIDI播放机2800和MIDI接口2810是如何被用于操纵联接到所述计算机上的音乐合成器以便进行演奏的;图29示出了根据一个最佳实施例MIDI数据是如何被记录和如何从一个外部音乐合成器被播放的;图30示出最根据一个最佳实施例MIDI数据是如何被播放的;图31示出了根据一个最佳实施例的包括有MIDI和音频端口的媒体部件;
图32示出了根据一个最佳实施例被划分成公用、实时和互斥信息的详细的系统信息;图33示出了根据一个最佳实施例MIDI信息的某些格式;图34示出了一种根据最佳实施例的封装MIDI信息类型和结构,状态字节和时间标记的MIDI包目标;图35示出了根据一个最佳实施例的一个扇入操作的例子;图36示出了根据一个最佳实施例的一个MIDI输出端口的Write()成员功能;图37示出了根据一个最佳实施例的一个MIDI输入端口的Read()成员功能;图38示出了根据一个最佳实施例的具有一个单一输入端口和两个输出端口的媒体部件;图39示出了一个根据最佳实施例能够演奏时基媒体顺序的媒体部件;图40示出了根据一个最佳实施例用于使一个音频部件播放和记录音频数据的音频播放机;图41示出了根据一个最佳实施例的一个扬声器部件的例子;图42示出了根据一个最佳实施例的话筒部件的例子;图43示出了根据一个最佳实施例的一个混频器部件的例子;图44示出了根据一个最佳实施例的一个分离设备部件的例子;图45示出了根据一个最佳实施例的一个增益部件的例子;图46示出了根据一个最佳实施例的一个回波部件的例子;图47示出了根据一个最佳实施例的一个抖颤(fuzz)部件的例子;图48示出了根据一个最佳实施例的一个音频类型转换器的例子;
图49示出了根据一个最佳实施例的一个音频多路转换器;图50示出了根据一个最佳实施例的一个声音部件;图51示出了根据一个最佳实施例被置入一个声音部件之中的部件;图52示出了根据一个最佳实施例的一个实际的扬声器部件;图53示出了根据一个最佳实施例的一个实际的话筒部件;图54示出了根据一个最佳实施例的一个图形播放机部件;图55示出了根据一个最佳实施例的一个图形观看器部件;图56示出了根据一个最佳实施例的一个视频数字转换器部件;图57示出了根据一个最佳实施例的一个MIDI播放机部件;图58示出了根据一个最佳实施例的MIDI接口部件;图59示出了根据一个最佳实施例的一个MIDI滤波器部件;图60示出了根据一个最佳实施例的一个MIDI映象器部件;图61示出了根据一个最佳实施例的一个MIDI程序映象器部件;图62示出了根据一个最佳实施例的一个MIDI注释映象器部件;以及图63示出了根据一个最佳实施例的一个MIDI频道映象器部件。
本发明的最佳实施例本发明最好应用于驻留在诸如是IBMPS/2或AppleMacintosh计算机的个人计算机上的操作系统中。典型的硬件环境示于图1,该图示出了根据本发明的一个工作站的典型的硬件结构,它包括一个诸如是传统微机的中央处理单元10和一些通过系统总线相互连接的其它单元。图1所示的工作站包括一个随机存储存储器(RAM)14,一个只读存储器(ROM)16,一个用于将诸如是一个磁盘单元20的外围设备连接到总线的I/O适配器18,一个用于将键盘24,鼠标26,扬声器28,话筒32和/或诸如触屏设备的其它用户接口设备(未示出)连接到所述总线上的用户接口适配器22,一个用于将所述工作站连接到数据处理网络上的通信适配器34和一个用于将所述的总线连接到一个显示设备38上的显示器适配器36。所述工作站中具有例如Apple System/7操作系统这样的操作系统。
在一个最佳实施例中,本发明是根据使用面向目标编程技术的C++编程语言加以执行的。如本专业技术领域以内的普通技术人员所理解的那样,面向目标编程(OOP)的目标是多个包含有数据结构和在所述数据上进行操作的软件实体。这些元素一起使得所述目标能够根据由其数据元素所表征的特征和由其数据控制功能所表征的特性去有效地模拟现实存在的任一实体。利用这种方式,目标可以模拟象人和计算机这样的具体事物,并且它们可以模拟象数这样的抽象概念或几何概念。目标技术的优点源于三个基本原理,即封装、多形性和继承。
目标隐藏或封装它们数据的内部结构和使其功能可以进行工作的算法。目标不展示这些实施细节,目标表示代表没有用多余信息的抽象的接口。多形性是封装的进一步骤,其概念是多种形状,一个接口。软件部件能够产生另一个部件的请求而不必确切了解那个部件是什么。接收所述请求的部件解释它,并根据它的变量和数据确定如何执行所述请求。第三个原则是继承,它允许研制者重复使用予先存在的设计和代码。这种能力使研制者得以避免从无到有的建立软件。进而,通过继承,研制者获得具有继承性的子类别,这样,研制者随后就可以定制以满足他们的特殊需要。
现有技术的方法是将在一个过程环境中的多个目标分出层次并将库进行分类。市场上的很多应用结构都是采取这种设计方法。在这种设计中,在一个单片操作系统之上有一个或多个目标层。虽然这种方法在所述目标层中应用了包括封装,多形性和继承的所有原则并且这种方法相对于过程编程技术而言是一种改进,但这种方法有某些限制。这些困难是由下面这样一个事实所引起的,即虽然研制者很容易重新使用他们自己的目标,但很难使用其它系统的目标,并且所述的研制者仍然需要选用过程操作系统(OS)调用才能进入较低的非目标层。
面向目标编程的另一个概念就是趋向于应用开发的结构处理。对结构最理性的定义之一来自Illinois大学的Ralph E.Johnson和Purdue的Vincent F.Russ。在Illinois大学教学报告UIUCDCS91-1696发表的1991论文“重新使用面向目标设计”中,他们作出了如下定义“一个抽象的类别就是一组共同协作以执行一组职责的执行规定的一组计算职责的一组目标类别”。根据编程的观点,所述的结构是多组用于提供工作应用的预制结构的交互连接目标的类别。例如,一个用户接口结构可以提供绘图窗口,滚动条以及菜单等的支持和“系统预置”特性。由于所述的结构是基于目标技术的,所以这些特性能够被继承和发展,从而允许研制者在一个专门技术的特定领域内拓展所述的结构并建立定制的解决办法。它超过传统编程的主要优点就在于所述编程员未改变原来的代码而代之以扩展所述的软件。另外,由于所述的结构提供了体系引导和模型而同时又允许它们随后自由地将所述特定的作用唯一地提供给出问题的区域,研制者就可以不必盲目地通过代码层进行工作。
从商业的观点来看,可以把结构看作是一种封装或包括一个特定知识领域中专门技术的一种方式。合作发展组织、独立软件供应商以及系统综合者在诸如制造、计算以及流通业务等特殊领域内已经获得了有关的专门知识。这些专门知识被包括在它们的代码之中。通过将其收录在所述组织的编码之内,所述结构允许所述的组织收集和封装那个专门技术的共同特征。首先,这允许研制者建立或扩展利用这种专门技术的应用,其次,所述的问题获得了解决并自始至终贯彻执行和使用所述的商业规划和设计。结构以及结构后面所隐含的专门技术对于那些在垂直市场中已经获得了诸如制造、会计或生物技术的专门知识的组织而言具有至关重要的意义,并且它能够提供一种分布式结构以用于封装、转卖和推广应用他们的专门知识,并促进技术的进步和普及。
从历史上来看,所述结构只是在最近才作为个人计算站的主要概念而出现。这种进展是由于可获得诸如C++的面向目标语言而推动的。传统上,C++大多是从UNIX系统和研究者的工作站中发现的,而不是从商业设备的计算机上发现的。正是诸如C++和其它诸如Smalltalk等面向目标语言的语言,而使一些大学和研究单位研发出导致今天的商用结构和类别库的产品。某些这类产品的例子包括Stanford大学的InterView和来自Caunegie-Mellon大学的Andrew toolkit,以及来自Zurich大学的ET++结构。
所述结构种类的范围从用于协助开发用户接口的应用结构直到用于提供诸如通信、打印文件系统支援以及图形等的基本系统软件服务的低级结构。所述应用结构的商用实例是MacAPP(Apple),Bedrock(Symantec),OWL(Borland),NeXTStep App kit(NeXT),和Smalltalk-80MVC(ParePlace)。
利用所述结构进行编程要求习惯于其它种类型系统的研制人员采取一种新的思维方式。事实上,它根本不象传统意义上的“编程”。在诸如DOS或UNIX等老式操作系统中,研制者自己的程序提供了所述结构的全部。所述的操作系统通过系统调用来提供服务,即当它需要服务时,研制者的程序将产生一个调用,而在提供了所述的服务时,则控制其返回。所述的程序结构是以控制流程为基础的,所述控制流程包含于所述研制者编写的代码之中。
当使用所述结构时,这一切都是相反的。所述研制者不再决定控制流程。所述研制者必须放弃根据执行流程来理解编程任务的意向。必须根据所述目标的职责来考虑,这就必须依赖结构去确定任务应该在何时被执行。由研制者写入的程序是由研制者未写入甚至是研制者从没有见过的代码激活的。控制流程中的这一转变对于那些仅熟悉过程编程的研制人员来言可能是一个重大的心理障碍。然而,一旦理解了这一点,所述的结构编程所需要进行的工作量要远比其它类型的编程少得多。
利用与一个应用结构向研制者提供予制功能相同的方式,诸如包括于一个最佳实施例中的系统结构通过提供系统级服务使用相同的概念。诸如是系统程编员的研制者使用子类别/置换来建立定制的解决方法。例如,可以认为一个多媒体结构能够提供用于支援诸如音频,视频,MIDI,动画片制作等新的各种设备的基础。需要支援一种新设备的研制者应当对一个设备驱动器进行写入。为了利用结构达到这些目的,所述的研制者仅需要将所规定的特征和特性提供给新设备。
在这种情况下,研制者提供一种工具用于建立将要被多媒体网络调用的成员功能。研制者的直接受益是每种设备所需的类属代码已经由多媒体结构所提供。这就意味着研制者需要编写,测试和调试的设备驱动器代码将更少。使用系统结构的另一个例子应当具有一个用于SCSI设备、NuBus插件和图形设备的单独的I/O结构。由于具有继承功能,所以每一个结构都为在其设备类别内发现的通用功能提供支援。其它的研制者然后可以根据这些相容的接口以应用于其它种类的设备。
最佳实施例采用了所述结构的概念,并将其应用于整个系统。对于商业或联合研制者、系统综合者或OEM而言,这就意味着有关诸如MacApp等的结构已经展示了所有优点,即不仅包括诸如文本和用户接口方面的有关应用层级的优点,而且还包括诸如图形,多媒体,文件系统,I/O以及测试之类的系统级服务的优点。
在一个最佳实施例总体结构中的应用的建立很象写入一个遵守结构协议的特殊区域段。利用这种方式,编程的整个概念都政变了。取代逐行编写调用多API层次的代码,通过从在这种环境之中予先存在的结构获取类别,然后附加上新的特性和/或将所述的继承特性置换成所需特性来开发所述软件。
由此,研制者的工作就变成了收集编写的代码并与所有其它的结构应用共享这些代码。由于研制者将能够根据相互间的工作来生成代码,所以这个概念是相当有用的。这也使得研制者可以根据需要的多少来灵活地实现定制操作。某些结构将被用作其本身。在某些情况下,定制量将是最小化,所以研制者所插入的段将很小。在其它的情况下,研制者可以作非常广泛的修改并建立某些全新的设计。
在图1所示的最佳实施例中,一个多媒体数据路由选择系统通过计算机系统来管理所述多媒体信息的移动,而驻留在RAM14中的多媒体部件在CPU10控制下或通过总线12或通信适配器34与外部相关系以负责显示多媒体信息,不需要一个中心播放机去协同或管理系统的全部操作。这种体系结构提供了灵活性,并为一个新类型媒体的加入提供了增加的可扩展性。所述系统利用各种多媒体目标,其中的某些可用作连接目标。所述的连接目标包括增益,滤波器,放大器,混频器,播放机,和其它在面向目标操作系统中用作目标的多媒体部件。上述所讨论的目标包括一个代码或方法部件和一个数据部件。所述系统包括一个鼠标,以便于拖曳/投放,两次按动(double clicking),投放启动,光标定位,以及其它典型操作的图符操作。
在视频和音频产生工作室中,诸如声音,MIDI,和视频的媒体利用实际上的插入线为处于电源,效果处理器,和转接器之间的信号进行路由选择。信号处理算法也经常被表示成所述电阻,转接器和处理器的网络。这两种模型都可以被表示为被连接目标的导向图形。一个最佳实施例允许在个人计算机系统上实现把目标连接到一起模型。图2示出一个现有技术的家用组合音响装置,它包括一个磁带机,一个混频器,一个混响单元,一对话筒机,和一对扬声器。由于所述的话筒被连接到所述磁带机上,所以声音输入的路径选择为从所述的话筒到所述的磁带机,在这里,所述的声音被记录下来。由于所述联接是由磁带机连接到混频器,所以当磁带机进行播放时,其信号将被传送给混频器。同样,混响单元和扬声器被连接到与混频器相连的放大器。
一个最佳实施例使用面向目标技术来表示一个连接模型。多媒体目标可以相互连接,从而生成直接的数据流图形。另外,一组标准的多媒体目标被规定给所述系统。这些目标可以被连接到一起,以便于多媒体数据从一个目标流到另一个目标。通过利用诸如线,线段或其它适当的几何结构的几何图形将多个媒体目标连接起来,以助于所述的连接操作。下面要讨论的图示出了各种多媒体目标的例子,包括连接目标和用于表示内部数据结构和连接多媒体目标的逻辑的几何图。
用于路由选择的类别基于时间的媒体部件(此后称为媒体部件)的基本类别是用于路由选择的中心抽象。一个媒体部件具有零或多个输入端口和零或多个输出端口。在图3中,媒体部件具有一个单一的输入端口300和两个输出端口310和320。端口300、310和320用黑色的三角形来表示。
通过将媒体部件的端口相连接将所述媒体部件的子类别连接到一起。这种处理类似于在一个记录工作室内使用插入码将音频和视频部件相接到一起。在图4中,一个媒体部件的子类别、即一个音频播放机部件目标被连接到另一媒体子类别,即一个扬声器部件目标上。所述的音频播放机具有一个输出端口,且所述扬声器具有一个输入端口。利用成员功能调用对所述的媒体部件进行控制。例如图4中的音频播放机就具有与播放音频数据相关的成员功能。当调用所述音频播放机的成员功能Play( )时,音频数据将从所述的音频播放机传送给扬声器,从而可以从计算机的扬声器中听到所述的音频。由于所述的扬声器部件能够播放传送给它的任何音频数据,所以它不具有Play( )功能。所述的媒体部件完全可以用软件实现。然而,所述的媒体部件也可表示一个实际的硬件。例如,一个扬声器部件可以用于表示一个计算机的播放硬件。在这种方式之下,诸如是一个视频磁带记录机,混频器和效果处理器的外部媒体设备可以被表示成媒体部件并可以被连接到一起。
连接媒体部件通过连接媒体部件的端口可以将所述的媒体部件连接到一起。为了避免客户和部件把数据同时写入同一个端口,从而损害数据的完整性,客户机不允许对端口进行直接存取。客户机应当在多线索安全代用目标的基础上执行连接操作。根据上下文的关系,术语“代用”一词涉及到一种允许多个客户机去安全共享所述类示例的基础类别的特殊表示。在所述媒体部件的情况下,代用端口允许对实际的端口进行有限的间接控制。每一个媒体部件都具有用于建立与其每个输入和输出端口相关的代用的成员功能。这些端口代用是一些极轻的目标并且非常适于通过地址边界,由此有助于连接驻留于不同地址空间的媒体部件。
每个端口和端口代用具有与其相关的数据类型。这些类型的例子是MIDI数据,44k赫兹16位的音频数据,22K赫兹8位的音频数据和用于视频的图形数据。当两个端口被要求连接时,一个类型谈判协议保证所述端口能够支援兼容数据类型。假如所述端口不具有通用类型,就要产生一个异常。
在两个具有互不兼容端口类型的目标之间插入有转换器目标。所述转换器是一种取入一种数据而产生不同类型数据的部件。扇入和扇出端口的例子示于图5。可以选择多个特殊的子类别以禁止扇入和/或扇出。例如,音频端口既禁止扇入又禁止扇出,并试图通过将一个端口连接到一个以上的其它端口来产生所述的异常。扇入和扇出性质是利用特定的媒体子类别进行处理的。例如,在MIDI中,扇出将相同的数据传送给多个接收者,而扇入则从多个发送器中接收数据。
通过下述步骤将两个媒体部件A和B连接到一起1)调用A的成员功能,以请求一个输出端口代用,Pa;2)调用B的成员功能以便要求B去请求一个输入端口代用,Pb;3)调用Pa的成员功能ConnectTo并在Pb中作为自变量进行传送。
所述端口可以通过调用Pa的成员功能DisconnectFrom并在Pb中作为自变量进行传送而断开连接。当要连接或断开连接任一媒体部件时,无论端口类型是一个音频,图形,MIDI,或某些其它多媒体数据类型,都会激发上述过程。当两个端口都被连接时,没有编译时间检查。例如,没有什么东西可以使软件研制者避免去编写,编译,和链接一个试图将音频端口与所述MIDI端口相连的代码。代之,一个异常在运行时间内被产生。这种特性被明显地设计进所述的路由选择系统以便使得可多形性地连接媒体端口。例如,一个插入模块可以在特定的连接时间把一对媒体端口连接到一起,而不需要对不同的端口类型进行特殊处理。利用一个插入器可以用完全相同的方式对音频,视频,和MIDI端口进行处理。多个目标间的连接可以用在表示诸如一个显示器上的图符的所述多媒体目标的标记之间划一个线段来可视地加以表示。
音频数据的路由选择音频数据可在计算机上数字化,存贮,处理,和播放。一个计算机也可以用于合成和播放所述音频。一个模拟/数字转换器(ADC)被用于将一个模拟音频电子信号转换成一系列的称为数字音频取样的数码。所述音频通常以每秒8000次取样的取样频率被取样,以用于全程的电话质量音频;每秒钟44,100次取样,以用于小型磁盘(CD)质量音频和每秒钟48,000次取样,以用于数字音频磁带(DAT)。一旦成为数字形式,所述的音频就可以利用计算机加以存贮和处理。使用数/模转换器(DAC)将所述的数字音频取样转换回模拟音频电子信号。一个最佳实施例定义了用于为所述媒体部件之间的数字音频数据进行路由选择的端口目标(称为音频端口)的子类别。音频输出端口可以被连接到音频输入端口,以为音频数据进行路由选择。若一个媒体部件具有至少一个音频端口,它将被称之为一个音频部件。所有音频部件都是媒体部件基本类别的子类别。如图6所示,一个音频部件具有零或多个音频输入端口或零或多个音频输出端口。通过连接所述音频部件的端口,可以将它们连接到一起。这类似于使用插入码去把利用硬件的立体部件连接到一起。
一个最佳实施例有助于说明所述的音频部件是如何连接以建立各种有趣的应用的。图7,图8,图9和图10示出了能够使用音频部件构成的某些举例应用。图7示出了使用一个音频播放机如何写入一个声音注释应用以及如何记录和播放所述的声音注释。一个电话听筒被用于输入和输出。图8示出了声音邮件/电话应答应用是如何构成的。一个音频播放机在电话线上播放一个致意输出,而另一个音频播放机记录一个输入信息。图9示出了一个音乐应用。作为一个特殊效果的回波被加到一个乐器的声音上并通过一个扬声器被播放出来。图10示出了如何将三种声音一种是音乐,一种是声音效果,一种是画外音,混合到一起并将它们通过诸如扬声器的一个输出设备加以传送。
像所有的媒体部件一样,通过连接所述音频部件的端口便可将它们连接到一起。这个操作是通过选择一个音频部件端口,从一个部件端口向另一个多媒体部件端口延展诸如一条线的几何图形以及建立用于记住在所述显示器上几何表示的所述链接的数据结构来实现的。每一个音频部件都具有用于建立与其输入和输出端口相关的代用的成员功能。客户机通过根据每个部件申请的输入和/或输出端口代用,然后使用由所述代用目标所提供的成员功能来执行连接操作,从而把实际的输入端口连接到实际的输出端口。每个音频端口和端口代用具有与其相关的音频类型。图11列表了一些由所述最佳实施例支持的音频类型。
由所述显示器上的链接线段所表示的连接表示一个单一的音频通道。通过使用其中用于左通道而另一个用于右通道的两个连接来处理立体声。当有两个端口被要求连接时,一个谈判协议保证所述端口能够支援可兼容的数据类型。假如所述端口不具有通用类型,那么将产生一个异常。假如发生这种情况,一个音频类型转换器可以被插入到所述两个端口之间以将一种类型转换成另一种类型,如图12所示。在一个音频部件的网络中,不允许存在有回路(循环)。任何可能导致回路的连接企图都将导致产生异常。通过在诸如表示多媒体目标的标记的音频输入和输出端口的图形的图符之间延展诸如一个线段的几何图形,便可以在所述的显示器上几何地表示连接音频部件的处理。
实现音频部件基于客户机一服务器的体系结构被用于实现音频部件。对于每一个音频部件而言,都具有一个驻留于称为音频服务程序的任务之中的音频处理器目标。所述的音频处理器目标负责执行实际的信号处理。所述的音频部件子类别必须写入一个音频部件和一个音频处理器子类别。客户机/服务器方案被用于加强性能。若在单一任务之下执行了所有数据的移动和信号处理,则可以最有效地实现音频的插接线结构。这就避免了不必要的交互处理通信(IPC)和上下文转换。若所述的客户机存在于多项不同的任务之中,就需要一个声音服务器把处理集中在一个单一任务中。
还可以有另外一种实现方法,这种方法根据每个音频部件的不同的任务对信号进行处理。不需要用于音频处理的服务器。这是一种具有很多优点的替换,但遗憾的是它有一个缺点,即它完成数量级的速度要比本发明最佳实施例所进行的处理慢。在单处理机的情况下,即使是所述的机器具有加强的处理功率,这个比率也基本保持不变。
客户机/服务器模块音频部件需要方便与它们相对应的音频处理器之间进行通信。一个远程过程调用接口(RPC)被用于完成此任务。通常,一个音频部件子类别的成员功能远程激活在所述音频处理器上的“真实的”成员功能。图13是一个方框图,它示出了根据最佳实施例的远程过程调用。
执行连接与音频部件相反,音频处理器具有音频端口。音频部件具有音频端口代用。只要将在客户地址空间中的两个端口代用连接在一起时,在声音服务器地址空间中的相应音频端口就被连接到一起。所述的子类别不需要起任何使能作用,这些作用都是由所述结构完成的。
处理音频音频端口之间的连接是利用音频数据缓冲器完成的。每个连接或“插入线”都具有与其相关的缓冲器。音频处理器可以对与该缓冲器的地址和规模相关的音频端口提出要求。图14是一个方框图,它示出了一个具有相关Run()成员功能的音频处理器结构。所述的Run()成员功能用于从其输入缓冲器中读出数据,对这些数据进行处理以及将处理结果写入其输出缓冲器。所述缓冲器的规模是可变的,但其最佳规模是可容纳5毫秒取样。这个规模对于获取从起始到停止时间长达10分钟的性能目标是需要的。
基于帧的处理所述的声音服务器使用称作基于帧的处理的技术来处理声音取样,所述的基本处理如下1)排序音频处理器以便生产者早于消费者。
2)对于每个音频处理器而言,调用它的Run()成员功能。只要当一个I/O设备请求数据时,重复这个步骤。
对于处理音频而言,由于一旦指定了所述的运行顺序,就能够通过调用Run()很容易地产生所述帧,所以这是一个极为有效的方式。由于它使用了能够在一个单一帧中进行完全处理的固定规模的缓冲器,所以,Run()的执行是非常有效的。例如,参看图15,该图示出了一个音频处理器网络。每个音频处理器或结点都被标有一个字母。
为了产生声音,所述的声音服务器执行下列步骤1)排序音频处理器以便生产者早于消费者;2)在诸如是所述扬声器的音频I/O设备需要更多数据时运行它们。
图16示出了对于图15所示之网络这种处理是如何执行的。在所述第一个方框中排序所述的音频处理器,然后,以一个规定的顺序运行所述的处理器。同时,每个处理器都获得信息。在这个时间以前,没有处理器被运行。换言之,在所述处理器获得适当信息之前,所述处理器进入等待状态。
排序音频处理器使用称为模拟数据流的技术来排序音频处理器。由于在大多数场合下,所述的排序都是由一个结构自动确定的,所以大多数子类别成员都不必耽心排序。模拟数据流以拓扑逻辑次序反复通过所述的网络,就像数据从一个处理器通向下一个处理器一样。作这项工作的目的是为了看一看哪一个音频处理器可以运行,而哪一些音频处理器不能够运行。运行的音频处理器被放入运行表中并在所述运行阶段被反复停止运行。
若满足下述条件,则一个音频处理器的结点将能够运行#1它的输入端口具有可获得的数据,以及#2它的输入端口具有可以放置数据的地方。
每个音频处理器都具有一个CanRun()成员功能,若所述的的结点可以运行,则它返回到TRUE。CanRun()缺省执行使用上述法则,所以,若所述的音频处理器需要置换一个法则的话,一个子类别仅需要置换所述的CanRun()。若一个音频处理器可以运行,那么它将模拟从所有输出端口输出的数据流。Fire()实际上恰恰在周转并调用每个输出端口上其它的Fire()成员功能。输出端口的启动能够模拟所述端口输出的数据流,从而使得模拟数据在另一侧的输入端口处可用。输入端口具有一个IsAvailable()成员功能。当所述的端口具有可获得的模拟数据时,它返回到TRUE。图17示出了根据一个最佳实施例的音频端口。
由于对延迟的输入处于静止状态,所以延迟的优先级必须高于CanRun()。因此,所述的延迟必须仍然能够产生输出,直到所述的延迟用尽为止。所述的输入端口不再具有可获得的数据,但是所述的音频处理器必须仍然在运行。当没有输入可以适用并且在所述延迟期间内仍然有必须输出的数据时,必须修改CanRun()以使其返回到TRUE。即使是在数据流准则被满足的情况下,由于当所述播放机处于停止状态时,所述播放机不能运行,所以播放机也必须置换CanRun()。播放机必须修改所述法则,从而使得在所述播放机处于停止状态时,CanRun()总是能够返回到FALSE,而与所述的数据流准则是否得到了满足无关。音频处理器能够询问它的音频输出端口以确定从数据被写入所述端口的缓冲器开始到所述音频实际上被用户听到为止的延迟。这就允许音频处理器被同步到任一时基。图18,图19和图20示出了与音频处理器相关的逻辑流程。一个诸如是播放机的音频处理器确定哪一种处理是需要的并激励示于图18中的RequestOrder。
图18是一个流程图,它示出了根据一个最佳实施的用于调用一个顺序请求的详细逻辑。处理是在端1800处开始并直接通向功能块1810以使得运行表失效。通过丢弃启动一个多媒体目标,在一个多媒体目标上连扣两下鼠标或使用任意一个表示操作启动的其它图符操作可以使所述的运行表失效。而后在判定块1820处执行一个测试以确定所述的音频处理器是否能够运行。假如是,那么在功能块1830处释放音频处理器,控制转向端1850。但是,若所述的音频处理器不能运行,那么在功能块1840中激活所述音频处理器,控制转向端1850。
图19示出了根据一个最佳实施例与激活一个音频处理器相关的递归逻辑的流程图。处理是在端1900处开始的,这里的控制来自功能块1840或由终端1990处产生的递归调用。在二者之一的情况下,控制立即去往功能块1910,在这里,变址i为零,计数N被设置得等于音频处理器输出端口的数。然后在判断块1920执行一个测试,以确定是否计数i=N。如果是,控制返回到端1930。如果不是,所述输出端口在功能块1940处被启动。所述输出端口在功能块1950处被标记为已经启动。在功能块1960处把所述输出端口连接到音频处理器,在功能块1970增加计数i,并在功能块1980执行一个测试,以确定所述的音频处理器是否能够运行,通过端1900为图19所示之逻辑产生一个递归调用。如果不能运行,控制转向判断块1920以继续进行处理。
图20的流程图详细地示出了与释放所述音频处理器相关的逻辑。处理是在端2000处开始的,在这里,控制来自功能块1830或从端2018或2080产生的一个递归调用。在这两种情况下,控制都直接导向功能块2004。在功能块2004,变址i等于0而计数N被设置等于音频处理器输出端口的数。然后,在判断块1920执行一个测试,以确定计数i是否等于N。如果是,控制转向功能块2020,以重置变址和计数的初值。然后在判断块2024执行一个测试以确定是否i=N,如果不是,那么在功能块2040中,输入端口i被标记为没有被启动,在功能块2050获得连接到所述输入端口的音频处理器。在功能块2060,计数增加,并且在功能块2070处执行一个测试,以确定所述的音频处理器是否能够运行。假如是,控制在端2040处返回。如果所述的音频处理器不能够运行,通过端2080为图20所示之逻辑提供一个递归调用。若所述的音频处理器能够运行,控制转向判断块2024以对变址进行再次测试。
若在判断块2006处变址i不等于N,那么在功能块2008内所述输出端口被标记为NOT启动。在功能块2010处获得连接到所述输出端口的音频处理器,在功能块2012处计数增加,并在判断块2014处执行一个测试以确定所述的音频处理器是否能够运行。如果所述的音频处理器不可以运行,通过端2018为图20所示之逻辑提供一个递归调用。若不是这样,则控制转向判断块2006以再次测试所述变址并继续进行处理。
图21是一个流程图,它表示了根据一个最佳实施例与运行一个音频处理器相关的逻辑。处理开始于端2100并直接通向判断块2104,以确定所述的运行表是否失效。若运行表没有失效,那么在功能块2106执行一个拓扑逻辑排序,从而对所述音频处理器根据其启动顺次进行排序。然后在功能块2110,所述的排序表被标为有效并且控制转向功能块2120。假如在判断块2104处所述运行表是无效的,那么控制转向功能块2120,以复位所述变址i和重新对计数N置数。接着,在判断块2122中执行一个测试,以判断所述计数i是否达到了计数值N。如果是,处理完成,控制转向端2130。如果不是,音频处理器i如同在功能块2124中描述的那样运行,且变址i如在功能块2126中描述的那样增加。
视频和图形数据的路由选择视频信息可以在一个计算机上被数字化,存贮,处理和播放。一个视频数字转换器被用于把一个模拟视频电子信号转换成一系列被称作一个帧的数字图象。每一秒钟被进行数字转换的帧的数量被称之为帧速率。每秒15帧或13帧是典型的帧速率。一旦处于数字形式,就可以利用计算机对所述的视频进行存贮和处理。通过在计算机屏幕上以原来的帧速率按顺序显示所述的数字图象,所述的视频就可以被播放出来。
一个图形目标是用于表示能够在计算机屏幕上进行显示的任一目标的基本类别。所述图形目标的子类别包括(但不受其限制)有多边形、曲线和数字图象。数字化视频的每一帧是一个数字图象,因此可以利用一个图形目标来表示。
图形输入和输出端口被用于对从一个媒体部件到另一个媒体部件的图形目标进行路由选择。当每一个视频帧都是一个图形目标时,数字视频可以这种方式进行路由选择。由于图形端口可以对任何图形目标进行路由选择,所以动画数据也能够使用图形端口进行路由选择。使用包含有图形端口的媒体部件,可以建立其间具有视频流的视频目标网络。利用这种方式,可以构成各种有趣的应用。图22示出了根据本发明一个实施例把一个视频数字转换器部件插入到观看者部件之中以在计算机的屏幕上进行显示的例子。
图23是一个较复杂的例子,它示出了根据一个最佳实施例如何将来自两个视频目标的图象在一个效果处理器中进行混合并在计算机屏幕上进行显示。借助于所述的端口代用将图形端口连接到一起。每一个视频部件都具有用于建立与其输入和输出端口相关的代理的成员功能。客户机通过申请来自每个部件的输入和/或输出端口代用执行所述的连接操作。然后,利用由所述代用目标提供的成员功能将实际输入端口连接到实际输出端口上。每一个图形端口和端口代用具有与其相关的图形类型。当两个端口被要求连接时,一个类型谈判协议保证所述的端口能够支援兼容的数据类型。若所述端口不具有通用类型,将产生一个异常。
所述连接视频部件的处理可以通过在表示视频输入和输出端口的标记之间延展诸如一个线段的几何图符在一个显示器上几何地加以表示。
数据的路由选择通过指向图形目标的写指针和读指针可以使图形端口控制图形数据。用于写入的端口执行是完全同步的所述图形输出端口的Write()成员功能被阻塞,直到所述图形目标被传送给接收机为止。由于性能方面的原因,所述的图形端口不使用拷贝语义。由于在这种操作之中包含有一定数量的处理器和存贮器,所以,应避免RGB位映象的拷贝,代之以将指向所述图形目标的指针从所述的图形输出端口传送至所述图形输入端口。如果一个共享存贮器被用于存贮正在被写入和读出的所述图形目标,或者如果在一个任务的整个地址空间中拷贝所述的图形目标,所述同步接口就在所述整个地址空间中起作用。在所述连接被破坏所引起的事件中,被封锁的图形端口将不再被封锁。
图24示出了根据一个最佳实施例是如何使用所述图形端口的。1)在源媒体部件中的任务将一个图形目标写入到所述媒体部件的输出端口中;2)指向所述图形目标的指针被传送给所述目地媒体部件的一个已连接的输入端口;3)在所述目地媒体部件中的任务调用它的输入端口的Read()成员功能,并且被封锁、解封锁和阅读所述的图形目标指针;4)当这个任务完成了对所述图形目标的处理时,它调用所述目地媒体部件输入端口的Next()成员功能;5)源媒体部件的任务被释放,并从写调用返回。由于所述的目地已伴随它而结束,所以,可以安全地处置所述的图形目标。图25示出了一个表示与一个输出端口Write成员功能相关的逻辑流程图。指向图形目标的指针被归入这个成员功能中。处理是在端2500开始的,并直接通向判断块2510,以确定所述的端口是否已被连接。如果所述的端口未被连接,那么,如在端2520所示,就要产生一个异常。如果所述端口已被连接,那么在判断块2350处执行一个检测,以确定所连接的端口不处于同一地址空间。若所述的端口不处于同一地址空间,那么在功能块2540处,整个的图形目标被拷贝到共享存贮器中。若所述地址处于同一地址空间,则指向所述图形目标的指针被拷贝到存贮器中。在这两种情况的任一种情况下,下一步都是要将一个标志信息如在功能块2560处所描述的那样传送给所述的输入端口,并封锁所述的任务直到如在功能块2570处所描述的那样的所述输入端口通知所述的端口处理已经完成为止,同时在端2580处结束。
图26示出了根据一个最佳实施例的输入端口的读处理。所述处理开始于端2600,并直接通往判断块2610以确定所述的端口是否已被连接。如果所述的端口未被连接,则所述结构在端2620处产生一个异常。如果所述端口已被连接,将在判断块2630处执行另处一个测试,以确定所述图形是否已以准备好。如果不是,执行一个块任务,直到如在功能块2640处所描述的那样准备好所述的目标,且控制转到功能块2650。如果所述的图形已经准备好,指针返回到功能块2650中的所述图形目标,控制通过端2660返回。
图27示出了根据一个最佳实施例的一个输入端口的下一个成员处理。所述处理开始于端2700,并直接通往判断块2710以确定所述的端口是否已被连接。如果所述的端口未被连接,那么如在端2720处所示产生一个异常。如果所述的端口已被连接,那么如在功能块2730内所示要发送一个适当的标志信息,并且在判断块2740处要执行另一个测试,以确定已经被连接的端口是否处于同一地址空间。若所述的端口处于同一地址空间,那么如在功能块2750中所示的删除所述图形目标的拷贝,且所述处理在端2760处结束。
MIDI数据的路由选择如同在MIDI Manufacturers Association Publication(1990)的题目为“MIDI 1.0 Detailed Specification”中所讨论的那样,乐器数字接口(MIDI)规定一个接口,用于在电子乐器、计算机、序列发生器、亮度控制器、混频器和磁带记录机之间交换信息。MIDI广泛地应用于记录工作室和日常演出之中,并在工作室记录、自动控制、音频视频生成以及合成领域中具有极大影响。利用其本身和其它媒体相结合,MIDI对于计算机在多媒体应用方面扮演着极其重要的角色。与数字式音频相比较,MIDI文件占据更少的空间,且所述信息是便于控制和观察的符号。例如,典型的3分钟MIDI文件可以在盘上要求30到60K字节。另一方面,一个CD优质立体声文件可能每秒要求大约200K字节,或3分钟36兆字节。MIDI数据可以以音乐注释,图形钢琴滚动(graphic piano-roll)或适于对不同乐器进行编辑和再赋值的信息表的形式出现。一般的MIDI具有标准化的乐器分配,从而极大地鼓励多媒体产品的生产者。
MIDI输入和输出端口被用于为时间特征MIDI信息包从一个媒体部件到另一个媒体部件进行路由选择。MIDI端口作为一个信箱区,用于跨越地址空间的MIDI信息包的通信。通过连接包含有MIDI端口的媒体部件,可以构成很多有趣的MIDI的应用。图28示出了两个部件,即一个MIDI播放机2800和一个MIDI接口2810是如何被用来演奏一个被连接到所述计算机上的音乐合成器的。所述的MIDI接口被用于连接诸如是一个音乐合成器的外部设备。所述的MIDI信息包被从MIDI播放机送到所述的MIDI接口。所述MIDI接口2810将所述的MIDI信息包转换成将要传送给所述音乐合成器以用于播放的MIDI数据。
图29示出了所述的MIDI数据是如何被记录和如何从一个外部音乐合成器中播放出来的。所述的MIDI端口2910具有一个用于根据从所述的音乐合成器接收的数据产生所述MIDI信息包的MIDI输出端口。所述的MIDI播放机具有一个MIDI输入端口,用于读取这些信息包并把它们存贮到计算机上。图30示出了MIDI数据是如何被播放3000,滤波3010和传送给一个外部音乐合成器3020的。滤波器3010能够在其输入端3000执行一个操作,并将操作结果传送给它的输出端3010。多个特定的滤波器可以被写入,以例如增加额外的注释,从而建立MIDI回波、延迟,或者截去音调带以减少带宽负载。
图31示出了包含有MIDI和音频端口的媒体部件。以软件为基础的音乐合成器从它的输入端口读取MIDI信息包并输出表示在其输入端上读入的音符的数字音频。借助于所述的端口代理将MIDI端口连接到一起。每个MIDI部件具有多种成员功能,以用于建立和其输入输出端口相关的代理。通过向每一个部件申请输入和/或输出端口代理并利用代理目标提供的成员功能,客户机执行连接操作,把实际的输入端口连接到实际的输出端口上。每一个MIDI端口和端口代理都具有与其相关的MIDI类型。当要求连接两个端口时,一个类型谈判协议保证所述的端口能够支援兼容的数据类型。若所述端口不具有通用类型,将产生一个异常。
通过在代表MIDI输入和输出端口的标记之间延展诸如是一个线段的几何图形,可以几何地表示连接MIDI部件的处理。
MIDI信息包用于通过传送和接收信息支援MIDI彼此相互通信的部件。MIDI标准定义了两种信息通道信息和系统信息。所述的通道信息被进一步分成声音信息和模式信息。系统信息还进一步被分成通用,实时和互斥信息,如图32所示。通道声音信息包括一个MIDI设备能够听到的通道号(0-15)。通道模式信息在基本通道上进行传送,以确定一个乐器对于所述通道声音信息的响应。系统通用信息送往所有的接收机,系统实时信息将同步信息载送给时基乐器。系统互斥信息允许制造者在标准规定之外提供MIDI支援。除了可以有选择地归入状态字节的同类连续信息(运行状态)以外,所有的信息都可以用一个状态字节开始。除了所述系统互斥以外的所有信息都具有0、1或2个数据字节。所述的系统互斥信息由任意数量的数据字节组成,并可由EOX字节结束。图33示出了根据最佳实施例的MIDI信息的格式。
MIDI信息包封装所述的标准MIDI包目标封装所有的MIDI信息类型及结构。另外,如图34所示,所有的MIDI包目标都具有一个状态字节和一个时间标记。通过定义具有方便结构和存取成员功能的信息类型,MIDI信息包的子类别反映了所述的MIDI协议。
MIDI端口MIDI端口用于在媒体部件之间交换MIDI信息包。一个MIDI输出端口能够写一个MIDI信息包,而一个MIDI输入端口能够读一个MIDI信息包。一个输出端口可以被连接到具有一个代用端口的输入端口上。所述的代用端口不能读或写MIDI信息包,它们是一些能够通往其它地址空间以支援连接的被动目标。提供成员功能以便在某一时刻将一个或多个信息写给一个输出端口。类似地,当从一个输入端口读出时,所有被缓存信息的下一个信息或下一个计数都可以被请求。在所述缓存器未被腾空之前,禁止读出,并且利用另一个任务来取消被禁止的Read调用。被写入一个输出端口的所述信息包的拷贝从一个输入端口被读出。
信息包按出现的次序被读出并且不依时间标记而排序。假如需要两个数据流的时序归并程序,那么将需要一个排序归并目标。为了理解为什么一个输入端口不被排序,就要首先回忆一下其时间既可以朝前以可以朝后流动的信息包。考虑包括有以6,8和10秒这个顺序所产生事件的特殊重放的情况。假如时间从5开始直到11周转并返到到5,那么事件的次序将是6,8,10,10,8,6而不是6,6,8,8,10,10。由于时间是在两个方向上行进,因而使得所述的排序不足以用于缓存所述的信息包,因而它是不精确的。
所述连接的扇入和扇出被支援,扇入和扇出提供了一种能力,即它可以使一个MIDI输出端口被连接到一个以上的MIDI输入端口,并且可以使得一个输入端口具有连接到一个以上的MIDI输出端口。图35示出了根据一个最佳实施例的一个扇形展开操作。
实施MIDI端口一个最佳实施例使用了一个被连接端口的表,以保持追踪MIDI端口的连接,并使用了一个共享缓冲器,以用于传送和接收信息包。每个端口都保持有一个与其相连接的所有其它端口的表。这个表利用Connect和Disconnect调用进行修改,并且当所述端口被破坏时,利用这个表通知所有与其相连的端口该端口已不复存在。当事实上这个输入端口被破坏时,这种处理避免了一个输出端口在其连接表内含有一个输入端口并试图向该输入端口写入。由此,一个输出端口保持有一个用于执行Write调用的输入端口表,并且它向其表中的每一个端口进行写入。而一个输入端口保持有与其相连的输出端口的表,并且当其脱离时,这些端口必须被告知。一个共享缓冲器支援生产者和消费者之间的协议。当所述的缓冲器是空的时,一个任务可以被中断,直到它不空为止。随后被置入其缓冲器的另一项任务可以通知被中断的任务它已被写入。替换之,其它的任务也可以取消所述的中断,以产生另一种类型的通知。
图36示出了一个MIDI输出端口的Write()成员功能。所述处理开始于端3600,并直接通往功能框3610以对计数器置初值并限制用于一个回路的值。然后,在判断块3620处执行一个测试以确定所述的计数是否已经达到了所述的限定值。如果所述的计数已经达到了限定值,那么在端3670处理完成。若所述的计数值未达到所述的限定值,那么在功能块3630处,所述信息包的拷贝被插入一个端口的缓冲器,并且在判断块3640处执行一个测试,以确定所述的缓冲器是否具有一个消息。如果所述缓冲器不是空的,那么将如功能块3650所示发送一个适当的消息。若不是这种情况,就不必传送消息。在这两种情况的任一种情况下,都要在功能块3660处增加所述的计数,并且控制通过端3670返回。
图37示出了一个MIDI输出端口的Read()成员功能。处理开始于判断块3700,以确定所述缓冲器是否是空的。若是,所述任务被中断,直到所述缓冲器包含有信息,或者是在功能块3710处产生一个取消。在判断块3730处执行一个测试确定所述的等待是否已被取消。若是,则在端3750处产生一个异常。若不是或者是在判断块3700处所述缓冲器不是空的,则在功能块3720处将信息包从所述缓冲器拷贝到调用程序中,并通过在端3740处的返回完成了所述处理。
抽象多媒体部件媒体部件被称之为媒体部件基本类别的基于时间的媒体部件是用于路由选择的主要抽象。一个媒体部件具有零或多个输入端口和零或多个输出端口。例如在图38中,所述的媒体部件具有一个单一的输入端口和两个输出端口。媒体顺序媒体顺序是表示媒体内容(包括音频顺序)的抽象基本类别。媒体顺序的子类别用于表示音频、视频和MIDI的削减。媒体顺序的特征在于宽度和类型表。由浮点值所表示的宽度指出所述的数据有多长。所述数据还被类型化以指出例如视频或音频等的哪一种类型的声音由所述数字所表示。可以用一个子类别去支援多种类型。例如一个音频子类别可以利用线性形式和压缩形式等两种形式提供数据。由于这种可能,所以媒体顺序具有一个类型表。播放机图39示出的一个基于时间的媒体播放机(player)基本类别的例子是一个能够演奏时基媒体顺序(称之为媒体顺序)的媒体部件。一个媒体顺序是一个能够被用于表示音频,视频,和动画制作或MIDI数据的削减的抽象基本类别。所述时基媒体顺序的子类别被用于执行音频,视频,动画制作,以及MIDI数据。一个播放机类似于一个磁带记录机,而一个媒体顺序类似于一个卡型盒式磁带。一个播放机具有用于演奏所述媒体顺序的play()成员功能,具有用于将其记录到所述顺序中的Record()成员功能以及用于停止播放或记录的Stop()成员功能。它还具有一个用于在一个顺序中寻找一个位置的Seek()成员功能以及一个允许所述播放机被同步到其它播放机或软件时钟上的成员功能。所述的播放机与数据分离后,该播放机可以被重复使用。在演奏了一个盒带以后,一个播放机可以被构成以演奏或记录另外一个盒带。
标准的音频部件音频播放机图40示出了一个用于使一个音频部件播放和记录音频数据的音频播放机。该音频播放机具有一个相关的基本类别。所述的音频数据被存贮于是媒体顺序的子类别并称为音频顺序的目标中。音频播放机类似于一个磁带记录机,所述的音频顺序类似于一个卡型盒式磁带。音频播放机是播放机的子类别。同所有播放声音,视频,或MIDI的播放机一样,一个音频播放机具有play()成员功能,所以声音可以被听到。它还具有一个Record()成员功能,所以所述的顺序可以被记录(如果允许写的话),同时还具有一个Stop()成员功能,用以停止记录和演奏。它还具有Seek()成员功能,用以对声音中的一个点进行随机存取。另外,它还具有允许所述的播放机被同步到其它媒体播放机或一个软件时钟上的成员功能。扬声器图41示出了一个扬声器部件的例子。扬声器部件是一个与音频输出设备相关的抽象基本类别。一个系统可以具有一系列与其相连的声音输出设备。一个扬声器部件可以被子分类,以表示所述输出设备的各种特性。例如,存在一个扬声器部件的子类别用于允许使用电话送受话器或电话线进行播放。一个扬声器部件是一个逻辑输出设备。可以有很多扬声器部件的示例存在,所有这些部件都可被混合到一起并在计算机的实际扬声器上放出。一个立体声输出设备由所述扬声器部件的两个子类别表示,其一用于左声道,而另一个用于右声道。话筒图42示出了根据一个最佳实施例的话筒部件。一个话筒部件是一个表示诸如话筒或线路输入的声音输入源的抽象基本类别。一个系统可以具有与其相连的一系列声音输入设备。话筒部件可以被子分类以表示这些设备。例如,所述话筒部件的子类别被用于从所述电话送受话器或电话线上进行记录。同所述扬声器部件一样,所述的话筒部件是一个逻辑设备。可以有很多话筒部件的示例存在,所有的这些示例都产生来自与相同实际话筒相同的声音。一个话筒部件具有一个输出。由于话筒部件是一个数据源,所以,必须通过调用Start()来明白无误地启动它。它可以通过调用Stop()加以停止。利用两个话筒部件的子类别来表示立体声输入设备,其一是左声道,其二是右声道。混频器图43示出了一个混频器部件的例子。混频器部件是一种把两个或多个音频输入总和成一个音频输出的抽象基本类别。输入的数量是由对所述构成设备的输入所确定的。分离器图44示出了一个分离器部件的例子。所述的分离器部件是一个抽象基本类别,它仅有一个输入,并将该输入分离成两个或多个输出。所述输出的数量取决于什么传送给了所述的构成设备。增益图45示出了一个增益部件的例子。增益部件是一个抽象基本类别,它能够增加或衰减一个信号的幅值。它被用于音量控制并具有SetGain()和GetGain()功能。一个增益部件将每一个输入声音取样数学地乘以增益值,并将其结果传送给它的输出端。增益值为1.0基本不能改变所述信号,而增益值为2.0则使其音量增大两倍,增益值为0.5则使其信号的音量变成原来的一半。太高的信号电平则受到削减。回波图46示出了根据一个最佳实施例的一个回波部件。一个回波部件是用于将一个回波加到其输入端并在其输出端上产生结果的抽象基本类别。一个回波部件具有三个可以选择的参数延迟长度,反馈,和混合速率。较长的延迟长度使得所输入的声音很象它处于一个大峡谷之中,而短的延迟能够产生类似于喷气飞机猛冲的卷边(flanging)效果;反馈确定所听到的回波的数量;而混合速率确定有多少回波的信号被混合回来。抖颤(Fuzz)图47示出了一个根据最佳实施例的抖颤部件。抖颤部件是一个把抖颤加入到一个声音内的抽象基本类别。这个效果在吉它或乐器声音上最有用了。音频类型转换器图48示出了一个音频转换器的例子。音频类型转换器是一个把一种音频类型转换成另一种音频类型的抽象基本类别。音频多路转换器图49示出了根据一个最佳实施例的一个音频多路转换器的例子。一个音频多路转换器部件把多种音频类型根据一个特定选择转换成其它的多种音类型。声音图50示出了根据一个最佳实施例的一个声音部件。声音部件是用于方便地记录和播放声音的目标部件。图51示出了嵌入所述声音部件中的多个部件。声音部件5100包括有一个话筒部件5110,一个(用于控制输入电平的)增益部件5120、一个音频播放机部件5130、(用于控制输出电平的)另一增益部件5140和扬声器部件5150。给出一个声音文件名,声音部件将自动地建立正确的音频顺序,且所需的音频部件就能演奏和记录所述文件。实际的扬声器图52示出了根据一个最佳实施例的一个实际的扬声器部件。一个实际的扬声器被用于所述计算机的输出放大器和扬声器的代用。它被用于控制整个计算机的音量。如果所述计算机还有另外的声音输出设备,那么将存在有实际扬声器的相应子类别。实际扬声器部件具有SetVolume()和GetVolume()成员功能,用于建立和获得整个音量级。实际话筒图53示出了根据一个最佳实施例的一个实际话筒的例子。一个实际话筒部件表示与话筒或线路输入相关的实际硬件。可以设置进入计算机的整个输入电平。
标准的视频部件图形播放机图54示出了根据最佳实施例的一个图形播放机部件。一个图形播放机部件是一个抽象基本类别,该类别涉及到能够演奏和记录随时间而变化的图形目标的时间图形目标的部件。图形顺序是时间图形的子类别。一个图形顺序是图形目标的顺序序列。其中,每一个图形目标都具有一个时间宽度。一个图形播放机类似于一个视频磁带记录机,而一个图形顺序类似于一个视频卡式盒带。图形播放机是播放机的子类别。像所有的用于播放声音,视频或MIDI的播放机一样,一个图形播放机具有Play()成员功能,所以,能够看到所述的图形目标;图形播放机还具有Record()成员功能,所以能够记录所述的顺序(若果允许写);它还具有Stop()成员功能,所以能够停止记录或播放;它还具有Seek()成员功能,可以对所述顺序中的一个点进行随机存取;同时,它还具有允许所述播放机被同步到其它媒体播放机或一个软件时钟的成员功能。图形观察器图55示出了根据一个最佳实施例的一个图形观察器部件的例子。图形观察器部件被用于在计算机显示器上观察图形目标。一个图形播放机必须被连接到一个图形观察器上,以便观看播放的图形目标。由于使用了对消费者电子视频的模拟,所以,一个图形播放机就像一个视频磁带记录机,而图形观察器就像是一个视频显示监示器。视频数字转换器图56示出了根据一个最佳实施例的一个视频数字转换器的例子。视频数字转换器通过一个连接到所述计算机上的硬件视频数字转换器把模拟视频转换成图形目标。视频数字转换器可与图形播放机连接以记录输入到所述计算机的模拟视频。由于模拟了消费者的电子视频,所以,所述的视频数字转换器类似于一个视频摄影机,而图形播放机则类似于一个视频磁带记录机。
标准的MIDI部件MIDI播放机图57示出了根据一个最佳实施例的MIDI播放机部件。MIDI播放机部件是一种部件的抽象基本类别,所述部件能够演奏和记录MIDI顺序。MIDI顺序是MIDITrack的集合,一个MIDITrack是一个顺序序列的MIDI信息包。MIDI播放机是播放机的子类别。像所有能够播放声音、视频或MIDI的播放机一样,一个MIDI播放机具有Play()成员功能。所以,MIDI信息包可以被传送给一个外部音乐合成器;它具有Record()成员功能,所以能够记录来自外部键盘的MIDI信息(假设写是被允许的);它还具有Stop()成员功能,用于停止记录或播放;它还具有Seek()成员功能,用于对所述顺序中的一个点进行随机存取。同时,它还具有允许所述播放机被同步到其它媒体播放机或一个软件时钟上的成员功能。MIDI接口图58示出了根据一个最佳实施例的一个MIDI接口部件的例子。MIDI接口部件既能将MIDI信息包传送给一个外部音乐合成器又能接收它们。一个MIDI播放机必须被连接到一个MIDI接口上,以便演奏或记录MIDI数据。MIDI滤波器图59示出了根据一个最佳实施例的一个MIDI滤波器部件的例子。MIDI滤波器部件是一个与具有一个MIDI输入端口和一个MIDI输出端口的目标的抽象基本类别。子类别提供了一种将输入数据转换成输出数据的变换算法。MIDI映象器图60示出了根据一个最佳实施例的一个MIDI映象器部件的例子。所述MIDI映象器部件是使用一个字典将输入MIDI信息包映象给输出MIDI信息包的MIDI滤波器的一个子类别。所述字典内的每个入口都是一对MIDI信息包,即一个输入信息包(称为键入)和一个输出信息包(称为值)。进入所述MIDI映象器的输入MIDI信息包被用作查寻所述字典的键入,查寻的结果就是要从输出端口输出的输出MIDI信息包。MIDI程序映象器图61示出了根据一个最佳实施例的一个MIDI程序映象。MIDI程序映象器部件是MIDI映象器的一个子类别。它把MIDI程序变化信息转换成另外的MIDI程序变化信息。它能够用于把任一乐器映象到任一其它乐器上。MIDI注释映象器图62示出了根据一个最佳实施例的一个MIDI注释映象器部件。MIDI注释映象部件是MIDI映象器的子类别,它转换MIDI注释通和MIDI注释断,从而使所述注释可以被调换。MIDI通道映象器图63示出了根据一个最佳实施例的一个MIDI通道映象器部件。MIDI通道映象器部件是MIDI的映象器的子类别。它转换MIDI通道声音和模式信息,并能用于通用目的的通道变化。
虽然本发明是根据最佳实施例而予叙述的,但本发明领域内的一般技术人员可根据本发明的原理进行不同的变型及改变。因此,本发明的范围受权利要求的保护。
权利要求
1.一种用于多媒体表示的系统,其特征在于包括a)一个处理器;b)一个与所述处理器相连并受其控制的存贮器;c)一个与所述处理器相连并受其控制的显示器;d)存贮在存贮器中并可在所述显示器上显示的多个多媒体目标;e)位于所述存贮器之中并可由所述显示器显示的一个连接目标,该连接目标用于将所述的多个多媒体目标中的第一个多媒体目标与一个乐器数字接口(MI DI)目标相连;以及f)由所述处理器控制通过所述连接目标在所述的第一多媒体目标以及所述的乐器数字接口目标之间确定信息路由的装置。
2.根据权利要求1所述的系统,还包括至少一个位于多媒体目标中用于接收乐器数字接口信息的端口装置。
3.根据权利要求2所述的系统,还包括至少一个位于多媒体目标中用于发送乐器数字接口信息的端口装置。
4.根据权利要求2所述的系统,还包括与一外设接口的装置。
5.根据权利要求1所述的系统,还包括播放音乐的装置。
6.根据权利要求1所述的系统,还包括在记录的信息上配音的装置。
7.根据权利要求1所述的系统,还包括把一个乐器数字接口类型转换成另一种媒介类型的装置。
8.根据权利要求1所述的系统,还包括把一个乐器数字接口类型转换成多种媒介类型的装置。
9.根据权利要求1所述的系统,还包括由多媒体目标的每个端口联接一种数据类型并多形地连接多媒体目标的装置。
10.根据权利要求1所述的系统,还包括联接不同类型的多媒体目标的转换装置。
11.一种用于在计算机系统上进行多媒体表示的方法,其中的计算机系统包括处理器以及与该处理器相连的存贮器和显示器,该方法的特征在于包括以下步骤a)在所述存贮器中生成多个包括至少一个连接目标和至少一个乐器数字接口目标的多媒体目标;b)在所述显示器上显示一个多媒体目标;c)在所述显示器上显示一个乐器数字接口目标;d)把所述多媒体目标和所述乐器数字接口目标相连;以及e)在所述多媒体目标和所述乐器数字接口目标之间确定信息路由以生成一个多媒体表示。
12.根据权利要求11所述的方法,还包括在一个多媒体目标端口接收乐器数字接口信息的步骤。
13.根据权利要求11所述的方法,还包括发送乐器数字接口信息到另一多媒体目标的端口的步骤。
14.根据权利要求11所述的方法,还包括与一外设接口的步骤。
15.根据权利要求11所述的方法,还包括播放音乐的步骤。
16.根据权利要求11所述的方法,还包括在记录的信息上配音的步骤。
17.根据权利要求11所述的方法,还包括把一个乐器数字接口类型转换成另一种媒介类型的步骤。
18.根据权利要求11所述的方法,还包括把一个乐器数字接口类型转换成多种媒介类型的步骤。
19.根据权利要求11所述的方法,还包括由多媒体目标的每个端口与一种数据类型联接并多形地连接多媒体目标的步骤。
20.根据权利要求11所述的方法,还包括联接不同类型的多媒体目标的步骤。
全文摘要
一种用于把乐器数字接口目标与多个多媒体目标进行连接以便由具有存储器和显示器的计算机对一个多媒体表示进行面向目标的模拟的系统。在显示器上生成的多个多媒体目标包括位于存储器中的至少一个连接目标和至少一个乐器数字接口目标,在显示器上显示的多个多媒体目标包括至少一个乐器数字接口目标。多媒体目标和乐器数字接口目标被连接并且通过在多媒体目标和乐器数字接口目标之间的连接对信息进行路由选择以便生成一个多媒体表示。
文档编号G06F9/44GK1125489SQ94192492
公开日1996年6月26日 申请日期1994年1月6日 优先权日1993年9月13日
发明者C·约翰·托别斯, H·罗蒂文·米而恩 申请人:塔里根特公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1