专利名称::可扩展媒体内容再现系统的制作方法
技术领域:
:本发明涉及一种可扩展媒体内容再现系统,具体但不排他地涉及这样一种用于嵌入式设备如移动电话的系统。
背景技术:
:目前,内容作者没有办法创作音频内容(例如音乐、声音、音响效果和现场效果的片段)以便该音频内容可以用一组非常灵活的声音来传递,并且在具有许多种CPU能力的许多种设备上一致地再现。更一般而言,这是所有类型的媒体内容都存在的问题。以电子设备可读的形式传递的音乐典型地分成两种类型"乐谱"格式和"音频"格式。前者包含说明演奏哪些音符的符号列表。后者提供实际音频演奏的编码,即表示听众将实际体验的声音的编码。前者的一个明显的例子是MIDI,而"WAV"文件或"MP3"文件则是后者的很好的例子。这两种格式都具有它们自己固有的优点和局限。音频格式试图将听众的体验的所有方面都进行编码,(以与音频CD上的音轨大致相同的方式)但是这些格式的数据趋向于是大的并且在带宽方面昂贵,而且表达完全固定。乐镨格式的大小是小的,并因而在带宽方面便宜,但是缺乏如何精确演奏它们的信息。乐镨格式试图通过合并指定将要使用的"乐器"的数据来避免这个问题。例如,MIDI乐镨指定用来演奏一组特定音乐音符的通用MIDI乐器(例如"大钢琴")。但是,这有赖于具有一组预安装的用于演奏(再现)乐谱的乐器的回放设备。每个乐器组的声音跨平台时并不完全一致;每个MIDI平台具有它自己的通用midi组实施,其中每个即使当再现同样的MIDI乐语时,也可能听起来差别很大。这导致的不灵活在于乐谱只可以从该设备上的乐器中选择;它不能创建它自己的乐器并将其与乐谱一起发送,并且内容作者不能准确预计音乐在接收它的每个平台上将听起来如何。注意,某些格式(例如XMF)允许内容作者包括特定的声音样本和样本组,该声音样本和样本组可由MIDI再现系统用来以灵活的声音组再现音频;但是这些格式即使当使用压缩格式(诸如MP3)的样本时,也具有大的格式大小(它们占用大量带宽)。一种称为结构化音频管弦乐队语言(SAOL)的特殊类型的先进乐谱格式,在乐镨格式内容上附加高级代码(描述声音合成模型)。这给予的灵活性在于,SAOL内容开发者可以谱写乐谱并且设计用于演奏的乐器。其先驱Csound也以这种方式工作,使用".csd,,文件以在一个文件中组合乐傳和乐器算法。尽管回放和与乐器的交互是实时的,但是合成算法必须在再现声音前编译。这在向一定范围的目标设备传递该内容时导致很现实的问题;生成SAOL片段的典型步骤可能需要其首先被编译成C++,然后被编译成本地平台的本机代码,这里可最终再现音频。这可能因此要求在客户端设备上存在编译器一一对于嵌入式设备如移动电话是个问题。CSound在httD:〃www.csounds.com/whatis/index.html有i兑日月。还可以参考http:〃mitpress.mit.edu/e-books/csound/frontpa2e.html和http:〃new.math.uiuc.edu/audible/csound/howtorun.htm.存在如VST的音频插件架构,其允许音频作者将预编译的代码合并到桌面创作(authoring)包中,用于实现灵活声音操纵,以创建音频格式的数据(或者有时创建在基于乐语的情形下使用的样本数据)。这样的插件必须被预编译成适合于用于创作内容的本地设备的本机代码;插件被内容作者手工安装在它们自己的创作设备上。这样的内容中使用的插件由内容作者就地使用;用户并不需要它们来收听可能使用这样的工具创建的音频内容。SSEYOKoan交互式音频平台允许音频内容被表示为"向量音频",其允许内容以紧凑形式表示,该紧凑形式包括定义如何在灵活定义的网络中使用预安装的音频合成器组件的参数。Koan向量音频解决方案允许预定义任意的预安装合成器组件网络(以及待演奏音符的信息,还有定义如何设置由预安装合成器单元揭示的特定控制器值的参数)。如果需要的话,Koan向量音频可以在容器文件(例如MIDI文件或者如HTML文件内的文本)内传递。内容提供者将分发表示某种形式(如音频,视频,文本或动画)的媒体的数据流。如果这是标准格式(如mpeg2)的,那么内容提供者可依靠能够处理它的客户端系统(客户端系统将播放该内容)。为了播放这样的媒体流,客户端系统应具有获得数据、将其转换成所需的输出格式并将其呈现给用户的机制。这通常包括几个步骤。然而,目前安装的机制可能由于各种原因而不适用*内容提供者可能想改变处理媒体的方法。例如,可能希望在音频剪辑上有频率滤波器。*为了理解内容,可能要求在客户端系统上不可得到的编解码器。*内容可能用专有机制来加密。*内容提供者可能希望在音频剪辑上添加特定形式的可视化。目前的媒体播放系统允许下载额外的编解码器以允许它们播放不同格式的媒体。这具有诸多局限*用户需要经过额外的步骤以安装用于媒体流的编解码器。这使得内容提供者更加难以使用许多不同的编解码器。*当编解码器是可执行的内容时,用户必须相信使用该编解码器是安全的。这通常由各种形式的加密签名处理,但是用户可能难以理解。这也使用户处在病毒或其它恶意代码的风险之中。*编解码器将可能来自第三方,而不是内容提供者。因此,内容提供者必须依靠该第三方系统的安全性和可用性。*如果编解码器具有多个版本,那么内容提供者难以保证客户端系统上有合适的版本可用。*即使有合适的版本可用,内^:供者也无法指定如何来播放媒体的配置。
发明内容根据本发明,提供了一种通过在将要流动的内容内嵌入程序代码或对此代码的引用来扩展々某体内容的方法,其当所述代码由接收媒体内容的客户端设备所运行时,使得能够在客户端设备上创建用于再现内容的程序模块。根据本发明的另一方面,提供了一种可扩展媒体内容再现系统,其包设备,该设备使用所述代码以使得能够创建用于再现内容的程序模块。本发明更一般地进一步扩展到计算机程序、数据格式以及数据流。它进一步扩展到存储在计算机可读介质上时的数据格式和计算机程序。本发明提供了将扩展信号处理代码("DSP代码")嵌入媒体内容的手段,其中该内容描述了媒体处理操作的网络(即,它描述了"媒体流动系统"的拓朴)。优选的解决方案具有媒体数据表示("MDR"),其包含网络拓朴信息和扩展DSP代码两者,所述扩展DSP代码被定义为预编译的、二进制可移植的代码(被表示成已知为安全的预安装的基础系统媒体类的可译子类),其准确地告诉设备的媒体引擎如何创建其自己的用于再现内容的"DSP节点"。信号处理代码可以用来表示执行一组DSP操作所需的逻辑。这种操作描述为"DSP单元,,(或"单元"),且每个单元可用来-产生数据(数据"源,,,如音频再现系统中的音调发生器,一系列的元事件信息如MIDI命令,屏保风格媒体系统中的图形数据流,用于传递来自在J某体数据自身内限定的数据区域或者通过流来动态传递的图形数据的单元)-过滤数据(包括DSP操作如音频再现系统内的滤^/合唱/混响,其中音频再现系统如软件合成器,或更一般的图形々某体表示中的图形效果单元)核心J某体系统可以管理相互间通信的DSP单元网络,来以传统J某体流动系统(包括MIDI或音频再现系统)的方式取得源数据/滤波器源数据/接收器(sink)数据,以将所得到的数据传递给目标设备或主机"播放器,,软件系统。核心媒体系统还可以用来将外部数据馈入(feed-in)给流(例如,外部供给的MIDI事件数据或外部供给的图形文件数据)。核心々某体系统可以包含被表示成用于目的系统的类的预安装DSP单元的"库"。本发明可以(但不需要)与TaoGroup的目的系统结合使用,其中该系统将二进制可移植操作系统("Elate")与提供在许多种硬件平台上执行多媒体应用的手段的扩展多媒体系统相合并。这些应用采用为二进制可移植代码的VP("虛拟处理器")书写。本发明优选地包括将声音合成代码嵌入到乐镨类型格式(如MIDI)的音乐内容中的能力。优选的解决方案具有包含网络布局信息以及DSP代码的音频数据表示,其中DSP代码被定义为预编译的、二进制可移植的类,其准确地告诉i殳备的嵌入式合成引擎如何创建其自身的用于再现内容的"乐器"。该表示可以(例如)在标准MIDI文件内的系统排他("SYSEX")消息内传递;这允许文件内的基本音频内容通过使用传统的MIDI实施来再现;其中建议的引擎位于设备上,此引擎可以用来根据在表示内定义的音频处理来再现MIDI文件,而且在这种情况下,MIDI文件将被完全地如内容作者所期望的那样再现。该表示还可以包含关于如何配置DSP模块的底层网络以为乐曲内每个乐器再现音频的网络定义信息。DSP代码可以以二进制可移植的格式传递,这意味着乐器定义只需要在载入时被翻译以由引擎使用。因为翻译处理非常高效,并且因为所得到的本机代码非常高效,所以只要所建议的引擎存在,就可以使用该解决方案在许多种设备上一致地再现音频。注意,网络定义不需要采用代码形式;它可以采用由引擎解释的分等级表示的格式来表示——例如MIDI文件的SYSEX消息内的XML格式。网络所引用的乐器可以被表示为引擎内预安装的已知"核心"单元的组合(在这情况下,该表示不一定要包含用于例如默认混响单元或默认基于方波的音调发生器单元的那些单元的新代码);或者可以是按照重载基础引擎类的类代码定义的完全新的任意单元的组合(例如任意音调发生器、包络发生器、效果算法等);或者其任何组合。所述单元通常非常灵活,具有才艮据参数化的信息重新配置的能力。例如,同一混响单元可以以与一个定义文件中同一个代码表示不同的两种或更多方式使用;每个乐器可以使用不同的小参数集来定义如何在不同的情形下略微不同地使用"共同"代码;这进一步减少了表示数据的大小。因为可以调节预安装单元,且因为在相同的网络中通过提供小参数集可以在不同的情形下不同地使用代码,且因为底层的代码提供了算法和类定义的紧凑的表示,所以即使对于复杂的声音表示,所述表示也可以非常小。该表示不需要由客户端编译,与需要编译成本机代码以传递等价演奏的方法如SAOL相比,给出了非常现实的演奏优点。因为代码作为类来传递,其可以在底层的音频系统所提供的基础类上扩展,所以类定义实际上可以非常小。例如,可以提供类来重载底层的混响实施的操作以便再现音乐。可替换地,该定义可以包括定义若干新的音调发生器(例如粒子合成器(particlesynthesiser))的代码,其只是派生自基础底层音调发生器类。该定义可以由核心合成器引擎来处理,核心合成器分成网络拓朴和效果单元引用二者。该定义内任何新的代码被提取到工作存储器。一组通信类实例被构造,其反映网络拓朴,由此,从核心引擎中的预安装代码或者定义中提供的代码的适当组合中,(以普通管线DSP系统的方式)构造相互间链接的(inter-chained)效果单元。然后引擎以普通软件合成器系统(如SSEYOKoan合成引擎)的方式生成再现描述所需的音频。该系统也被配置成可由于环境的影响而实时改变,所述环境影响如MIDI控制器改变(所述单元可以被配置成任意接收并处理,如果需要的话)、或者甚至至所用单元和/或网络拓朴的基础的实时改变。期望的核心音频和图形处理库由执行基本的音频和图形处理能力的类和方法组成。这些通常包括用于纟番;改音频数据块(或块序列)的方法、或用于在显示区域再现图形的方法。本发明可以通过多种方式加以实践,现在将通过举例、参考附图来描述一个具体的实施例,在附图中图l示出了数字信号处理管线;图2示出了包含在媒体流内的数据的优选结构;图3图示了如何4吏本发明的优选系统与Tao的目的Midi输出管理器("MOM")集成;图4是图示了本发明的优选工作模式的框图;以及图5示出了如何在优选实施例中处理Midi事件数据。具体实施例方式图1图示了适合供本发明使用的传统的数字信号处理管线(有时称为网络或网表(netlist))。媒体数据流10被供给到将数据流分离成图形和音频成分的分离器或解复用器12。图形流按顺序通过若干不同的对象处理器(objecthandler)或代码变换器(codex)("数字信号处理("DSP")节点")如滤波器14、16和色彩重映射单元18。然后输出被传送到图形设备20。同样地,音频流按顺序通过若干对象处理器如音调移动器22、混响单元24和滤波器26。然后输出的数据流传送到音频设备28。网络的拓朴通过Jf某体数据表示("MDR")来定义,这可以是预定义的且固定的,或者可以可替选地作为输入流10的一部分而实时供给。这样,网络拓朴(例如对象处理器的数目、它们的位置顺序、它们工作所需的输入参数等)不需要预先确定,而是可以在用户要求时供给和修改。当应用(未示出)请求播放々某体文件时,它发送网络描述到流管理器(未示出),然后流管理器基于MDR构造网络。然后流管理器发信号表明已准备好接收输入数据流10;数据流10可以被传给流管理器,或者流管理器可以自己抢先去"捕获"数据流。然后数据流按适当的顺序被供给到对象处理器。这可以由网络自身完成,其中每个对象调用下一个对象,或者流管理器可以保留控制且可以当对象被要求时一个接一个地调用对象。本发明允许媒体流的创建者不仅可以预定义网络的拓朴,而且可以在数据流被消耗时修改此拓朴。在优选的实施例中,这是通过在流中直接嵌入MDR实现的。流还可以包括扩展DSP代码,其准确地告诉客户端设备如何创建它自己的用于再现内容的DSP节点。这在媒体内容在嵌入式设备上消耗的场合尤其重要,所述嵌入式设备如移动电话,其可能只有有限数目的对象处理器(DSP节点)。假设客户端设备具有特定的最小功能,媒体流将被一致地再现而无论客户端平台如何,并且不需要用户预先下载额外的模块,也不需要用户在那些模块被编译时等待。这个灵活性当然也意味着不再要求客户端设备包括编译器。本发明中实时控制网络配置(以及发送允许动态地(onthefly)生成新单元的编译代码)的能力简化了对媒体广播者的要求。不同于不得不针对不同的平台广播不同的媒体流,他们现在可以只广播单个媒体流,他们可确信该单个媒体流将被(受制于特定的最小级别的功能的)许多种客户端设备一致地再现,而无论底层的客户端硬件如何。图2示出了数据流内MDR(媒体数据表示)的优选结构。可以看出,数据流包括关于网表配置的信息,所述网表配置自身包括单元配置信息以及单元代码。这后面是关于块的组织方式的信息。网表配置信息之后是内容数据。网表配置信息可以按要求嵌入到数据流内的任何位置,从而允许当内容数据在客户端设备上消耗时实时配置网络。单元配置信息可以采取具有嵌入式数据或者可替换地、压缩式二进制表示的XML描述的形式。单元代码通常是二进制的。为了避免疑惑,网表配置可以引用预安装的且动态定义的DSP单元类的任何组合,也就是才艮据网络的语义(semantics)的任何有效组合。在一个方便的实施例中,数据流可以由标准的MIDI格式定义。此格式允许包括META数据。在优选实施例中,MDR嵌入在SYSEX消息内。当然,应当理解MIDI只是适合供本发明使用的一种类型的数据流。还可以使用其它类型的数据格式,或者甚至是新的数据格式。如果该系统与MIDI相结合使用,则本发明允许使用传统的MIDI实施来再现文件内的内容。如果所建议的引擎存在于设备上,则此引擎可以用来根据在表示内定义的音频处理来再现MIDI文件,使得MIDI文件将如内容作者所期望的那样准确再现。网络定义所引用的DSP单元可以^J^示为预安装在该系统中的已知"核心"DSP单元的组合(在这种情况下,表示不一定要包含用于例如默认混响单元、或者默认的基于方波的音调发生器单元、不透明图形滤波器的那些单元的新代码);或者可以是依据重载基础引擎类的类代码而定义的全新的任意单元(例如任意的音调发生器、包络发生器、效果算法、图形滤波器等)的组合;或者它们的任何组合。如果本发明与音频相结合使用,则网络定义描述了如何构造相互间通信的DSP单元的网络,所述DSP单元可以用来针对乐曲内的每个乐器再现音频。如果本发明与流动媒体内容相结合使用,则一般来说,网络定义描述了如何构造4某体流动DSP单元的网络,所述々某体流动DSP单元用于再现MDR中预供给的数据或者可替选地、自动提供(可能通过因特网提供)的数据的任何组合。可以嵌入在网络定义中的新的DSP单元代码以二进制可移植的格式传递,这意味着DSP单元定义只需在加载时间被翻译并且如果合适的话则被证明验证,以由再现引擎使用。因为翻译过程非常高效,且因为所得到的本机代码非常高效,且因为代码可以是携带证明(proof-carrying)的并因而总是已知可以安全运行,所以如果所建议的引4存在,则可以在许多种设备上使用该解决方案以一致地再现音频和图形。新的DSP单元代码可以只从该系统内已知安全的类派生;必须使用系统字典来限定哪些类是可以安全使用的,以及哪些关于那些类的方法和哪些系统工具是可以安全调用的。注意,如果基本的新DSP单元将有效系统DSP单元适当地细分子类,则该新DSP单元可以从另一个新DSP单元(等等…)派生。DSP单元代码可以以MDR内的二进制数据来明确地提供,或者通过引用来定义(在这种情况下,可以使用例如URL来检索指定的代码)。注意,还可以使用版本技术。例如,MDR可以引用使用下述形式的XML描述符的代码,在该描述符中,URL可以返回包含具有适当版本更新的代码的容器(jar),其取决于什么版本可能(或者可能没有)已经安装在系统上而可以在适当时安装/贮藏在设备上。该描述还可以定义任选的对其它系统组件版本的从属。<xmlverslor"1.0"><vecjtormWfeystem><mWilineHne-T'modulea""-<classss><classld=7ave/,ss/mom/unlt/effect/reverb/myreverbMbaseonw/ave/iss/mom/unlt/effect/reverb1^src-"hltp:〃mydomaln/myeffecLcgicom/teogroup/reverb&version=1.23,47><untUs,,reverb"c="1#1290'1,;1#1290,1.;lffl293,1,'7><notes>Thisclassisbasedonthestandardreverbc1sss</notes></class></ct3$ses><modutes><modu,sldh='T><Unlte><Un1tld="3"c,ass-"/ave/iss/mom/unit/effeGt/reverb/myreverb"><notes>Thisclassisbasedcmthestandardrevert)dass</notes><lnput><fromunltid>1々fromunitici><parameter>0</parameter></input></inputs><pararneters><parametet><parameterict>style</param8tertcl:><value>hall</value></paramster>々parameters></UWt></L)nits><ule></vectomnidlsystem>作为携带证明的代码的替选方案,可以使用标准的代码签名技术。可以对各个代码元素进行签名,也可以对整个媒体文件自身进行签名,这指示了对文件的整个内容的元签名。如果代码是携带证明的,那么它当然只需要在系统緩存内验证和维护,而不需要对代码单独验证携带证明的代码本身是足够安全的。新的DSP单元代码总是基于系统内预定义的且已知为安全的DSP单元类代码。每个DSP单元可扩展颇简单的基类(例如简单的音调发生器)或者可扩展颇复杂的类(例如复杂的混响系统)。该系统还可以l吏用组件版本从属标记,以指示对可能需要底层系统软件动态更新的其它代码元素的从属。在音频情形下,DSP单元可以表示诸如音调发生器、LFO、合唱、混响、基于DLS的样本回放等的单元。通常,这种代码将包含在MIDI数据流的SYSEX内。对于媒体流动内容,DSP单元可以表示解密模块、编解码器、滤波器或可视化单元。DSP单元通常非常灵活,具有>^皮重新配置有可以在MDR内提供的或者甚至在网络自身内动态生成的参数化信息的能力。对于音频,同一混响单元可以才艮据一个定义文件内同一个代码表示以两种或更多种不同的方式来使用;每个乐器可以使用不同的小参数集来定义如何在不同的情形下略微不同地使用"公共"代码;这进一步减少了MDR内表示的大小。对于媒体流动内容,可视化单元可以具有修改它们的外观的参数,解密单元可以具有所提供的加密密钥,而编解码器可以具有质量参数。因为预安装的单元类代码总是被调节到更大或更小的程度,且因为代码可以在同一网络内通过提供小参数集在不同的情形下不同地使用,且因为底层的代码提供了算法和类定义的紧凑的表示,所以即使对于复杂的声音表示或者复杂的图形事件,所述表示也可以非常小。对于音频,同一混响单元可以以两种或更多种不同的方式来^f吏用。例如,可以提供类来重载底层混响实施的操作以便再现音乐片段。可替选地,该定义可以包括定义若干新的音调发生器(例如粒子合成器)的代码,所述新的音调发生器只是派生自基础的底层音调发生器类。对于媒体流动内容,用于滤波器的基单元类代码将处理基本数据传递,而额外的代码将只处理数据。当然应当理解,在许多实际实施例中,数据流将穿越网络而提供,例如在移动电话的情形下穿越无线网络而提供。然而,这并非是必需的,本发明同样可应用于本地提供的数据流,例如来自硬盘、CD或DVD上的文件的数据流。现在我们考虑本发明的系统可以集成在当前系统内的方式,所述当前系统由TaoGroupLimited,62-63SuttonsBusinessPark,Early,Reading,Berkshire,RG61AZ,UnitedKingdom提供。在这个特定实施中,媒体内容内的程序代码以虚拟处理器("VP")表示的二进制代码来传递。当然应当理解,客户端设备应该具有诸如Tao,sintent系统的合适平台,允许它们读取这样的二进制。毋庸置疑,本发明并不局限于该特定实施,相反,代码可以采用任何方便的被普遍理解的语言如Java来提供。图3图示了在驻留在设备上的Tao目的Midi输出管理器("MOM")系统的情形下,各种应用可如何使用优选实施例(被称为向量软合成器)。该设备上的每个应用使用一般MOM框架的服务来路由数据直到目标MIDI再现系统。存在各种可能的再现系统,包括基于MIDI硬件的再现(其直接向MIDI硬件设备驱动器7dev/midi"发送数据)、以及使用基于样本的数据的传统MIDI软件合成器。所提出的新组件称为"向量软合成器"(或"可扩展模块化合成器"),其使用所提出的功能再现MIDI数据。来自所有软合成器的音频数据被传递给多个可能目的地中的一个(取决于设备配置)。图4示出了基于类的层级结构如何可以用来部署上述系统内的向量软合成器。存在类的层级结构,其从外部API类ave/iss/mom/class开始,客户端应用4吏用该外部API类来与MOM服务器进程的实例进行通信。这个API类用来使用创建正确的类类型的类工厂来创建适当的再现器类的实例,以匹配应用的再现需求(这个类取决于应用的需要而可能或可能不处在单独的进程中)。用于再现器类的基类是ave/iss/mom/r/mom/class。对于我们所提出的解决方案,ave/iss/mom/r/soft/class软件合成器专门化由向量软合成器专门化类来进一步专门化,所述向量软合成器专门化类例如可以为/ave/iss/mom/r/soft/imp/com/tao國group/vector/class。一旦创建了MOM再现器,于是应用就可以使用MOM客户端API内的标准方法通过MOM框架将MIDI数据发送给向量软合成器类。为了创建将实施满足本专利要求的解决方案的向量软合成器,向量软合成器必须实施对标准MOM类方法(包括集格式和计算)的支持,以响应于文件内的MIDI数据,以响应于系统内的音频块再现请求(计算方法响应于使系统再现音频数据块的请求,系统必须在系统MIDI命令队列中查找与音频块时间戳匹配的命令*按需创建并修改合成器单元网络当发现表示网络定义的SYSEX命令时,合成器网络必须根据MIDI命令内的MDR来动态地重新构造。这需要对MDR进行语法分析(parse)、(利用按需进行的动态定义的类的证明验证来)构造相互间通信的类的网络。*通过该网络管理MIDI事件数据的再现当发现可能影响再现系统的状态的MIDI命令(例如音符开/关命令)时,这些命令必须被提供给网络内所有可能被影响的单元(例如音调发生器),使得这些单元可以通过(在适当时)改变状态或内部属性来响应于MIDI命令。*将再现的音频数据通过网络抽运到目的地(示出了一些候选的目的地,包括直接到音频设备、流动API、或者音频混合器API):响应于使系统再现音频数据块的请求,系统必须混合所请求的音频块。这是通过按照严格从左到右处理优先级顺序调用系统内每个单元的计算方法而进行的。音调发生器将根据反映新近的音符开/关事件的内部状态以及其他属性,来准备它们的输出音频块中的音频数据(并且也许可能涉及有关系统的音频样本数据);滤波器将根据来自其它单元的源音频数据块以及其它属性,来准备它们的输出音频块中的音频数据;各种单元输出(例如来自LFO的输出)可影响系统中其它单元内的任意参数。被标记为"输出"单元的系统末端的所有单元将它们的最终输出混合在一起,以创建用于合成器的最终音频块输出。图5图示了向量软合成器如何处理MIDI事件数据。当MIDI事件数据进入系统时,系统必须决定如何处理数据的每一项。如果数据是网络描述SYSEX命令,那么该信息用于创建或修改相互间通信的DSP单元的网络。但是,如果该数据不是网络描述SYSEX命令,那么将该命令放入带时间戳的MIDI事件队列中,以后按需从该MIDI事件队列中提取以处理输出系统所需的音频块。音频块使用DSP网络来再现。图5的流程图方框中的步骤"2."需要系统处理包含在MIDI系统专有消息内的向量网络描述命令。存在用于这样的命令数据的许多可能格式,包括XML的压缩式二进制表示。在下面的表格中给出了示范表示。这表示了如何再现整个MIDI网络的描述。注意,DSP代码元素可以嵌入到MDR自身内,或者可以通过具有任选的版本编号以及对其它系统组件版本的任选从属的URL来被引用。任选的midi线(midiline)部分详述了哪个DSP模块描述将用于再现每个MIDI线(注意,如果不存在,则假设midi线由首先列出的模块再现)。任选的类部分详述了在描述中表示的新类,其总是基于存在于预安装系统中的类。强制性模块部分可以包含一个或多个不同的模块条目。每个模块条目描述了如何为该模块产生声音。存在于模块定义中的信息包含用于存在的DSP单元的、它们如何互连、以及什么参数设置用于模块内的每个效果单元的充分且完整的信息。注意,如果参数值未定义,则假设它们为在效果单元类代码内定义的默认值。注意,来自一些才莫块的输出能够作为输入被馈送到其它模块,并且还用于调制任何其它模块的参数。可以对参数赋值以动态响应于存在于MIDI文件中其它地方的任意进来的MIDI控制器值(例如RPN、NRPN或SYSEX)。注意,如果命令包含VP形式的新DSP单元代码,那么首先为了安全操作而验证该代码,并且如果认为不安全的话,则拒绝该代码。这确保了系统是可安全扩展的,并且用户不必担心在可使用建议的格式来扩展的设备上播放内容。注意,DSP单元代码必须总是派生自层级结构中现有类中的一个,例如包括/ave/iss/mom/vector/reverb/class或者/ave/iss/mom/vector/tonegenerator/class或者/ave/iss/mom/vector/tonegenerator/sine/class。<table>tableseeoriginaldocumentpage19</column></row><table><paramsterlci>Levef</parametertd></p3rameter></parametera>々■><IMW="2"cl鄉-"/ave/iss/raom/u鹏ffe幽、<parameters><parameter><parameterid>sh3pe</paramelerid><value>square</Va(ue></parameter><psrameter><parameterid>freqhz</parametertd></parameter><parameter:><parameterld>level</parameterid></parameter><parameter><paramsterld>ratlo</paranneterid><rnWicontrollertype-"rpn"1d-,'54"sca)lng-"0,47">々value>-/parameter</Unit>Onltjd="3"c、ass=7ave/lss/mom/unit/effeGt/reverb/myreverb"><notes>TWsclassisbasedonUiestandardreverbciass</notes><lnputs><lnput><parameter>0</parameter></input><p3r3meters><p3rameter><parameterW>style</parameterfd></parameter></parametsrs><纖></Unlts></Modu,e></modutes>这个的全部都进入到MIDI中的SYSEX命令中。重申一下,响应于MIDI命令流中的其它命令,可能存在(例如使用MIDINRPN、RPN或SYSEX控制器消息来)提供新参数值的命令。向量合成器可以动态解释这个信息以响应于外部MIDI控制器。效果单元可以包含任何任意的数字信号处理逻辑。它们可以包括音调发生器、效果单元如混响系统、低频振荡器、包络和许多其它可能性。DSP单元还可能够执行受益于高性能二进制可移植可翻译代码的更高水平操作,^口自动作曲或自动酉己和声(harmonisation)。系统中的信号处理可描述如下。注意,为了简化逻辑,当构造网络拓朴时,单元应该置于拓朴内,使得按照严格的优先级顺序处理它们。响应于再现音频块的请求对于系统中存在的每个模块对于音频块中的每个控制率分级的块(控制率例如为100Hz)对于按照严格优先级顺序的模块中的每个单元在每个单元上调用"计算"方法。这将取决于模块的性质而有不同的效果。例如,音调发生器"计算"方法将使得其消耗该模块的命令队列中的音符开/关事件;并向输出緩沖器再现产生的音调。对于诸如混响单元的单元,它们将从在网络拓朴内馈送的单元的输出级取得输入,并基于输入的音频数据填充输出緩冲器。模块中的最终单元是向音频块提供输出的单元(其与系统中所有其它模块产生的音频数据混合)。注意,为了使多于一个的单元对最终输出有贡献,加法器单元可以用作模块中的最终单元。权利要求1.一种通过在将要流动的内容内嵌入程序代码或对这样的代码的引用来扩展媒体内容的方法,其当所述代码由接收所述媒体内容的客户端设备运行时,使得能够在所述客户端设备上创建用于再现所述内容的程序模块。2.根据权利要求1所述的方法,其中所述程序代码是二进制代码。3.根据权利要求1所述的扩展媒体内容的方法,其中所述程序代码是用于在所述客户端设备上的独立于硬件的再现引擎上运行的二进制可移植代码。4.根据前述权利要求中的任何一项所述的扩展媒体内容的方法,其中所述程序代码被安排成当在客户端设备上运行时,使得能够在数字信号处理网络中创建新节点。5.根据前述权利要求中的任何一项所述的扩展媒体内容的方法,其中所述程序代码是携带证明的。6.根据权利要求1到5所述的扩展媒体内容的方法,其中所述程序代码是数字签名的。7.根据前述权利要求中的任何一项所述的扩展媒体内容的方法,其中所述程序代码自身嵌入在所述媒体内容内。8.根据权利要求中1到6中的任何一项所述的扩展媒体内容的方法,其中所述媒体内容在其内嵌入至所述程序代码的链接(例如URL),以使所述客户端设备当其接收到所述媒体内容时能够获得所述代码。9.根据前述权利要求中的任何一项所述的扩展媒体内容的方法,其中所述程序代码包括组件版本从属标记。10.根据前述权利要求中的任何一项所述的扩展媒体内容的方法,其中所述媒体内容是根据MIDI标准来定义的。11.根据权利要求10所述的扩展媒体内容的方法,其中所述程序代码或对所述程序代码的引用包含在MIDISYSEX消息内。12.根据前述权利要求中的任何一项所述的扩展媒体内容的方法,包括在将要流动的所述媒体内容内进一步嵌入网络定义信息或对这样的信息的引用,其为所述客户端设备定义了用于再现所述内容的数字信号处理网络或所述数字信号处理网络的特性。13.根据权利要求12所述的扩展媒体内容的方法,其中所述网络定义信息包括数据,不包括程序代码。14.根据权利要求10或者当从属于权利要求10时权利要求11到13中的任何一项所述的扩展4某体内容的方法,其中所述网络定义信息或者对这样的信息的引用也包括在MIDISYSEX消息中。15.根据权利要求14所述的扩展媒体内容的方法,其中所述程序代码或引用以及所述网络定义信息或引用包含在公共的SYSEX消息中。16.—种可扩展^某体内容再现系统,包括安排成接收在其内嵌入程序代码或者对这样的代码的引用的媒体内容的客户端设备,所述设^f吏用所述代码以使得能够创建用于再现所述内容的程序模块。17.根据权利要求16所述的系统,其中所述程序代码是二进制代码。18.根据权利要求16所述的系统,其中所述程序代码是二进制可移植代码,所述代码被安排成在所述客户端设备上的标准的独立于硬件的再现引擎上运行。19.根据权利要求16到18中的任何一项所述的系统,其中在所述客户端设备上运行所述程序代码使得能够在数字信号处理网络中创建新的节点。20.根据权利要求16到19中的任何一项所述的系统,其中所述程序代码是携带证明的,并且其中所述客户端设备在接收到时进行证明确认检查。21.根据权利要求16到20中的任何一项所述的系统,其中所述程序代码是数字签名的,并且其中所述客户端设备在接收到时检查所述签名。22.根据权利要求16到21中的任何一项所述的系统,其中所述程序代码自身嵌入在所述媒体内容内。23.根据权利要求16到21中的任何一项所述的系统,其中所述媒体内容在其内嵌入至所述程序代码的链接(例如URL),所i^Jl户端设备使用所述链接来从远程位置获得所述代码。24.根据权利要求16到23中的任何一项所述的系统,其中所述程序代码包括组件版本从属标记。25.根据权利要求16到24中的任何一项所述的系统,其中所述媒体内容是根据MIDI标准来定义的。26.根据权利要求25所述的系统,其中所述程序代码或者对所述程序代码的引用包含在MIDISYSEX消息内。27.根据权利要求16到26中的任何一项所述的系统,其中进一步嵌入在所述4某体内容内的是网络定义信息,或者对这样的信息的引用,所述客户端设备被安排成使用所述信息来确定用于再现所述内容的数字处理网络或所述数字处理网络的特性。28.根据权利要求27所述的系统,其中所述网络定义信息包括数据,不包括程序代码。29.根据权利要求25或者当从属于权利要求25时权利要求26到28中的任何一项所述的系统,其中所述网络定义信息或者对这样的信息的引用也包括在MIDISYSEX消息中。30.根据权利要求29所述的系统,其中所述程序代码引用以及所述网络定义信息或引用包含在公共的SYSEX消息内。31.—种在其内嵌入程序代码或者对这样的代码的引用的媒体内容,其当所述代码由接收所述媒体内容的客户端设备运行时,使得能够在所述客户端设备上创建用于再现所述内容的程序模块。32.—种计算机可读介质,在其上存储根据权利要求31所述的媒体内容。33.—种电子数据流,其表示根据权利要求31所述的媒体内容。34.—种计算机程序,其当在数字计算机上运行时,实施根据权利要求1到15中的4壬4可一项所述的方法。35.—种再现可扩展J^某体内容的方法,包括接收在其内嵌入程序代码或对这样的代码的引用的媒体内容;执行所述代码;在创建再现程序模块时使用所述被执行的代码;并使用所述再现程序模块来再现所述内容。全文摘要一种可扩展媒体内容再现系统,其使用新颖的媒体数据表示来定义如何在客户端设备如移动电话上再现音频或媒体数据流。所述系统允许媒体内容作者包括流内指令以实时重新配置所述客户端所使用的数字信号处理网络。其还允许作者在所述媒体流内包括二进制代码,该二进制代码使所述客户端能够按需产生新的网络节点(例如音频乐器)。在一个音频实施中,新信息可以包含在以MIDI格式编码的数据文件的SYSEX指令内。文档编号G06F9/445GK101103334SQ200580030123公开日2008年1月9日申请日期2005年9月9日优先权日2004年9月10日发明者彼得·默里·科尔申请人:塔奥集团有限公司