mirror of
https://github.com/vsariola/sointu.git
synced 2025-05-28 03:10:24 -04:00
feat: remove hold from song
assume songs code it as 1 always; implementations are free to change this during compilation, but this should be a compile time flag / optimization; not a concern of song.
This commit is contained in:
parent
994c11e8db
commit
30379c981d
@ -40,7 +40,7 @@ func TestOscillatSine(t *testing.T) {
|
|||||||
sointu.Unit{Type: "out", Parameters: map[string]int{"stereo": 1, "gain": 128}},
|
sointu.Unit{Type: "out", Parameters: map[string]int{"stereo": 1, "gain": 128}},
|
||||||
}}}}
|
}}}}
|
||||||
tracks := []sointu.Track{{NumVoices: 1, Sequence: []byte{0}, Patterns: [][]byte{{64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0}}}}
|
tracks := []sointu.Track{{NumVoices: 1, Sequence: []byte{0}, Patterns: [][]byte{{64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0}}}}
|
||||||
song := sointu.Song{BPM: 100, Tracks: tracks, Patch: patch, Output16Bit: false, Hold: 1}
|
song := sointu.Song{BPM: 100, Tracks: tracks, Patch: patch, Output16Bit: false}
|
||||||
synth, err := bridge.Synth(patch)
|
synth, err := bridge.Synth(patch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Compiling patch failed: %v", err)
|
t.Fatalf("Compiling patch failed: %v", err)
|
||||||
|
@ -39,7 +39,6 @@ func main() {
|
|||||||
tmplDir := flag.String("t", "", "When compiling, use the templates in this directory instead of the standard templates.")
|
tmplDir := flag.String("t", "", "When compiling, use the templates in this directory instead of the standard templates.")
|
||||||
directory := flag.String("o", "", "Directory where to output all files. The directory and its parents are created if needed. By default, everything is placed in the same directory where the original song file is.")
|
directory := flag.String("o", "", "Directory where to output all files. The directory and its parents are created if needed. By default, everything is placed in the same directory where the original song file is.")
|
||||||
extensionsOut := flag.String("e", "", "Output only the compiled files with these comma separated extensions. For example: h,asm")
|
extensionsOut := flag.String("e", "", "Output only the compiled files with these comma separated extensions. For example: h,asm")
|
||||||
hold := flag.Int("hold", -1, "New value to be used as the hold value. -1 = do not change.")
|
|
||||||
targetArch := flag.String("arch", runtime.GOARCH, "Target architecture. Defaults to OS architecture. Possible values: 386, amd64")
|
targetArch := flag.String("arch", runtime.GOARCH, "Target architecture. Defaults to OS architecture. Possible values: 386, amd64")
|
||||||
targetOs := flag.String("os", runtime.GOOS, "Target OS. Defaults to current OS. Possible values: windows, darwin, linux. Anything else is assumed linuxy.")
|
targetOs := flag.String("os", runtime.GOOS, "Target OS. Defaults to current OS. Possible values: windows, darwin, linux. Anything else is assumed linuxy.")
|
||||||
flag.Usage = printUsage
|
flag.Usage = printUsage
|
||||||
@ -108,12 +107,6 @@ func main() {
|
|||||||
return fmt.Errorf("song could not be unmarshaled as a .json (%v) or .yml (%v)", errJSON, errYaml)
|
return fmt.Errorf("song could not be unmarshaled as a .json (%v) or .yml (%v)", errJSON, errYaml)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if *hold > -1 {
|
|
||||||
err = song.UpdateHold(byte(*hold))
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("error updating the hold value of the song: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var compiledPlayer map[string]string
|
var compiledPlayer map[string]string
|
||||||
if compile {
|
if compile {
|
||||||
var err error
|
var err error
|
||||||
|
@ -104,7 +104,8 @@ func (com *Compiler) Song(song *sointu.Song) (map[string]string, error) {
|
|||||||
SongMacros
|
SongMacros
|
||||||
*EncodedPatch
|
*EncodedPatch
|
||||||
EncodedSong *EncodedSong
|
EncodedSong *EncodedSong
|
||||||
}{compilerMacros, featureSetMacros, x86Macros, songMacros, encodedPatch, encodedSong}
|
Hold int
|
||||||
|
}{compilerMacros, featureSetMacros, x86Macros, songMacros, encodedPatch, encodedSong, 1}
|
||||||
populatedTemplate, extension, err = com.compile(templateName, &data)
|
populatedTemplate, extension, err = com.compile(templateName, &data)
|
||||||
} else if com.Arch == "wasm" {
|
} else if com.Arch == "wasm" {
|
||||||
wasmMacros := *NewWasmMacros()
|
wasmMacros := *NewWasmMacros()
|
||||||
@ -115,7 +116,8 @@ func (com *Compiler) Song(song *sointu.Song) (map[string]string, error) {
|
|||||||
SongMacros
|
SongMacros
|
||||||
*EncodedPatch
|
*EncodedPatch
|
||||||
EncodedSong *EncodedSong
|
EncodedSong *EncodedSong
|
||||||
}{compilerMacros, featureSetMacros, wasmMacros, songMacros, encodedPatch, encodedSong}
|
Hold int
|
||||||
|
}{compilerMacros, featureSetMacros, wasmMacros, songMacros, encodedPatch, encodedSong, 1}
|
||||||
populatedTemplate, extension, err = com.compile(templateName, &data)
|
populatedTemplate, extension, err = com.compile(templateName, &data)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -10,7 +10,6 @@ import (
|
|||||||
|
|
||||||
func TestPatternReusing(t *testing.T) {
|
func TestPatternReusing(t *testing.T) {
|
||||||
song := sointu.Song{
|
song := sointu.Song{
|
||||||
Hold: 1,
|
|
||||||
Tracks: []sointu.Track{{
|
Tracks: []sointu.Track{{
|
||||||
Patterns: [][]byte{{64, 1, 1, 1, 0, 0, 0, 0}, {72, 0, 0, 0, 0, 0, 0, 0}},
|
Patterns: [][]byte{{64, 1, 1, 1, 0, 0, 0, 0}, {72, 0, 0, 0, 0, 0, 0, 0}},
|
||||||
Sequence: []byte{0, 1},
|
Sequence: []byte{0, 1},
|
||||||
@ -34,7 +33,6 @@ func TestPatternReusing(t *testing.T) {
|
|||||||
|
|
||||||
func TestUnnecessaryHolds(t *testing.T) {
|
func TestUnnecessaryHolds(t *testing.T) {
|
||||||
song := sointu.Song{
|
song := sointu.Song{
|
||||||
Hold: 1,
|
|
||||||
Tracks: []sointu.Track{{
|
Tracks: []sointu.Track{{
|
||||||
Patterns: [][]byte{{64, 1, 1, 1, 0, 1, 0, 0}, {72, 0, 1, 0, 1, 0, 0, 0}},
|
Patterns: [][]byte{{64, 1, 1, 1, 0, 1, 0, 0}, {72, 0, 1, 0, 1, 0, 0, 0}},
|
||||||
Sequence: []byte{0, 1},
|
Sequence: []byte{0, 1},
|
||||||
@ -58,7 +56,6 @@ func TestUnnecessaryHolds(t *testing.T) {
|
|||||||
|
|
||||||
func TestDontCares(t *testing.T) {
|
func TestDontCares(t *testing.T) {
|
||||||
song := sointu.Song{
|
song := sointu.Song{
|
||||||
Hold: 1,
|
|
||||||
Tracks: []sointu.Track{{
|
Tracks: []sointu.Track{{
|
||||||
Patterns: [][]byte{{64, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}},
|
Patterns: [][]byte{{64, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}},
|
||||||
Sequence: []byte{0, 1},
|
Sequence: []byte{0, 1},
|
||||||
|
31
sointu.go
31
sointu.go
@ -214,7 +214,6 @@ var UnitTypes = map[string]([]UnitParameter){
|
|||||||
type Song struct {
|
type Song struct {
|
||||||
BPM int
|
BPM int
|
||||||
Output16Bit bool
|
Output16Bit bool
|
||||||
Hold byte
|
|
||||||
Tracks []Track
|
Tracks []Track
|
||||||
Patch Patch
|
Patch Patch
|
||||||
}
|
}
|
||||||
@ -299,11 +298,11 @@ func Play(synth Synth, song Song) ([]float32, error) {
|
|||||||
for t := range song.Tracks {
|
for t := range song.Tracks {
|
||||||
patternIndex := song.Tracks[t].Sequence[pattern]
|
patternIndex := song.Tracks[t].Sequence[pattern]
|
||||||
note := song.Tracks[t].Patterns[patternIndex][patternRow]
|
note := song.Tracks[t].Patterns[patternIndex][patternRow]
|
||||||
if note > 0 && note <= song.Hold { // anything but hold causes an action.
|
if note > 0 && note <= 1 { // anything but hold causes an action.
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
synth.Release(curVoices[t])
|
synth.Release(curVoices[t])
|
||||||
if note > song.Hold {
|
if note > 1 {
|
||||||
curVoices[t]++
|
curVoices[t]++
|
||||||
first := song.FirstTrackVoice(t)
|
first := song.FirstTrackVoice(t)
|
||||||
if curVoices[t] >= first+song.Tracks[t].NumVoices {
|
if curVoices[t] >= first+song.Tracks[t].NumVoices {
|
||||||
@ -324,29 +323,3 @@ func Play(synth Synth, song Song) ([]float32, error) {
|
|||||||
}
|
}
|
||||||
return buffer, nil
|
return buffer, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Song) UpdateHold(newHold byte) error {
|
|
||||||
if newHold == 0 {
|
|
||||||
return errors.New("hold value cannot be 0, 0 is reserved for release")
|
|
||||||
}
|
|
||||||
for _, track := range s.Tracks {
|
|
||||||
for _, pat := range track.Patterns {
|
|
||||||
for _, v := range pat {
|
|
||||||
if v > s.Hold && v <= newHold {
|
|
||||||
return errors.New("song uses note values greater or equal to the new hold value")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for _, track := range s.Tracks {
|
|
||||||
for _, pat := range track.Patterns {
|
|
||||||
for i, v := range pat {
|
|
||||||
if v > 0 && v <= s.Hold {
|
|
||||||
pat[i] = newHold
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s.Hold = newHold
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
@ -112,7 +112,7 @@ su_calculate_voices_loop: ; do {
|
|||||||
inc ecx ; ecx++ // ecx=the first voice of next track
|
inc ecx ; ecx++ // ecx=the first voice of next track
|
||||||
jc su_calculate_voices_loop ; } while bit ecx-1 of bitmask is on
|
jc su_calculate_voices_loop ; } while bit ecx-1 of bitmask is on
|
||||||
push {{.CX}} ; Stack: next_instr ptrnrow
|
push {{.CX}} ; Stack: next_instr ptrnrow
|
||||||
cmp al, {{.Song.Hold}} ; anything but hold causes action
|
cmp al, {{.Hold}} ; anything but hold causes action
|
||||||
je short su_update_voices_nexttrack
|
je short su_update_voices_nexttrack
|
||||||
mov cl, byte [{{.BP}}]
|
mov cl, byte [{{.BP}}]
|
||||||
mov edi, ecx
|
mov edi, ecx
|
||||||
@ -120,7 +120,7 @@ su_calculate_voices_loop: ; do {
|
|||||||
shl edi, 12 ; each unit = 64 bytes and there are 1<<MAX_UNITS_SHIFT units + small header
|
shl edi, 12 ; each unit = 64 bytes and there are 1<<MAX_UNITS_SHIFT units + small header
|
||||||
{{- .Prepare "su_synth_obj" | indent 4}}
|
{{- .Prepare "su_synth_obj" | indent 4}}
|
||||||
inc dword [{{.Use "su_synth_obj"}} + su_synthworkspace.voices + su_voice.release + {{.DI}}] ; set the voice currently active to release; notice that it could increment any number of times
|
inc dword [{{.Use "su_synth_obj"}} + su_synthworkspace.voices + su_voice.release + {{.DI}}] ; set the voice currently active to release; notice that it could increment any number of times
|
||||||
cmp al, {{.Song.Hold}} ; if cl < HLD (no new note triggered)
|
cmp al, {{.Hold}} ; if cl < HLD (no new note triggered)
|
||||||
jl su_update_voices_nexttrack ; goto nexttrack
|
jl su_update_voices_nexttrack ; goto nexttrack
|
||||||
inc ecx ; curvoice++
|
inc ecx ; curvoice++
|
||||||
cmp ecx, edx ; if (curvoice >= num_voices)
|
cmp ecx, edx ; if (curvoice >= num_voices)
|
||||||
@ -160,7 +160,7 @@ su_update_voices_trackloop:
|
|||||||
imul eax, {{.EncodedSong.PatternLength}} ; multiply by rows per pattern, eax = offset to current pattern data
|
imul eax, {{.EncodedSong.PatternLength}} ; multiply by rows per pattern, eax = offset to current pattern data
|
||||||
{{- .Prepare "su_patterns" .AX | indent 8}}
|
{{- .Prepare "su_patterns" .AX | indent 8}}
|
||||||
movzx eax, byte [{{.Use "su_patterns" .AX}} + {{.DX}}] ; ecx = note
|
movzx eax, byte [{{.Use "su_patterns" .AX}} + {{.DX}}] ; ecx = note
|
||||||
cmp al, {{.Song.Hold}} ; anything but hold causes action
|
cmp al, {{.Hold}} ; anything but hold causes action
|
||||||
je short su_update_voices_nexttrack
|
je short su_update_voices_nexttrack
|
||||||
inc dword [{{.DI}}+su_voice.release] ; set the voice currently active to release; notice that it could increment any number of times
|
inc dword [{{.DI}}+su_voice.release] ; set the voice currently active to release; notice that it could increment any number of times
|
||||||
jb su_update_voices_nexttrack ; if cl < HLD (no new note triggered) goto nexttrack
|
jb su_update_voices_nexttrack ; if cl < HLD (no new note triggered) goto nexttrack
|
||||||
|
@ -216,7 +216,7 @@
|
|||||||
(i32.add (global.get $row))
|
(i32.add (global.get $row))
|
||||||
(i32.load8_u offset={{index .Labels "su_patterns"}})
|
(i32.load8_u offset={{index .Labels "su_patterns"}})
|
||||||
(local.tee $note)
|
(local.tee $note)
|
||||||
(if (i32.ne (i32.const {{.Song.Hold}}))(then
|
(if (i32.ne (i32.const {{.Hold}}))(then
|
||||||
(i32.store offset=4164
|
(i32.store offset=4164
|
||||||
(i32.mul
|
(i32.mul
|
||||||
(i32.add
|
(i32.add
|
||||||
@ -227,7 +227,7 @@
|
|||||||
)
|
)
|
||||||
(i32.const 1)
|
(i32.const 1)
|
||||||
) ;; release the note
|
) ;; release the note
|
||||||
(if (i32.gt_u (local.get $note) (i32.const {{.Song.Hold}}))(then
|
(if (i32.gt_u (local.get $note) (i32.const {{.Hold}}))(then
|
||||||
(local.set $di (i32.add
|
(local.set $di (i32.add
|
||||||
(i32.mul
|
(i32.mul
|
||||||
(i32.add
|
(i32.add
|
||||||
@ -263,9 +263,9 @@
|
|||||||
(i32.add (global.get $row))
|
(i32.add (global.get $row))
|
||||||
(i32.load8_u offset={{index .Labels "su_patterns"}})
|
(i32.load8_u offset={{index .Labels "su_patterns"}})
|
||||||
(local.tee $note)
|
(local.tee $note)
|
||||||
(if (i32.ne (i32.const {{.Song.Hold}}))(then
|
(if (i32.ne (i32.const {{.Hold}}))(then
|
||||||
(i32.store offset=4 (local.get $di) (i32.const 1)) ;; release the note
|
(i32.store offset=4 (local.get $di) (i32.const 1)) ;; release the note
|
||||||
(if (i32.gt_u (local.get $note) (i32.const {{.Song.Hold}}))(then
|
(if (i32.gt_u (local.get $note) (i32.const {{.Hold}}))(then
|
||||||
(memory.fill (local.get $di) (i32.const 0) (i32.const 4096))
|
(memory.fill (local.get $di) (i32.const 0) (i32.const 4096))
|
||||||
(i32.store (local.get $di) (local.get $note))
|
(i32.store (local.get $di) (local.get $note))
|
||||||
))
|
))
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: true
|
output16bit: true
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [1, 0, 2, 0, 3, 0, 4, 0]
|
sequence: [1, 0, 2, 0, 3, 0, 4, 0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [1, 0, 2, 0, 3, 0, 4, 0]
|
sequence: [1, 0, 2, 0, 3, 0, 4, 0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 2
|
- numvoices: 2
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0, 0]
|
sequence: [0, 0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
bpm: 100
|
bpm: 100
|
||||||
output16bit: false
|
output16bit: false
|
||||||
hold: 1
|
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
sequence: [0]
|
sequence: [0]
|
||||||
|
Loading…
Reference in New Issue
Block a user