GithubHelp home page GithubHelp logo

wohlstand / adlmidi-player-java Goto Github PK

View Code? Open in Web Editor NEW
30.0 7.0 1.0 4.02 MB

Simple MIDI-player for Android based on libADLMIDI library

Home Page: https://play.google.com/store/apps/details?id=ru.wohlsoft.adlmidiplayer

License: MIT License

Java 6.44% C++ 74.90% C 17.03% CMake 1.61% Shell 0.02%
midi-player opl3-emulator midi fm-synthesizer ymf262

adlmidi-player-java's Introduction

ADLMIDI-Player-Java

Implementation of ADLMIDI based MIDI-player for Android

It's a MIDI-player based on emulator of a Frequency Modulation chip Yamaha OPL3. This small MIDI-player made with using of libADLMIDI library - a fork of original ADLMIDI a console program implementation.

Key features

  • OPL3 emulation with four-operator mode support
  • FM patches from a number of known PC games, copied from files typical to AIL = Miles Sound System / DMX / HMI = Human Machine Interfaces / Creative IBK.
  • Stereo sound
  • Number of simulated OPL3 chips can be specified as 1-100 (maximum channels 1800!)
  • Pan (binary panning, i.e. left/right side on/off)
  • Pitch-bender with adjustable range
  • Vibrato that responds to RPN/NRPN parameters
  • Sustain (a.k.a. Pedal hold) and Sostenuto enable/disable
  • MIDI and RMI file support
  • Real-Time MIDI API support
  • loopStart / loopEnd tag support (Final Fantasy VII)
  • 111-th controller based loop start (RPG-Maker)
  • Use automatic arpeggio with chords to relieve channel pressure
  • Support for multiple concurrent MIDI synthesizers (per-track device/port select FF 09 message), can be used to overcome 16 channel limit
  • Support for playing Id-software Music File format (IMF)
  • Support for custom banks of WOPL format
  • Partial support for GS and XG standards (having more instruments than in one 128:128 GM set and ability to use multiple channels for percussion purposes, and a support for some GS/XG exclusive controllers)
  • CC74 "Brightness" affects a modulator scale (to simulate frequency cut-off on WT synths)
  • Portamento support (CC5, CC37, and CC65)
  • SysEx support that supports some generic, GS, and XG features
  • Full-panning stereo option (works for emulators only)

Download latest binary

https://github.com/Wohlstand/ADLMIDI-Player-Java/releases

System requirements

  • Recommended to have powerful CPU: Emulation of OPL3 chip is a sound generation by formulas which requires requires operations. For example, application works almost fine on Samsung GT-I9300 which has quad-core Exynos 4212 CPU with 1400 Mhz. On slow CPUs it may lag, for example, on LG-E612 with MSM7225A Cortex A5 with 800 Mhz.
  • 4 MB free space

How to install

  • Put APK to your Android device
  • Check in settings that custom applications installations are allowed
  • Open APK via any file manager and confirm installation
  • Allow external storage reading (needed to open MIDI-files from phone memory and SD Card)

How to use

  • Use "Open" button to open file dialog and select any MIDI, RMI, KAR or IMF (Wolfinstein 3D) file
  • Setup any preferences (bank, tremolo, vibrato, number of emulated chips, etc.)
  • Press "Play/Pause" to start playing or press again to pause or resume
  • Press "Restart" to begin playing of music from begin (needed to apply changes of some settings)
  • Use "Open" again to select any other music file
  • You can switch another application or lock screen, music playing will work in background.

Tips

  • This application audio playback may lag on various devices, therefore you can reduce number of emulated chips
  • If you are using "4-operators" banks, you can increase number of 4-op channels into number of chips multiped to 6 (each OPL3 chip supports maximum 6 four-operator channels). Or simply use "" mode which will automatically choose count of necessary 4-operator channels in dependence on a bank.
  • Set number of four-operator channels into zero if you are using 2-operator banks (most of banks are 4-operators. Pseudo-four-operator banks are 2-operator banks with double-voice support)

More detailed about playing MIDI with this application you also can find on libADLMIDI library repo

adlmidi-player-java's People

Contributors

wohlstand avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

petitdevil

adlmidi-player-java's Issues

Unable to build (gradle fails)

During the start of a Gradle Daemon, this happens:

FAILURE: Build failed with an exception.

* Where:
Settings file '/home/anon/ADLMIDI-Player-Java/settings.gradle'

* What went wrong:
Could not compile settings file '/home/anon/ADLMIDI-Player-Java/settings.gradle'.
> startup failed:
  General error during semantic analysis: Unsupported class file major version 60
  
  java.lang.IllegalArgumentException: Unsupported class file major version 60

at the every single file of this project. Java version is openjdk 16.0.1 2021-04-20

Download for recent versions missing

Is v1.4.4 really the latest release? According to the commit history, version has been bumped a few times up to its current 1.5.0.5. Will you provide those APKs as well, ideally with releases/, as the Readme suggests? Thanks!

Latest release "stop" issue, crash??

The latest version plays a midi but immediately the GUI is removed and I'm sent to my home launcher, with the dialog "ADLMIDI Player has stopped". The midi plays as the dialog is shown, but stops when I dismiss the dialog.

I've never seen an Android app do this! I can listen to the midi as long as the screen is on and the dialog is displayed, but as soon as either one turns off the midi stops. :(

please remember to increase versionCode

All APKs attached to releases/ have versionCode:1. That's not proper: Android uses that variable to tell updates (so currently there are none). Could you please (starting with the next release) increase that number? Must just be numeric and larger than the previous one. You can use that as "number of releases", or whatever you like โ€“ as long as it's bigger than that from the previous version ๐Ÿ˜‰

Thanks!

Slight popping in audio sometimes

Hey, I compiled the sources as of today and tweaked the CMakefile a little bit for the ARM chip in my LG G6. However, even if I use your build or mine, sometimes there are pops and skips as if the buffer is being exhausted. Weird.

Any ideas? Or is this Android being Android?

[Question] Possible iOS version?

I know what are the nuances of portable Apple devices and iOS SDK, but is it possible this player will get an iOS support in the future? How much of the app would have to be remade?

MIDI visualiser

Add the MIDI visualiser screen once upon as it was been requested by several users.

Music Export for Ringtone

I thought this would be a cute feature.

Can be WAV format. Most Ringtones are 30 seconds, so it wouldn't matter much on size. User should be able to pick a place to start recording ringtone to keep some midis with lead ins and silence at the beginning from being an issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.