KGPL - Free (as in libre) Radio for Free (as a bird) Music The guiding philosophy in KGPL is simplicity. Music delivery is by .m3u playlists, the simplest possible playlist format. Alternatively the songs may be downloaded which is even simpler to execute. There is no database. KGPL reads the radio library from a directory. Meta data is carried in the filename. For instance, Hairy_Larry-Love_Stuff-Love_Stuff_Instrumental.mp3. The file naming convention is entirely at the discretion of the station operator. It is not enshrined in code. Play time is read from the .mp3 file itself using getID3(). If the file is replaced with another version there is no play time database to update. Second only to simplicity is the listener experience. KGPL provides a broad array of choices to the listener never preventing listeners from doing what they want. Playlist delivery allows listeners to skip songs, pause, restart any song, save playlist, etc. KGPL also has an On Demand feature allowing listeners to select which songs they want to hear or download to their hard drive or media player. The On Demand feature includes the ability to make your own playlists selecting and sorting the songs that you like. At this point the listener becomes the DJ. These playlists can be linked in an email or from a website. Now the listener has completed the arc. Listener - DJ - Station Operator. Because KGPL is Free Software and very simple the Sation Operator can then take the next step and install KGPL on his website. KGPL requires only php and will run on nearly any virtual host account. No special streaming servers required. Then the Station Operator can upload his own voice, sound effects, station ids and include these in his playlists. He can add music to his library with the songwriters permission. Creative Commons licenses are a way that songwriters and bands give blanket permissions allowing anyone to distribute their music. http://creativecommons.org The Trick This is how I can write KGPL without a database. I use php to scan the library directory reading it into an array. Then I sort the array. I write the array out to a playlist file. Then I redirect to the file I just wrote. I do the same thing with listener generated playlists except each is given a unique filename and is written to a playlist directory. ToDo Timed playlists Playlists zipped for download with the songs and a .m3u file. Search through the filenames. A single config.inc file to be included where required. Replace all references to Delta Boogie Radio by a variable set in config.inc. We need to require config.inc and include all other .inc files. Auto generation of single song .m3u files. Please suggest features by email. hairylarry@deltaboogie.com Documentation and screen text conventions The word playlist should only be used to refer to a .m3u file. Otherwise program is preferred and show can also be used if program is becoming redundant. I need to review and document program and variable names changing for clarity. ------- Files ------- Documentation kgpl.doc - this file Programs index.php - the index file The home page for this station links to the current programming or to shuffle programming. It also provides a list of the most recently added songs and the most recently added playlists. It links to On Demand from the most recently added songs table and it links to all playlists from the most recently added playlists recent.php - On Demand screen sorted with most recently added songs at the top demand.php - ON Demand screen sorted by filename playlist.php - Program to create and redirect to a playlist generated from an On Demand screen Shuffle button shuffle.php - Program to create and redirect to a playlist generated by shuffling the whole library sort_playlist.php - Program to allow user to sort songs selected from an On Demand screen viewm3u.php - View all playlists screen play_sort.php - Program to create and redirect to a playlist generated from the Sort Playlist screen Utilities makem3u.php - a utility to make the m3u playlist files for each mp3 file in a directory Includes - optional header.inc - modify this for your header footer.inc - modify this for your footer adblock1.inc - a rectangular area on the right of playlist lists adblock2.inc - above the footer