Skip to content

Commit

Permalink
Added swing amount changer
Browse files Browse the repository at this point in the history
  • Loading branch information
poltow committed Mar 19, 2017
1 parent 0f0775d commit fee268f
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 7 deletions.
51 changes: 47 additions & 4 deletions InstrumentControllerComponent.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from _Framework.CompoundComponent import CompoundComponent
from _Framework.SubjectSlot import subject_slot
from _Framework.ButtonElement import ButtonElement
from _Framework.Util import find_if
from _Framework.Util import find_if, clamp
from itertools import imap
from TrackControllerComponent import TrackControllerComponent
from ScaleComponent import ScaleComponent,CIRCLE_OF_FIFTHS,MUSICAL_MODES,KEY_NAMES
Expand Down Expand Up @@ -56,6 +56,7 @@ def __init__(self, matrix, side_buttons, top_buttons, control_surface, note_repe
self.set_matrix(matrix)

self._on_session_record_changed.subject = self.song()
self._on_swing_amount_changed_in_live.subject = self.song()

def set_enabled(self, enabled):
CompoundComponent.set_enabled(self, enabled)
Expand All @@ -67,6 +68,7 @@ def set_enabled(self, enabled):
self._control_surface.set_feedback_channels(feedback_channels)
if not enabled:
self._control_surface.release_controlled_track()

else:
self._control_surface.set_controlled_track(self._track_controller.selected_track)

Expand All @@ -80,6 +82,7 @@ def set_enabled(self, enabled):
if Settings.INSTRUMENT__SAVE_SCALE != None and Settings.INSTRUMENT__SAVE_SCALE == "clip":
self._scales.from_object(self._track_controller.selected_clip)
self._update_OSD()
self._note_repeat.set_enabled(enabled)

def _set_feedback_velocity(self):
if self.song().session_record:
Expand All @@ -91,6 +94,16 @@ def _set_feedback_velocity(self):
def _on_session_record_changed(self):
self._set_feedback_velocity()

@subject_slot('swing_amount')
def _on_swing_amount_changed_in_live(self):
self.update()

def _change_swing_amount_value(self, value):
self.song().swing_amount = clamp(self.song().swing_amount + value * 0.75, 0.0, 0.75)

def _swing_amount(self):
return self.song().swing_amount

# Refresh button and its listener
def set_scales_toggle_button(self, button):
assert isinstance(button, (ButtonElement, type(None)))
Expand Down Expand Up @@ -256,19 +269,26 @@ def _matrix_value_quickscale(self, value, x, y, is_momentary): # matrix buttons
self.update()
else:
if(y == 0):
if x == 7:
if x == 0:
self._change_swing_amount_value(0.05)
elif x == 1:
self._change_swing_amount_value(-0.05)
elif x == 7:
self.setup_quick_scale_mode()
self.update()

if(y == 1):
if x in range(8):

self._note_repeat.set_freq_index(x)
self._note_repeat.set_freq_index(7-x)
self._control_surface.show_message("key pressed: " + str(self._note_repeat.freq_index()))
self.update()

def setup_quick_scale_mode(self):

self._quick_scale_root = ((self._quick_scale_root + 1) % 3)
self._note_repeat.set_enabled(self._quick_scale_root==2)

if self._quick_scale_root==0:
self._control_surface.show_message("quick scale : root")
elif self._quick_scale_root==1:
Expand Down Expand Up @@ -305,6 +325,7 @@ def update(self):
self._octave_down_button.turn_off()

self._update_OSD()
self._control_surface.log_message("Swing Amount: " + str(self.song().swing_amount))

def set_osd(self, osd):
self._osd = osd
Expand Down Expand Up @@ -546,7 +567,29 @@ def _update_matrix(self):
else:
button.turn_off()
else:
pass
button = self._matrix.get_button(7, 0)
button.set_light("QuickScale.Quant.Mode")

for x in range(7):
button = self._matrix.get_button(x, 0)
button.set_enabled(True)
button.set_on_off_values("DefaultButton.On", "DefaultButton.Disabled")
if(x in range(2)):
button.turn_on()
else:
button.turn_off()

for x in range(8):
button = self._matrix.get_button(x, 1)
button.set_enabled(True)
button.set_on_off_values("QuickScale.Quant")

if (7-x) == self._note_repeat.freq_index():
button.turn_on()
else:
button.turn_off()


pattern = self._scales.get_pattern()
max_j = self._matrix.width() - 1
a = 0
Expand Down
1 change: 0 additions & 1 deletion NoteRepeatComponent.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#Embedded file name: /Users/versonator/Jenkins/live/output/mac_64_static/Release/midi-remote-scripts/Push/NoteRepeatComponent.py
from _Framework import Task
from _Framework.CompoundComponent import CompoundComponent
import Live
Expand Down
8 changes: 6 additions & 2 deletions SkinMK1.py
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,11 @@ class Key:
CircleOfFifths = Rgb.RED
RelativeScale = Rgb.RED
Mode = Rgb.GREEN


class Quant:
On = Rgb.RED
Off = Rgb.YELLOW_HALF
Mode = Rgb.MANDARIN


def make_skin():
return Skin(Colors)

0 comments on commit fee268f

Please sign in to comment.