Compare commits

...

2 Commits

Author SHA1 Message Date
Leonora Tindall 4bca3123f0
sunny, sunny-asm: create crates 2020-06-19 17:49:51 -05:00
Leonora Tindall 5a67abf17d
spec: add more abbreviations 2020-06-19 17:49:23 -05:00
9 changed files with 58 additions and 7 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
target/
sunny/Cargo.lock

10
Cargo.lock generated Normal file
View File

@ -0,0 +1,10 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "sunny"
version = "0.1.0"
[[package]]
name = "sunny-asm"
version = "0.1.0"

5
Cargo.toml Normal file
View File

@ -0,0 +1,5 @@
[workspace]
members = [
"sunny",
"sunny-asm"
]

View File

@ -22,20 +22,24 @@ octave 2
play c
play d
play e
off
channel 1 { set nF5; trigger }
off; wait beat
play c
play d
play e
off
channel 1 { set nG5; trigger }
off; wait beat
play c
play d
channel 1 { set nF5; trigger }
play e
off
channel 1 { set nG5; trigger }
off; wait beat
play b
off
off; wait beat
```
### Values
@ -47,7 +51,7 @@ or **absolute** like like `C2`, `Ab4`, or `F#0`.
Where a note value is needed, a voltage value (as below) can be substituted, prefixed with a `v`, like `v12c`.
- Voltage values, which can be expressed in volts (like `2v`), millivolts
(like `2330mv`), cents (like `220c`), semitones (like `4c`), or octaves (like `1o`), and which can be **absolute** or **relative** (like `+2c`).
(like `2330mv`), cents (like `220c`), semitones (like `4s`), or octaves (like `1o`), and which can be **absolute** or **relative** (like `+2c`).
Where a voltage value is needed, a note value (as above) can be substituted, prefixed with an `n`, like `n2C#`.
- Conf(iguration) values, which are used to set up channel parameters,
@ -79,9 +83,9 @@ very short time, then turns it off.
### Channel Control
- `channel <int>` sets the channel currently being controlled.
- `channel <int> [{ <commands> }]` (abbr. `c`) sets the channel currently being controlled, or executes the given commands on the given channel.
- `octave <int>` sets the octave, between 0 and 8, to which simple and relative note values will be played.
- `octave <int>` (abbr. `v`) sets the octave, between 0 and 8, to which simple and relative note values will be played.
- `bpm <natural>` sets the tempo of the channel. This is the time used by the time value `beat` and by the `play` instruction.

0
example.sny Normal file
View File

9
sunny-asm/Cargo.toml Normal file
View File

@ -0,0 +1,9 @@
[package]
name = "sunny-asm"
version = "0.1.0"
authors = ["Leonora Tindall <nora@nora.codes>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

3
sunny-asm/src/main.rs Normal file
View File

@ -0,0 +1,3 @@
fn main() {
println!("Hello, world!");
}

9
sunny/Cargo.toml Normal file
View File

@ -0,0 +1,9 @@
[package]
name = "sunny"
version = "0.1.0"
authors = ["Leonora Tindall <nora@nora.codes>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

9
sunny/src/lib.rs Normal file
View File

@ -0,0 +1,9 @@
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}