mimium

所属分类:DSP编程
开发工具:C++
文件大小:0KB
下载次数:0
上传日期:2023-02-20 03:02:36
上 传 者sh-1993
说明:  mimium(MInimal Musical medIUM)是一种编程语言,用作声音和音乐的基础设施。,
(mimium (MInimal Musical medIUM) a programming language as an infrastructure for sound and music.,)

文件列表:
.all-contributorsrc (2221, 2021-04-03)
.clang-format (289, 2021-04-03)
.clang-tidy (1183, 2021-04-03)
CHANGELOG.md (8375, 2021-04-03)
CMakeLists.txt (3243, 2021-04-03)
CODE_OF_CONDUCT.md (6396, 2021-04-03)
COPYRIGHT (18479, 2021-04-03)
Dockerfile (600, 2021-04-03)
LICENSE.md (16725, 2021-04-03)
PKGBUILD (667, 2021-04-03)
assets/ (0, 2021-04-03)
assets/test_mono.wav (293324, 2021-04-03)
cmake/ (0, 2021-04-03)
cmake/AddFlexBisonDeps.cmake (508, 2021-04-03)
cmake/CPackAdditionalInstall.cmake (105, 2021-04-03)
cmake/EnableCcache.cmake (602, 2021-04-03)
cmake/FindExhale.cmake (0, 2021-04-03)
cmake/FindLlvm.cmake (3835, 2021-04-03)
cmake/FindSndFile.cmake (2848, 2021-04-03)
cmake/FindSphinx.cmake (437, 2021-04-03)
cmake/clang-cxx-dev-tools.cmake (769, 2021-04-03)
design/ (0, 2021-04-03)
design/corefeature.mmm (1234, 2021-04-03)
design/design-proposal.ja.md (6328, 2021-04-03)
design/design-proposal.md (3776, 2021-04-03)
docs/ (0, 2021-04-03)
docs/CMakeLists.txt (2782, 2021-04-03)
docs/Doxyfile.in (110744, 2021-04-03)
docs/Makefile (634, 2021-04-03)
... ...

