mi
所属分类:编程语言基础
开发工具:GO
文件大小:0KB
下载次数:0
上传日期:2019-07-24 18:40:03
上 传 者:
sh-1993
说明: Mi是一种小型的打击乐编程语言,用于娱乐。
(Mi is a small percussion music programming language for fun.)
文件列表:
LICENSE (1074, 2019-07-20)
examples/ (0, 2019-07-20)
examples/10h.mi (10613, 2019-07-20)
images/ (0, 2019-07-20)
images/mi.png (105559, 2019-07-20)
images/notes-durations.png (60015, 2019-07-20)
images/octaves-notation-helmholtz.png (7712, 2019-07-20)
mi.go (934, 2019-07-20)
src/ (0, 2019-07-20)
src/text.go (4016, 2019-07-20)
src/text_test.go (1767, 2019-07-20)
src/types.go (2317, 2019-07-20)
src/util.go (393, 2019-07-20)
src/util_test.go (438, 2019-07-20)
# The Mi programming language
Mi is a small percussion music programming language made for fun.
I'm a big fan of music (percussion more precisely) and programming, why not merging both?
I don't want programming to replace music software because these kind of software are much more suitable and offer much more tools for music manipulation; but I find it fun to play music from some code.
- [The Mi programming language](https://github.com/Aiden01/mi/blob/master/#the-mi-programming-language)
- [Installation](https://github.com/Aiden01/mi/blob/master/#installation-and-usage)
- [Example](https://github.com/Aiden01/mi/blob/master/#example)
- [Syntax](https://github.com/Aiden01/mi/blob/master/#syntax)
- [Durations of notes](https://github.com/Aiden01/mi/blob/master/#durations-of-notes)
- [Roadmap](https://github.com/Aiden01/mi/blob/master/#roadmap)
## Dependencies
- Golang (any version)
## Installation and Usage
Installing Mi is a pretty simple 2-step procedure.
First of all, you have to run go get to pull the repository to your GO path.
```go get github.com/eagle453/mi```
Then you need to install `aurora`
```go get -u github.com/logrusorgru/aurora```
Then just simply run your `mi` file
```go run mi.go your-mi-file.mi```
```bash
got get github.com/eagle453/mi
# Open the mi folder
go run main.go your-mi-file.mi
```
> Mi will generate a midi file from your `.mi` file.
## Example
This is a simple syntax example for drums:
```ruby
bpm:120
HC,K. HC. HC,S. HC.
HC,K. HC,K. HC,S. HC.
HC,K. HC. HC,S. HC.
HC,K. HC,K. HC,S. HC.
```
`bpm:x` for x BPM
`K` = kick, `S` = snare, `HC` = hi-hat closed
### Syntax
The syntax of Mi is meant to be simple enough to be understood easily.
## Durations of notes
In Mi, we must specify the duration of each note by appending one of these symbols:
- `1/4`it's the default duration
- `~~` 1 bar
- `~` 1/2 bar
- `.` 1/8 bar
- `..` 1/16 bar
- `...` 1/32 bar
- `....` 1/64 bar
- `.....` 1/128 bar
(you can find the duration of the notes in music in the folder `images` and the file `notes-durations.png`)
### Roadmap
- [x] Grammar
- [x] Parser
- [ ] Optimize code and Mi syntax
近期下载者:
相关文件:
收藏者: