# Umbrella
Umbrella is a compatibility layer that I made to allow developing Bela projects on desktop Linux without Bela hardware.
# 1 Source
git clone https://code.mathr.co.uk/umbrella.git
git clone --branch umbrella https://code.mathr.co.uk/Bela.git
git clone https://github.com/mattgodbolt/seasocks.git
Tested with Bela commit f0d561581692f94fc4e27933458400aa5d6d0642
(Mon May 15 13:09:22 2023 +0100).
Upstream Bela repository:
git clone --branch build-without-bela https://github.com/BelaPlatform/Bela.git
# 2 Compile
cd seasocks
mkdir build
cd build
cmake ..
make
cd ../..
cd umbrella
./build.sh
Currently about 85 of 100 examples (excluding Csound, PureData, SuperCollider) build successfully.
# 3 Run
./bin/Fundamentals_sinetone --use-analog 0 --use-digital 0
Connect audio_out_1
and audio_out_2
to your output device in your
JACK patchbay.
Most command line arguments (listed by --help
) are inoperative.
Useful are:
--use-analog [-N] val: Use ADC/DAC analog (default: yes)
--use-digital [-G] val: Use digital GPIO channels (default: yes)
--analog-channels [-C] val: ADC/DAC channels (default: 8)
--digital-channels [-B] val: GPIO channels (default: 16)
Analog channels can be 2 (double sample rate), 4, or 8 (half sample rate).
Currently only a few of the examples have been tested.
# 4 Bugs
The following should really be fixed:
-
createBelaRtPipe()
is not implemented in a realtime safe way.However, replacing this with e.g. a lock-free FIFO would require invasive changes in the Bela repository which would probably not be accepted upstream, so it’s unlikely to happen any time soon.
The following probably won’t be fixed:
-
ALSA MIDI client is unnamed (appears as
129:Client-129
inqpwgraph
) -
BelaContext does not expose data buffers, which breaks (compile time):
- examples/Capelets/multiplexer-spectrum
- examples/Communication/logging-sensors
- examples/Extras/measure-noisefloor
- examples/Extras/oscillator-bank
- examples/Extras/salt-factory-taste
- examples/Extras/tank-wars
- examples/Instruments/airharp
- examples/Instruments/d-box
- examples/Sensors/MPR121
-
no multiplexer, which breaks (compile time):
- examples/Capelets/multiplexer-display
- examples/Capelets/multiplexer-spectrum
-
no GPIO, which breaks (link time):
- examples/Digital/synchronous-gpio
- examples/Extras/cape-test
-
no I2c_Codec, which breaks (link time):
- examples/Extras/bucket-brigade-chorus
-
no PRU, which breaks (compile time):
- examples/Extras/pru-pwm
- examples/Extras/second-pru
# 5 Legal
# 5.1 NE10 (FIR)
Copyright 2012-16 ARM Limited and Contributors.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
Neither the name of ARM Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY ARM LIMITED AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARM LIMITED AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
See: http://opensource.org/licenses/BSD-3-Clause for template
# 5.2 Everything Else
Umbrella – Bela emulation for desktop Linux.
Copyright (C) 2023 Claude Heiland-Allen
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as pulished by the Free Software Foundation, version 3 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this program. If not, see https://www.gnu.org/licenses/.
These are the same terms as the Bela software.