Skip to content

Commit

Permalink
Merge pull request #19 from jrsurge/develop
Browse files Browse the repository at this point in the history
Merge develop into master for v1.4.0
  • Loading branch information
jrsurge authored Jun 2, 2019
2 parents ee5c0dd + c412561 commit 75a66be
Show file tree
Hide file tree
Showing 18 changed files with 688 additions and 296 deletions.
43 changes: 38 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,54 @@
# SuperDiffuse Change Log

## Known issues
* Moving control faders (MIDI) while a piece is loading will lock the interface, forcing a restart of SuperDiffuse. This appears to be a SuperCollider/Qt issue that can't really be addressed
- [1] Moving control faders (MIDI) while a piece is loading will lock the interface, forcing a restart of SuperDiffuse. This appears to be a SuperCollider/Qt threading issue.
* This may have been addressed in newer SC versions(?)
- [2] Using the mouse-wheel in the Edit Matrix window when it has scrollbars can cause trouble. The NumberBox doesn't steal the mouse properly on mouse-wheel, so the scroll event propagates to the ScrollArea. I'm working on a PR to the main SuperCollider repo to address this.

## Version 1.4.0
A big usability update. This version __requires SuperCollider >= 3.9__.

Core functionality is the same, but lots of new features to make things easier. Thanks to everyone who has used the system so far and provided invaluable feedback. In particular, this version features additions requested by Adrian Moore, Adam Stanovic, Hans Tutsku, and David Berezan; thank you all.

### New features
* Added meter bridge to GUI (post-master fader)
* __NOTE__: requires SuperCollider >= 3.9.3 to function
* Added Ctrl+D for duplicating Matrices.
* Added Ctrl+D for duplicating FilterSets.
* Added auto-save. If you've saved the concert once (or loaded it), any changes that would require a save now automatically trigger a resave:
* Adding/Removing/Swapping/Editing Pieces
* Adding/Removing/Editing Matrices
* Adding/Removing/Editing Filter Sets
* Setting Master Fader
* Setting Control Faders
* Setting MIDI Config
* Added 'Hide Waveform' button. This removes the waveform and the playhead from the soundfile view, leaving only a black box. When hidden, the soundfile view doesn't respond to mouse clicks, so you can't change the playback position while hidden (keyboard still responds, so start/stop and returning to beginning remain possible).

### Changes
* Changed Master Fader to behave exponentially (like control faders). The numberbox values are linear, but they scale exponentially - beware values above 1!
* Lock Interface now disables mouse interaction with the Soundfile View, offering a more coherent 'concert mode'.
* Lock Interface now requires two clicks to unlock, providing additional safety for concerts.
* GUI code refactor - the layout is now grid-based and compartmentalised. Apart from being easier to maintain, this means scaling is handled better. Widgets can also now be smaller than before, reducing screen real-estate requirements.
* The Pieces add/remove and up/down buttons have been swapped to mirror usual workflow: adding/removing pieces, _then_ swapping order.
* The main window title now includes the filename of the currently loaded concert.

### Fixes
* Fixed a bug where selecting a Matrix and pressing play would start the piece at the matrix index
* Fixed an issue with the Clock displaying decimals on newer SuperCollider versions (backwards compatible)
* Reduced the number of calls to ControlFader GUI updates on value changes (might help with Known Issue [1])

## Version 1.3.0

### New Features
* Added configurable input (pre-routing matrix) and output (post-routing matrix) filters

## Version 1.2.0

### Changes
* Changed faders to behave uniformly (regardless of control from MIDI, OSC or GUI)
* Added GPLv3 license

## Version 1.1.1

### Fixes
* Minor patch to fix issues with machine specific keyboard shortcuts (now uses Qt keycodes)

## Version 1.1.0

* First public release. Thanks to Adrian Moore, Adam Stanovic, Jonty Harrison, Denis Smalley, and the composers at USSS for their support and invaluable thoughts
10 changes: 10 additions & 0 deletions Classes/Components/FilterSystem/SuperDiffuse_FilterSet.sc
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,22 @@ SuperDiffuse_FilterSet
^super.new.init(numIns, numOuts, inBus, outBus, inFxGroup, outFxGroup);
}

*newFrom { | filterSet, name |
^super.new.initFrom(filterSet, name);
}

init { | numIns, numOuts, inBus, outBus, inFxGroup, outFxGroup |
m_inFilters = Array.fill(numIns, { | ind | SuperDiffuse_FilterUnit(inBus.subBus(ind), inFxGroup ); });
m_outFilters = Array.fill(numOuts, { | ind | SuperDiffuse_FilterUnit(outBus.subBus(ind), outFxGroup); });
m_name = "New Filter Set";
}

initFrom { | filterSet, name |
m_name = name;
m_inFilters = filterSet.inFilters.deepCopy.do({ | filterUnit |filterUnit.init; });
m_outFilters = filterSet.outFilters.deepCopy.do({ | filterUnit | filterUnit.init; });
}

inFilterAt { | ind |
^m_inFilters[ind];
}
Expand Down
15 changes: 9 additions & 6 deletions Classes/Components/FilterSystem/SuperDiffuse_FilterSetManager.sc
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,19 @@ SuperDiffuse_FilterSetManager
}

removeFilterSet { | ind |
// if we're removing the current set, unload it first
if(m_currentSet != nil)
if(ind > 0) // don't remove the default filterset
{
if(m_filterSets[ind] === m_currentSet)
// if we're removing the current set, unload it first
if(m_currentSet != nil)
{
this.unload;
if(m_filterSets[ind] === m_currentSet)
{
this.unload;
};
};
};

m_filterSets.removeAt(ind);
m_filterSets.removeAt(ind);
}
}

at { | ind |
Expand Down
4 changes: 2 additions & 2 deletions Classes/Components/SuperDiffuse_Clock.sc
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ SuperDiffuse_Clock
m = (totalSeconds / 60 % 60).floor;
h = (totalSeconds / 60 / 60).floor;

^"%:%:%".format(h.asString.padLeft(2,"0"),m.asString.padLeft(2,"0"),s.asString.padLeft(2,"0"));
^"%:%:%".format(h.asInteger.asString.padLeft(2,"0"),m.asInteger.asString.padLeft(2,"0"),s.asInteger.asString.padLeft(2,"0"));
}

reset {
Expand All @@ -72,4 +72,4 @@ SuperDiffuse_Clock
updateGUI {
{display.string_(this.getString)}.defer;
}
}
}
Loading

0 comments on commit 75a66be

Please sign in to comment.