9d59cfb3b6
fix(tracker): unmarshal always into fresh, empty structs
...
A somewhat gotcha: when unmarshaling into &m.d with json.Unmarshal
or yaml.Unmarshal, maps were "merged" with the existing maps, which
is how we ended up with send units with color parameters, among
other things. This fix always unmarshals into fresh var data
modelData and only then sets m.d = data if the unmarshaling was
succesful.
2024-11-02 22:01:12 +02:00
19661f90ea
feat(tracker/gioui): move panic button to the right of MIDI menu
2024-11-02 21:22:40 +02:00
94058c2603
fix(tracker): do not close Broker but rather just close the detector
2024-11-02 20:45:10 +02:00
b73fc0b95b
refactor(tracker): use the Broker to communicate when exporting wav
2024-11-02 20:08:48 +02:00
ee3ab3bf86
feat(tracker): try to honor MIDI message timestamps
2024-11-02 19:55:40 +02:00
2aa0aaee0c
refactor: AudioSource is a func instead of single function interface
...
This avoids defining Processor altogether.
2024-11-02 19:50:20 +02:00
3eb4d86d52
style(tracker/gioui): remove old commented code
2024-11-02 17:00:56 +02:00
ec222bd67d
feat(tracker): oscilloscope and LUFS / true peak detection
...
In addition to the oscilloscope and loudness/peak detections, this
commit refactors all the channels between components (i.e.
ModelMessages and PlayerMessages) etc. into a new class Broker. This
was done because now we have one more goroutine running: a Detector,
where the loudness / true peak detection is done in another thread.
The different threads/components are only aware of the Broker and
communicate through it. Currently, it's just a collection of
channels, so it's many-to-one communication, but in the future,
we could change Broker to have many-to-one-to-many communication.
Related to #61
2024-11-02 15:08:09 +02:00
daf7fb1519
feat(tracker/gioui): user-defined keybindings.yml override defaults
...
The behaviour of the user-defined keybindings.yml was changed.
It now documents just the changes from the default keybindings.
An empty line with no action means "unbind the key".
2024-10-28 10:04:13 +02:00
8dfadacafe
feat: midi note input for the tracker
2024-10-22 07:56:36 +03:00
216cde2365
feat: keeping instruments and tracks linked & splitting them
...
Also includes a refactoring of the List: all methods that accepted
or returned a [from, to] range now return a Range, which is
non-inclusive i.e. [start,end).
Also the assignUnitIds was slightly refactored & a new function
called assignUnitIdsForPatch was added, to assign all unit IDs for
an patch at once.
Closes #157 , #163 .
2024-10-20 12:23:25 +03:00
025f8832d9
fix(tracker): adding order row moved cursor incorrectly
2024-10-19 00:00:29 +03:00
1c42a51cc6
refactor(tracker): use built-in min & max instead of intMin & intMax
2024-10-18 23:43:27 +03:00
0ba6557f65
fix(tracker/presets): kick-adam.yml had some invalid parameters
2024-10-18 23:40:21 +03:00
3306c431c3
refactor(tracker): use List.DeleteElements to delete tracks/instrs
2024-10-16 13:44:50 +03:00
63c08d53fe
feat(tracker): solo and mute can toggle multiple instruments
2024-10-16 01:09:28 +03:00
063b2c29c5
feat: add mute and solo toggles for instruments
...
Closes #168
2024-10-16 00:44:34 +03:00
00b8e1872a
feat(tracker/gioui): using mouse to select rectangles in tables
2024-10-15 13:24:14 +03:00
04ca0a3f6e
fix(tracker/gioui): changing a hex played the previous value
2024-10-15 13:08:02 +03:00
08386323ed
fix(tracker/gioui): all key filters for hexadecimals in note editor
2024-10-15 12:56:10 +03:00
7470413ad8
fix(tracker): click on hex track low/high nibble selects that nibble
...
Closes #160
2024-10-15 09:37:21 +03:00
5099c61705
chore: fix linter problems in work space (remove unuseds etc.)
2024-10-15 09:18:41 +03:00
b494a69a76
refactor(tracker): change Iterate() func(yield):s to Iterate(yield)
2024-10-15 09:09:17 +03:00
3986bbede7
fix(tracker/gomidi): consume all available midi.Messages
2024-10-15 00:25:07 +03:00
97e59c5650
refactor(tracker): use go v1.23 style iterators throughout
2024-10-15 00:01:02 +03:00
2b7ce39069
refactor(tracker/gioui): give Editor Text / SetText methods
2024-10-14 23:36:32 +03:00
03c994e4da
refactor(tracker/gioui): wrap Editor to include common key.Filters
2024-10-14 23:12:58 +03:00
cd88ea0680
test(tracker): fix FuzzModel: NullContext implements MIDIContext
2024-10-14 17:25:56 +03:00
2809526de6
refactor(tracker): ask for midiContext in the model constructor
2024-10-14 17:03:17 +03:00
f427eca1f4
fix(sointu-vsti): VST crashed due to Model.MIDI being nil
2024-10-14 16:57:21 +03:00
c07d8000c6
refactor(tracker): harmonize naming and use iterators in MIDI
...
using iterators requires go 1.23
2024-10-14 15:00:55 +03:00
577265b250
feat(tracker): add support for a MIDI controller to the standalone tracker
...
Closes #132 .
2024-10-14 14:11:50 +03:00
9779beee99
feat: units can have comments
...
Closes #114
2024-10-13 23:02:13 +03:00
160eb8eea9
fix(tracker/gioui): typing notes respects the keybinding modifiers
2024-10-13 15:14:04 +03:00
3fb7f07c2c
feat(tracker/gioui): keybindings file is keybindings.yml, not .yaml
2024-10-13 14:54:42 +03:00
10f021a497
feat: toggle button to duplicate non-unique patterns when changed
...
Closes #77 .
2024-10-13 14:47:22 +03:00
3a7ab0416a
fix(presets): remove invalid parameters from snare-adam.yml
2024-10-13 14:39:04 +03:00
4c096a3fac
refactor(tracker): rename Notetracking to Follow
...
Notetracking was used in two completely different meanings: the
pitch/bpm notetracking in the delay unit and the cursor follow in
when playing. The word for the second meaning was changed to Follow,
to avoid confusion.
2024-10-12 21:35:45 +03:00
59c04ed4a1
refactor(tracker): shorten the names of model.PlayFrom... methods
2024-10-12 21:31:56 +03:00
a6bb5c2afc
feat(tracker): make keybindings user configurable
...
Closes #94 , closes #151 .
2024-10-12 21:08:30 +03:00
5c51932f60
fix(tracker): autofix malformed songs with useless params
2024-10-11 20:34:04 +03:00
773655ef9c
fix(tracker/gioui): avoid deadlock while changing window title
2024-10-11 16:08:55 +03:00
91b7850bf7
feat(tracker): change keyboard shortcuts to mimic old trackers
2024-10-11 15:31:54 +03:00
b4a63ce362
feat(tracker/gioui): label identifying instrument MIDI channel
...
Closes #154 .
2024-10-11 12:16:40 +03:00
a94703deea
fix(tracker/gioui): pressing a or 1 in hex mode created note off
...
Closes #162
2024-10-08 12:31:05 +03:00
47d7568552
refactor: remove ParamHintString, add DisplayFunc for each param
2024-10-06 19:04:10 +03:00
890ebe3294
refactor(tracker/gioui): use layout.Background, not layout.Stacked
2024-10-05 13:24:31 +03:00
bf5579a2d2
build: upgrade to latest gioui
2024-10-05 12:34:02 +03:00
8fd2df19a1
fix(sointu-vsti): warn about sample rate only after plugin init
2024-09-22 09:59:58 +03:00
4ee355bb45
fix(tracker/gioui): DPI scaling of the numeric updown icons
...
Closes #150 .
2024-09-21 14:01:32 +03:00