[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [fluid-dev] FluidSynth on embedded platforms, zero boot time?

From: Marcus Weseloh
Subject: Re: [fluid-dev] FluidSynth on embedded platforms, zero boot time?
Date: Fri, 4 Jan 2019 20:26:29 +0100


Am Fr., 4. Jan. 2019 um 20:45 Uhr schrieb Ben Gonzales <address@hidden>:
Yes, That's really good. 5 sec is the boot time for my Roland Aerophone, a commercial product with synth inside.

Sorry to disappoint... it seems like I wasn't clear in my previous mail. The 5 seconds boot time is Linux only, not the complete system. So it only includes uboot (the boot loader), Linux kernel boot, init process. So everything up to (but excluding) the start of my application.

After Linux start I run my Python main program (which in turn starts a custom C-extension which handles all time-critical aspects, including fluidsynth). Then the system gets configured via stored presets, which in turn trigger the Soundfont loading. So if we take out the soundfont loading, the system is responsive in about 10 seconds. Depending on the size of the samples in the selected presets, another few seconds to load the sample data from the SD-card.

The platform is an Allwinner A20, which is a dual-core ARMv7 running at 960Mhz. I can't really remember the actual measured max voices count (i've posted performance metrics some time ago on this list)... but I've set max polyphony to 64 currently. Fluidsynth only runs on a single core, the other core takes care of all sensor readings, USB communication, webserver, websockets etc. Latency using the build-in DAC on the SOM is around 12-15ms.

The code is all open source at https://github.com/midigurdy (distributed across multiple repositories in that organization).

But like I said to Geoff in a private mail: getting to 5 seconds Linux boot is really not that difficult. At least not if you are willing to let go of precompiled distributions and all the niceties that modern distributions bring along, like udev, systemd, networkmanager etc. With sytems like buildroot, you get an extremly streamlined Linux system with only minimal infrastructure to run your main application. Choose mdev instead of udev, compile your own kernel and strip out all you don't need. And even sub-second Linux boot is possible.... it's just a matter of how much infrastructure you can live without. I think if I were to strip out kernel print messages and get rid of some other modules I included for easier development and testing, remove the boot splash logo,  I could probably shave off another second or more of Linux boot. But I don't think it's really that relevant considering the time it takes to load the samples from the SD-card.

All the best,


reply via email to

[Prev in Thread] Current Thread [Next in Thread]