@@ -13,7 +13,6 @@ class StepRecorderExtension(definition: ControllerExtensionDefinition, host: Con
1313 private lateinit var documentState: DocumentState
1414 private lateinit var application: Application
1515 private lateinit var transport: Transport
16- private lateinit var cursorTrack: CursorTrack
1716 private lateinit var clipLauncherCursorClip: Clip
1817 private lateinit var arrangerCursorClip: Clip
1918 private lateinit var midiIn: MidiIn
@@ -49,9 +48,8 @@ class StepRecorderExtension(definition: ControllerExtensionDefinition, host: Con
4948 transport = host.createTransport()
5049 preferences = host.preferences
5150
52- cursorTrack = host.createCursorTrack(" steprecorder:CursorTrack" , " Cursor Track" , 0 , 100 , true )
53- val trackBank = host.createTrackBank(100 , 0 , 100 , false )
54- trackBank.setShouldShowClipLauncherFeedback(true )
51+ val trackBank = setupSelectionObserverSettings()
52+
5553 stepper = Stepper (host)
5654 clipLauncherCursorClip = host.createLauncherCursorClip(stepper.clipGridWidth, 128 )
5755 clipLauncherCursorClip.exists().markInterested()
@@ -136,6 +134,18 @@ class StepRecorderExtension(definition: ControllerExtensionDefinition, host: Con
136134 }
137135 }
138136
137+ private fun setupSelectionObserverSettings (): TrackBank ? {
138+
139+ val tracksSetting =
140+ host.preferences.getNumberSetting(" Tracks observed" , " Tracking" , 0.0 , 500.0 , 1.0 , " " , 100.0 )
141+ val scenesSetting =
142+ host.preferences.getNumberSetting(" Scenes per track observed" , " Tracking" , 0.0 , 500.0 , 1.0 , " " , 100.0 )
143+ if (tracksSetting.get().toInt() == 0 || scenesSetting.get().toInt() == 0 ) return null
144+ val trackBank = host.createTrackBank(tracksSetting.get().toInt(), 0 , scenesSetting.get().toInt(), false )
145+ trackBank.setShouldShowClipLauncherFeedback(true )
146+ return trackBank
147+ }
148+
139149 private fun setupVelocity () {
140150 fixedVelocityToggle = documentState.getEnumBasedBooleanSetting(" Fixed velocity" , " Step Recorder" , false )
141151 MidiLearnBinding (host, " Fixed Velocity Binding" ) {
@@ -283,23 +293,27 @@ class StepRecorderExtension(definition: ControllerExtensionDefinition, host: Con
283293
284294 private var needsResetToPlayStart = true
285295
286- private fun setupEnable (trackBank : TrackBank ) {
287- val bankUtil = BankUtil (trackBank)
296+ private fun setupEnable (trackBank : TrackBank ? ) {
297+ if (trackBank != null ) {
288298
289- bankUtil.forEachBank { bank, index ->
290- bank.addIsSelectedObserver({ slotIndex: Int , isSelected: Boolean ->
291- if (enableSetting.get()) {
299+ val bankUtil = BankUtil (trackBank)
300+
301+ bankUtil.forEachBank { bank, index ->
302+ bank.addIsSelectedObserver({ slotIndex: Int , isSelected: Boolean ->
303+ if (enableSetting.get()) {
304+ enableSetting.set(false )
305+ needsResetToPlayStart = true
306+ host.println (" Step recorder is now disabled" )
307+ }
308+ })
309+ }
310+
311+ bankUtil.forEachClipLauncherSlot { slot, trackIndex, slotIndex ->
312+ slot.isSelected.addValueObserver { isSelected ->
292313 enableSetting.set(false )
293314 needsResetToPlayStart = true
294315 host.println (" Step recorder is now disabled" )
295316 }
296- })
297- }
298-
299- bankUtil.forEachClipLauncherSlot { slot, trackIndex, slotIndex ->
300- slot.isSelected.addValueObserver { isSelected ->
301- enableSetting.set(false )
302- needsResetToPlayStart = true
303317 }
304318 }
305319
0 commit comments