This article is work in progress, last update August 8, 2023.

Big thanks to Kuba Słonka for feedback!

IMP3: The Only Amiga App You Will Ever Need

Introduction

So you fixed the Amiga you kept in the attic for 30 years, or you bought your first just now to check out what this whole Amiga fad is about, and... what next? Should you play a game from a floppy disk or install a hard disk and play games from WHDload? Should you download a few mods, run HippoPlayer and play the list on repeat? Should you start downloading OS essentials from the Aminet to build a liveable system? Or maybe put your Amiga online and install a file sharing program and a chat client to interact with the lively retro communities?

Well, since May 2020, you haven't had to do any of these and still have it all. In fact, you don't even need the AmigaOS! On one floppy you can fit a small program, and yet the most essential software — and maybe the only software — you really need for your Amiga. This article is about IMP3, or Infinity Modules Player, written by Paweł "juen" Nowak.

If you prefer watching to reading, here is a video describing IMP3's most important features. It also covers Impbox, and includes an interview with Juen!

Features

It is difficult to detail all the features in one go, and many of them will be discussed further in this article, but in general IMP3 provides the following functionality:

Requirements

IMP3 was written from scratch in assembly language and has very few requirements or dependencies. If you have the Impbox hardware add-on (discussed later in the article) which provides networking, the requirements are:

If you don't have an Impbox, the requirements are:

That's it! No harddrive, no inflated memory requirements, no accelerators. It will run on practically any Amiga, from a bare-bones A500 with 2.0 Kickstart all the way to the A4000 with 060 accelerators and the latest 3.2 AmigaOS, PowerPC platforms with 4.1 OS, Macintoshes Pro with MorphOS installed, Aros on 60080 Vampires, or emulated on FS-UAE or Win-UAE. For the TCP/IP stack, it really only needs a functioning bsdsocket.library and a properly configured Internet connection.

Installation

If you have an Amiga with a working Internet connection, installing IMP3 is as simple as downloading the binary from somewhere, eg. from the Aminet. You can put it anywhere in your Amiga filesystem, but the recommended place is the C drawer within the Workbench: volume. If the downloaded package is compressed with LHA, decompress it first e.g. using the lha x imp3.lha command in shell, and you're ready to run IMP3. When run for the first time, IMP3 does three things:

1. Update itself to the latest version.

IMP3 automatic update window
Figure 1. IMP3 automatic update window.

At this point your IMP3 has automatically downloaded the latest version. Juen actively maintains the program and updates it frequently based on user feedback and bugs identified. Once the program has launched, the log listing the latest changes is accessbile via the /changelog command in the chat window.

2. Ask to chose the screen mode of its Workbench screen.

IMP3 screen mode requester
Figure 2. IMP3 screen mode requester.

In your AmigaOS environment, IMP3 can be started either as just another app in an existing Workbench screen, or within its own dedicated screen. In case of the latter, one can always switch between different Amiga screens by pressing the left Amiga + M keys (which is the AmigaOS's, not IMP3's, feature). The options listed in the above requester apply to the dedicated IMP3 screen. The selection of the available screen modes depends on your graphics card and graphics (RTG or otherwise) subsystem configuration. In the most basic configuration, e.g. on a bare-bones Amiga 500, the requester will only show the first four of the options shown in the above screenshot.

3. Ask for an existing registration code, or let you register yourself as a new user.

IMP3 registration requester
Figure 3. IMP3 registration requester.

Users are identified in IMP3 based on simple unique codes. The user code gives you access to your nick, history, favorite songs, stash, and other settings and content stored online, regardless of which computer you are connecting from. It also allows you to restore the same access on your other Amias. If you have an existing user code, you can enter it here. As seen in the screenshot, if you are one of the early adopters crowd who were lucky enough to experience the first versions of IMP (not IMP3 yet), you can still use your old code! (As a sidenote, the old IMP uses a completely different backend, and is no longer maintained, so there is no connectivity, chat or exchange of resources between IMP and IMP3 instances.) If you don't have a code yet, IMP3 will automatically register a new one for you once you click the "Register me!" gadget. Once registered, a confirmation window is displayed:

IMP3 code confirmation
Figure 4. IMP3 code confirmation.

It is a good practice to make a note of your code somewhere physically in case you corrupt your current Amiga filesystem and want to restore your access to online IMP3 resources from another one. From now on, the registration code is stored in S:imp3.reg file, your local IMP3 preferences in S:imp3.prefs. These two files plus the actual imp3 binary are the only files needed to use IMP3. Once you have clicked the OK gadget, the IMP3 program is ready to use.

