Package: adm-osc
ADM-OSCAn industry initiative to standardization of Object Based Audio (OBA) positioning data in live production ecosystems, by implementing the Audio Definition Model (ADM) over Open Sound Control (OSC).Project OriginatorsL-Acoustics,FLUX::SE,Radio-FranceProject Contributorsd&b Audiotechnik, DiGiCo, Lawo, Magix, Merging Technologies, Meyer Sound, Steinberg.ContextImmersive audio is gaining ground in different industries, from music streaming to gaming, from live sound to broadcast.ADMor Audio Definition Model, is becoming a popular standard metadata model in some of these industries, with serialADM used in broadcast or ADM bwf or xml files used in the studio.Motivation and goalsTo facilitate the sharing of audio objects metadata between a live ecosystem and a broadcast or studio ecosystem.To define a basic layer of interoperability between Object Editors and Object renderers while not aiming at replacing more complete manufacturer specific protocols or grammars.To define a direct translation of the most relevant ADM Object Properties onto a communication protocol widely used in the live industry,OSC.Keeping the grammar scope aligned with the ADM properties.Share this proposal with the EBU so they can become a relay, publish and support this initiative.Extend this small grammar to more ADM properties (beds, etc.) in the future.ApproachBijective mapping of the Object subset of ADM with a standard OSC grammar.Why OSC ?Lightweight network protocolEasy to implementHuman readableSupports wildcards and bundlesSpecification:Open Sound Control websiteAvailable in a plethora of professional audio hardware and software devicesGeneral principlesSender (client)Object Editor sending positioning data to one or more receivers.Position data is always normalizedReceiver (server)Handles the (optional) local scaling of normalized data: x, y, z, distanceThe receiver can be a DAW, an ADM renderer, an object editor, a bridge (ADM-OSC <-> sADM)Current statusThe current dictionary covers most Object properties from the Audio Definition model.
A more complete dictionary is being discussed to cover the remaining parts of the Audio Definition model.
OSC Live test tool (talker and listener OSC Live test tool) is now available.Current SpecificationSee Repository.Current DiscussionsSee Issues.Current development & tests toolsSpecificationsTesterDesktop application(Jose Gaudin / Meyer Sound)download from resources directoryValidator, Test and Stress TestPython Module(Gael Martinet / FLUX:: SE)adm_osc module is available to install through pip :python3-mpipinstalladm_oscquick examples:fromadm_oscimportOscClientServer# create a basic client/server that implement basic ADM-OSC communication with stable parameters# + command monitoring and analyzecs=OscClientServer(address='127.0.0.1',out_port=9000,in_port=9001)# send some individual parameterscs.send_object_position_azimuth(object_number=1,v=-30.0)cs.send_object_position_elevation(object_number=1,v=0.0)cs.send_object_position_distance(object_number=1,v=2.0)# or pack themcs.send_object_polar_position(object_number=1,pos=[-30.0,0.0,2.0])# in cartesian coordinatescs.send_object_cartesian_position(object_number=1,pos=[-5.0,8.0,0.0])# see documentation for full list of available functions# when receiving an adm osc command its analyze will be printed on the command output window## e.g.## >> received valid adm message for obj :: 1 :: gain (0.7943282127380371)# >> received valid adm message for obj :: 1 :: position aed (20.33701515197754, 0.0, 0.8807612657546997)# >> received valid adm message for obj :: 1 :: position xyz (-0.2606865465641022, 0.8273822069168091, 0.0)# >># >> ERROR: unrecognized ADM address : "/adm/obj/1/bril" ! unknown command "/bril/"# >> ERROR: arguments are malformed for "/adm/obj/1/gain :: (1.4791083335876465,)":# >>     argument 0 "1.4791083335876465" out of range ! it should be less or equal than "1.0"fromadm_oscimportTestClient# create a test client, assume default address (local: '127.0.0.1')# test client can be used to test how receiver will handle all kind of parameters and parameters value rangesender=TestClient(out_port=9000)# all stable parameters for a specific objectsender.set_object_stable_parameters_to_minimum(object_number=1)sender.set_object_stable_parameters_to_maximum(object_number=1)sender.set_object_stable_parameters_to_default(object_number=1)sender.set_object_stable_parameters_to_random(object_number=1)# all stable parameters for a range of objectssender.set_objects_stable_parameters_minimum(objects_range=range(1,64))sender.set_objects_stable_parameters_maximum(objects_range=range(1,64))sender.set_objects_stable_parameters_default(objects_range=range(1,64))sender.set_objects_stable_parameters_random(objects_range=range(1,64))# all stable parameters for all objectssender.set_all_objects_stable_parameters_minimum()sender.set_all_objects_stable_parameters_maximum()sender.set_all_objects_stable_parameters_default()sender.set_all_objects_stable_parameters_random()# see documentation for full list of available functionsfromadm_oscimportStressClient# create a stress client, assume default address (local: '127.0.0.1')# stress client will send huge amount of data to stress test the receiverssender=StressClient(out_port=9000)# do stress test in cartesian coordinatessender.stress_cartesian_position(number_of_objects=64,duration_in_second=60.0,interval_in_milliseconds=10.0)# do stress test in polar coordinatessender.stress_polar_position(number_of_objects=64,duration_in_second=60.0,interval_in_milliseconds=10.0)full documentation.Source directoryCurrently supported in:SPAT Revolution (FLUX::SE), L-ISA Controller (L-Acoustics), Ovation (Merging Technologies), Nuendo (Steinberg), SpaceMap Go (Meyer Sound), QLAB 5 (Figure 53), Space Controller (Sound Particles).