An environment for creating experimental computer-based music and sound art. Mirror of https://codeberg.org/sciss/Mellite
Mellite is a computer music environment, implemented as a graphical front end
for SoundProcesses. It is (C)opyright 2012–2023 by Hanns Holger Rutz.
All rights reserved. Mellite is released under the
GNU Affero General Public License v3+ and comes with
absolutely no warranties. To contact the author, send an e-mail to contact at sciss.de
.
The website for Mellite is www.sciss.de/mellite.
Please consider supporting this project through Liberapay (see badge above) – thank you!
The file mellite-app-licenses.csv contains
the license data for all dependencies and transitive dependencies. For the binary release of Mellite, source code
is not included but available via the respective OSS project pages, as indicated in the license files, or—in
compliance with GPL/LGPL—on request via E-Mail. All source code with group-id de.sciss
is available from
github.com/Sciss.
The Mellite icon is based on the file MELLITE Taillée Hongrie.jpg, provided by Didier Descouens under CC BY 4.0 license.
In order to run the application when not using the "full" bundle, you must have a Java Development Kit (JDK) installed.
The recommended version is JDK 11.
On Linux, to install OpenJDK, use sudo apt install openjdk-11-jdk
. In general, you find good binary builds
for all platforms on adoptopenjdk.net.
For real-time sound reproduction, the SuperCollider server is needed. The recommended version is 3.10.0 or above (technically 3.7.0 or higher should work).
When using JDK 8 under Debian and GNOME, there is a bug in the assistive technology (Atk) which results in
performance degradation over time, as some parts of the UI are used. To solve this problem, create a plain text file
~/.accessibility.properties
(that is, in your home directory) and put the following contents inside:
javax.accessibility.assistive_technologies=
Mellite has now also been tested with JDK 11. You will see some warnings/errors when starting, including "An illegal reflective access operation has occurred" and "ERROR com.alee.utils.ProprietaryUtils - java.lang.NoSuchFieldException: AA_TEXT_PROPERTY_KEY". These are related to the Web Look-and-Feel, and can be ignored. However, JavaFX is not available as a system-wide package for JDK 11, so the API browser currently does not work under JDK 11.
The standalone jar, created via ./sbt mellite-app/assembly
produces app/Mellite.jar
which is double-clickable and can be run via:
$ java -jar app/Mellite.jar
Runnable packages can be created via ./sbt mellite-app/universal:packageBin
(all platforms) or ./sbt mellite-app/debian:packageBin
(Debian).
Video and text tutorials, as well as API docs can be found online here: www.sciss.de/mellite
Please do not hesitate to ask on the Gitter channel.
Please see the file CONTRIBUTING.md
If you want to use Mellite as a "library" in your project, you can link to a Maven artifact.
The following artifact is available from Maven Central:
"de.sciss" %% "mellite-core" % "3.12.13"
"de.sciss" %% "mellite-app" % "3.13.8"
See the section 'download and installation' for requirements (JDK, JavaFX).
Mellite builds with sbt and Scala 2.13, 2.12. The last version to support Scala 2.11 is 2.38.1. The last version to support Scala 2.10 is 2.10.2. The default target and the binary distribution of the application are currently based on Scala 2.13. Scala 2.12 was used up to Mellite v2.43.0.
The dependencies will be downloaded automatically from Maven Central repository, except for snapshots during development.
Dependencies not found are all available from their respective
git repositories, so in case you want to build a snapshot version, you
may need to check out these projects and publish them yourself using sbt publishLocal
.
See section 'running' for ways of building and installing standalone bundles.
We are currently experimenting with a build variant that bundles the JDK using the JLink plugin for sbt-native-packager.
In order to build this version, run sbt mellite-full/universal:packageBin
. This must be done on a host JDK 11.
The produced installation is platform dependent, so will create a version that only works on the OS you are building from.
Note that should probably specify an explicit java-home, otherwise the bundled package might be unreasonably large:
sbt ++2.13.7 -java-home ~/Downloads/OpenJDK11U-jdk_x64_linux_hotspot_11.0.9_11/jdk-11.0.9+11 clean update mellite-full/debian:packageBin
This section is an aide-mémoire for me in releasing stable versions.
SNAPSHOT
versions of libraries are used: cat build.sbt | grep SNAPSHOT
.
Change commonVersion
and appVersion
appropriately.sbt mimaReportBinaryIssues
sbt mellite-core/dependencyUpdates mellite-core/evicted
mellite-core
,
then of negatum-core
and negatum-views
. The core library should be published using JDK 8
(I use script java-use-8
which calls update-java-alternatives
). Then:
sbt +mellite-core/clean +mellite-core/update +mellite-core/publishLocal
.sbt negatum-core/dependencyUpdates negatum-core/evicted
. Publish locally:
sbt +negatum-core/clean +negatum-core/update +negatum-core/publishLocal
and
sbt +negatum-views/clean +negatum-views/update +negatum-views/publishLocal
sbt dependencyUpdates evicted
. Publish locally:
sbt +clean +update +test +publishLocal
sbt mellite-app/dependencyUpdates mellite-app/evicted
sbt mellite-app/dumpLicenseReport
via sbt-license-report.
Output is found in app/src/main/resources/de/sciss/mellite/mellite-app-licenses.csv
.vim app/src/debian/Mellite.desktop
README.md
changeLog
of build.sbt
sbt +mellite-app/clean +mellite-app/update +mellite-app/test mellite-app/assembly
scripts/publishSignedApp.sh
will release the Scala 2.13 build of the app
module. If the core
module
has been updated, it must be published separately and explicitly with scripts/publishSignedCore.sh
.
We're currently publishing the following artifacts:
mellite_<version>_all.zip
mellite-full_<version>_linux_x64.zip
mellite-full_<version>_amd64.deb
mellite-full_<version>_win_x64.zip
mellite-full_<version>_mac_x64.zip
To build for Linux:
java-use-8
sbt mellite-app/universal:packageBin
java-use-11
sbt -java-home '/home/hhrutz/Downloads/OpenJDK11U-jdk_x64_linux_hotspot_11.0.9_11/jdk-11.0.9+11' mellite-full/universal:packageBin mellite-full/debian:packageBin
Copy the artifacts to a safe location now. To build for Mac and Windows, we need to publish all libraries now to Maven Central (use JDK 8 again!). Then Windows can be built on Linux using wine:
rm -rf full/target
(otherwise Jlink fails)wine cmd.exe
and
Z:\home\hhrutz\Downloads\OpenJDK11U-jdk_x64_windows_hotspot_11.0.12_7\jdk-11.0.12+7\bin\java.exe -jar Z:\home\hhrutz\Downloads\sbt-1.4.2\sbt\bin\sbt-launch.jar
then in sbt console:
project mellite-full
and universal:packageBin
rm -r null
(some Coursier junk)N.B.: sbt 1.4.x seems no longer to work under wine due to coursier updates; for now we can still build by setting the
version in build.properties
to 1.3.13 and removing versionScheme
from build.sbt
temporarily!
For Mac, we need a bloody fruit company machine:
git fetch; git merge origin/work
./sbt -java-home /Users/naya/Downloads/jdk-11.0.9+11/Contents/Home clean update mellite-full/universal:packageBin
rm mellite-full_<version>_mac_x64/bin/mellite.bat
then
rm mellite-full_<version>_mac_x64.zip
then
chmod a+x mellite-full_<version>_mac_x64/bin/mellite
then
chmod a+x mellite-full_<version>_mac_x64/jre/bin/*
zip -y -r -9 mellite-full_<version>_mac_x64.zip mellite-full_<version>_mac_x64