1
- #load " ../src/zmidi/datatypes.fs"
2
- #load " ../src/zmidi/extratypes.fs"
3
- #load " ../src/zmidi/internal/utils.fs"
4
- #load " ../src/zmidi/internal/parsermonad.fs"
5
- #load " ../src/zmidi/read.fs"
6
- //#r "../build/Debug/AnyCPU/net45/zmidi-fs-core.dll"
1
+ //#load "../src/zmidi/datatypes.fs"
2
+ //#load "../src/zmidi/extratypes.fs"
3
+ //#load "../src/zmidi/internal/utils.fs"
4
+ //#load "../src/zmidi/internal/parsermonad.fs"
5
+ //#load "../src/zmidi/read.fs"
6
+ #r " ../build/Debug/AnyCPU/net45/zmidi-fs-core.dll"
7
+
8
+
7
9
open System.IO
8
10
open ZMidi.Internal .ParserMonad
9
- (*
11
+ open ZMidi
12
+
10
13
let folder =
11
14
Path.Combine(__ SOURCE_ DIRECTORY__ , " .." , " data" , " midifiles" )
12
15
|> DirectoryInfo
@@ -33,7 +36,7 @@ for file in folder.EnumerateFiles() do
33
36
()
34
37
| Error something -> printfn " ERR: %s %A " file.FullName something
35
38
36
- *)
39
+
37
40
let cases =
38
41
[|
39
42
{| expected = 0x00000000 u; input = [| 0x00 uy|] |}
@@ -55,18 +58,50 @@ for case in cases do
55
58
let result = runParser ZMidi.ReadFile.getVarlen case.input state
56
59
printfn " %A " result
57
60
61
+ do
62
+ printfn " hello" ;
63
+ let a = 1 ;
64
+ printfn " world %i " a;
58
65
66
+ //do printfn "hello"; let a = 1; printfn "world %i" a;
59
67
60
- let inline (| TestBit | _ |) ( bit : int ) ( i : ^T ) =
61
- let mask = LanguagePrimitives.GenericOne <<< bit
62
- if mask &&& i = mask then Some () else None
68
+ open ZMidi.ReadFile
69
+ open ZMidi.DataTypes
70
+ let p = parseMidi {
71
+ let! _ = assertString " MThd"
72
+ let! _ = assertWord32 6 u
73
+ let! format = fileFormat
74
+ let! trackCount = readUInt16be
75
+ let! timeDiv = timeDivision
76
+ let header =
77
+ { trackCount = trackCount
78
+ timeDivision = timeDiv
79
+ format = format }
80
+
81
+ let! _ = assertString " MTrk"
82
+ let! l = readUInt32be
83
+ let! t = deltaTime
84
+ let! e = event
85
+ return ( l, t, e)
86
+ //let! track1 = track
87
+ //return track1
88
+ }
89
+
90
+
63
91
64
- let inline clearBit ( bit : int ) ( i : ^T ) =
65
- let mask = ~~~ ( LanguagePrimitives.GenericOne <<< bit)
66
- i &&& mask
67
- let inline msbHigh i =
68
- match i with
69
- | TestBit 7 -> true
70
- | _ -> false
92
+ for file in folder.EnumerateFiles() do
93
+ let buffer = File.ReadAllBytes file.FullName
71
94
72
- msbHigh 0x80 uy &&& 0x7f uy
95
+ let parseResult =
96
+ ZMidi.Internal.ParserMonad.runParser
97
+ p
98
+ buffer
99
+ State.initial
100
+
101
+
102
+ printfn " %s " file.FullName
103
+
104
+ match parseResult with
105
+ | Ok result ->
106
+ printfn " %A " result
107
+ | Error something -> printfn " ERR: %s %A " file.FullName something
0 commit comments