packages feed

Bang 0.1.0.4 → 0.1.0.6

raw patch · 2 files changed

+4/−145 lines, 2 filesdep +hmidi

Dependencies added: hmidi

Files

Bang.cabal view
@@ -1,5 +1,5 @@ name:                Bang-version:             0.1.0.4+version:             0.1.0.6 synopsis:            A Drum Machine DSL for Haskell description:            This library consists of a DSL for piecing together drum compositions. It uses a MIDI backend@@ -26,16 +26,14 @@                        Bang.Music.Operators,                         Bang.Music.Transform -  other-modules:       Bang.Interpreter,-                       System.MIDI+  other-modules:       Bang.Interpreter -  -- other-modules:       -  other-extensions:    DeriveFunctor, NoMonomorphismRestriction   build-depends:       base >=4.6 && <5,                         mtl >=2.1 && <3,                         transformers >=0.3 && <0.4,                        bifunctors >= 4 && <5,-                       stm >= 2.4 && < 5+                       stm >= 2.4 && < 5,+                       hmidi >= 0.2.1 && < 3.0    hs-source-dirs:      src   default-language:    Haskell2010
− src/System/MIDI.hs
@@ -1,139 +0,0 @@------- Module      : System.MIDI--- Version     : 0.1--- License     : BSD3--- Author      : Balazs Komuves--- Maintainer  : bkomuves+hmidi@gmail.com--- Stability   : experimental--- Portability : not portable--- Tested with : GHC 6.8.2------- |A lowest common denominator interface to the Win32 and MacOSX MIDI bindings. --- Error handling is via `fail`-s in the IO monad. --{-# LANGUAGE CPP #-}-module System.MIDI -  ( module System.MIDI.Base--  , Source-  , Destination-  , Connection- -  , enumerateSources-  , enumerateDestinations-  -  , getName-  , getModel-  , getManufacturer--  , openSource-  , openDestination-  , close-  , send-  , sendSysEx-  , start-  , stop-  -  , getNextEvent-  , getEvents-  , currentTime-  -  ) where--import Data.Word (Word8,Word32)-import System.MIDI.Base--#ifdef mingw32_HOST_OS-import qualified System.MIDI.Win32 as S-#define HMIDI_SUPPORTED_OS-#endif--#ifdef darwin_HOST_OS-import qualified System.MIDI.MacOSX as S-#define HMIDI_SUPPORTED_OS-#endif---- this is just to be able to produce a Haddock documentation on a not supported system (eg. Linux)-#ifndef HMIDI_SUPPORTED_OS-import qualified System.MIDI.Placeholder as S-#endif---- All the definitions in this file are neccessary to be able to have a nice Haddock-generated--- documentation independently of the platform. Though I still don't know how to generate documentation--- for a platform-specific module while being on an a different platform (probably not at all possible --- at present?) ---- |The opaque data type representing a MIDI source.-type Source = S.Source---- |The opaque data type representing a MIDI destination.-type Destination = S.Destination---- |The opaque data type representing a MIDI connection.-type Connection = S.Connection---- |Enumerates the MIDI sources present in the system.-enumerateSources :: IO [Source]-enumerateSources = S.enumerateSources---- |Enumerates the MIDI destinations present in the system.-enumerateDestinations :: IO [Destination]-enumerateDestinations = S.enumerateDestinations---- |These functions return the name, model and manufacturer of a MIDI source \/ destination.--- --- Note: On Win32, only `getName` returns a somewhat meaningful string at the moment.-getName :: S.MIDIHasName a => a -> IO String-getModel :: S.MIDIHasName a => a -> IO String-getManufacturer :: S.MIDIHasName a => a -> IO String--getName = S.getName-getModel = S.getModel-getManufacturer = S.getManufacturer---- |Opens a MIDI Source.--- There are two possibilites to receive MIDI messages. The user can either support a callback function,--- or get the messages from an asynchronous buffer. However, mixing the two approaches is not allowed.-openSource :: Source -> Maybe ClientCallback -> IO Connection -openSource = S.openSource---- |Opens a MIDI Destination.-openDestination :: Destination -> IO Connection -openDestination = S.openDestination---- |Gets the next event from a buffered connection (see also `openSource`)-getNextEvent :: Connection -> IO (Maybe MidiEvent)-getNextEvent = S.getNextEvent---- |Gets all the events from the buffer (see also `openSource`)-getEvents :: Connection -> IO [MidiEvent]-getEvents = S.getEvents-      --- |Sends a short message. The connection must be a `Destination`.-send :: Connection -> MidiMessage -> IO ()-send = S.send- --- |Sends a system exclusive message. You shouldn't include the starting \/ trailing bytes 0xF0 and 0xF7.--- --- Note: On Win32, the connection must be a `Destination`-sendSysEx :: Connection -> [Word8] -> IO ()-sendSysEx = S.sendSysEx- --- |Starts a connection. This is required for receiving MIDI messages, and also for starting the clock.-start :: Connection -> IO ()-start = S.start---- |Stops a connection.-stop :: Connection -> IO ()-stop = S.stop-  --- |Closes a MIDI Connection.-close :: Connection -> IO ()-close = S.close- --- |Returns the time elapsed since the last `start` call, in milisecs.-currentTime :: Connection -> IO Word32-currentTime = S.currentTime-