5684185+vsariola@users.noreply.github.com
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
5684185+vsariola@users.noreply.github.com
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
qm210
8dfadacafe
feat: midi note input for the tracker
2024-10-22 07:56:36 +03:00
5684185+vsariola@users.noreply.github.com
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
5684185+vsariola@users.noreply.github.com
025f8832d9
fix(tracker): adding order row moved cursor incorrectly
2024-10-19 00:00:29 +03:00
5684185+vsariola@users.noreply.github.com
1c42a51cc6
refactor(tracker): use built-in min & max instead of intMin & intMax
2024-10-18 23:43:27 +03:00
5684185+vsariola@users.noreply.github.com
0ba6557f65
fix(tracker/presets): kick-adam.yml had some invalid parameters
2024-10-18 23:40:21 +03:00
5684185+vsariola@users.noreply.github.com
3306c431c3
refactor(tracker): use List.DeleteElements to delete tracks/instrs
2024-10-16 13:44:50 +03:00
5684185+vsariola@users.noreply.github.com
63c08d53fe
feat(tracker): solo and mute can toggle multiple instruments
2024-10-16 01:09:28 +03:00
5684185+vsariola@users.noreply.github.com
063b2c29c5
feat: add mute and solo toggles for instruments
...
Closes #168
2024-10-16 00:44:34 +03:00
5684185+vsariola@users.noreply.github.com
00b8e1872a
feat(tracker/gioui): using mouse to select rectangles in tables
2024-10-15 13:24:14 +03:00
5684185+vsariola@users.noreply.github.com
04ca0a3f6e
fix(tracker/gioui): changing a hex played the previous value
2024-10-15 13:08:02 +03:00
5684185+vsariola@users.noreply.github.com
08386323ed
fix(tracker/gioui): all key filters for hexadecimals in note editor
2024-10-15 12:56:10 +03:00
5684185+vsariola@users.noreply.github.com
7470413ad8
fix(tracker): click on hex track low/high nibble selects that nibble
...
Closes #160
2024-10-15 09:37:21 +03:00
5684185+vsariola@users.noreply.github.com
5099c61705
chore: fix linter problems in work space (remove unuseds etc.)
2024-10-15 09:18:41 +03:00
5684185+vsariola@users.noreply.github.com
b494a69a76
refactor(tracker): change Iterate() func(yield):s to Iterate(yield)
2024-10-15 09:09:17 +03:00
5684185+vsariola@users.noreply.github.com
3986bbede7
fix(tracker/gomidi): consume all available midi.Messages
2024-10-15 00:25:07 +03:00
5684185+vsariola@users.noreply.github.com
97e59c5650
refactor(tracker): use go v1.23 style iterators throughout
2024-10-15 00:01:02 +03:00
5684185+vsariola@users.noreply.github.com
2b7ce39069
refactor(tracker/gioui): give Editor Text / SetText methods
2024-10-14 23:36:32 +03:00
5684185+vsariola@users.noreply.github.com
03c994e4da
refactor(tracker/gioui): wrap Editor to include common key.Filters
2024-10-14 23:12:58 +03:00
5684185+vsariola@users.noreply.github.com
cd88ea0680
test(tracker): fix FuzzModel: NullContext implements MIDIContext
2024-10-14 17:25:56 +03:00
5684185+vsariola@users.noreply.github.com
2809526de6
refactor(tracker): ask for midiContext in the model constructor
2024-10-14 17:03:17 +03:00
5684185+vsariola@users.noreply.github.com
f427eca1f4
fix(sointu-vsti): VST crashed due to Model.MIDI being nil
2024-10-14 16:57:21 +03:00
5684185+vsariola@users.noreply.github.com
c07d8000c6
refactor(tracker): harmonize naming and use iterators in MIDI
...
using iterators requires go 1.23
2024-10-14 15:00:55 +03:00
Alexander Kraus
577265b250
feat(tracker): add support for a MIDI controller to the standalone tracker
...
Closes #132 .
2024-10-14 14:11:50 +03:00
5684185+vsariola@users.noreply.github.com
9779beee99
feat: units can have comments
...
Closes #114
2024-10-13 23:02:13 +03:00
5684185+vsariola@users.noreply.github.com
160eb8eea9
fix(tracker/gioui): typing notes respects the keybinding modifiers
2024-10-13 15:14:04 +03:00
5684185+vsariola@users.noreply.github.com
3fb7f07c2c
feat(tracker/gioui): keybindings file is keybindings.yml, not .yaml
2024-10-13 14:54:42 +03:00
5684185+vsariola@users.noreply.github.com
10f021a497
feat: toggle button to duplicate non-unique patterns when changed
...
Closes #77 .
2024-10-13 14:47:22 +03:00
5684185+vsariola@users.noreply.github.com
3a7ab0416a
fix(presets): remove invalid parameters from snare-adam.yml
2024-10-13 14:39:04 +03:00
5684185+vsariola@users.noreply.github.com
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
5684185+vsariola@users.noreply.github.com
59c04ed4a1
refactor(tracker): shorten the names of model.PlayFrom... methods
2024-10-12 21:31:56 +03:00
5684185+vsariola@users.noreply.github.com
a6bb5c2afc
feat(tracker): make keybindings user configurable
...
Closes #94 , closes #151 .
2024-10-12 21:08:30 +03:00
5684185+vsariola@users.noreply.github.com
5c51932f60
fix(tracker): autofix malformed songs with useless params
2024-10-11 20:34:04 +03:00
5684185+vsariola@users.noreply.github.com
773655ef9c
fix(tracker/gioui): avoid deadlock while changing window title
2024-10-11 16:08:55 +03:00
5684185+vsariola@users.noreply.github.com
91b7850bf7
feat(tracker): change keyboard shortcuts to mimic old trackers
2024-10-11 15:31:54 +03:00
5684185+vsariola@users.noreply.github.com
b4a63ce362
feat(tracker/gioui): label identifying instrument MIDI channel
...
Closes #154 .
2024-10-11 12:16:40 +03:00
5684185+vsariola@users.noreply.github.com
a94703deea
fix(tracker/gioui): pressing a or 1 in hex mode created note off
...
Closes #162
2024-10-08 12:31:05 +03:00
5684185+vsariola@users.noreply.github.com
47d7568552
refactor: remove ParamHintString, add DisplayFunc for each param
2024-10-06 19:04:10 +03:00
5684185+vsariola@users.noreply.github.com
890ebe3294
refactor(tracker/gioui): use layout.Background, not layout.Stacked
2024-10-05 13:24:31 +03:00
5684185+vsariola@users.noreply.github.com
bf5579a2d2
build: upgrade to latest gioui
2024-10-05 12:34:02 +03:00
5684185+vsariola@users.noreply.github.com
8fd2df19a1
fix(sointu-vsti): warn about sample rate only after plugin init
2024-09-22 09:59:58 +03:00
5684185+vsariola@users.noreply.github.com
4ee355bb45
fix(tracker/gioui): DPI scaling of the numeric updown icons
...
Closes #150 .
2024-09-21 14:01:32 +03:00
5684185+vsariola@users.noreply.github.com
2b38e11643
feat: include version info in the binaries
2024-09-15 19:45:00 +03:00
5684185+vsariola@users.noreply.github.com
e49f699f62
feat(tracker/gioui): clicking a parameter slider (etc.) selects it
...
Closes #112 .
2024-09-08 14:46:24 +03:00
5684185+vsariola@users.noreply.github.com
6fc9277113
fix(tracker): unit search gains focus when adding a unit on last row
2024-09-07 21:29:37 +03:00
5684185+vsariola@users.noreply.github.com
877556b428
feat(tracker): do not wrap around when playing or moving cursor
...
The wrapping was usually unwanted behaviour. The user can use the
looping (Ctrl-L) to loop the song forever if this is really desired.
2024-09-07 18:52:52 +03:00
5684185+vsariola@users.noreply.github.com
4e1fdf57d9
fix(tracker/gioui): advance row by step when inputting a note
...
Closes #144 .
2024-09-07 17:45:32 +03:00
5684185+vsariola@users.noreply.github.com
1daaf1829c
fix(tracker): ensure numVoices of loaded instrument is ok
2024-09-07 15:25:06 +03:00
5684185+vsariola@users.noreply.github.com
74972b5ff4
fix(tracker): ID collisions in ClearUnit and Instruments.unmarshal
2024-09-07 15:25:06 +03:00
5684185+vsariola@users.noreply.github.com
9da6c2216c
test(tracker): fuzz testing of ID collisions and file read/writes
2024-09-07 15:16:53 +03:00
5684185+vsariola@users.noreply.github.com
61e7da5dab
test(tracker): test loading presets in fuzz tests
2024-09-06 22:03:52 +03:00
5684185+vsariola@users.noreply.github.com
59fb39d9b3
fix(tracker/gioui): move alert popups north to not overlay buttons
...
Closes #142 .
2024-09-06 22:01:00 +03:00
5684185+vsariola@users.noreply.github.com
9cb573d965
feat(tracker/gioui): cursor indicates split bars can be resized
...
Closes #145 .
2024-09-06 20:29:33 +03:00
5684185+vsariola@users.noreply.github.com
d46605c638
fix: assign new IDs to loaded instruments
...
Fixes #146 .
2024-09-06 20:19:27 +03:00
5684185+vsariola@users.noreply.github.com
e09af5ab34
fix(tracker): loading preset did not update the ids
...
When a preset was loaded, its IDs were not updated,
causing ID collisions in the song and send targets
going wrong.
2024-08-10 15:20:25 +03:00
5684185+vsariola@users.noreply.github.com
beb84d7652
fix(tracker/gioui): deleting a cell in the order list did not work
2024-03-14 20:37:09 +02:00
5684185+vsariola@users.noreply.github.com
c55b27b23b
fix(tracker): recording creates empty track when no notes triggered
2024-03-10 20:01:13 +02:00
5684185+vsariola@users.noreply.github.com
e488cd391b
fix(gioui): scroll wheel works in tables, not just table row titles
2024-03-02 00:40:06 +02:00
5684185+vsariola@users.noreply.github.com
7f20bd8baf
fix(tracker): remember to tell player when m.d.Loop is updated
2024-03-01 23:54:19 +02:00
5684185+vsariola@users.noreply.github.com
07bf8f6cdf
fix(gioui): draw cursor in front of play marker in order editor
2024-03-01 23:31:05 +02:00
5684185+vsariola@users.noreply.github.com
f0f391356c
fix(gioui): arrow keys leave table row/col titles
2024-03-01 23:25:30 +02:00
5684185+vsariola@users.noreply.github.com
b18a284252
feat(gioui): + and - keys add/subtract elements in tables
...
Closes #65 .
2024-03-01 22:43:27 +02:00
5684185+vsariola@users.noreply.github.com
1c020fffa3
refactor(gioui): update gioui to v0.5.0
2024-03-01 22:11:44 +02:00
5684185+vsariola@users.noreply.github.com
edee3452f4
feat(tracker): load presets from os.UserConfigDir()/sointu/presets/
...
This is related to #125 , but is very crude way of implementing it.
2024-02-20 20:17:59 +02:00
5684185+vsariola@users.noreply.github.com
aa1b4d371b
fix(tracker): notify player that loop changed when resetting song
2024-02-20 19:28:59 +02:00
5684185+vsariola@users.noreply.github.com
dc12f58082
feat(tracker): add ability to loop part of song during playback
...
Closes #128 .
2024-02-20 19:10:15 +02:00
5684185+vsariola@users.noreply.github.com
aa7a2e56fa
feat(gioui): flip the unit parameter slider scroll wheel behaviour
...
Closes #112 .
2024-02-19 21:49:51 +02:00
5684185+vsariola@users.noreply.github.com
17312bbe4e
feat: add ability to disable units temporarily
...
Quite often the user wants to experiment what particular unit(s) add
to the sound. This commit adds ability to disable any set of units
temporarily, without actually deleting them. Ctrl-D disables and
re-enables the units. Disabled units are considered non-existent in
the patch.
Closes #116 .
2024-02-19 21:36:14 +02:00
5684185+vsariola@users.noreply.github.com
2b3f6d8200
fix(tracker): unit searching to work more reliably
2024-02-17 20:54:46 +02:00
5684185+vsariola@users.noreply.github.com
ca4a98eb50
fix(gioui): reduce the default height of popup menus so they fit
...
Closes #121 .
2024-02-17 19:03:49 +02:00
5684185+vsariola@users.noreply.github.com
d92426a100
feat!: rewrote the GUI and model for better testability
...
The Model was getting unmaintanable mess. This is an attempt to refactor/rewrite the Model so that data of certain type is exposed in standardized way, offering certain standard manipulations for that data type, and on the GUI side, certain standard widgets to tied to that data.
This rewrite closes #72 , #106 and #120 .
2024-02-17 18:16:06 +02:00
5684185+vsariola@users.noreply.github.com
04fbc9f6a7
feat(vm): add dbgain unit, where gain is defined in decibels
...
Closes #78
2023-10-23 21:57:29 +03:00
5684185+vsariola@users.noreply.github.com
a38a0f4235
fix(tracker/gioui): text.Shaper should not be a global variable
...
text.Shaper is not thread safe, which caused crash when adding
multiple VSTI plugins to a DAW project. This change fixes that
crash. Further refactorings need to consider where that text.Shaper
should actually reside.
2023-10-22 19:10:24 +03:00
5684185+vsariola@users.noreply.github.com
6eb025d7ba
refactor(tracker): remove unused variable RECOVERY_FILE
2023-10-20 18:41:21 +03:00
5684185+vsariola@users.noreply.github.com
9ec8f48f82
feat(tracker): move unnecessary members from modelData to Model
2023-10-20 17:59:27 +03:00
5684185+vsariola@users.noreply.github.com
391b14493c
feat(tracker): undo entire modelData, not just Song
...
The modelData is moving towards clear meaning: it's the part of the
GUI state that is undone and also recovered from disk. This changes
the recovery data so that the undo and redo stacks are not undone,
but that is unlikely a good idea anyway, as it grows the recovery
data into unreasonable sizes.
This has also the nice benefit of undoing the cursor position, which
closes #64 .
2023-10-20 17:59:26 +03:00
5684185+vsariola@users.noreply.github.com
486bab4185
style(tracker): rename NUM_RENDER_TRIES to numRenderTries
2023-10-20 16:38:44 +03:00
5684185+vsariola@users.noreply.github.com
1e47c5004c
style(tracker): remove unused PlayerPlayingMessage type
2023-10-20 16:37:19 +03:00
5684185+vsariola@users.noreply.github.com
900f1611b1
docs(tracker): add go doc comments to GmDlsEntry/-Entries
2023-10-20 16:36:09 +03:00
5684185+vsariola@users.noreply.github.com
beb06727b0
refactor: move UnitNames to top level package
2023-10-20 01:59:30 +03:00
5684185+vsariola@users.noreply.github.com
b6ec5d1a04
style(tracker): group code into less number of files
2023-10-20 01:50:38 +03:00
5684185+vsariola@users.noreply.github.com
ff8e662857
refactor(tracker): move NoteStr and NoteAsValue to gioui package
2023-10-20 01:40:14 +03:00
5684185+vsariola@users.noreply.github.com
a60814bab7
refactor(tracker): make struct to hold all per voice data in Player
2023-10-20 01:26:41 +03:00
5684185+vsariola@users.noreply.github.com
0ce5ca3003
refactor(tracker): send Songs/Patches etc. from Model to Player
2023-10-20 00:54:03 +03:00
5684185+vsariola@users.noreply.github.com
14a0306064
docs(tracker): add go doc comments to Player
2023-10-19 23:28:57 +03:00
5684185+vsariola@users.noreply.github.com
d342fb860b
refactor(tracker): put all recording data into struct Recording
2023-10-19 23:28:57 +03:00
5684185+vsariola@users.noreply.github.com
453f45c48a
refactor(tracker): rename SongPoint to ScorePoint etc.
2023-10-19 22:28:44 +03:00
5684185+vsariola@users.noreply.github.com
50ccfe03da
refactor(tracker): split Volume to PeakVolume and AverageVolume
2023-10-19 22:28:44 +03:00
5684185+vsariola@users.noreply.github.com
1a8a317464
docs(tracker): improve package go doc comments
2023-10-19 22:28:44 +03:00
5684185+vsariola@users.noreply.github.com
9073adadb3
fix(tracker/gioui): scroll bars move in sync with the cursor
2023-10-19 14:25:03 +03:00
5684185+vsariola@users.noreply.github.com
b772940b1f
fix(tracker/gioui): preset menu scrollbar fits on screen
2023-10-19 14:22:19 +03:00
5684185+vsariola@users.noreply.github.com
d6abb14b08
feat(tracker/gioui): add scrollbars to menus
2023-10-19 14:07:09 +03:00
5684185+vsariola@users.noreply.github.com
64270eaf68
refactor: rename FindSendTarget to FindUnit
2023-10-19 13:31:34 +03:00
5684185+vsariola@users.noreply.github.com
ff4155a08e
fix(tracker): notify player when recovery file is loaded
2023-10-19 10:59:07 +03:00
5684185+vsariola@users.noreply.github.com
b6815f70cb
feat: remove unreleased parameter from Play function
...
The VMs now release all envelopes by default, so this mechanism was
useless / did not actually start them as unreleased even when you
thought they did.
2023-10-19 10:42:20 +03:00
5684185+vsariola@users.noreply.github.com
0a67129a0c
refactor!: rename SynthService to Synther and related types
...
The -er suffix is more idiomatic for single method interfaces, and
the interface is not doing much more than converting the patch to a
synth. Names were updated throughout the project to reflect this
change. In particular, the "Service" in SynthService was not telling
anything helpful.
2023-10-18 17:32:13 +03:00
5684185+vsariola@users.noreply.github.com
0187cc66ec
refactor: move Wav and Raw methods as members of AudioBuffer
2023-10-18 14:40:16 +03:00
5684185+vsariola@users.noreply.github.com
38e9007bf8
refactor: use [][2] as audio buffers, instead of []float32
...
Throughout sointu, we assume stereo audiobuffers, but were passing
around []float32. This had several issues, including len(buf)/2 and
numSamples*2 type of length conversion in many places. Also, it
caused one bug in a test case, causing it to succeed when it should
have not (the test had +-1 when it should have had +-2). This
refactoring makes it impossible to have odd length buffer issues.
2023-10-18 13:51:02 +03:00
5684185+vsariola@users.noreply.github.com
bb0d4d6800
docs(tracker): update comments
2023-10-17 20:31:57 +03:00