Loic Coenen
|
3646f6c47e
|
Merge branch '6-recording-wav-file'
|
2026-05-17 16:59:56 +00:00 |
|
Loic Coenen
|
bb648d471b
|
fix: resolve cppcheck warnings for const pointer and static functions
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-12 19:58:20 +00:00 |
|
Loic Coenen
|
fa9dbf2185
|
style: fix code formatting and include order in looper and ringbuffer
|
2026-05-12 19:58:19 +00:00 |
|
Loic Coenen
|
ce2dd7be76
|
fix: make channel state variables atomic to eliminate data races
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-12 19:32:10 +00:00 |
|
Loic Coenen
|
525516fe03
|
refactor: replace manual WAV I/O with libsndfile
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-12 19:15:12 +00:00 |
|
Loic Coenen
|
a92b5c51e1
|
fix: skip remaining fmt chunk bytes correctly in wav_read
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-12 19:09:58 +00:00 |
|
Loic Coenen
|
6344eaed47
|
fix: add debug output and increase delay in WAV load test
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-12 19:02:59 +00:00 |
|
Loic Coenen
|
04b59999c8
|
fix: make loop_count atomic and increase remove channel delay
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-12 18:28:54 +00:00 |
|
Loic Coenen
|
df1f4fa6bd
|
fix: only set loop_count from record_pos when transitioning from record state
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-12 18:22:55 +00:00 |
|
Loic Coenen
|
cc50577444
|
fix: cast atomic pointer loads/stores and remove duplicate free in writer_thread
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-12 18:01:57 +00:00 |
|
Loic Coenen
|
346c15d1c3
|
fix: use persistent MIDI client and fix save_ring race condition
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-11 22:14:33 +00:00 |
|
Loic Coenen
|
5430795510
|
feat: push loop output into save ring during playback
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-11 21:16:02 +00:00 |
|
Loic Coenen
|
5a2414b4c3
|
feat: add WAV load/save and ring buffer implementation
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-11 21:15:12 +00:00 |
|
Loic Coenen
|
755af275d8
|
fix: convert shared scene metadata to atomic_int to fix data races
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 19:33:12 +00:00 |
|
Loic Coenen
|
74db4ed46c
|
fix: add missing channel pointer declaration in apply_command
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 19:13:51 +00:00 |
|
Loic Coenen
|
15be644af7
|
refactor: remove unused variable 'cur' in looper_process_commands
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 19:07:52 +00:00 |
|
Loic Coenen
|
aaca25ebf1
|
refactor: remove unused local variable in looper commands
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 19:01:37 +00:00 |
|
Loic Coenen
|
e3b9321b1a
|
fix: remove unused variable and suppress cppcheck warnings
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 19:00:13 +00:00 |
|
Loic Coenen
|
c8b9de8e81
|
fix: reopen FIFO on EOF to prevent blocking on subsequent writes
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 18:39:10 +00:00 |
|
Loic Coenen
|
1ba98fc768
|
fix: prevent hang in scene add/remove test and fix unsafe scene copy
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 18:34:26 +00:00 |
|
Loic Coenen
|
4dfb7a87c1
|
fix: correct state access in MIDI clock handling
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 18:24:48 +00:00 |
|
Loic Coenen
|
7b00246443
|
feat: implement scene infrastructure for multi-scene looper support
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 18:00:32 +00:00 |
|
Loic Coenen
|
44177f785f
|
style: fix code formatting in channel.c and midi.c
|
2026-05-10 18:00:29 +00:00 |
|
Loic Coenen
|
86d9bc72f1
|
style: reformat long lines in looper.c for readability
|
2026-05-10 16:36:15 +00:00 |
|
Loic Coenen
|
fe3fb7d873
|
fix: reduce main loop sleep to 1ms and add polling in tests
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 12:53:15 +00:00 |
|
Loic Coenen
|
df5ecef580
|
feat: add FIFO add_midi command and integration tests for FIFO stop/bind/unbind and MIDI channel creation
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 11:46:04 +00:00 |
|
Loic Coenen
|
df181b117e
|
fix: correct MIDI channel processing and port cleanup
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 11:37:04 +00:00 |
|
Loic Coenen
|
ff226a8ea6
|
feat: add per-channel MIDI looping support
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 11:29:41 +00:00 |
|
Loic Coenen
|
85e828f461
|
style: reformat comments and code for consistent indentation
|
2026-05-10 11:29:39 +00:00 |
|
Loic Coenen
|
9da4481300
|
fix: defer freeing old channel array until RT thread sees new pointer
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 10:50:03 +00:00 |
|
Loic Coenen
|
b7827e7311
|
fix: reset channel state on stop to prevent burst continuation
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 10:45:33 +00:00 |
|
Loic Coenen
|
595a35ec32
|
fix: correct atomic pointer declaration syntax
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 10:42:20 +00:00 |
|
Loic Coenen
|
5739ff8019
|
feat: remove hard limit on number of channels
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-10 10:38:59 +00:00 |
|
Loic Coenen
|
900619a714
|
12-command-art
|
2026-05-10 01:08:11 +00:00 |
|
Loic Coenen
|
c592c24634
|
feat: add MIDI stop command and FIFO pipe integration test
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 23:56:09 +00:00 |
|
Loic Coenen
|
7edd95d06e
|
fix: split main command queue into per-source SPSC queues
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 23:32:21 +00:00 |
|
Loic Coenen
|
de0389e144
|
feat: remove MIDI-driven add/remove channel commands to fix SPSC race
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 23:12:53 +00:00 |
|
Loic Coenen
|
b1e330e839
|
refactor: remove stale cmd_add/cmd_remove declarations from channel.h
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 22:20:35 +00:00 |
|
Loic Coenen
|
437ac31913
|
feat: unify add/remove commands into queue and fix race on channel removal
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 22:03:11 +00:00 |
|
Loic Coenen
|
392dabbc0f
|
feat: add command queue and FIFO pipe for unified input handling
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 21:31:54 +00:00 |
|
Loic Coenen
|
f7f18f9fa7
|
style: fix formatting and include order in source files
|
2026-05-09 21:31:52 +00:00 |
|
Loic Coenen
|
20c0820910
|
refactor: use explicit pointer casts to clarify type conversions
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 14:46:09 +00:00 |
|
Loic Coenen
|
934843e9b1
|
fix: move cppcheck suppression comment to same line as assignment
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 13:23:32 +00:00 |
|
Loic Coenen
|
aa0b191b46
|
makefile
```makefile
<<<<<<< SEARCH
check:
cppcheck --enable=all --error-exitcode=1 --suppress=missingIncludeSystem --suppress=usleepCalled --suppress=unreadVariable --suppress=normalCheckLevelMaxBranches src/*.c --library=posix .
=======
check:
cppcheck --enable=all --error-exitcode=1 --suppress=unreadVariable src/*.c --library=posix .
>>>>>>> REPLACE
```
src/channel.c
```c
<<<<<<< SEARCH
#include "channel.h"
#include <jack/jack.h>
#include <stdatomic.h>
#include <stdio.h>
#include <string.h>
=======
// cppcheck-suppress missingIncludeSystem
#include "channel.h"
#include <jack/jack.h>
#include <stdatomic.h>
#include <stdio.h>
#include <string.h>
>>>>>>> REPLACE
```
src/channel.h
```c
<<<<<<< SEARCH
#include <jack/jack.h>
#include <stdatomic.h>
=======
// cppcheck-suppress missingIncludeSystem
#include <jack/jack.h>
#include <stdatomic.h>
>>>>>>> REPLACE
```
src/looper.c
```c
<<<<<<< SEARCH
#include "looper.h"
#include "channel.h"
#include "midi.h"
#include <jack/jack.h>
#include <jack/midiport.h>
#include <math.h>
#include <stdatomic.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
=======
// cppcheck-suppress missingIncludeSystem
#include "looper.h"
#include "channel.h"
#include "midi.h"
#include <jack/jack.h>
#include <jack/midiport.h>
#include <math.h>
#include <stdatomic.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
>>>>>>> REPLACE
```
src/looper.h
```c
<<<<<<< SEARCH
#include <jack/jack.h>
=======
// cppcheck-suppress missingIncludeSystem
#include <jack/jack.h>
>>>>>>> REPLACE
```
src/main.c
```c
<<<<<<< SEARCH
#include "looper.h"
#include <jack/jack.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
=======
// cppcheck-suppress missingIncludeSystem
#include "looper.h"
#include <jack/jack.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
>>>>>>> REPLACE
```
src/midi.c
```c
<<<<<<< SEARCH
#include "midi.h"
#include "channel.h"
#include <jack/jack.h>
#include <jack/midiport.h>
#include <stdatomic.h>
=======
// cppcheck-suppress missingIncludeSystem
#include "midi.h"
#include "channel.h"
#include <jack/jack.h>
#include <jack/midiport.h>
#include <stdatomic.h>
>>>>>>> REPLACE
```
src/midi.h
```c
<<<<<<< SEARCH
#include <jack/types.h>
=======
// cppcheck-suppress missingIncludeSystem
#include <jack/types.h>
>>>>>>> REPLACE
```
tests/integration.c
```c
<<<<<<< SEARCH
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <string.h>
#include <stdarg.h>
#include <fcntl.h>
#include <jack/jack.h>
#include <jack/midiport.h>
#include <math.h>
#include <time.h>
=======
// cppcheck-suppress missingIncludeSystem
// cppcheck-suppress usleepCalled
// cppcheck-suppress normalCheckLevelMaxBranches
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <string.h>
#include <stdarg.h>
#include <fcntl.h>
#include <jack/jack.h>
#include <jack/midiport.h>
#include <math.h>
#include <time.h>
>>>>>>> REPLACE
```
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 12:46:50 +00:00 |
|
Loic Coenen
|
c2df024350
|
style: reformat code and update cppcheck suppressions
|
2026-05-09 12:46:31 +00:00 |
|
Loic Coenen
|
7e9224cdc7
|
fix: replace usleep with nanosleep and fix const correctness
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 12:11:57 +00:00 |
|
Loic Coenen
|
1db9735e1b
|
style: reformat code and reorder includes in looper.c and main.c
|
2026-05-09 12:11:55 +00:00 |
|
Loic Coenen
|
60a8bdcfe8
|
feat: add unbind command (note 63) to reset bind_channel to 0
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 11:14:52 +00:00 |
|
Loic Coenen
|
4bacab68c6
|
feat: implement bind feature for associating channels with MIDI notes
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 10:22:33 +00:00 |
|
Loic Coenen
|
b0dda3d8ed
|
fix: defer port unregistration to avoid race condition in channel removal
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
|
2026-05-09 10:00:33 +00:00 |
|