https://github.com/pj/scala-music
Some ideas for a scala music dsl based on trackers.
https://github.com/pj/scala-music
Last synced: 9 months ago
JSON representation
Some ideas for a scala music dsl based on trackers.
- Host: GitHub
- URL: https://github.com/pj/scala-music
- Owner: pj
- Created: 2014-07-14T16:57:32.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2014-08-29T18:57:40.000Z (almost 12 years ago)
- Last Synced: 2025-07-26T01:38:48.866Z (11 months ago)
- Language: Scala
- Homepage:
- Size: 211 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Scala Music
Some ideas for a scala music dsl based on trackers like fast tracker and impulse tracker.
Example:
```scala
object music {
// Create passages
val p44 = passage(
adagio,
4-/-4,
inst || AcousticGrandPiano ||,
q -- A4 quaver ||,
q || C4 quaver ||,
q || E4 quaver ||,
q || A4 quaver ||
)
val p34 = passage(
largo,
3-/-4,
inst || Celesta ||,
q -- A4 quaver ||,
q || C4 quaver ||,
q || E4 quaver ||
)
// Sequence passages
val sequence = p44 | p34
// generate midisequence for playback.
val midiSequence = MidiUtils.sequenceToMidiSequence(sequence)
}
```
TODO:
- Line suffixes for velocity and pitch
- Fully test all possibilities for notation
- Investigate reactive programming for combining Midi instruments
- Wrappers around underlying Midi library
- Playback thread
- Drum notation support
- Notation for control channels
- Main script that generates list of devices and code to insert into project
- Add support for key to make printing notes easier