4champ is an app that provides a mobile interface to Amiga Music Preservation database on iOS devices.
Many of us who grew up with computers in the 80's and early 90's remember Amiga and particularly its mind-blowing audio capabilities which were unrivaled at the era. Amiga inspired a lot of musicians to produce a vast amount of compositions, or modules as they were called. Amiga Music Preservation is a non-profit project that collects anything related to Amiga music production. AMP database boasts almost 150 000 modules, 4champ app is your direct access to all that goodness.
In this repository I'm working on rewriting the app that originally was released in AppStore in 2012, and since late 2017 not available in AppStore any more
Main Features and their current status in this repository
- Radio: You can listen to a random set of tunes from the whole collection of almost 150000 modules, or stream from the head, i.e. the most recently added ones. Implemented, except for the local modules radio for offline use.
- Search (search the AMP database by module, composer, group name or sampletexts): Implemented in October 2018.
- Playlists (build your own playlists): TBD
- Local Collection (store modules locally): TBD
- Settings (control stereo separation etc): Stereo separation setting implemented in November 2018.
4champ is built with a number of dependencies. Part of them are configured through a Cartfile, so you will need to have Carthage installed to prepare these.
B. Frameworks configured in Cartfile
To build these, run
carthage bootstrap --platform iOS in the root folder of the project.
C. Module Playback Libraries
Hivelytracker replayer code is included in 4champ/Replay/Hively folder, so it will be built automatically when you build xcode projects in this repository, no further actions needed.
LibOpenMPT repo does not build for iOS without small tweaks, which I have done on my own fork of the lib at https://github.com/sitomani/openmpt. In order to build it for use in connection with 4champ and the SamplePlayer demo app in this repository, you will need to take the following steps:
- Make sure you have Premake5 available and in the path before proceeding.
- Clone https://github.com/sitomani/openmpt at same folder where you cloned this repository at (the repositories will be subfolders in same level in the directory tree).
- Navigate in terminal to the openmpt repository root folder
iOS_premake.shto generate the xcode project files for libopenmpt.
- Launch Xcode and open generated libopenmpt-small.xcworkspace file at
build/xcode/folder in the openmpt repository
- Add the three included subprojects to Link binary with libraries build phase (you should find
- Get back to terminal, and execute
iOS_build.shto build the fat lib file for iOS use.
- The library file
libopenmpt-small.awill be found under openmpt repository root, and 4champ repository projects are configured to find it there, provided that you have cloned this repository and openmpt repository in the same folder.
I plan to have a deeper look at openmpt project file generation with Genie at some point, in order to reduce the number of steps above. For the time being, the project is generated using premake, which does not fit that well when targeting iOS and one must do some housekeeping after premake run in order to build a static lib properly.
Building the app
After setting up the dependencies you can open 4champ.xcodeproj in Xcode and build the application. On simulator you can run the app without any further changes.
In order to run the app on device, you will need to replace the bundle identifier 'com.boogie.fourchamp' with another id, because Xcode will create a development certificate on the fly for the device build and same bundle identifier cannot be present in multiple certificates.
The Xcode generated developer certificate will only be valid for 7 days, which means that you'll need to reinstall from Xcode every week to use the app. To work around this nuisance, you can create an ad hoc distribution certificate for signing the app in Apple Developer Center if are a member in Apple Developer Program.
Module files included under SamplePlayer test project that I've used to verify the the replay routine are work of the original authors:
1st_intro.mod by florist (Aleksi Sitomaniemi - yup that's me!)
all.in.eightchannels.xm by Daze (Patrick Glasby-Baldwin)
mislead.ahx by Pink (Manfred Linzner)
peanuts!.hvl by Lavaburn (Dale Whinham)