Just a quick announcement for a small library recently extracted from Project Overtone. It lets you specify binary formats and then serialize to and from clojure data structures. This was created to read and write SuperCollider synthesizer definition files, but it could be used for other binary file formats also.
You can check it out on github here: http://github.com/rosejn/byte-spec or you can use it in your project.clj and let lein pull it from clojars using this identifier: [byte-spec "0.1"] Here is a snip from the tests to give you a sense for how it works: (defspec rhythm-spec :name :string :length :int16 :n-triggers :int32 :triggers [:int8]) (defspec melody-spec :name :string :n-notes :int32 :notes [:int16]) (defspec song-spec :name :string :bpm :int8 :rhythm rhythm-spec :melody melody-spec) (defn bytes-and-back [spec obj] (spec-read-bytes spec (spec-write-bytes spec obj))) (deftest nested-spec-test [] (let [r (spec rhythm-spec "test rhythm" 100 (short 5) [1 2 3 4 5]) m (spec melody-spec "test melody" (int 12) [2 3 4 54 23 43 98 23 98 54 87 23]) s (spec song-spec "test song" 234 r m) s2 (bytes-and-back song-spec s) m2 (:melody s2) r2 (:rhythm s2)] (is (= 5 (:n-triggers r2))) (is (= 12 (:n-notes m2))) (is (= r2)) (is (= m2)) (is (= s s)))) Let me know if you have any questions. Cheers, Jeff Rose -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en