On first run, all IMP3 windows are stacked on top of one another, so you need to move them and arrange on the screen to your liking. No matter how you arrange them, the arrangement is remembered for the local installation and stored in imp3.prefs file. As one of the first things to do you should also go to the in-app chat window and assign yourself a nick using the /nick command, e.g. /nick ThisIsMyNick.

User interface overview

As the name suggests, Infinity Modules Player (IMP3) is at its core a music player made for the Amiga MOD format. The program, however, is much more than just that, and to explore all its features lets start from a 30,000 foot view and describe its individual windows. Here is what the application looks like with most of its windows open and arranged across the AmigaOS screen.

Annotated IMP3 UI
Figure 1. IMP3 with most of its windows open and arranged on the AmigaOS screen.

The main player window controls music playback and governs the entire program, i.e. pressing the Close gadget closes the whole IMP3 application. Pressing the Play > gadget starts playing a random MOD of over 170K MODs available on IMP3 server while pressing Next >> skips to the next random MOD. From here one can also Pause or Stop the playback by pressing || or ^ respectively, control the volume with a slider, add a track to or remove it from one's favorites (FAV and -FAV) and SHARE the current song with users on the chat. Last but not least, the MOD can be SAVEd to your Amiga hard drive. The little question mark ? to the right opens the multi-purpose Info window.

In the same line as the playback time and status, on the right hand side, there is a playback source indicator and the display of current pattern vs. total number of pattern positions. We need to remember that the progression of patterns within a MOD song does not have to correspond to the total ETA for the song, i.e. when we see 15/30 in the pattern count display it does not need to mean we are halfway through the song. The reason for that is that MODs are not at all like a stream of bytes played at a certain constant rate; they are much more programs which are executed by the player, and individual patterns within a song can be played faster, slower, can be looped or aborted somewhere in the middle.

Player and related windows
Figure 2. IMP3 main player window and associated windows.

The progress bar itself is clickable, allowing you to jump to an arbitrary pattern within a song.

In-app chat

Merging MOD player with chat facility seems like an exotic combination but it actually aligns very well with the spirit of playing, discussing and ranking MODs while they are played at a demoscene party. IMP3 has a powerful chat window reminicent of IRC clients, and provides immediate and direct connection to a community of people who love the sound of MODs on their Amigas.

The chat window
Figure 3. IMP3 chat window.

Discord integration

The chat is simple yet powerful. There are multiple channels to choose from, and you can also chat in private. When you share a song, others can click it to play immediately or queue it for later. You can display the songs played most recently, check who is online, translate inline to and from another language, and do much much more. Not only songs can be shared, but also images and URLs. Remember that all this fits into a program whose size on disk is less than 50KB. Since Juen controls the server side, he can easily expand the functionality beyond what's possible with the IMP3 binary itself. An example is Discord integration -- each IMP3 channel can have a corresponding Discord channel, and you can switch between chatting on your Windows or Mac and your Amigas at any time while sharing images, files and songs. When seen from IMP3 chat, a Discord user is prefixed with a tilde. When seen from Discord, IMP3 messages are delivered by the IMPBot user, and tagged with the respective IMP3 user.

Chat is a convenient and lively addition to the music player, and it is gaining new users every day. I can't wait to see how the community around IMP3 and its chat feature expands internationally.

Running games and demos from IMP3

Impbox

Impbox, a hardware add-on based on the ESP32 chip, was conceptualized by juen and QuaD, with Teh Kain and MariuszK helping with the PCB design. It lets you use your IMP3 even if your Amiga doesn't have an Internet connection. Powered via a USB connector, it plugs into the parallel port, and connects to your Wi-Fi. It is controlled from the command line using the imp3 command where you can configure your Wi-Fi network name and password, and do other stuff to Impbox. When imp3 is started with the ib argument, it uses Impbox for its connectivity in lieu of the Amiga's networking stack. Which means you can run your imp3 on any Amiga, even one which never had any Internet connection.

While Impbox can be plugged into any Amiga with a parallel port, a particularly impressive is a bare-bones configuration where the Amiga doesn't even have a hard drive and is booted from a floppy with just imp3 on it. You can find a download link for a floppy image below, but to prepare such a disk yourself, all you need to do is format the disk, copy the imp3 binary to it, and issue 2 commands: one to make the disk bootable, and the other to make sure imp3 boots automatically.

The video at the beginning of the article features a recording of my "naked" A500 starting from such a floppy disk and booting right into IMP3.

