5th April 2010 Presentation AES X-170 at IEEE 1722.1 Face to Face Robby Gurdan rg@umannet.com 07.04.2015 and Richard Foss r.foss@umannet.com XFN Overview • IP-based peer to peer protocol • Addressing of parameters is hierarchical – Hierarchy reflects structure of device – Levels in hierarchy are fixed • Parameters can also be addressed by ID’s • Parameters can be joined into groups • ‘Modifiers’ can modify addresses/ values • Desk Items – graphic display info in device 07.04.2015 Page 2 AES X-170 Presentation XFN Message Structure1 IP header including source and destination IP address UDP header including source and destination port XFN header and XFN address block 07.04.2015 Page 3 AES X-170 Presentation XFN Message Structure 2 Target IP Address (32 bit) Target XFN Node ID (8 bit) Sender IP address (continued) Sender IP Address (32 bit) Sender XFN Node ID (8 bit) Sender Parameter ID (continued) User Level (8 bit) Sequence ID Command Executive (8 bit) Sender Parameter ID (32 bit) Message Type (8 bit) (32 bit) Command Qualifier (8 bit) Address Block (104 bit) Address Block (continued) 07.04.2015 Page 4 AES X-170 Presentation XFN Message Structure 2 Target IP Address (32 bit) Target XFN Node ID (8 bit) Sender IP address (continued) Sender IP Address (32 bit) Sender XFN Node ID (8 bit) Sender Parameter ID (continued) Sender Parameter ID (32 bit) User Level (8 bit) Message Type (8 bit) Sequence ID (32 bit) Command Executive (8 bit) Command Qualifier (8 bit) Address Block (104 bit) Address Block (continued) 07.04.2015 Page 5 AES X-170 Presentation XFN Message Structure 2 Target IP Address (32 bit) Target XFN Node ID (8 bit) Sender IP address (continued) Sender IP Address (32 bit) Sender XFN Node ID (8 bit) Sender Parameter ID (continued) Sender Parameter ID (32 bit) User Level (8 bit) Message Type (8 bit) Sequence ID (32 bit) Command Executive (8 bit) Command Qualifier (8 bit) Address Block (104 bit) Address Block (continued) 07.04.2015 Page 6 AES X-170 Presentation XFN Message Structure 2 Target IP Address (32 bit) Target XFN Node ID (8 bit) Sender IP address (continued) Sender IP Address (32 bit) Sender XFN Node ID (8 bit) Sender Parameter ID (continued) Sender Parameter ID (32 bit) User Level (8 bit) Message Type (8 bit) Sequence ID (32 bit) Command Executive (8 bit) Command Qualifier (8 bit) Address Block (104 bit) Address Block (continued) 07.04.2015 Page 7 AES X-170 Presentation XFN Message Structure 2 Target IP Address (32 bit) Target XFN Node ID (8 bit) Sender IP address (continued) Sender IP Address (32 bit) Sender XFN Node ID (8 bit) Sender Parameter ID (continued) Sender Parameter ID (32 bit) User Level (8 bit) Message Type (8 bit) Sequence ID (32 bit) Command Executive (8 bit) Command Qualifier (8 bit) Address Block (104 bit) Address Block (continued) 07.04.2015 Page 8 AES X-170 Presentation XFN Message Structure 2 Target IP Address (32 bit) Target XFN Node ID (8 bit) Sender IP address (continued) Sender IP Address (32 bit) Sender XFN Node ID (8 bit) Sender Parameter ID (continued) Sender Parameter ID (32 bit) User Level (8 bit) Message Type (8 bit) Sequence ID (32 bit) Command Executive (8 bit) Command Qualifier (8 bit) Address Block (104 bit) Address Block (continued) 07.04.2015 Page 9 AES X-170 Presentation XFN Message Structure 2 Target IP Address (32 bit) Target XFN Node ID (8 bit) Sender IP address (continued) Sender IP Address (32 bit) Sender XFN Node ID (8 bit) Sender Parameter ID (continued) Sender Parameter ID (32 bit) User Level (8 bit) Message Type (8 bit) Sequence ID (32 bit) Command Executive (8 bit) Command Qualifier (8 bit) Address Block (104 bit) Address Block (continued) 07.04.2015 Page 10 AES X-170 Presentation Command Executive, Command Qualifier • Command Executive – indicates fundamental nature of command • Examples – GET, SET, ACT, JOIN/UNJOIN, CREATE • Command Qualifier – refines the command executive • Examples – VAL, VTBL, FLAG, SEC, PUSH, DATA_BLOCK, PTP, MSTSLV, USG • Example commands: • • • • 07.04.2015 SET VAL <address of parameter> <Value> GET FLAG <address of parameter> - gets the flag field of a parameter JOIN PTP <address of parameter1> <Value-address of parameter 2,abs/rel> CREATE USG <address of parameter> <Value - address1, address2, …> Page 11 AES X-170 Presentation The Origins of the Address Block 2. Input matrix 3/4. Input channels 5/6. Bus matrix 7. Output channels 1. Digital/ Analogue input 9. Digital/ Analogue output 07.04.2015 Page 12 8. Output Matrix AES X-170 Presentation The 7 levels of the Address Block Most parameters conform to similar functional groupings: • 1; Section Block – eg. Input section, Output section • 2 ; Section Type – eg. Mic input, Line Input, ADAT input • 3 ; Section Number – eg. Channel number • 4 ; Parameter Block – eg. Equalizer block • 5; Parameter Block Index – eg. Equalization sub-grouping (Q, freq) • 6; Parameter Type – eg. Low frequency, gain, threshold • 7; Parameter Index – eg. To identify gain parameter number 07.04.2015 Page 13 AES X-170 Presentation XFN Message Structure 3 Command Executive (8 bit) Parameter Type (continued) 07.04.2015 Command Qualifier (8 bit) Section Block (8 bit) Section Type (8 bit) Section Number (24 bit) Parameter Block (8 bit) Parameter Block Index (24 bit) Parameter Type (16 bit) Parameter Index (16 bit) Page 14 Value Format (8 bit) AES X-170 Presentation XFN Message Structure 3 Command Executive (8 bit) Parameter Type (continued) 07.04.2015 Command Qualifier (8 bit) Section Block (8 bit) Section Type (8 bit) Section Number (24 bit) Parameter Block (8 bit) Parameter Block Index (24 bit) Parameter Type (16 bit) Parameter Index (16 bit) Page 15 Value Format (8 bit) AES X-170 Presentation XFN Message Structure 3 Command Executive (8 bit) Parameter Type (continued) 07.04.2015 Command Qualifier (8 bit) Section Block (8 bit) Section Type (8 bit) Section Number (24 bit) Parameter Block (8 bit) Parameter Block Index (24 bit) Parameter Type (16 bit) Parameter Index (16 bit) Page 16 Value Format (8 bit) AES X-170 Presentation XFN Message Structure 3 Command Executive (8 bit) Parameter Type (continued) 07.04.2015 Command Qualifier (8 bit) Section Block (8 bit) Section Type (8 bit) Section Number (24 bit) Parameter Block (8 bit) Parameter Block Index (24 bit) Parameter Type (16 bit) Parameter Index (16 bit) Page 17 Value Format (8 bit) AES X-170 Presentation XFN Message Structure 3 Command Executive (8 bit) Parameter Type (continued) 07.04.2015 Command Qualifier (8 bit) Section Block (8 bit) Section Type (8 bit) Section Number (24 bit) Parameter Block (8 bit) Parameter Block Index (24 bit) Parameter Type (16 bit) Parameter Index (16 bit) Page 18 Value Format (8 bit) AES X-170 Presentation XFN Message Structure 3 Command Executive (8 bit) Parameter Type (continued) 07.04.2015 Command Qualifier (8 bit) Section Block (8 bit) Section Type (8 bit) Section Number (24 bit) Parameter Block (8 bit) Parameter Block Index (24 bit) Parameter Type (16 bit) Parameter Index (16 bit) Page 19 Value Format (8 bit) AES X-170 Presentation XFN Message Structure 3 Command Executive (8 bit) Parameter Type (continued) 07.04.2015 Command Qualifier (8 bit) Section Block (8 bit) Section Type (8 bit) Section Number (24 bit) Parameter Block (8 bit) Parameter Block Index (24 bit) Parameter Type (16 bit) Parameter Index (16 bit) Page 20 Value Format (8 bit) AES X-170 Presentation XFN Message Structure 3 Command Executive (8 bit) Parameter Type (continued) 07.04.2015 Command Qualifier (8 bit) Section Block (8 bit) Section Type (8 bit) Section Number (24 bit) Parameter Block (8 bit) Parameter Block Index (24 bit) Parameter Type (16 bit) Parameter Index (16 bit) Page 21 Value Format (8 bit) AES X-170 Presentation XFN Message Structure 3 Command Executive (8 bit) GAIN (continued) 07.04.2015 Command Qualifier (8 bit) SCT_BLOCK_INPUT ID – 0x01 SCT_TYPE_AUDIO ID – 0xD1 CHANNEL_NUMBER ID – 0x100001 PRM_BLK_DIG_AMP ID – 0x11 PRM_BLK_INDEX ID – 0x00001 GAIN ID – 0x201 PRM_INDEX ID – 0x0001 Page 22 8 bit integer ID – 0x00 AES X-170 Presentation Motivations for fixed 7 level structure • Can control any device without discovery Example – – Small controller in large network of complex pro-audio devices – Address of gain parameter is known for: • Channel 1 • On any device • Wildcard (all 1’s) can be inserted at any level • Provides single message control over many parameters • Allows for partial discovery 07.04.2015 Page 23 AES X-170 Presentation Creating a parameter on a device X170 Device Applicat ion Callback 1. Create level and parameter structures 2. Add to tree Hierarchic al tree X170 Stack Level structures Points to Parameter entry structures 07.04.2015 Page 24 AES X-170 Presentation Parameter Access X170 Device Applicat ion 2 - Traverse tree 1 – X170 message Callback 3 – call callback Hierarchical tree X170 Stack 4 – Access parameter 0x000 2 0xD10 1 0x100 007 . Parameter entry structures Stored Parameter Values . 07.04.2015 Page 25 AES X-170 Presentation X-170 Connection Management Concepts • Ethernet AVB -Multiple channels of audio in ‘streams’ • X-170 - view as being clustered into multicore cables, or ‘multicores’ Audio device Multicore Out socket Network cable Multicore In socket Audio channel Multicore 07.04.2015 Audio device Page 26 AES X-170 Presentation The User view of the multicore concept Devices View Multicore View Control and Monitoring This is where you choose the 2 devices that you want to connect with a multicore This is where you choose the transmitting devices output multicore socket and the receiving device’s input multicore socket This is where manufacturer-specific desk items can be displayed Transmitter View Receiver View This is where you indicate how audio inputs to the transmitting device are routed to multicore audio channels This is where you indicate how multicore channels coming into the receiving device are routed to audio outputs from the device User-tailored Control and Monitoring 07.04.2015 Page 27 This is where the user can construct a tailored control and monitoring surface using controls from more than one device. AES X-170 Presentation GUI Display of X170 Connection Management 1 2 3 4 5 6 Devices Multicores Talker Listener Deskitem User 1 2 5 3 4 6 07.04.2015 Page 28 AES X-170 Presentation X-170 parameters for AVB connection management Each Ethernet AVB device will have: – Talker Streams – Listener Streams These Streams can be viewed as multicores via XFN, it is possible to determine: – types of Streams an Ethernet AVB device has – properties associated with each stream 07.04.2015 Page 29 AES X-170 Presentation ‘Talker’ parameters SECBLK XFN_SCT_BLOCK_OUTPUT SECBLK XFN_SCT_BLOCK_OUTPUT SECTYPE XFN_SCT_TYPE_STREAM SECNR Interface No PBLK XFN_PRM_BLOCK_AVB_MULTICORE PBLIX Multicore number PARTP XFN_PTYPE_STREAM_ID PARIX 1 • Multicore number – X-170 identifier for a particular stream • ‘Wildcard’ this level to determine no of talker streams 07.04.2015 Page 30 AES X-170 Presentation Stream ID parameter SECBLK XFN_SCT_BLOCK_OUTPUT SECTYPE XFN_SCT_TYPE_STREAM SECNR Interface No PBLK XFN_PRM_BLOCK_AVB_MULTICORE PBLIX Multicore number PARTP XFN_PTYPE_STREAM_ID PARIX 1 • Each Talker Stream has a 64-bit Stream ID associated with it. 07.04.2015 Page 31 AES X-170 Presentation Talker Advertise parameter PBLIX Multicore number PARTP XFN_PTYPE_ADVERTISE PARIX 1 When doing an XFN GET VALUE on this parameter: 0: The Stream has not been advertised to the Ethernet AVB network 1: The Stream has been advertised to the Ethernet AVB network When doing an XFN SET VALUE on this parameter: 0: If the associated Stream is being advertised, the Talker Advertise will be withdrawn. This will also have the effect of stopping this Stream, if it is currently streaming. 1: If the associated Stream is not being advertised, this will have the effect of advertising the Stream to the network. 07.04.2015 Page 32 AES X-170 Presentation ‘Listener’ parameters SECBLK XFN_SCT_BLOCK_INPUT SECTYPE XFN_SCT_TYPE_STREAM SECNR Interface No PBLK XFN_PRM_BLOCK_AVB_MULTICORE PBLIX Multicore number PARTP Specific parameter type value PARIX Specific parameter type index • Multicore number – X-170 identifier for a particular stream • ‘Wildcard’ this level to determine no of listener streams 07.04.2015 Page 33 AES X-170 Presentation Listener ‘Listen’ parameter PBLIX PARP PARIX Multicore number XFN_PTYPE_LISTEN 1 When doing an XFN GET VALUE request on this parameter: 0: The associated Listener Stream is not receiving stream data from any Talker 1: The associated Listener Stream has requested that a Talker stream data towards it When doing an XFN SET VALUE on this parameter: 0: If the associated Listener Stream has requested attachment to a Talker Stream, the request will be withdrawn. If the Talker has no other Listeners receiving the Stream, it will stop sending out its Stream 1: If there is not currently a request to receive a Stream, a Listener Ready request will be sent out onto the AVB network. The Listener Ready request will contain the Stream ID that is associated with the Listener Stream. 07.04.2015 Page 34 AES X-170 Presentation Internal Routings Level Name Audio input to audio output cross point enable Section Block XFN_SCT_BLK_INPUT Section Type XFN_SCT_TYPE_AUDIO Section Number Integer – audio in number Parameter Block XFN_PRM_BLOCK_OUTPUT Param Block Index Integer – audio out number Parameter Type XFN_CROSSPOINT_ENABLE Parameter Index 1 Encapsulation – some of the outputs will be channels within multicores 07.04.2015 Page 35 AES X-170 Presentation Establishing and Tearing Down Streams To establish a Stream connection between an AVB Talker and Listener device, the XFN device making the connection needs to: • Obtain the Stream ID of the required Stream associated with the AVB Talker device – • Set the Stream ID of the required Stream that is associated with the AVB Listener device. – • • XFN GET VALUE request on the Stream ID parameter of the Talker’s Stream. XFN SET VALUE request on the Stream ID parameter of the Listener’s Stream. Set the appropriate Talker’s XFN Advertise parameter to a value of 1. Set the appropriate Listener’s XFN Listen parameter to a value of 1. To tear-down a stream between an AVB Talker and an AVB Listener device, the device tearing down the stream needs to: • Set the appropriate Listener’s XFN Listen parameter to a value of 0. 07.04.2015 Page 36 AES X-170 Presentation A typical AVB test configuration 07.04.2015 Page 37 AES X-170 Presentation The concept of ‘Pushing’ • Often not efficient to GET values: – Multiple meter displays for target device – Repeated updates, short intervals • ‘PUSH’ mechanism created: – Control application sends SET PUSH to target – Gives full address of parameter to push to • Target adds control app parameter to its metering parameter Push list • Target continuously: – Scans Push list of parameter – Sends meter block to each member of Push list 07.04.2015 Page 38 AES X-170 Presentation Pushing a Data block Target Device Control application 4.SET DATABLOCK XFN Stack Parameter 3.Send data 2.Read Push List Entry 1 Entry 2 1.Read Periodic Process Entry n Data to be pushed 07.04.2015 Page 39 AES X-170 Presentation Grouping Parameters • Alter one parameter -> alter other parameters • 2 types of groups: – Master/Slave - Change master, slaves change – change slave, no change of master – Peer to peer – change any group member, others also change • 2 types of relationship: – Absolute - take on same value – Relative – offset is maintained 07.04.2015 Page 40 AES X-170 Presentation Grouping examples • Master/Slave, relative, A is master: 07.04.2015 A B C A B C 12 5 17 14 7 19 A B C A B C 12 5 17 12 1 17 Page 41 AES X-170 Presentation Grouping examples Peer to Peer relative: 07.04.2015 A B C A B C 12 5 17 14 7 19 A B C A B C 12 5 17 8 1 13 Page 42 AES X-170 Presentation Grouping Mechanisms Each parameter will contain 3 lists: • • • A list of peer parameters A list of parameters that are its master A list of parameters that are its slaves Master/Slave: - make parameter A the master of parameter B JOIN MSTSLV <address: XFN address of parameter A> <XFN address of parameter B> <abs/rel> Peer to peer: - join parameter A parameter B as peers: JOIN PTP <address: XFN address of parameter A> <XFN address of parameter B> <abs/rel> 07.04.2015 Page 43 AES X-170 Presentation The Modifier Concept • Can create ‘Modifier Blocks’ with variables • Variables modify value or level addresses – – – – – – – – – – 07.04.2015 Input Value Parameter (IVP) Output Value Parameter (OVP) Value script variable parameter (VVP) Address block level 1 script variable parameter (L1VP) Address block level 2 script variable parameter (L2VP) Address block level 3 script variable parameter (L3VP) Address block level 4 script variable parameter (L4VP) Address block level 5 script variable parameter (L5VP) Address block level 6 script variable parameter (L6VP) Address block level 7 script variable parameter (L7VP) Page 44 AES X-170 Presentation Joining to and from Modifier parameters Input Value Parameter Output Value Parameter XFN msg XFN msg Join Join Value Change Script Modifier Parameter Block Fader Parameter 07.04.2015 Page 45 Fader Parameter AES X-170 Presentation Desk Items •Graphical control items on desk top, examples: – slider, – pan pot. •Information about desk items is in device: – Nature of desk item – Position of desk item – Graphical images for desk item – Associated device parameter •Information allows a controller to: – Extract desk item information from device – Display in desired layout – Allow for user control of device parameter 07.04.2015 Page 46 AES X-170 Presentation The Desk Item mechanism Device A Device display Desk item info Device B Control device Desk item info request Desk item info Device C Desk item info 07.04.2015 Page 47 AES X-170 Presentation A Desk Item Editor The Desk Item Displayed A different desk item Device Discovery •Enables fast discovery of a defined group of parameters –Controller indicates a defined set of parameters (IP address, name, etc) –Broadcasts the following: Create USG <fragment size><no of address entries> <full address1, full address2, … fulladdressN> –Controller directs the following message to each device: Get USG List <List N> –Device provides parameter ID’s and values for these addresses ListData<full address1, xfnID1, Value format1, Value1, full address1, xfnID2, Value2, … full addressN, xfnIDN, Value formatN, ValueN> •Two other contexts for using this: –Retrieval of parameter values from a device for later restoration (snapshots) Set USG<No of entries> <xfnID1, Value format1, Value1, xfnID2, Value format2, Value2, … xfnIDN, Value formatN, ValueN> –Regular bulk parameter updates from device to controller (eg for metering) 07.04.2015 Page 51 AES X-170 Presentation Display of discovered devices 07.04.2015 Page 52 AES X-170 Presentation Zeroconf and protocol Interoperability A possible scenario: Multiple devices on network, all able to generate and receive 1722 streams Devices implement varying connection management and control protocols Devices can’t stream to each other Possible solutions Controller that can speak multiple protocols A proxy that can translate protocol messages Either way Determine the protocol spoken by devices Use Zeroconf to do this 07.04.2015 Page 53 AES X-170 Presentation X170 and OSC Interoperability - Created OSC device on Linux PC - Creates OSC address space with stream parameters - Create _osc._udp service type - Register the service to be published using avahi to: Create an entry group Add service to entry group (specify name, service type, port n0, DNS TXT rec) Commit the entry group - A proxy then: Browses for the _osc._udp service (callback called when service is available) Resolves the service within callback (obtains IP address, port number) 07.04.2015 Page 54 AES X-170 Presentation April 2010 Thank You! 07.04.2015 Page 55 AES X-170 Presentation