(use goo)
(use samurui/samurui)
(use samurui/gtk.swig)
(use samurui/hobar)
(use demos/electrobeep/music/notes)
(use demos/electrobeep/music/patches)
(use demos/electrobeep/music/alsamidi)
(use demos/electrobeep/music/midigm)
(use demos/electrobeep/notebar)
(dc <electro-sample> (<any>))
(dc <electro-track> (<any>))
(iprop <electro-track> patch <midi-patch> "Patch")
(dc <electro-drum-track> (<electro-track>))
(iprop <electro-drum-track> beats <col> "Beats")
(dc <electro-piano-track> (<electro-track>))
(iprop <electro-piano-track> notes <col> "Notes")
(dc <electro-pattern> (<any>))
(iprop <electro-pattern> tracks <col> "Tracks")
(dc <electro-song> (<any>))
(dm hobar-item-payload (track|<electro-drum-track>)
(beats track)
)
(dm hobar-item-payload (track|<electro-piano-track>)
(notes track)
)
(dm get-notes (track|<electro-drum-track>)
#f
)
(dm get-notes (track|<electro-piano-track>)
(notes track)
)
(dc <electro-beep> (<any>)) (iprop <electro-beep> pattern <electro-pattern> "Current Pattern")
(iprop <electro-beep> hack <col> "TrackHack")
(iaction <electro-beep> play-current-pattern app "Play Cur Pattern"
(init-midi-layer)
(do (fun (track)
(def notes (get-notes track))
(when notes
(play-notes notes)
)
)
(hack app))
)
(imodel <electro-beep>
"Pattern"
(attr hack fill)
play-current-pattern
)
(imodel <electro-pattern>
"Tracks"
(attr tracks fill)
play-current-pattern
)
(dv beep (new <electro-beep>))
(dv trak (new <electro-drum-track>))
(dv ptrak (new <electro-piano-track>))
(dv pat (new <electro-pattern>))
(set (hack beep) (vec trak ptrak))
(set (beats trak) (vec #f #f #f #f
#f #f #f #f
#f #f #f #f
#f #f #f #f))
(set (notes ptrak) (vec
(fab-note "C" 5)
(fab-note "C#" 5)
(fab-note "D" 5)
(fab-note "D#" 5)
(fab-note "E" 5)
(fab-note "F" 5)
(fab-note "F#" 5)
(fab-note "G" 5)
(fab-note "G#" 5)
(fab-note "A" 5)
(fab-note "A#" 5)
(fab-note "B" 5)
(fab-note "C" 6)
(fab-note "C#" 6)
(fab-note "D" 6)
(fab-note "D#" 6)
(fab-note "E" 6)
(fab-note "F" 6)
(fab-note "F#" 6)
(fab-note "G" 6)
(fab-note "G#" 6)
(fab-note "A" 6)
(fab-note "A#" 6)
))
(gtk_init_easy)
(present beep)
(gtk_main)