SpintroniK / libeXaDrums

:drum: Software drum module (library).
https://exadrums.com
BSD 3-Clause "New" or "Revised" License
12 stars 2 forks source link

Multi layers and round robin support ? #5

Open Adesin-fr opened 3 years ago

Adesin-fr commented 3 years ago

Hi,

Do this library supports multi-layers instruments : it allows to set a different file depending of the intensity of the triggered event. This makes playing more natural.

Even more, there is the "round robin" feature, which allows to set multiple sounds for the same layer: this allows to play a different sound each time the pad is stroke with the same intensity, and so the sound doesn't seems to come from an edrum. Many high-end drumkits has this features...

I started a software like yours a few years ago and did not finished it : https://github.com/LemarinelNet/piDrummer It implements those features, and have some advantages : requires SDL, so no need for a X server (just a framebuffer), so more resources available for the drum software, but no touch screen (drived by a rotary knob + push buttons...) Perhaps we could merge our projects ?

SpintroniK commented 3 years ago

The library supports multi-layer instruments. Round robin is also possible, although, in both cases, the instruments are C++ files, so they are kind of hardcoded. Adding new instruments means coding them and compiling the library.

If you take a look at the project's roadmap, you'll see that an instrument builder is planned (v. 0.9.0): https://github.com/SpintroniK/libeXaDrums/blob/master/Roadmap.md. This will allow the instrument to be created and customized by the user, without compiling the library.

I took a look at your software this morning, there are quite a few similarities with eXaDrums. Maybe we can talk a bit more about merging the projects, in private.

bigbn commented 2 years ago

How to use current multi-layer implementation? Can I for example make sprite-file with volume range mappings? Or use existing soundfonts from MIDI? In MIDI it is called velocity. Yea, why not? Soundfonts is just meta-files with base64-encoded wave data, so it is possible to make a parser and apply realtime mapping.

SpintroniK commented 2 years ago

So far, the only way to use the multi-layer implementation is to develop your own instrument in C++ and recompile the library. The whole point of the instrument builder is to automate this process. The equivalent of the soundfont file will be an xml file that references external .wav audio files. And it will be parsed in real time to dynamically route the sounds correctly.