# mimium a programming language as an infrastructure for sound and music stable: [![build status(master)](https://github.com/mimium-org/mimium/workflows/build%20&%20test/badge.svg?branch=master)](https://github.com/mimium-org/mimium/actions) dev: [![build status(dev)](https://github.com/mimium-org/mimium/workflows/build%20&%20test/badge.svg?branch=dev)](https://github.com/mimium-org/mimium/actions) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/a7171f079d2b4439971513b6358c5a35)](https://www.codacy.com/gh/mimium-org/mimium/dashboard?utm_source=github.com&utm_medium=referral&utm_content=mimium-org/mimium&utm_campaign=Badge_Grade) [![website badge](https://img.shields.io/badge/mimium.org-Website-d6eff7)](https://mimium.org) [![Gitter](https://badges.gitter.im/mimium-dev/community.svg)](https://gitter.im/mimium-dev/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![License Badge-MPL2.0](https://img.shields.io/badge/LICENSE-MPLv2.0-blue)](./LICENSE.md) ![mimium_logo_slanted](./mimium_logo_slant.svg) mimium(*MInimal-Musical-medIUM*) is a programming language for sound and music. mimium is made to be an infrastructure for distributing music in a form of a source code, not only a tool for musicians and programmers. Its syntax and semantics are technically inspired from several modern programming languages for sound such as *[Faust](https://faust.grame.fr)* and *[Extempore](https://extemporelang.github.io/)*. You can write various expression from low-level signal processing to note-level processing with a simple syntax and high-performance. Since all the code is executed with JIT compilation using LLVM which has an equivalent performance as the dsp code written in general purpose languages such as C++. A minimal example below generates a sinewave of 440Hz. ```rust // minimal.mmm twopi = 3.141595*2 sr = 48000 fn dsp(){ out = sin(now * 440 * twopi / sr) return (out,out) } ``` To run the code, type `mimium path/minimal.mmm` on your terminal application. A special keyword `self` can be used in function, which is a last return value of the function. This enables an easy and clean expression of feedback connection of signal chain. ```rust fn lpf(input:float,fb:float){ return (1-fb)*input + fb*self } ``` You can also write a note-level processing by using `@` operator which specifies the time when the function will be executed. Another special keyword `now` can be used for getting current logical time. An event scheduling is sample-accurate because the scheduler is driven by an audio driver. ```rust freq = 440 fn noteloop()->void{ freq = (freq+1200)%4000 noteloop()@(now + 48000) } ``` More specific infos about the language are on [mimium Website](https://mimium.org). ## Installation mimium can be run on macOS(x86), Linux(ALSA backend), Windows(WASAPI backend). WebAssemby backend will be supported for future. An easiest way to getting started is to use [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=mimium-org.mimium-language). Search "mimium" in extension tab and install it. When you create & open the file with the file extension `.mmm`, you will be asked to install the latest binary. The extension also contains syntax highlights for `.mmm` files. On macOS and Linux, installation via [Homebrew](https://brew.sh/) is recommended. You can install mimium with a command as follows. ```sh brew install mimium-org/mimium/mimium ``` Also, you can get a built binary from [release](https://github.com/mimium-org/mimium/releases) section. ## Build from Source To build on Windows, you need to use MSYS2. For details, check [GitHub Action Workflow](https://github.com/mimium-org/mimium/blob/dev/.github/workflows/build_and_test.yml) and documentations on official website ([Installation](https://mimium.org/en/docs/users-guide/getting-started/installation/) and [Setting up development environment](https://mimium.org/en/docs/developers-guide/setup-development-environments/)). ### Installing Dependencies - cmake - bison >= 3.3 - flex - llvm >= 11 - Libsndfile - RtAudio(cmake will automatically download) #### macOS Install [homebrew](https://brew.sh) and XCode Commandline Tools beforehand. ```sh brew install cmake flex bison libsndfile llvm ninja ``` #### Linux(Ubuntu) *On Linux(Ubuntu), we recommend to install llvm using an automatic installation script in https://apt.llvm.org/ because `llvm` package in apt does not contain some libs required by `llvm-config --libs`* ```sh pushd /tmp && wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh && popd sudo apt-get install libalsa-ocaml-dev libfl-dev libbison-dev libz-dev libvorbis-dev libsndfile-dev libopus-dev gcc-9 ninja-build ``` #### Windows(MSYS2,mingw64) Install [msys2](https://www.msys2.org/) by following instruction on the website. Launch Mingw64 terminal. ```sh pacman -Syu git flex bison mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc mingw64/mingw-w64-x86_64-libsndfile mingw64/mingw-w64-x86_64-opus mingw-w64-x86_64-ninja mingw-w64-x86_64-llvm ``` ### Clone Repository, build and install ```sh git clone --recursive https://github.com/mimium-org/mimium cd mimium # configure. if you want to install to specific directory, add -DCMAKE_INSTALL_PREFIX=/your/directory cmake -Bbuild # build cmake --build build -j # install cmake --build build --target install ``` ## Author Tomoya Matsuura/松浦知也 ## [License](LICENSE.md) The source code is lisenced under [Mozilla Puclic License 2.0](LICENSE.md). The source code contains third party libraries with BSD-like lincenses, see [COPYRIGHT](./COPYRIGHT). ## Acknowledgements This project is supported by all the contributers, [Sponsors](https://github.com/sponsors/tomoyanonymous), grants and scholarships as follows. - 2019 Exploratory IT Human Resources Project ([The MITOU Program](https://www.ipa.go.jp/jinzai/mitou/portal_index.html)) by IPA: INFORMATION-TECHNOLOGY PROMOTION AGENCY, Japan. - Kakehashi Foundation ### Contributors [![All Contributors](https://img.shields.io/badge/all_contributors-8-orange.svg?style=flat-square)](#contributors-)

Shinichi Tanaka


kyo


Baku 麦


Yuichi Yogo


Ayumu Nagamatsu


zigen


Hitoshi Takeuchi


Inqb8tr-jp


近期下载者

相关文件


收藏者