My NEW Radio (1 Viewer)

Status
Not open for further replies.

Lars Vinter

Portal Member
January 11, 2007
35
1
44
Home Country
Denmark Denmark
Hi there.

I'm a happy user of MediaPortal, but I feel that some basic functionality is lacking with regards to listening to radio in MediaPortal. It seems most focus are on developing tv-features etc. That makes sense since this is probably what most people want - but I'm a little different :D I'm a radio geek (seriously) and I LOVE listening to radio - especially finding those unique quality stations streaming from somewhere on the internet. So today I decided to start working on a plugin with the purpose of replacing the MyRadio-plugin (if the user wants it to).

I have tons of ideas, but before I start coding, I would like to share them with you and maybe get some feedback etc. Also please let me know, if other developers are working on this. I've searched the forum and can't find anyone currently working to improve MyRadio (like this), so this is why I'm starting this project.

This is the updated feature list (so far) - please comment on this:


* Support of various radio sources (no distinguishing between different types in the GUI)
  • DVB-S, DVB-C and DVB-T
  • FM-radio
  • DAB radio // if drivers can be found
  • DRM // if drivers can be found
  • Internet Streams
  • mp3
  • wma
  • ogg vorbis
  • aac
  • aacPlus (HE-AACv2)

  • Subscription based radio (streambased) as XM and Sirious // still need to look more into this before comitting.

* Latency-free zapping! (no wait for buffering etc. when changing stations).


* Showing the following in the GUI when listening to radio (if available):
  • station logo
  • station title
  • station monikor
  • flags indicating station location (country, language)
  • current show-name // taken from radioguide
  • current show-info // taken from radioguide
  • song playing artist and title info + image of cover, image of artist and year recorded info
  • ppm (meter of audio volume) // in case I can find an easy way to integrate this
  • spectrum analyzer (oscillator of audio frequencies) // in case I can find an easy way to integrate this
  • visualisation // this is optional
  • geek info // this is optional and includes stream type (DVB, internet etc.), bitrate, codec.
- the radio-info window can be maximised to full screen, but is default set to the middle window (as the live tv window in MyTV).


* Metadata accepted from various sources:
  • Stream metadata
  • HTML-parsing
  • DVB-metadata info
  • local user script


* Possibillity of recording radio
  • Recording can be made as a continous recording
  • Recording can be made on a "pr song basis"
  • All recordings remembers stream metadata in seperate xml-file to be used when listening back to recorded audio.

* Possibillity of listening to previously recorded radio.


* Stations divided into user selectable groups with 9 "favorite presets" pr group.


* User can choose station order.


* "update"-button that fetches new internet radio stream-xml-files and puts them into a group called "new streams" - and

prompts the user to either skip or move them to other groups (a wife-proofed GUI).


* Possibillity of adding direct-x and VST plugins to the sound chain (i.e. an equalizer or a multiband compressor).


* Station-information are stored locally on the users harddrive in a special formatted xml-file.


* asx and pls-files are supported, but not recommended as the functionallity is reduced (i.e. no station monikor or metadata in case of scripting etc.)

* a non-GUI interface (in addition to the real GUI) that's optimised for remote controlling the radio without a graphical monitor enabled.

* external radio channel selection (i.e. a Set Top Box) using IR Blaster.



* Maybe a client-server structure (like the new tv-server) - [The jury is still out on this one ;-) ]


Coding information:
  • Coded in C# (as C++ is not supported as a language for MediaPortal)
  • Open source (of course)
  • SVN managed
  • Will follow the guidelines in:
  • Actual playback code will NOT be based on the g_Player, but an internal player unique to this module (due to the requirement of latency free zapping). Either is going to be based on the BASS player or it's going to be based on a proprietary custom coded C++ player. Depends on how "low level" I can get with the BASS (due to the zero-latency requirement).


Last updated 20070113.


The format of the xml-file with the station list is (so far):


<station>
<name>Hot 96</name>
<uniqueid>hot96.net</uniqueid>
<monikor>The Hottest Mix!</monikor>
<description>Top 40 Urban Old School Pop 80s Breakbeat</description>
<position>2</position>
<logo>url eller filnavn</logo>
<bouquet>Favoritter</bouquet>
<category>Dance</category>
<language>English</language>
<country>USA</country>
<format>Throwback Hip-Hop</format>
<quality>Fair</quality>
<type>dvb/fm/stream>
<music>true</music>
<streaminfo>
<url>http:// or unyx:// osv.</url>
<url>http:// or unyx:// osv.</url>
<url>http:// or unyx:// osv.</url>
(Streams will be tried from top to bottom)
</streaminfo>
<dvbinfo>
</dvbinfo>
<metainfo>
<type>stream/script/regex/dvb</type>
<name> NAME goes here - or [station]</name>
<monikor> MONIKOR her - eller [station]</monikor>
<metaregex>//(in case of type regex)</metaregex>
<artistregex>regular expression to retrieve artist from metadata</titleregex>
<titleregex>regular expression to retrieve title from metadata</titleregex>
<versionregex>regular expression to retrieve version-info from metadata</versionregex>
<script>//in case of type script: script-filename</script>
<offset>-4</offset> // seconds offset for metadata compared to stream.
<pollinterval>120</pollinterval> // in case of polling is needed (i.e. for a script).
</metainfo>
<extrabuffers>0</extrabuffer> //if special buffering of this specific stream is needed, then set the number of buffers here.
<free>true</free> // in case of XM and Sirious stations, this is set to false.
// <paymentid>XM</paymentid> // still not sure about this one - so far XM and Sirious might have to be supported with seperate plugin.
<directxplugins>1,2,3,4,5,6,7,8,9</directxplugins>
</station>



