一种远程实时音乐演奏系统及其使用方法与流程
未命名
08-27
阅读:115
评论:0
1.本发明涉及远程音乐演奏领域,特别地,涉及一种远程实时音乐演奏系统及其使用方法。
背景技术:
2.随着生活水平的日益增高,人们愈发注重体制体美劳全面发展,特别是其中的美育。因此对于音乐演奏的需求较大。而现有的音乐演奏包括线下和线上两种形式,但是线上形式虽然能够让更多人体验,但是无法给人带来身临其境的感受。而线下形式虽然体验更好,但是某些情况下演奏者无法在现场进行演奏。
技术实现要素:
3.为了克服现有技术的不足,本发明提供一种远程实时音乐演奏系统及其使用方法,以解决现有的音乐演奏线上形式无法给人带来身临其境的感受,而线下形式虽然体验更好,但是某些情况下演奏者无法在现场进行演奏的问题。
4.本发明解决其技术问题所采用的技术方案是:
5.第一方面,提供一种远程实时音乐演奏系统,包括:
6.用于演奏人演奏的第一音乐设备;
7.具备midi接口的第一计算设备,所述第一音乐设备通过midi接口与所述第一计算设备连接;
8.具备midi接口的第二计算设备,所述第二计算设备与所述第一计算设备通过webrtc连接;
9.用于向观众展示演奏人演奏的第二音乐设备,所述第二计算设备通过midi接口与所述第二音乐设备连接,所述第二音乐设备与所述第一音乐设备为同一种乐器。
10.进一步地,所述第二计算设备包括多个,每个所述第二计算设备分别与所述第一计算设备通过webrtc连接,每个所述第二计算设备通过midi接口连接一个所述第二音乐设备。
11.进一步地,所述第一音乐设备和所述第二音乐设备款式和型号相同。
12.第二方面,提供一种远程实时音乐演奏系统使用方法,应用于第一方面提供的技术方案中任一项所述的系统,所述方法包括以下步骤:
13.在第一音乐设备与第一计算设备、第二音乐设备与第二计算设备分别连接好后,分别打开第一计算设备和第二计算设备的浏览器,建立webrtc连接;
14.当所述webrtc连接建立成功后,第一计算设备获取第一音乐设备的输入数据并将所述输入数据通过所述webrtc连接传输到所述第二计算设备;
15.在所述第二计算设备接收到所述输入数据后,将所述输入数据传输到所述第二音乐设备。
16.进一步地,在第一音乐设备与第一计算设备、第二音乐设备与第二计算设备分别
连接时,包括:
17.分别在所述第一计算设备、所述第二计算设备上获取navigator.requestmidiaccess的值;
18.若均为true,则代表所述第一计算设备和所述第二计算设备浏览器支持web midi。
19.进一步地,还包括:
20.分别在所述第一计算设备、所述第二计算设备上执行navigator.requestmidiaccess()方法;
21.返回promise后,执行返回的promise中的then()方法;
22.若接收到返回midiaccess对象,则判断连接成功。
23.进一步地,所述第一计算设备获取第一音乐设备的输入数据并将所述输入数据通过所述webrtc连接传输到所述第二计算设备,包括:
24.所述第一计算设备获取所述第一音乐设备为uint8array格式的输入数据;
25.将所述uint8array格式的输入数据转换为arraybuffer格式;
26.将转换格式后的输入数据传输到所述第二计算设备。
27.进一步地,所述在所述第二计算设备接收到所述输入数据后,将所述输入数据传输到所述第二音乐设备,包括:
28.所述第二计算设备将arraybuffer格式的输入数据转换为uint8array格式;
29.将转换格式后的输入数据传输到所述第二音乐设备。
30.有益效果:
31.本技术技术方案提供一种远程实时音乐演奏系统及其使用方法,系统包括第一音乐设备、第二音乐设备、第一计算设备和第二计算设备,第一音乐设备与第一计算设备之间、第二音乐设备与第二计算设备之间通过midi接口连接;而第一计算设备和第二计算设备通过webrtc连接,这样演奏人在第一音乐设备演奏时,第一计算设备通过midi接口采集演奏信息通过webrtc传输给第二计算设备,最后第二计算设备将演奏信息传输给同一乐器的第二音乐设备,使第二音乐设备的演奏与第一音乐设备相同,实现即使演奏人不在现场也可以为观众演奏的效果,大大提高了观众的体验。
附图说明
32.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
33.图1是本发明实施例提供的一种远程实时音乐演奏系统结构示意图;
34.图2是本发明实施例提供的一种远程实时音乐演奏系统的实现流程示意图;
35.图3是本发明实施例提供的一种远程实时音乐演奏系统使用方法流程图。
具体实施方式
36.为使本技术的目的、技术方案和优点更加清楚,下面结合附图和实施例对本发明
的技术方案进行详细的描述说明。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本技术所保护的范围。
37.第一实施例,参照图1,本发明实施例提供了一种远程实时音乐演奏系统,包括:
38.用于演奏人演奏的第一音乐设备11;
39.具备midi接口的第一计算设备12,第一音乐设备11通过midi接口与第一计算设备12连接;
40.具备midi接口的第二计算设备13,第二计算设备13与第一计算设备12通过webrtc连接;
41.用于向观众展示演奏人演奏的第二音乐设备14,第二计算设备13通过midi接口与第二音乐设备14连接,第二音乐设备14与第一音乐设备11为同一种乐器。
42.本发明实施例提供的远程实时音乐演奏系统系统,包括第一音乐设备、第二音乐设备、第一计算设备和第二计算设备,第一音乐设备与第一计算设备之间、第二音乐设备与第二计算设备之间通过midi接口连接;而第一计算设备和第二计算设备通过webrtc连接,这样演奏人在第一音乐设备演奏时,第一计算设备通过midi接口采集演奏信息通过webrtc传输给第二计算设备,最后第二计算设备将演奏信息传输给同一乐器的第二音乐设备,使第二音乐设备的演奏与第一音乐设备相同,实现即使演奏人不在现场也可以为观众演奏的效果,大大提高了观众的体验。
43.第二实施例,作为对上述实施例一种补充说明,本发明提供一种具体的远程实时音乐演奏系统,包括:
44.用于演奏人演奏的第一音乐设备;
45.具备midi接口的第一计算设备,第一音乐设备通过midi接口与第一计算设备连接;
46.具备midi接口的第二计算设备,第二计算设备与第一计算设备通过webrtc连接;
47.用于向观众展示演奏人演奏的第二音乐设备,第二计算设备通过midi接口与第二音乐设备连接,第二音乐设备与第一音乐设备为同一种乐器。
48.其中,为了使更多观众听到演奏者的演奏,作为本发明实施例一种优选的实现方式,第二计算设备包括多个,每个第二计算设备分别与第一计算设备通过webrtc连接,每个第二计算设备通过midi接口连接一个第二音乐设备。这样只要将第二音乐设备分散到不同的地点,即可以为观众提供多个场地,增加观众人数。
49.此外,为了第二音乐设备发出的声音完全与第一音乐设备发出的声音相同,第一音乐设备和第二音乐设备款式和型号相同。
50.下面提供一个具体的例子,来说明本发明实施例的远程实时音乐演奏系统如何实现,如图2所示:
51.s1,准备支持midi i/o接口的同款同型号第一音乐设备和第二音乐设备(这里举例为两台yamaha psr-sx600电钢琴,命名为pa、pb),通过usb/midi连接线将两边的设备端与第一计算设备和第二计算设备之间连接起来(这里第一计算设备和第二计算设备为电脑,分别命名为ca、cb)。
52.s2,分别在ca、cb上打开浏览器,并在二者之间建立webrtc连接,包括音频流、视频
流及数据传输通道,这里将数据传输通道命名为dc。
53.s3,分别在ca、cb上获取navigator.requestmidiaccess的值,若均为true,则代表浏览器支持web midi,可继续执行s4。
54.s4,分别在ca、cb上执行navigator.requestmidiaccess()方法,返回一个promise,执行其then()方法,返回一个midiaccess对象,命名为midiaccess,并将其作为ca与pa、cb与pb连接成功的回调函数的一个参数。
55.s5,在ca上获取midiaccess.inputs的值,命名为inputs,其为midi输入端口集合。
56.s6,遍历inputs.values(),命名每个输入端口为input。
57.s7,在每个input上都添加一个onmidimessage监听器,每次当输入设备发送一个消息(例如电钢琴键盘的一次按键,这里为pa),这个回调就会被触发,命名为getmidimessage,其有一个参数,命名为midimessage,就是所需的midi消息值。
58.s8,在cb上获取midiaccess.outputs的值,命名为outputs,其为midi输出端口集合。
59.s9,遍历outputs.values(),命名每个输入端口为output。
60.s10,midimessage为uint8array格式,在ca上执行midimessage.buffer.slice(midimessage.byteoffset,midimessage.bytelength+midimessage.byteoffset)可将其转为arraybuffer格式,命名为mididata。需要说明的是,webrtc的datachannel的send()方法,只支持string、blob、arraybuffer、arraybufferview四种格式,而midi消息是uint8array格式,并不被send()支持,因此需要转换格式。
61.s11,执行dc.send(mididata)可将位于ca的midi消息通过webrtc远程传输到cb。
62.s12,在cb上的dc的onmessage事件中,通过event参数接收到ca远程传送过来的midi消息,即mididata。
63.s13,在cb上执行new uinit8array([mididata])方法,可将其转换回uinit8array格式,此时即为在ca上进行转换前的midimessage。
[0064]
s14,当有midimessage被传入时,可执行output.send(midimessage)方法将midi消息传至设备端pb,pb会将其转换成对应声音。此时整个声音传输架构搭建完成,音频流、视频流也可对演奏者提供辅助消息的实时反馈(如pb发出的声音、pb的监控实况)。
[0065]
其中,需要说明的是,浏览器的navigator的requestmidiaccess()方法提供发起访问连接到电脑上的midi设备的请求;web midi api的midiaccess接口提供列出midi输入设备及输出设备以及访问单个设备的方法;midimessageevent事件支持当所需的midi端口完成接收一个或多个消息时,触发web midi api的midimessage事件,包含诸如音调、音频、力度、时间等信息;浏览器的web midi在除safari外的所有电脑上的主流内核浏览器都支持。
[0066]
浏览器的webrtc允许网络应用或者站点,在不借助中间媒介的情况下,建立客户端(如浏览器等)之间点对点的连接,实现视频流和音频流或其他任意数据的传输。webrtc api的rtcdatachannel接口代表在两者之间建立了双向数据通道的连接。
[0067]
本发明实施例提供的具体的远程实时音乐演奏系统,借助webrtc的rtcdatachannel数据传输通道可以进行midi消息的实时传递,而借助webmidi的midiaccess可进行midi消息的实时接收与发送。相比websocket等技术使用的是客户端-服
务器-客户端通信架构,webrtc使用的客户端-客户端通信架构,能够提供更低的延迟,从而实现远程实时音乐演奏的效果;webrtc还可以进行音频与视频的通信,同样相比hls、rtmp等传统音视频技术使用的客户端-服务器-客户端通信架构也具有低延迟的特点,为演奏者提供辅助信息。另外webrtc具有可扩展性、安全性、灵活性和兼容性等特点。
[0068]
第三实施例,本发明提供一种远程实时音乐演奏系统使用方法,应用于第一实施例或第二实施例的系统中,远程实时音乐演奏系统使用方法包括以下步骤:
[0069]
在第一音乐设备与第一计算设备、第二音乐设备与第二计算设备分别连接好后,分别打开第一计算设备和第二计算设备的浏览器,建立webrtc连接;其中,在第一音乐设备与第一计算设备、第二音乐设备与第二计算设备分别连接时,包括:分别在第一计算设备、第二计算设备上获取navigator.requestmidiaccess的值;若均为true,则代表第一计算设备和第二计算设备浏览器支持web midi。分别在第一计算设备、第二计算设备上执行navigator.requestmidiaccess()方法;当返回promise时,分别then()方法;若接收到返回midiaccess对象,则判断连接成功。
[0070]
当webrtc连接建立成功后,第一计算设备获取第一音乐设备的输入数据并将输入数据通过webrtc连接传输到第二计算设备;具体地,第一计算设备获取第一音乐设备为uint8array格式的输入数据;将uint8array格式的输入数据转换为arraybuffer格式;将转换格式后的输入数据传输到第二计算设备。
[0071]
在第二计算设备接收到输入数据后,将输入数据传输到第二音乐设备。具体地,第二计算设备将arraybuffer格式的输入数据转换为uint8array格式;将转换格式后的输入数据传输到第二音乐设备。
[0072]
本发明实施例提供的远程实时音乐演奏系统使用方法,借助webrtc的rtcdatachannel数据传输通道可以进行midi消息的实时传递,而借助webmidi的midiaccess可进行midi消息的实时接收与发送。相比websocket等技术使用的是客户端-服务器-客户端通信架构,webrtc使用的客户端-客户端通信架构,能够提供更低的延迟,从而实现远程实时音乐演奏的效果;webrtc还可以进行音频与视频的通信,同样相比hls、rtmp等传统音视频技术使用的客户端-服务器-客户端通信架构也具有低延迟的特点,为演奏者提供辅助信息。另外webrtc具有可扩展性、安全性、灵活性和兼容性等特点。
[0073]
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
[0074]
需要说明的是,在本技术的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本技术的描述中,除非另有说明,“多个”的含义是指至少两个。
[0075]
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
[0076]
应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件
或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0077]
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0078]
此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0079]
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0080]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0081]
尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。
技术特征:
1.一种远程实时音乐演奏系统,其特征在于,包括:用于演奏人演奏的第一音乐设备;具备midi接口的第一计算设备,所述第一音乐设备通过midi接口与所述第一计算设备连接;具备midi接口的第二计算设备,所述第二计算设备与所述第一计算设备通过webrtc连接;用于向观众展示演奏人演奏的第二音乐设备,所述第二计算设备通过midi接口与所述第二音乐设备连接,所述第二音乐设备与所述第一音乐设备为同一种乐器。2.根据权利要求1所述的系统,其特征在于:所述第二计算设备包括多个,每个所述第二计算设备分别与所述第一计算设备通过webrtc连接,每个所述第二计算设备通过midi接口连接一个所述第二音乐设备。3.根据权利要求1所述的系统,其特征在于:所述第一音乐设备和所述第二音乐设备款式和型号相同。4.一种远程实时音乐演奏系统使用方法,其特征在于,应用于权利要求1-3任一项所述的系统,所述方法包括以下步骤:在第一音乐设备与第一计算设备、第二音乐设备与第二计算设备分别连接好后,分别打开第一计算设备和第二计算设备的浏览器,建立webrtc连接;当所述webrtc连接建立成功后,第一计算设备获取第一音乐设备的输入数据并将所述输入数据通过所述webrtc连接传输到所述第二计算设备;在所述第二计算设备接收到所述输入数据后,将所述输入数据传输到所述第二音乐设备。5.根据权利要求4所述的方法,其特征在于,在第一音乐设备与第一计算设备、第二音乐设备与第二计算设备分别连接时,包括:分别在所述第一计算设备、所述第二计算设备上获取navigator.requestmidiaccess的值;若均为true,则代表所述第一计算设备和所述第二计算设备浏览器支持web midi。6.根据权利要求5所述的方法,其特征在于,还包括:分别在所述第一计算设备、所述第二计算设备上执行navigator.requestmidiaccess()方法;返回promise后,执行返回的promise中的then()方法;若接收到返回midiaccess对象,则判断连接成功。7.根据权利要求4所述的方法,其特征在于:所述第一计算设备获取第一音乐设备的输入数据并将所述输入数据通过所述webrtc连接传输到所述第二计算设备,包括:所述第一计算设备获取所述第一音乐设备为uint8array格式的输入数据;将所述uint8array格式的输入数据转换为arraybuffer格式;将转换格式后的输入数据传输到所述第二计算设备。8.根据权利要求7所述的方法,其特征在于:所述在所述第二计算设备接收到所述输入数据后,将所述输入数据传输到所述第二音乐设备,包括:所述第二计算设备将arraybuffer格式的输入数据转换为uint8array格式;
将转换格式后的输入数据传输到所述第二音乐设备。
技术总结
本发明公开了一种远程实时音乐演奏系统及其使用方法,属于远程音乐演奏领域;系统包括第一音乐设备、第二音乐设备、第一计算设备和第二计算设备,第一音乐设备与第一计算设备之间、第二音乐设备与第二计算设备之间通过MIDI接口连接;而第一计算设备和第二计算设备通过WebRTC连接,这样演奏人在第一音乐设备演奏时,第一计算设备通过MIDI接口采集演奏信息通过WebRTC传输给第二计算设备,最后第二计算设备将演奏信息传输给同一乐器的第二音乐设备,使第二音乐设备的演奏与第一音乐设备相同,实现即使演奏人不在现场也可以为观众演奏的效果,大大提高了观众的体验。大大提高了观众的体验。大大提高了观众的体验。
技术研发人员:王健 高斌 邹琼 周双全
受保护的技术使用者:深圳市瑞云科技股份有限公司
技术研发日:2023.03.27
技术公布日:2023/8/24
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
