diff --git a/csound-expression.cabal b/csound-expression.cabal
--- a/csound-expression.cabal
+++ b/csound-expression.cabal
@@ -1,5 +1,5 @@
 Name:          csound-expression
-Version:       4.8.3
+Version:       4.8.4
 Cabal-Version: >= 1.6
 License:       BSD3
 License-file:  LICENSE
@@ -65,7 +65,7 @@
   Ghc-Options:    -Wall
   Build-Depends:
         base >= 4, base < 5, process, data-default, Boolean >= 0.1.0, colour >= 2.0, transformers >= 0.3,
-        csound-expression-typed >= 0.0.7.8, csound-expression-dynamic >= 0.1.4.3, temporal-media >= 0.6.1,
+        csound-expression-typed >= 0.0.8, csound-expression-dynamic >= 0.1.5, temporal-media >= 0.6.1,
         csound-expression-opcodes >= 0.0.3
   Hs-Source-Dirs:      src/
   Exposed-Modules:
diff --git a/src/Csound/Air/Misc.hs b/src/Csound/Air/Misc.hs
--- a/src/Csound/Air/Misc.hs
+++ b/src/Csound/Air/Misc.hs
@@ -31,14 +31,18 @@
     ticks4, nticks4,
 
     -- * Drone
-    testDrone, testDrone2, testDrone3, testDrone4
+    testDrone, testDrone2, testDrone3, testDrone4,
 
+    hrtf
+
 ) where
 
 import Control.Monad
 import Data.Boolean
 import Data.Default
 
+import Csound.Dynamic hiding (int)
+
 import Csound.Typed
 import Csound.Typed.Opcode hiding (metro)
 import Csound.Control.Gui
@@ -513,3 +517,14 @@
     where (wa1, wa2) = reverbsc a1 a2 fbk 12000
 
 type Feedback = Sig
+
+----------------------------------------------------------
+
+hrtf :: (Sig, Sig) -> Sig -> (Sig,Sig)
+hrtf (a, b) asig = hrtfmove' asig a b
+
+hrtfmove' ::  Sig -> Sig -> Sig -> (Sig,Sig)
+hrtfmove' b1 b2 b3 = pureTuple $ f <$> unSig b1 <*> unSig b2 <*> unSig b3 <*> (unStr $ text "hrtf-44100-left.dat") <*> (unStr $ text "hrtf-44100-right.dat")
+    where f a1 a2 a3 a4 a5 = mopcs "hrtfmove" ([Ar,Ar],[Ar,Kr,Kr,Sr,Sr,Ir,Ir,Ir]) [a1,a2,a3,a4,a5]
+
+-- "hrtf-44100-left.dat","hrtf-44100-right.dat"
diff --git a/src/Csound/Air/Patch.hs b/src/Csound/Air/Patch.hs
--- a/src/Csound/Air/Patch.hs
+++ b/src/Csound/Air/Patch.hs
@@ -131,7 +131,7 @@
 --------------------------------------------------------------
 -- sco
  
- -- | Plays a patch with scores. Supplies a custom value for mixing effects (dry/wet).
+-- | Plays a patch with scores. Supplies a custom value for mixing effects (dry/wet).
 -- The 0 is a dry signal, the 1 is a wet signal.
 atSco :: (SigSpace a, Sigs a) => Patch a -> Sco CsdNote -> Sco (Mix a)
 atSco p sc = eff (getPatchFx p) $ sco (patchInstr p) sc	
