AmiModRadio / 2023-03-02 17:24:48

1

Did you know that, as of 2015/06/02, there are more than 20,000 packages in the mods directory on Aminet? Yes! That's more than 20,000 modules to play and enjoy! There are also thousands of modules on AMPHaxor.fi, ModlandModules.pl . So, why not have a program that could automatically download one module at-a-time, extract it, and play it using your favorite player? This is the purpose of AmiModRadio! It can download, unarchive, and send modules to your favorite players: AmigaAMP, DeliTracker, EaglePlayer, HippoPlayer, MultiPlayer, or TuneNet (see this comparison).

 

Buy me a coffee if you like AmiModRadio! ☕🍻🍕📖

 

In a Nutshell

AmiModRadio is composed essentially of seven components:

  1. A small FTP client to access and download archives/modules from:
  2. A simple HTTP client to access and download archives/modules from:
  3. A simple HTTPS client (which requires AmiSSL v5+) to access and download archives/modules from:
  4. A XAD client to unarchive downloaded archives;
  5. A ARexx command-and-control system to gently ask a player to play the modules;
  6. A CLI-based interface to control the basic parts of AmiModRadio;
  7. A MUI interface and a ClassAct interface to control the various parts of AmiModRadio, in particular:
    • To save modules;
    • To browse modules lists;
    • To rate modules quality;
  8. A companion Web server to store users' ratings of the modules.

 

Requirements

AmiModRadio depends on various AmigaOS components to work. These components must be present/started for AmiModRadio to run properly:

  • A stack of 32,768 bytes or more;
  • The ARexx RexxMast program must be running;
  • The XAD master library must be available;
  • A TCP/IP stack must be running, e.g., MiamiDX;
  • One of the supported players must be running or runnable from the path, e.g., can be started by typing its name in a CLI:
  • The MUI and–or ClassAct must be available when using a graphical user-interface;
  • The AmiSSL v5+ for the HTTPS client.

 

Availability

AmiModRadio binary is available below. AmiModRadio is open source. Its source code and binaries are available on SourceForge and BitBucket ! Manual and other resources are available here .

AmiModRadio is also available in AmiKit, in particular the wonderful X version! Epsilon describes in details AmiKit X and its Rabbit Hole feature (in French here) but, most importantly , he shows a screenshot of the menu with AmiModRadio that I reproduce below... Thanks Epislon, AmiKit, and AmigaSystem!

Amitopia TV ran an article about AmiModRadio on 2018/08/21 . The famous German news site amiga-news.de also regularly updates on AmiModRadio!

AmiModRadio on Various Amigas
AmiKit AfaOS OS v4.1 OS v3.2 68000

AmiModRadio in AmiKit X

AmiModRadio in AmiKit X

AmiModRadio in AfaOS

AmiModRadio in OS4

 

Command Line Usage

You can start AmiModRadio at any times from a Shell but, remember, RexxMast and a supported player must be availabe for options 2. or 6. to work, see Requirements .

After starting, the CLI-based interface looks like this:

where:

  • Source server displays the name of the current source of modules.
  • Root directory displays the current root in which AmiModRadio will look for archives containing modules to play.
  • Current directory displays the directory in which the current file has been found.
  • Current file reports the name of the archive that AmiModRadio randomly picked.
  • Current modules displays the names of the modules (and other files) in the archive, which are being played (if possible!).
  • Last message is a simple message to explain what is happening in AmiModRadio.
  • Status reports the state of the player.
  • 0. Quit AmiModeRadio is self-explanatory, isn't?
  • 1. About AmiModRadio reports the current version and date of the running AmiModRadio.
  • 2. Play the modules tells the player to play any loaded module or, if none, will trigger option 6 (see below).
  • 3. Replay the modules attempts to replay the modules from the beginning of the player allows it.
  • 4. Pause the modules instructs the player to pause the current modules.
  • 5. Remove the modules empties all modules currently loaded in the player.
  • 6. Fetch other modules is the work-horse of AmiModRadio: it connects to a source via FTP or HTTP, randomly downloads an archive, extracts it content, and asks the player to play any modules.
  • 7. List banned directories will display the currently-banned directories, which AmiModRadio excludes from its search.
  • 8. Ban this directory adds the Current directory into the list of banned directories.
  • 9. List banned files will display the currently-banned files, which AmiModRadio does not consider while searching.
  • a. Ban this file adds the Current file into the list of banned files.
  • b. Save these modules will save the Current modules into some directory chosen by the user.
  • c. Set root directory as current directory allows playing modules only from the Current directory, for example to explore an artist's other songs.
  • d. Set/Reset root directory manually is quite self-explanatory
  • e. Choose source allows changing the source of the modules displayed as Source server.