Layout
As far as the layout is concerned, I was thinking of making it very similar to the current TV-layout (as the suggested functionality kind of reminds of that from the tv module) - with the radio info (station title, logo, artist title, song title etc.) going into the "live tv window" (you know what I mean, right???).


Progress
20010113 - Started project



I have no deadline for this project, but I will put in a lot of hours the coming weeks, so we are (hopefully) not talking several months here.

Any comments? Feature requests etc....

Regards
Lars
 

Lars Vinter

Portal Member
January 11, 2007
35
1
44
Home Country
Denmark Denmark
how to you want to realize latency free zapping?

I've thought a lot about that. Basically, I see there are two ways to go: Zero-buffer start or pre-buffering.

* Zero-buffer start stream. When the stream starts NO (zero) prebuffering takes place, however the first 2 minutes (or so) are played at a little bit lower speed than real time (not noticeable) and while that takes place a buffer is filled, so that the stream (after 2 minutes) is able to resist drop-outs etc.

* Pre-buffering of "likely-to-be-next"-streams using local relay. A relay-buffer is setup for a couple of the most likely to be next streams and filled with data from those streams (i.e. based upon listening habits, preset order etc.). The stream you listen to will the be served by the local host through a relay of the internet stream. No buffering is needed between the relay and the "listening-agent" as both are on same machine (localhost). When the station is changed, what will be changed is that another local relay will be selected.

* Pre-buffering of "likely-to-be-next"-streams using something like "virtual audio cables". In fact more than one internet radio station is streamed at the same time, but the audio routing is made so that only one will be heard. When the user changes station, what will change is the audio-routing, so that the correct station will be heard.


The above mentioned thoughts are only preliminary ideas and I realize that some of them make demands to the users internet connection, system resources etc. and also about hardware requirements if you want to have latencyfree zapping from one DVB-radio to another DVB-radio - but I don't see this as a problem, when you think about the resources demanded by other modules, I think it is ok to make requirements to the user to use the full functionality. Anyway, it could always be made optionable and people can choose in the configuration if they want "latenzy-free-zapping" or not.

Any other ideas on how to implement this?

Regards
 

tomtom21000

Retired Team Member
  • Premium Supporter
  • April 22, 2004
    1,226
    120
    Germany
    Hey, this is about my complete wishlist!

    Would be great if someone took care of the radio section. Some of the points have been on the virtual todo list for a very long time, but priorities were always set on other parts of mp.

    I mean, if you only achieved half the goals from your list, it would be really great.

    But 2 additional things got to my mind:

    # you might think about a client-server streaming like the new tv-server (or make the design expandable in this direction)
    # if you manage to get artist info like with internet streams possibly, you might show an artist image (sth like the now playing screen)

    tomtom
     

    knutinh

    Portal Pro
    September 4, 2005
    558
    2
    Your "zero buffer" idea will be very vulnerable to network errors while building up the buffer.

    I also think that the radio coul need some polisihing. For me, simple control over where to put channels would be most wanted. Ihave a combination of DVB-T, FM and wab radio, and I dont like the way they are presented.

    Users would probably prefer:
    1. flat view( all channels in a single list)
    2. Single transmission cathegory (FM/DVB-T/WEB)
    3. Sort by content cathegory (news, music etc)
    4. Different search options

    Also, having a live update to servers caontaining the urls would nice. Users tend to love MP being able to select between 100s of radio stations at first try, without fumbling with xml files =)

    what about dab radio?

    -k
     

    Lars Vinter

    Portal Member
    January 11, 2007
    35
    1
    44
    Home Country
    Denmark Denmark
    Your "zero buffer" idea will be very vulnerable to network errors while building up the buffer.

    Yeps, but in my experience it actually isn't all that bad. I've tried streaming a radio on an experimental small application with extremely low buffer settings and while I wouldn't recommend doing this for hours, it can work for several minutes without dropouts. And I would only need it for sufficient time to build up a buffer.
     

    Lars Vinter

    Portal Member
    January 11, 2007
    35
    1
    44
    Home Country
    Denmark Denmark
    what about dab radio?
    -k

    Good question. Do you know if there's any hardware supporting DAB-radio?
    Most DAB-stations tend to stream on the internet as well so it's not really a vital feature, but I guess it would be nice to add it as well.

    Regards
     

    knutinh

    Portal Pro
    September 4, 2005
    558
    2
    what about dab radio?
    -k

    Good question. Do you know if there's any hardware supporting DAB-radio?
    Most DAB-stations tend to stream on the internet as well so it's not really a vital feature, but I guess it would be nice to add it as well.

    Regards

    DRM (digital radio mondial, AAC shortwave-radio):
    http://www.winradio.com/home/receivers.htm
    http://www.drm.org/receiversequip/receiversequip.php

    DAB
    http://www.dab-digitalradio.ch/?lang=en&c=db_dl&mode=type&id=14


    I imagine that the problem will be lack of standardised drivers.

    What about DVB-S radio?

    -k
     

    Lars Vinter

    Portal Member
    January 11, 2007
    35
    1
    44
    Home Country
    Denmark Denmark
    What about DVB-S radio?

    I will definately aim to support DVB-C, DVB-T and DVB-S radio.
    But I have to look a little bit more into the specific drivers, before promising that. But I imagine that (from a programming point of view) DVB-S would be very similar to DVB-C-radio (which I'm currently looking more into), so I guess it's doable :)
     
    Status
    Not open for further replies.

    Users who are viewing this thread

    Top Bottom