The main features:
- Play any instrument from a selection of more than 200 in-built voices
- 60-Key on-screen keyboard with mouse and touch support
- Split Keyboard or Layer two voices for multiple voice playback
- DSP (Digital Signal Processing) effects like filters, reverb and chorus
- Assign knobs and sliders to multiple DSP effects along with a Master Knob which can be used to control multiple knobs and sliders
- Touch based on-screen assignable joystick
- Play a one-person band along with a Auto Accompaniment Style from over 100 [WIP] built-in styles based on various genres of music
- Automate your band with Registration Memory
- Record and play audio files using 12 assignable Sampling Pads
- Record your playback in a multitrack recorder (10 tracks)
- Play MIDI files using the inbuilt synthesizer
- Connect to external MIDI keyboard/controller with General MIDI Standard compatibility
However, feel free to test it early
Get it on elementary OS Appcenter
Install from source
You can install Ensembles by compiling it from source, here's a list of required dependencies:
io.elementary.Platform>=6
(flatpak)io.elementary.Sdk>=6
(flatpak)elementary-sdk
gtk+-3.0>=3.24
granite>=6.1.2
glib-2.0
gobject-2.0
meson
libhandy-1>=1.2
json-glib-1.0>=1.4.4
lv2
lilv-0
suil-0
fluidsynth>=2.2.1
portmidi
Clone repository and change directory
git clone https://github.com/SubhadeepJasu/ensembles.git
cd ensembles
Compile, install using flatpak and start Ensembles on your system (Recommended)
flatpak-builder build com.github.subhadeepjasu.ensembles.yml --user --install --force-clean
flatpak run com.github.subhadeepjasu.ensembles
OR using meson (Requires GIT-LFS)
meson _build --prefix=/usr
cd _build
sudo ninja install
com.github.subhadeepjasu.ensembles
Don't forget to also install the soundfont from https://gitlab.com/SubhadeepJasu/ensemblesgmsoundfont, if you are doing meson build
Realtime Audio Performance
You can tweak audio settings in Ensembles and select one of the three drivers (Alsa, PulseAudio or Jack). Increasing buffer size will reduce system load but too much increase in buffer-size may also cause sounds to go out of sync. So, feel free to tinker a little until you find your sweet spot in terms of performance.
Even after all that, while using PulseAudio, if you notice bad delay or stuttering audio, launch the app from terminal; check to see if there is any error messages stating that fluidsynth was unable to set realtime priority. In that case, edit the file- /etc/security/limits.conf
and add the following lines:
@audio - rtprio 90
@audio - memlock unlimited
The problem currently usually happens with the flatpak version.
PipeWire support is planned and Ensembles will detect if you have it installed and it will modify the PulseAudio driver settings internally to better utilise PipeWire-Pulse if that is available.
Jack is also an option but it currently only works from outside the flatpak soundbox, ie. when you compile it natively.
Discussions
If you want to ask any questions or provide feedback, you can make issues in this repository or use the discussions section of this repository.
Contributing
Feel free to send pull requests to this repository with your code, or other types of assets like soundfont voices, style files, etc. Soundfont in this repo is no longer updated and its available in a different repository https://gitlab.com/SubhadeepJasu/ensemblesgmsoundfont due to LFS concerns. Refrain from using copyrighted melodies or copyrighted sounds without proper license.
Plug-In Development
Ensembles will have support for effects and instrument plug-ins. Plug-ins may support their own UI which can be accessed from within Ensembles. There is partial support for LV2 plug-ins and it will be while before that is fleshed out properly. You can create plug-ins and distribute them over Flathub or elementary OS AppCenter, provided they follow the usual standards.
External Files
Ensembles supports creation and distribution of external soundfonts (SF2), style files and MIDI recordings. External content can be placed in special folders in user's document folder. Style files in other formats like STY, AC7, etc. are not compatible with Ensembles. Ensembles has its own style format ENSTL, check out styles Readme file in your documents folder for style specifications (Check: https://github.com/SubhadeepJasu/Ensembles/blob/master/data/Styles/README.md). External MIDI recordings may have reserved copyrights. Styles used in this alpha often use copyrighted melodies and chords (Check copyright notice in the rg files). They are due to be changed to public domain melodies or original composition, before the final release when the app will actually be commercially available in AppCenter and Flathub.
Contributors
Thanks goes to these wonderful people (emoji key):
Subhadeep Jasu |
Ryo Nakano |
Darshak Parikh |
Micah Ilbery |
Newbyte |
Hedron Digital |
benpocalypse |
Nathan Bonnemains |
This project follows the all-contributors specification. Contributions of any kind welcome!
License: GNU GPLv3
Certain components like soundfonts and styles have their own Licensing
SoundFont(R) is a registered trademark of E-mu Systems, Inc.
Ensembles © Copyright 2021-2022 Subhadeep Jasu