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
943073d0cc
perf: do not use TotalVoices as it causes heap allocations
2024-11-02 20:44:45 +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
86c65939bb
docs: Update CHANGELOG.md
2024-11-02 15:01:30 +02:00
7417170a8b
docs: update README.md
2024-10-28 21:01:18 +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
eb9413b9a0
fix: sointu-play should use cmd.MainSynther ( #174 )
...
This way you can choose if you want to use the native synth or the
go synth by defining the build tag native.
2024-10-25 11:03:08 +03: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
9bce1cb3d5
build: change go version in go.mod
to fix manual linux builds. ( #169 )
2024-10-16 11:31:12 +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
7b213bd8b0
feat(sointu): display compressor invgain and threshold in dB
2024-10-15 23:27:58 +03:00
27b6bc57d2
doc: update CHANGELOG.md
2024-10-15 14:49:47 +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
f8f0e11b76
docs: update CHANGELOG.md
2024-10-14 17:09:12 +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