RT+ on the Omnia.9 internal RDS encoder

Prev Next

Note

Applies to the Omnia.9 / Omnia.9sg / Omnia.7 / Omnia Enterprise 9s internal RDS encoder.

RT+ is not a separate text delivery mechanism. It only tells the receiver which part of the RadioText already being transmitted is the song title, which part is the artist, and which part is a web address. So there is no second endpoint and no second text to send: the tags go inside the RadioText string, and the encoder strips them out before the text goes on air.

Tagging


Open a field with \+ plus a two-character class, close it with \-.

Tag

RT+ class

Use

\+TI

1

song title

\+AR

4

artist

\+WW /
\+UR

29

web address

\+NN

NN

any RT+ class by its number from the spec, 00 to 63

Example, in the RadioText field:

Now on air: \+TILucky\- by \+ARBritney Spears\-

What goes on air is Now on air: Lucky by Britney Spears, with group 3A announcing the RT+ ODA (AID 0x4BD7) and group 12A carrying the offsets.

Important

The backslash is part of the tag. A bare +TI is just text and is transmitted literally. The numeric form needs two digits -- \+05, never \+5.

Two caps worth knowing:

  • Only two tagged fields per RadioText message reach the air, taken in ascending class order. Title and artist both fit; a third tag is dropped.

  • The second field is limited to 32 characters by the RT+ spec. The encoder automatically sends the longer of the two first, so this only bites when both fields are long.

Nothing to enable

RT+ needs no license option and no setting of its own. It starts transmitting as soon as a tag appears in the RadioText. The requirements are only the ones RadioText already has:

  • RDS Mode = Internal (not External Input 1/2)

  • RadioText enabled

The factory default RadioText ships with a tag in it already ( \+Wwwww.omniaaudio.com\-), so an untouched unit is transmitting RT+ out of the box.

Control characters in the RadioText

These six characters are control characters to the encoder. If one is meant to appear in the text, escape it with a backslash:

Character

Escape as

What it does unescaped

:

\:

everything before it becomes a display-timing prefix

/

\/

splits the RadioText into two rotating messages

<

\<

scroll the text left

>

\>

scrolls the text right

|

\|

word wrap

\

\\

starts an escape sequence

⚠Warning

The colon and the slash are the two that turn up in real song metadata. AC/DC splits one message into two; Hybrid Theory: Reanimation loses everything before the colon. A metadata source feeding the RT field should escape both.

The deliberate uses of the same characters:

20s:Now Playing\: %title%/10s:Omnia.9 Internal RDS Encoder/10s:\+Wwwww.om

That is three messages in rotation ( / ), displayed for 20, 10 and 10 seconds ( NNs : ), with the literal colon in "Now Playing:" escaped and an RT+ URL tag on the third.

Over HTTP

The tags work through the normal parameter interface, same as any other RadioText:

http://<unit>:7380/parameter/fm/rds/rds_rt=Now on air: \+TILucky\- by \+A

The URL is percent-decoded before the value reaches the encoder, so a backslash may be sent raw or as %5C -- both arrive as a backslash. Use %5C if the HTTP client in between rewrites backslashes.

⚠Caution

In this path form the value is split at the last =, so a literal = in the RadioText makes the request fail with 404. Send it as /parameter/fm/rds/rds_rt?set=... instead, where the value is taken from the query string. In that form a literal + has to be sent as %2B, because the query string is form-decoded.

Checking that the tags parsed

Read the encoder's own readout back:

http://<unit>:7380/parameter/fm/rds/rds_cur_rt

That returns the RadioText as the encoder is currently transmitting it, with the tags already consumed. If the backslashes are still visible in the response, the tags did not survive the URL and nothing was tagged. The same value is the Current RT field in the RDS menu.

▢Important

This is a status readout of the running encoder, not a dry run. There is no offline state to test in: setting rds_rt on a unit whose RDS Mode is Internal changes what is on the air immediately, and the readout only moves because the encoder is clocking the new text out. What it saves is needing a receiver to find out whether the tags were understood -- the answer is visible in the same second, and putting the previous string back is one more request.

The readout doubles as a check that the mode is right, because it carries four distinguishable states:

Response

Means

the parsed text

RDS Mode  Internal , RadioText on -- this is the one you want

empty

RDS Mode is  Off

off

RDS is on but RadioText is disabled

text you did not send

RDS Mode is  External Input 1/2 , so this is the incoming encoder's text decoded off the MPX, and nothing you send to rds_rt reaches the air

UECP


RT+ also works over UECP. In ASCII mode the command is  RT+  (also accepted as  RTP or RTPLUS ) and takes up to six numbers, class, start, length for each of the two fields; the encoder converts those into the same internal tags. Binary UECP RT+ is supported as well. None of this is required if the RadioText is set directly.