All Projects → atsushieno → android-fluidsynth

atsushieno / android-fluidsynth

Licence: other
[Deprecated] fluidsynth Android port / build. It's old, see https://github.com/Fluidsynth/fluidsynth/tree/master/doc/android

Programming Languages

Makefile
30231 projects
shell
77523 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to android-fluidsynth

nfluidsynth
libfluidsynth C# binding
Stars: ✭ 18 (-35.71%)
Mutual labels:  fluidsynth, fluidsynth-midi-service
scamp
a Suite in Python for Computer-Assisted Music [MIRROR of https://git.sr.ht/~marcevanstein/scamp]
Stars: ✭ 55 (+96.43%)
Mutual labels:  fluidsynth
fluidpatcher
A performance-oriented patch interface for FluidSynth
Stars: ✭ 41 (+46.43%)
Mutual labels:  fluidsynth
ANMP
multi-channel loopable video game music player for nerds and audiophiles
Stars: ✭ 16 (-42.86%)
Mutual labels:  fluidsynth
griode
Griode + Novation Launchpad + Raspberry Pi = a music instrument!
Stars: ✭ 116 (+314.29%)
Mutual labels:  fluidsynth
fluidsynth-android
Software synthesizer based on the SoundFont 2 specifications
Stars: ✭ 75 (+167.86%)
Mutual labels:  fluidsynth
FFmpegAudioPlayer
基于FFmpeg+OpenSL ES实现的音频播放器,组合使用多种过滤器
Stars: ✭ 50 (+78.57%)
Mutual labels:  opensles
AudioManager
这是一个 Android 端万能音频播放器,只要给我一个路径我就能进行播放。
Stars: ✭ 26 (-7.14%)
Mutual labels:  opensles

This is a build setup for Android build of fluidsynth.

Why? Because building fluidsynth for Android from the origin(al source) is somewhat complicated.

fluidsynth depends on glib. Building glib for Android is not easy because it has several components.

There is existing build system that makes it to build glib: cerbero.

But cerbero seems to be intended for almost only for their build system and not flexible enough to build with custom configuration. So I have somewhat revised version.

Next, setting up cerbero and passing appropriate configuration parameters to build libraries for Android and laying out the outcome is messy. Also, the resulting binaries need some binary fixups. So this build script also takes care of it.

I posted some introduction and rationale stories here: https://dev.to/atsushieno/fluidsynth-for-android--269i

Usage

"make prepare" to set up cerbero and its dependencies.

"make" to checkout and build fluidsynth and deps.

"make buildone-cerbero" to kick forced build. It is useful when hacking fluidsynth that is checked out by cerbero.

Finally, as part of an attempt to build libfluidsynth.so that does not depend on any other libraries, run ./build-single-lib.sh.

Missing

There is no JNI bridge in Java because no one had implemented it. I'm using Xamarin and my nfluidsynth project, so I don't need JNI interop. Contributions are welcome.

Hacking

This is the basic directory layout:

build/
  sources/
    android_armv7/
      fluidsynth-*/
    android_x86/
      fluidsynth-*/

You would like to hack fluidsynth sources for your Android target. For me it is build/sources/android\_armv7/fluidsynth-1.1.6.

The fluidsynth repo is particularly a fork to support OpenSLES and the most significant source is fludsynth/src/drivers/fluid\_opensles.c in the fluidsynth source tree (the one I mentioned above).

cerbero build operations, by default, resets the repo. So if you edit fluidsynth sources to fix issues, it will be lost when you run "make". To avoid that, make changes to external/cerbero/recipes/fluidsynth.recipe to not point to specific commit hash but specify "master" or any current branch to prevent the forcible reset.

Also, note that the sources you should make changes are of the target specific architecture e.g. build/sources/android_armv7/fluidsynth-1.1.16/ and not build/sources/local. It is ignored when you run "buildone".

Here is my workflow:

  • make changes under build/sources/android_x86/fluidsynth-1.1.6 (under android_x86, NOT under build/sources/local/fluidsynth: I don't want fullbuilds triggered by making changes there.)
  • run make. It will build x86 and arm binaries (ndk-build for x86, binary-hack for arm)
  • When I'm ready to commit and push the changes:
    • cd build/sources/android_x86/fluidsynth-1.1.6
    • git diff > tmp.patch
    • mv tmp.patch ../../local/fluidsynth
    • patch -i tmp.patch -p1
    • cd ../../local/fluidsynth
    • For the first time:
      • git checkout master
      • edit .git/config and point to my committable URL.
    • git commit -a
    • git push origin master
    • Make sure that the worktree has the latest git commits i.e.
      • cd ../../android_x86_fluidsynth_1.1.6
      • git checkout master
      • git pull
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].