A FTP directory should start with a "/" as in "/mods" (the default root directory) while all the files are saved in "T:".

 

MUI User Interface Usage

Since v0.91, a MUI user-interface is now available! It should be quite self-explanatory . Essentially, it will behave like the CLI version by downloading archives from a chosen source, extracting all the files, and instructing a player to play any modules for you! Don't forget to fulfill its Requirements before trying to run it!

The MUI user-interface went through multiple iterations of improvements. In the latest iteration, the interface allows user to select source and play modules but also to rate modules and browse the content of directories and archive files! Preferences are in greater number too:

  • Save preferences on exit: quite self-explanatory ;
  • Play on startup: AmiModRadio will fetch and play modules upon startin;
  • Show log page on fetch: AmiModRadio will display its log page while fetching modules (downloading, unarchiving... great for debugging!);
  • Remember source between runs: AmiModRadio will remember the last chosen source and root directory after exiting/starting;
  • Image sets: AmiModRadio will change its button and background images according to the user's choice;
  • Modules directory: The directory where AmiModRadio saves modules upon request;
  • Cache directories/modules lists during run: AmiModRadio will cache the directories lists and files lists while it runs;
  • Cache directories/modules lists between runs: AmiModRadio will cache the directories lists and files lists on disk to reuse them after exiting/starting;
  • Cache directory: The directory where AmiModRadio saves its cache (better not be in ENVARC: as the cache can be very large!);
  • Skip modules when banned: AmiModRadio will not download a banned module;
  • Skip modules when rating low: AmiModRadio will stop playing modules rated low by the user and will immediately fetch new modules;
  • Skip modules when already rated: AmiModRadio will not fetch modules that have already been rated by some users: novelties guaranteed!
  • Skip modules when already rated too low: AmiModRadio will not fetch modules that have already been rated by some users with a low rating, novelties or good modules guaranteed!
  • Skip modules which sizes are above maximum size: AmiModRadio will not download files whose sizes are above the chosen threshold.
v0.99998 Local source! To select a folder, use the lister, which lists devices and volumes and allows navigating inside them
     
v0.9991 AmiModRadio MUI v0.9991 Prefs Page Preference page showing all available preferences
     
v0.995 AmiModRadio MUI v0.995 Main Window Main window showing new buttons to display directories and files lists
AmiModRadio MUI v0.995 Main Window Main window showing rating saved by the user
AmiModRadio MUI v0.995 Main Window Directory list showing the content of a directory, double-click on a archive/module to play it!
 
v0.991 AmiModRadio MUI v0.97 Manged background and ratings!
 
v0.97 AmiModRadio MUI v0.97 Prefs Preference page
 
v0.95 AmiModRadio MUI v0.95 Introducing pages for options and logs
 
v0.91 AmiModRadio MUI v0.91 Quite basic...

 

Development

