summaryrefslogtreecommitdiff
path: root/midi-dump.hs
diff options
context:
space:
mode:
Diffstat (limited to 'midi-dump.hs')
-rw-r--r--midi-dump.hs74
1 files changed, 44 insertions, 30 deletions
diff --git a/midi-dump.hs b/midi-dump.hs
index 064ce88..4c74792 100644
--- a/midi-dump.hs
+++ b/midi-dump.hs
@@ -75,38 +75,51 @@ getAbsTime = do
75 return $ now - startTime + startTimeReal 75 return $ now - startTime + startTimeReal
76 76
77createTable :: Query 77createTable :: Query
78createTable = fromString $ concat 78createTable = fromString . concat $
79 ["CREATE TABLE IF NOT EXISTS axis_input", 79 [ "CREATE TABLE IF NOT EXISTS axis_input"
80 " (id INTEGER PRIMARY KEY,", 80 , " (id INTEGER PRIMARY KEY,"
81 81 , " start_sec INTEGER,"
82 " start_sec INTEGER,", 82 , " start_nsec INTEGER,"
83 " start_nsec INTEGER,", 83 , " end_sec INTEGER,"
84 " end_sec INTEGER,", 84 , " end_nsec INTEGER,"
85 " end_nsec INTEGER,", 85 , " first_sec INTEGER,"
86 86 , " first_nsec INTEGER,"
87 " first_sec INTEGER,", 87 , " last_sec INTEGER,"
88 " first_nsec INTEGER,", 88 , " last_nsec INTEGER,"
89 " last_sec INTEGER,", 89 , " midi BLOB)"
90 " last_nsec INTEGER,", 90 ]
91
92 " midi BLOB)"]
93 91
94sqlInsert :: Query 92sqlInsert :: Query
95sqlInsert = fromString $ concat 93sqlInsert = fromString . concat $
96 ["INSERT INTO axis_input", 94 [ "INSERT INTO axis_input "
97 95 , "(start_sec,"
98 "(start_sec,", 96 , " start_nsec,"
99 " start_nsec,", 97 , " end_sec,"
100 " end_sec,", 98 , " end_nsec,"
101 " end_nsec,", 99 , " first_sec,"
102 100 , " first_nsec,"
103 " first_sec,", 101 , " last_sec,"
104 " first_nsec,", 102 , " last_nsec,"
105 " last_sec,", 103 , " midi)"
106 " last_nsec,", 104 , "VALUES (?,?,?,?, ?,?,?,?, ?)"
107 105 ]
108 " midi)", 106
109 "VALUES (?,?,?,?, ?,?,?,?, ?)"] 107sqlSelectEVERYTHING :: MidiController [CompleteRecording]
108sqlSelectEVERYTHING = do
109 conn <- asks _sqlite
110 liftIO $ query_ conn $ fromString . concat $
111 [ "SELECT "
112 , "start_sec,"
113 , "start_nsec,"
114 , "end_sec,"
115 , "end_nsec,"
116 , "first_sec,"
117 , "first_nsec,"
118 , "last_sec,"
119 , "last_nsec,"
120 , "midi"
121 , " FROM axis_input ORDER BY start_sec, start_nsec;"
122 ]
110 123
111main' :: IO () 124main' :: IO ()
112main' = withAlsaInit $ \h public private q publicAddr privateAddr -> do 125main' = withAlsaInit $ \h public private q publicAddr privateAddr -> do
@@ -176,6 +189,7 @@ processCommand :: String -> MidiController ()
176processCommand "exit" = modify $ \s -> s { _wantExit = True } 189processCommand "exit" = modify $ \s -> s { _wantExit = True }
177-- processCommand "" = return () 190-- processCommand "" = return ()
178processCommand "" = gets _replay >>= playRecording 191processCommand "" = gets _replay >>= playRecording
192processCommand "dump" = sqlSelectEVERYTHING >>= playRecording . mconcat
179processCommand "C" = do 193processCommand "C" = do
180 let notes = (Event.NoteEv Event.NoteOn . mkNote) <$> [60, 64, 67] 194 let notes = (Event.NoteEv Event.NoteOn . mkNote) <$> [60, 64, 67]
181 forM_ notes (delayNoteEv (TimeSpec 0 0)) 195 forM_ notes (delayNoteEv (TimeSpec 0 0))