diff options
author | Fulup Ar Foll <fulup@iot.bzh> | 2018-05-13 22:07:22 +0200 |
---|---|---|
committer | Fulup Ar Foll <fulup@iot.bzh> | 2018-05-13 22:07:22 +0200 |
commit | 6f13e28ba698a2b0145acbb926b79cd569a31f44 (patch) | |
tree | 061e2daace484aea73200ab85db39b3fafeb95e4 /conf.d/project | |
parent | 0eb15da6365910ba3f290e3254719fd412ae0155 (diff) |
First testable version.
Mixing with volume and mute per audio role works.
Diffstat (limited to 'conf.d/project')
-rw-r--r-- | conf.d/project/lua.d/softmixer-02.lua | 168 | ||||
-rw-r--r-- | conf.d/project/samples/softmixer-multi-01.lua (renamed from conf.d/project/lua.d/softmixer-01.lua) | 74 | ||||
-rw-r--r-- | conf.d/project/sounds/trio-divi-alkazabach.mp3 | bin | 0 -> 7254516 bytes |
3 files changed, 208 insertions, 34 deletions
diff --git a/conf.d/project/lua.d/softmixer-02.lua b/conf.d/project/lua.d/softmixer-02.lua new file mode 100644 index 0000000..5ea52de --- /dev/null +++ b/conf.d/project/lua.d/softmixer-02.lua @@ -0,0 +1,168 @@ +--[[ + Copyright (C) 2016 "IoT.bzh" + Author Fulup Ar Foll <fulup@iot.bzh> + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + NOTE: strict mode: every global variables should be prefixed by '_' +--]] + +-- Static variables should be prefixed with _ +_EventHandle={} + +-- Call when AlsaCore return HAL active list +function _AlsaPingCB_ (source, result, context) + + AFB:notice (source, "--InLua-- PingCB: result='%s'", Dump_Table(result)) + +end + + +-- Display receive arguments and echo them to caller +function _mixer_config_ (source, args) + do + local error + local response + + -- ==================== Default rate =========================== + + local audio_defaults = { + ["rate"] = 48000, + } + + -- ======================= Loop PCM =========================== + + local snd_aloop = { + ["uid"] = "Alsa-Loop", + ["devpath"] = "/dev/snd/by-path/platform-snd_aloop.0", + ["devices"] = {["playback"]=0,["capture"]=1}, + ["params"] = audio_defaults, + ["subdevs"] = { + {["subdev"]= 0, ["numid"]= 51}, + {["subdev"]= 1, ["numid"]= 57}, + {["subdev"]= 2, ["numid"]= 63}, + {["subdev"]= 3, ["numid"]= 69}, + {["subdev"]= 4, ["numid"]= 75}, + {["subdev"]= 5, ["numid"]= 81}, + {["subdev"]= 6, ["numid"]= 87}, + {["subdev"]= 7, ["numid"]= 93}, + } + } + + error,response= L2C:snd_loops (source, snd_aloop) + if (error ~= 0) then + AFB:error (source, "--InLua-- L2C:snd_loops fail to attach sndcards=%s", Dump_Table(aloop)) + goto OnErrorExit + else + AFB:notice (source, "--InLua-- L2C:snd_loops done response=%s\n", Dump_Table(response)) + end + + + -- ============================= Sound Cards =================== + + local sndcard_0 = { + ["uid"]= "YAMAHA-APU70", + ["devpath"]= "/dev/snd/by-id/usb-YAMAHA_Corporation_YAMAHA_AP-U70_USB_Audio_00-00", + ["params"] = snd_params, + ["sink"] = { + [0]= {["uid"]= "front-right", ["port"]= 0}, + [1]= {["uid"]= "front-left", ["port"]= 1}, + } + } + + -- group sound card as one multi channels card + local sndcards= { + sndcard_0, + } + + error,response= L2C:snd_cards (source, sndcards) + if (error ~= 0) then + AFB:error (source, "--InLua-- L2C:snd_cards fail to attach sndcards=%s", Dump_Table(sndcards)) + goto OnErrorExit + else + AFB:notice (source, "--InLua-- L2C:snd_cards done response=%s\n", Dump_Table(response)) + end + + -- ============================= Zones =================== + + local zone_front= { + ["uid"] = "front-seats", + ["type"] = "playback", + ["mapping"] = { + {["target"]="front-right",["channel"]=0}, + {["target"]="front-left" ,["channel"]=1}, + } + } + + local multi_zones = { + zone_front, + } + + error,response= L2C:snd_zones (source, multi_zones) + if (error ~= 0) then + AFB:error (source, "--InLua-- L2C:snd_zones fail to attach sndcards=%s", Dump_Table(multi_zones)) + goto OnErrorExit + else + AFB:notice (source, "--InLua-- L2C:snd_zones done response=%s\n", Dump_Table(response)) + end + + -- =================== Audio Stream ============================ + + local stream_music= { + ["uid"] = "multimedia", + ["zone"] = "front-seats", + ["volume"]= 70, + ["mute"] = false, + } + + local stream_navigation= { + ["uid"] = "navigation", + ["zone"] = "front-seats", + ["volume"]= 80, + ["mute"] = false, + } + + local snd_streams = { + stream_music, + stream_navigation, + } + + error,response= L2C:snd_streams (source, snd_streams) + if (error ~= 0) then + AFB:error (source, "--InLua-- L2C:snd_streams fail to attach sndcards=%s", Dump_Table(aloop)) + goto OnErrorExit + else + AFB:notice (source, "--InLua-- L2C:streams_loops done response=%s\n", Dump_Table(response)) + end + + + -- ================== Happy End ============================= + AFB:notice (source, "--InLua-- _mixer_config_ done") + return 0 end + + -- ================= Unhappy End ============================ + ::OnErrorExit:: + AFB:error (source, "--InLua-- snd_attach fail") + return 1 -- unhappy end -- +end + +-- Display receive arguments and echo them to caller +function _init_softmixer_ (source, args) + + -- create event to push change audio roles to potential listeners + _EventHandle=AFB:evtmake(source, "control") + + _mixer_config_ (source, args) + +end diff --git a/conf.d/project/lua.d/softmixer-01.lua b/conf.d/project/samples/softmixer-multi-01.lua index ed60192..1b8ba02 100644 --- a/conf.d/project/lua.d/softmixer-01.lua +++ b/conf.d/project/samples/softmixer-multi-01.lua @@ -35,17 +35,45 @@ function _mixer_config_ (source, args) local error local response + + -- ======================= Loop PCM =========================== + + local snd_aloop = { + ["uid"] = "Alsa-Loop", + ["devpath"] = "/dev/snd/by-path/platform-snd_aloop.0", + ["devices"] = {["playback"]=0,["capture"]=1}, + ["subdevs"] = { + {["subdev"]= 0, ["numid"]= 51}, + {["subdev"]= 1, ["numid"]= 57}, + {["subdev"]= 2, ["numid"]= 63}, + {["subdev"]= 3, ["numid"]= 69}, + {["subdev"]= 4, ["numid"]= 75}, + {["subdev"]= 5, ["numid"]= 81}, + {["subdev"]= 6, ["numid"]= 87}, + {["subdev"]= 7, ["numid"]= 93}, + } + } + + error,response= L2C:snd_loops (source, snd_aloop) + if (error ~= 0) then + AFB:error (source, "--InLua-- L2C:snd_loops fail to attach sndcards=%s", Dump_Table(aloop)) + goto OnErrorExit + else + AFB:notice (source, "--InLua-- L2C:snd_loops done response=%s\n", Dump_Table(response)) + end + + -- ============================= Sound Cards =================== local snd_params = { ["rate"] = 48000, - ["channel"]= 2, + ["channels"]= 2, } local sndcard_0 = { ["uid"]= "YAMAHA-APU70", ["devpath"]= "/dev/snd/by-id/usb-YAMAHA_Corporation_YAMAHA_AP-U70_USB_Audio_00-00", - ["params"] = params, + ["params"] = snd_params, ["sink"] = { [0]= {["uid"]= "front-right", ["port"]= 0}, [1]= {["uid"]= "front-left", ["port"]= 1}, @@ -55,7 +83,7 @@ function _mixer_config_ (source, args) local sndcard_1 = { ["uid"]= "Jabra-Solemate", ["devpath"]= "/dev/snd/by-id/usb-0b0e_Jabra_SOLEMATE_v1.34.0-00", - ["params"] = params, + ["params"] = snd_params, ["sink"] = { [0]= {["uid"]= "front-right", ["port"]= 0}, [1]= {["uid"]= "front-left", ["port"]= 1}, @@ -64,7 +92,7 @@ function _mixer_config_ (source, args) local sndcard_2 = { ["uid"]= "Jabra-410", - ["params"] = params, + ["params"] = snd_params, ["devpath"]= "/dev/snd/by-id/usb-0b0e_Jabra_SPEAK_410_USB_745C4B15BD11x010900-00", ["sink"] = { [0]= {["uid"]= "back-right", ["port"]= 0}, @@ -131,54 +159,32 @@ function _mixer_config_ (source, args) AFB:notice (source, "--InLua-- L2C:snd_zones done response=%s\n", Dump_Table(response)) end - -- ======================= Loop PCM =========================== - - local snd_aloop = { - ["uid"] = "Alsa-Loop", - ["devpath"] = "/dev/snd/by-path/platform-snd_aloop.0", - ["devices"] = {["playback"]=0,["capture"]=1}, - ["subdevs"] = { - {["subdev"]= 0, ["numid"]= 51}, - {["subdev"]= 1, ["numid"]= 57}, - {["subdev"]= 2, ["numid"]= 63}, - {["subdev"]= 3, ["numid"]= 69}, - {["subdev"]= 4, ["numid"]= 75}, - {["subdev"]= 5, ["numid"]= 81}, - {["subdev"]= 6, ["numid"]= 87}, - {["subdev"]= 7, ["numid"]= 93}, - } - } - - error,response= L2C:snd_loops (source, snd_aloop) - if (error ~= 0) then - AFB:error (source, "--InLua-- L2C:snd_loops fail to attach sndcards=%s", Dump_Table(aloop)) - goto OnErrorExit - else - AFB:notice (source, "--InLua-- L2C:snd_loops done response=%s\n", Dump_Table(response)) - end - -- =================== Audio Stream ============================ local stream_music= { ["uid"] = "multimedia", ["zone"] = "all-seats", ["volume"]= 70, - ["rate"] = 48000, - ["mute"] = false; + ["params"] = { + ["rate"] = 44100, + ["rate"] = 48000, + ["format"]= "S16_LE", + }, + ["mute"] = false, } local stream_navigation= { ["uid"] = "navigation", ["zone"] = "front-seats", ["volume"]= 80, - ["mute"] = false; + ["mute"] = false, } local stream_children= { ["uid"] = "children", ["zone"] = "back-seats", ["volume"]= 50, - ["mute"] = false; + ["mute"] = false, } local snd_streams = { diff --git a/conf.d/project/sounds/trio-divi-alkazabach.mp3 b/conf.d/project/sounds/trio-divi-alkazabach.mp3 Binary files differnew file mode 100644 index 0000000..69ec868 --- /dev/null +++ b/conf.d/project/sounds/trio-divi-alkazabach.mp3 |