-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
main.go
75 lines (67 loc) · 2.13 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package main
//go:generate git tag -af v$VERSION -m "v$VERSION"
//go:generate go run .github/updateversion.go
//go:generate git commit -am "bump $VERSION"
//go:generate git tag -af v$VERSION -m "v$VERSION"
import (
"flag"
"fmt"
"github.com/schollz/miti/src/click"
"github.com/schollz/miti/src/log"
"github.com/schollz/miti/src/midi"
"github.com/schollz/miti/src/play"
"github.com/schollz/miti/src/record"
"github.com/schollz/miti/src/sequencer"
)
var flagDebug, flagTrace, flagVersion, flagList, flagWait, flagClick bool
var flagFile, flagRecord string
var flagLatency int64
var flagClickPerQuarter float64
// Version specifies the version
var Version string
func init() {
flag.BoolVar(&flagDebug, "debug", false, "debug")
flag.BoolVar(&flagTrace, "trace", false, "trace")
flag.BoolVar(&flagList, "list", false, "list midi devices")
flag.BoolVar(&flagVersion, "version", false, "show version")
flag.BoolVar(&flagWait, "sync", false, "wait for midi input to start")
flag.BoolVar(&flagClick, "click", false, "output click track with metronome")
flag.Int64Var(&flagLatency, "latency", 10, "latency for midi output")
flag.Int64Var(&click.TuneLatency, "clicklag", 0, "add lag to click track to sync better")
flag.Float64Var(&sequencer.ClickPerQuarterNote, "clickperqn", 2, "number of clicks per quarter note")
flag.StringVar(&flagRecord, "record", "", "record input to miti file")
flag.StringVar(&flagFile, "play", "", "play sequence from miti file")
if Version == "" {
Version = "v0.6.0-5001293"
}
}
func main() {
flag.Parse()
if flagDebug {
log.SetLevel("debug")
} else if flagTrace {
log.SetLevel("trace")
} else {
log.SetLevel("info")
}
fmt.Printf("miti %s - musical instrument textual interface\nsubmit bugs to https://github.com/schollz/miti/issues\n\n", Version)
if flagVersion {
return
}
midi.Latency = flagLatency
play.Version = Version
play.SyncWithMidi = flagWait
play.ClickTrack = flagClick
play.Latency = flagLatency
var err error
if flagRecord != "" {
err = record.Record(flagRecord)
} else if flagList {
err = play.Play("", true)
} else {
err = play.Play(flagFile, false)
}
if err != nil {
log.Error(err)
}
}