Timeline

  • 2023/01/29, v0.99998: This version fixes bugs #115, #125, #127, #128, #133, and #134. I think that I finally got the HTTP/S right. I tried to make the code simpler and more "symmetrical". I also modified when a UI opens to capture more info. on startup. It is now possible to quit AmiModRadio at anytime, even during downloading files or rating modules. (Uses but doesn't require AmiSSL v5.7+.)
  • 2023/01/29, v0.99997: This version fixes bugs #86 and #126, which means that AMP is now a new source, with another 100,000 modules available! It also includes some cleanup of the code to simplify and strengthen it. The lists of directories/files (when available, depending on the source) now work as expected. (Uses but doesn't require AmiSSL v5.6+.)
  • 2022/12/24, v0.99996: Thanks to AmigaSystem, I fixed a bug when changing the skins. The progress bar now works well, including in the module list, thanks to a refactoring of core code to increase cohesion. This version also fixes bugs #46, #98, and #116.
  • 2022/12/21, v0.99994: This version prevents crashes, #113, when both modules Fetcher and Rater use sockets at the same time. The crashes were caused by the shared SocketBase, which should not be shared across tasks! I fixed these crashes by following AROS developers' advice to use a per-task SocketBase after compiling AmiModRadio against Roadshow. It also uses many less signals, which prevented MUI popup menu to appear, #114. And all this to decouple better tasks and user-interface to prevent the infamous MUI_Redraw() warning, #111 .
  • 2021/09/01, v0.99993: Intermediate version in which I tried to solve the warning given by versions of MUI greater than 3.8 about the Fetcher task drawing MUI gadgets. MUI complains that MUI_Redraw() should not be called from a task other than the main task .
  • 2021/03/13, v0.99992: German translation! Courtesy from Daniel Reimann, thanks a lot! Updated the logic for ratings and further reduced the number of calls to the Web server. Fixed some discrepencies between the ratings functions and the Web server. Modules are added to the user's local blacklist when rated too low.
  • 2021/01/10, v0.99991: Many improvements and fixes after extensive testing on an A4000D/030. In particular, the log is no longer "infinite", i.e., it doesn't grow up to take all the memory! Also, I reduced the number of calls to the Web server.
  • 2020/12/06, v0.9999: Finally fixed but #100 about handling the Console. I used to do some weird stuff because I didn't know better and this weird stuff would "lock" the Console or even cause cashes. Now, thanks to ThoR, it's respectful of the OS! I also fixed/improved the code dealing with the players and updated the HTTP User-agent to make all HTTP sources work.
  • 2020/11/29, v0.9998: Fixed #96, #99, #106, and #107 and many "papercuts": small annoyances that are not really bugs but that make the program less nice to use... In particular, I finally nailed done the logging of information and the last message, which now display consistently important info.
  • 2020/11/21, v0.9997: This verion brings a major change: fetching is now done asynchronously, which means that, in particular, the MUI is not stuck anymore and can be used to interrupt any long-running operations!   There is still some redesign necessay because of MUI but, essentially, it works well!
  • 2020/06/03, v0.9996: There was a bug in the caching from the previous changes that I didn't catch earlier. I also added the new source The Favourites of ModLand.
  • 2020/05/27: This version fixes two bugs #104 and #105 but also now works on A4000/30, A1200/60, and A600/Vampire. It also has been extensively tested by AmigaSystem and include new skins, thanks!
  • 2019/02/10: I discovered Ranchero thanks to Obligement and decided to support it in AmiModRadio, which now displays a bubble with the name of the modules being played. This version also brings two enhancements: #101 and #102. It can be updated using AmiAutoUpdater and the (included) script "Update and Run".
  • 2019/01/06: This new version features many bug fixes (and cleanup) and improvements: #27 (AmigaGuide and help), #30 (compatibility with AmigaOS v4), #40 (AmiAutoUpdater), #62 (better messages), #86 (faster response times), and #94 and #95 (bug fixes). It also include localisations in English and French with the German catalog in progress
  • 2018/11/04: The new version v0.9992 provides a three improvements: three visible, one invisible... You can now access the modules from FireHawk at http://mod.haxor.fi/ (thanks!) (bug #93), update AmiModRadio using AmiAutoUpdater (bug #40), and save your modules (again!) without crashing... Invisibly, the logging is better and should allow for more useful messages (bug #62).
  • 2018/01/07: With version v0.9991, size does matter! It's possible now to limit the size of the modules to download through the Prefs page (bug #83). No more heavy modules (slow to download, slow to unarchive), which also removes a lot of MP3!
  • 2017/04/17: A new version v0.998 of AmiModRadio as Easter bounty , which includes a new source, The Module Archive. It currently only considers MOD files and mingle the file names but improvements are on their way! It also fixes several bugs, including #77, #78, and #79. In particular, it should fix problems faced by some users, including Honx and Tumo, as well as others who reported crashes upon exit!
  • 2017/04/09: This version arrives after some software, hardware, and wetware problems... Most of these problems are being managed now so development should resume and releases should happen more regularly . This new release mostly includes bug fixes (#60, #61, #64, #67, #68, #69, #70, #73, #74, #75, and #76), stay tune for new features! Also, I want AmiModRadio to work on Honx's config... as well as on my A4000/30...
  • 2016/10/16: The implementation of the browsing lists (directories and files) and the possibility to choose a file to play by double-clicking items in these lists required major refactorings of the main fetch loop of AmiModRadio. These refactorings were worth the effort because they also made the code cleaner and simpler! Improved/added preferences related to ratings. Allowed users to select files to play! Fixed bugs #54, #58, #59, and #63.
  • 2016/10/02: Implemented almost all the buttons (but one). Added auto-ban feature #55. Some bug fixes and thoughts to have a more flexible design.
  • 2016/06/19: Fixed the networking code to follow strictly the IPv4 standard.
  • 2016/06/12: After further tests and improvements, the social-media feature works well now! One problem was that the server did not correctly report the IP address of the client so AmiModRadio could not count on the server to distinguish between raters. Now, AmiModRadio provides the user ID... which means user management will be possible in the future . It also fixes many bugs #31, #42, #47, 49, #50, #51, #52, and #53, including the possibility to have "skins" without backgrounds (by popular demand).
  • 2016/06/05: AmiModRadio adds a long-awaited social-media feature . It is now possible to rate modules from 1 to 5 (1 lowest, 5 highest). When playing modules, if the community has rated them, the community's rates are displayed. If the user also has rated them (based on her IP address), the user's rates are also displayed! It also fixes some bugs, in particular #48, and it supports multiple "skins" #39.
  • 2016/01/03: AmiModRadio now understand HTTP and the Modules.pl source now works, thanks to AceMan's API! Modules.pl contains more than 8,000 curated modules (as of this release's date) . This version also introduces a cache to speed up accesses to ModLand.com huge collection as well as many preferences... It also fixes several bugs and has been refactored. Its makefile has also been entirely rewritten to generate the distribution automatically, including Retrofan's icons . Bugs #1, #21, and #35 thus disappear! PS. This version has also been built without Fortify!
  • 2015/12/25: AmiModRadio is getting closer to its completion! It now includes preferences (currently to start (or not) playing modules automatically and to show (or not) the log page automatically ) and an improved user interface, with which the log can be saved! It also includes some refactorings and bug fixing, in particular bugs #26, #28, #34, and #36.
  • 2015/12/07: The revamped MUI uses new icons and some interesting code to launch automatically players if in the path. It also include some user preferences, although they are not yet accessible from the UI. As a consequence, putting AmiModRadio in the WBStartup drawer will start AmiModRadio, which will launch the first player recognised in the path and play some music immediately! In addition to some refactorings and clean-up, this version also fixes bugs #13, #19, and #23.
  • 2015/11/29: This version has a more complete MUI implementation. Now, it is possible to change the source and the root directory and to save the playing modules on a local disk! It also improves logging by not displaying the log page (tab) systematically but by using the bottom log bar. It finally includes some minor bug fixes and refactorings. 
  • 2015/08/16: This version include lots of refactorings intended to share code between the command-line and the MUI user-interfaces. The MUI user-interface is now usable althrough not complete. It also includes bug fixues for #6, #7, and #8.
  • 2015/08/02: This new version supports multiple sources of modules: currently Aminet and ftp.modland.com but eventually local disks and modules.pl. It also include an improved implementation of the FTP client and some bug fixes.
  • 2015/07/28: Didn't plan to take so long between two releases but this intermediate release has all the features implemented. It also adds support for AmigaAmp and prepare the way for the next round of features, including the MUI user-interface!
  • 2015/07/19: First complete, CLI-based version! I have been extensively using and testing it for a week and there do not seem to any memory issues left! Added EaglePlayer. Completed the implementation, including recursion and blacklist.
  • 2015/07/12: After a momentary lapse of reason , the development resumed to implement a better text-based user-interface, separate the text-based from the MUI-based controls, fix some memory leaks and, overall, improve the usability of AmiModRadio. Next steps: finish implementing the text-based user-interface, in particular to allow baning directories and–or files .
  • 2015/06/20: Improved the implementation of the ARexx client. Also started to work on the MUI user-interface, including its artwork. Changed the makefile to manage the data.
  • 2015/06/14: Fixed several small bugs, added a simplistic CLI-based user-interface, added support for HippoPlayer, improved the speed of the download.
  • 2015/06/11: All the pieces are working together! Only MultiPlayer is supported, no CLI, no GUI.
  • 2015/06/10: The ARexx client is working and can interact with AmigaAMP as test.
  • 2015/06/07: The XAD client is working and can extract LHA (and any others!) archives.
  • 2015/05/29: The FTP client is working and random archives can be downloaded automatically.
  • 2015/05/20: Start of the project using the great Cubic IDE and vbcc.

Details

AmiModRadio is entirely developed on an Amiga, either an Amiga 1200 or WinUAE using Amiga tools:

Only version control cannot be done on my Amiga because of SSL-related issues. I use DirOpus v4 and SMBFS to upload my code into my Raspberry PI and AmTelNet to connect to the PI and run Git and SVN .

Roadmap

Feature on the work are, in no particular order:

  • Having AmiModRadio use multiple players depending on the type of the modules: e.g., AmigaAmp for MP3s and HippoPlayer for modules.
  • Making AmiModRadio work on AmigaOS v4 and Amiga NG hardware;
  • Making AmiModRadio work on MorphOS and non-680XX and PPC hardware (AROS).

 

Links

About FTP:

Misc:

 

1 Images by Rob (here) under CC BY v3.0 and Javier Ospino (jospinoj) (here) under CC BY-NC-SA 3.0, thanks! Amiga icons by Retrofan, thanks a lot!