Impbox is an impressive piece of hardware. The display shows the firmware version, users logged into imp3, and a cool VU meter when a song is playing. The hardware design is available on github, but if you are impatient you can check out the links at http://impbox.amiga.company to see if there are any available now. People are already 3D printing cases for it, and keep watching this video for a little bit of history behind the hardware. And... don't forget to comment to win your copy of Impbox.

Command-line arguments

Quick Tools

A few handy tools are available to run directly from the MOD info window without going to the Disk or Stash. Click the elongated >>> button under the info window's title bar to switch from MOD info to System/Networking/Tools where in addition to system and networking information several commonly used tools are listed. Click the tool to launch it. As of this writing, SysInfo, Roadie, DiskMaster, SnoopDos and GoShell are available as quick-launch tools. Once done with the tool, quit it using any method supported by that tool to return to IMP3.

Quick-launch tools
Figure 3. Quick-launch tools section provides access to commonly used Amiga programs. The names are highlighted in blue and can be launched with one click.

In-chat commands

Very much like in IRC, IMP3 supports numerous in-chat commands which may help give insight into the backend workings of the system as well as further extend the program's functionality and configuration options. To list the available commands, just type /help in the chat window. Here is an overview of the available commands:

/nick (nick) -- change your nick
/users - list online users
/stats - statistics
/set - for donors only
/seen (nick) - check login time of a user
/keys - list of keyboard commands
/msg (nick) (txt) - private msg
/kick (nick) - kick user from channel
/topic - display or set channel topic
/(de)op nick - op or deop nick
/(un)invite nick - invite or uninvite to current channel
/chflags (flags) - set flags for current channel (e.g. p private i invisible)
/queue - list queue, use add/rem/clear to maintain
/backlog (number) - rewind backlog for n lines
/addaccess (nick) enable access to share folder
/remaccess (nick) disable access to shared folder
/hsz - highscore zgred
/import (nick) import fav from other user
/t (text) - translate
/last - show last 15 played songs
/changelog - imp3 change log
/timeshift (value) - time shift in hours (zmienia strefe czasowa)
/uptime - server uptime
/quit - quit

Keyboard shortcuts

F1 — Play next song
F2 — Pause/Unpause song
F3 — Like song
F4 — Share song in chat
F5 — Share song in chat
F6 — Access disk
F7 — Access favorites
F8 — Access top tracks
F9 — Previous channel if opened
F10 — Next channel if opened
Tab — Autocomplete nick
Arrow up — Previous message

Disk and Stash

Disk and Stash features are what make IMP3 stand out from just another mod player. Disk gives us access to an online library of software, tools, modules, demos, documentation and many other resources. Everything is here, including the entire copy of the Aminet, so whatever software you need for your Amiga, you can probably download it from here. Now a totally cool feature is that we can run programs directly from IMP3. I can start Turrican game even though I don't have WHDLoad installed. I can load a ZX Spectrum program through ZX-Live. And I can run a C64 game within MagiC64 emulator. IMP3 takes care of everything, from downloading the emulator and the program to setting it up and running. Once done, we're back in IMP3.

You don't have to run the programs. You can download resources or preview them. The tiny IMP3 feels like a modern online repository browser.

Stash is your personal repository within the online disk. It is made available to IMP3 sponsors and patrons, and it is associated with your user code. This single feature makes everything you do on one of your Amigas portable to all your other Amigas. You can use it as a backup storage for your important configuration or creative files, or even for the entire system, you can use it as temporary space for moving things between Amigas, and you can even share selected files with others! All this with a single IMP3 binary, without installing an FTP client, connecting to a Samba share or configuring a point-to-point file transfer.

Compatibility

One floppy howto

To run IMP3 on a bare-bones Amiga with only the Impbox device connected, a floppy disk with IMP3 is needed. It used to be tricky to prepare such a disk in the early days of IMP3, but now it is a matter of following three simple instructions:

  1. Format a floppy disk. You can name it anything but IMP3 is a good idea.
  2. Make the disk bootable with install command, e.g. install df0:
  3. Copy the imp3 binary to the root (i.e. top-level) directory of the disk.
  4. Optionally, if you want the disk to boot directly into imp3 (i.e. without manually running it from the command line), you need to create the S drawer e.g. with the command makedir df:s, and then create a file called Startup-Sequence in that drawer containing just one simple line: imp3 ib.

Note that this assumes that Impbox has already been configured, i.e. that you have defined the SSID name and password.

Where did all the MODs come from

How to support IMP3 development

IMP3 "About" and donations window
Figure 10. IMP3 "About" and donations window.

IMP3 community

Resources and references