Run FreeSWITCH with Engage Adapter
- Start Freeswitch, load the Adapter module if not loaded automatically:
cd /usr/local/freeswitch/bin ./freeswitch load mod_imm_adapter
The following log will be shown if Freeswitch started and the Adapter module is loaded successfully:
Trying to load immersitech conference at: ../mod/libimmersitech.so The Immersitech Conference library version is v0.08.012 2020-04-08 15:17:09.731354 [INFO] mod_imm_adapter.c:191 Subscribed to conference custom events! 2020-04-08 15:17:09.731354 [CONSOLE] switch_loadable_module.c:1804 Successfully Loaded [mod_imm_adapter] 2020-04-08 15:17:09.731354 [NOTICE] switch_loadable_module.c:412 Adding API Function 'imm_adapter' +OK Reloading XML +OK
- Optionally, you can view Version information about your product by typing following command into a Freeswitch Command Line Interface:
The output from this command which look something like the following:
Engage Adapter Version: v0.01.014 Engage Core Version: v0.01.036 Sound Manager Version: v0.08.012
- To configure SIP softphones (Linphone or Zoip) to register to Freeswitch and let softphones join to the same spatial conference, dial a number in the range of “3500 - 3599” (which is the default stereo conference number in the Freeswitch dial plan). Spatial audio should be heard once they have joined the conference successfully.
By default, a new participant will enter a round table room with 8 fixed seats. You can view the Default room layout (labeled as “default”) by using following command:
The spatial position of any participant can be viewed by using the get_participant_position commands.
All new participants will be assigned to specific seat one by one starting from index 1.
The following example gets the exact position of participant 2 in room 3500.
You can also just get which seat the participant is in as well.
imm_adapter get_participant_position 3500 2 imm_adapter get_participant_seat 3500 2
Any participant can be moved to any seat, resulting in a change in their spatial sound field.
You can move a participant to a new seat with the set_participant_seat command.
The following is an example of a participant with id 1 that will be moved to the seat with index 2 in conference 3500:
imm_adapter set_participant_seat 3500 1 2
You can change or view the state of any participant in real time.
There are several state changes you can make detailed further at \ref IMM_CONTROL_START "imm_audio_control".
For example, let us use the set_participant_state function to turn on Automatic Gain Control for participant 2 in conference 3500:
imm_adapter set_participant_state 3500 2 IMM_CONTROL_AGC_ENABLE 1
For detailed API commands explanation, please refer to the following API commands chapter.
Engage Freeswitch Adapter API commands:
Once the Immersitech Engage Freeswitch Adapter is running, you can apply several API commands in real-time to change the state of the audio effects.
You can apply these commands manually through the freeswitch command line (fs_cli) or programmatically through a freeswitch interface.
To display a list of all commands available to you in the Immersitech Engage Freeswitch Adapter, enter the command “imm_adapter” and the list of API commands within the adapter will be listed as below:
get_version get_license_info get_library_configuration get_json_all_room_layouts get_room_count get_room_layout <room_id> get_participant_count <room_id> get_participant_position <room_id> <participant_id> get_participant_seat <room_id> <participant_id> get_participant_state <room_id> <participant_id> <control> get_participant_configuration <room_id> <participant_id> get_participant_name <room_id> <participant_id> get_participant_spherical <room_id> <listener_id> <source_id> set_room_layout <room_id> <layout_id> set_participant_name <room_id> <participant_id> <name> set_all_participants_state <room_id> <control> <value> set_participant_state <room_id> <participant_id> <control> <value> set_participant_position <room_id> <participant_id> <x> <y> <z> <azimuth_heading> <elevation_heading> set_participant_seat <room_id> <participant_id> <seat_id> set_log_level <log_level>
The above set of functions exactly mirrors the functions in \ref immersitech.h (without the imm_ prefix) and the functions in \ref emw-commands.
To learn the details of these functions or parameters, visit either of the linked locations.