{-# LANGUAGE FlexibleInstances #-}
module Musicology.MidiNumInstances where
import Musicology.Pitch
instance Num (Pitch MidiInterval) where
fromInteger :: Integer -> Pitch MidiInterval
fromInteger = forall a. a -> Pitch a
Pitch forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Num a => Integer -> a
fromInteger
instance Num (Pitch MidiIC) where
fromInteger :: Integer -> Pitch MidiIC
fromInteger = forall a. a -> Pitch a
Pitch forall b c a. (b -> c) -> (a -> b) -> a -> c
. MidiInterval -> MidiIC
mic forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Num a => Integer -> a
fromInteger
instance Num MidiIC where
fromInteger :: Integer -> MidiIC
fromInteger = MidiInterval -> MidiIC
mic forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Num a => Integer -> a
fromInteger
(MidiIC MidiInterval
a) + :: MidiIC -> MidiIC -> MidiIC
+ (MidiIC MidiInterval
b) = MidiInterval -> MidiIC
mic forall a b. (a -> b) -> a -> b
$ MidiInterval
aforall a. Num a => a -> a -> a
+MidiInterval
b
(MidiIC MidiInterval
a) - :: MidiIC -> MidiIC -> MidiIC
- (MidiIC MidiInterval
b) = MidiInterval -> MidiIC
mic forall a b. (a -> b) -> a -> b
$ MidiInterval
aforall a. Num a => a -> a -> a
-MidiInterval
b
(MidiIC MidiInterval
a) * :: MidiIC -> MidiIC -> MidiIC
* (MidiIC MidiInterval
b) = MidiInterval -> MidiIC
mic forall a b. (a -> b) -> a -> b
$ MidiInterval
aforall a. Num a => a -> a -> a
*MidiInterval
b
negate :: MidiIC -> MidiIC
negate (MidiIC MidiInterval
i) = MidiInterval -> MidiIC
mic (-MidiInterval
i)
abs :: MidiIC -> MidiIC
abs = forall a. a -> a
id
signum :: MidiIC -> MidiIC
signum (MidiIC MidiInterval
i) = MidiInterval -> MidiIC
mic forall a b. (a -> b) -> a -> b
$ forall a. Num a => a -> a
signum MidiInterval
i