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 |
|---|---|---|
| 1 | song title |
| 4 | artist |
| 29 | web address |
| NN | any RT+ class by its number from the spec, |
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
+TIis 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(notExternal 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: Reanimationloses 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.omThat 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 \+AThe 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_rtThat 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.