              {:constructor "context.createDynamicsCompressor()"}))
 
 (def midi-note-node-type
-  (NodeType. {:device {:type :accessor
-                       :name "device"
-                       :default nil
-                       :title "Device"
-                       :data-type :midi-device
-                       :serializable false}
-              :note-mode {:type :constant
-                          :name "noteMode"
-                          :default "retrig"
-                          :data-type :string
-                          :title "Mode"
-                          :choices ["retrig" "legato"]}
-              :portamento {:type :constant
-                           :name "portamento"
-                           :default 0
-                           :data-type :number
-                           :range [0 5]
-                           :title "Portamento"}
-              :priority {:type :constant
-                         :name "priority"
-                         :default "last-on"
-                         :data-type :string
-                         :title "Priority"
-                         :choices ["last-on" "highest" "lowest"]}}
-             {:gate {:type :node
-                     :index 0
-                     :title "Gate"
-                     :data-type :gate}
-              :frequency {:type :node
-                          :index 1
-                          :title "Frequency"
-                          :data-type :param}}
+  (NodeType. {:device (midi-device-accessor-in "device" "Device")
+              :note-mode (string-constant-in "noteMode" "Mode" "retrig"
+                                             ["retrig" "legato"])
+              :portamento (number-constant-in "portamento" "Portamento" 0)
+              :priority (string-constant-in "priority" "Priority" "last-on"
+                                            ["last-on" "highest" "lowest"])}
+             {:gate (gate-out 0 "Gate")
+              :frequency (param-out 1 "Frequency")}
              nil
              false
              "MIDI Note"

             {:constructor "context.createOscillator()"}))

(def gain-node-type
  (NodeType. {:gain {:type :param
                     :name "gain"
                     :default 1
                     :title "Gain"
                     :data-type :number}
              :signal-in {:type :node
                          :index 0
                          :title "Signal"}}
             {:signal-out {:type :node
                           :index 0
                           :title "Signal"
                           :data-type :signal}}
             nil
             false
             "Gain"

             {:constructor "context.createBiquadFilter()"}))

(def const-source-node-type
  (NodeType. {:value (number-accessor-in "value" "Value" 1)}
             {:signal (signal-out 0 "Signal out")}
             nil
             false
             "Const"
