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+
79open System.IO
810open ZMidi.Internal .ParserMonad
9- (*
11+ open ZMidi
12+
1013let folder =
1114 Path.Combine(__ SOURCE_ DIRECTORY__ , " .." , " data" , " midifiles" )
1215 |> DirectoryInfo
@@ -33,7 +36,7 @@ for file in folder.EnumerateFiles() do
3336 ()
3437 | Error something -> printfn " ERR: %s %A " file.FullName something
3538
36- *)
39+
3740let cases =
3841 [|
3942 {| expected = 0x00000000 u; input = [| 0x00 uy|] |}
@@ -55,18 +58,50 @@ for case in cases do
5558 let result = runParser ZMidi.ReadFile.getVarlen case.input state
5659 printfn " %A " result
5760
61+ do
62+ printfn " hello" ;
63+ let a = 1 ;
64+ printfn " world %i " a;
5865
66+ //do printfn "hello"; let a = 1; printfn "world %i" a;
5967
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+
6391
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
7194
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