This repository has been archived by the owner on Jun 10, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
422 lines (296 loc) · 16.8 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
2012-02-20 James Morris <james@jwm-art.net>
* libboxyseq/boxysequencer.c boxyseq_ui_collect_events: fix bug
where events were not removed from ui_eventlist and consequently
hung around in the display after transport stop. noticed since
event re-ordering changes, fixed by moving detection of events in
ui_note_on_buf forward before processing of ui_unplace_buf.
2012-02-17 James Morris <james@jwm-art.net>
* libboxyseq/midi_out_port.[ch]: removed 'start' array.
* libboxyseq/event_buffer.[ch]: deleted and replaced by usage of
the JACK ringbuffer.
2012-02-16 James Morris <james@jwm-art.net>
* since the reordering work, a bug became apparent when transport
was stopped. annoyingly only rarely, a block or several blocks
would appear to remain within the grid as if they had been lost in
the system. after almost two weeks tracking the bug (minus the
time lost for a fresh linux install) i discover i've been looking
in the wrong place. the bug is only within the GUI code. however
despite this discovery at the end of this long frustrating period
i can say that many other bugs have been reduced in the engine
code.
* libboxyseq/event.[ch]: Macro clean up. addition of debugging
helper macro/function EVENT_IS/event_is. event_dump displays
human readable version of flags.
* libboxyseq/event_pool.c rt_evlist_and_remove_event: fix removal
of tail.
* libboxyseq/grid_boundary.[ch]: new flag GRBOUND_OVERRIDE_NOTE_CH
sets the boundary to override event channel number.
* libboxyseq/midi_out_port.c: moport_rt_pull_playing_and_empty has
significant changes i believe...
* other changes i've given up tracking. it's all been a pita. some
routines modified event properties which should have been left
alone.
2012-02-05 James Morris <james@jwm-art.net>
* libboxyseq/*: event ordering reworking. it was noticed that there
was potentially a problem with how boxyseq was ordering the
processing of differing event types within the JACK cycle.
detailed inspection revealed the assumption that events would
always begin in one cycle and end in another. some quite subtle
implications arise from this but the extensive reworking
that has been undertaken fixes all that so that placements and
unplacements are carefully handled in order within each JACK cycle
and no more assumptions are made.
NOTE: in boxyseq, a relationship is formed between existing events
and newly created events via the freespace grid. a new event requires
space to exist, if the space is taken up by old events the new event
will not come to exist. this is why the ordering rework was necessary.
2012-01-31 James Morris <james@jwm-art.net>
* freespace_test/freespace_test.c test messages no longer require
DEBUG defined.
* libboxyseq/freespace_state.[ch]: added capabilities for managing
'block-areas'. block-areas when initially placed may overlap
existing used space. a block-area is treated as any other area of
used space by the search algorithm - area search results won't
overlap it. block-areas may also overlap other block-areas.
removal of a block area won't damage any area of used space it
overlaps with. comments in the source detail the process further.
there is no significant performance cost.
* libboxyseq/*.[ch]: added comments for future reference.
2012-01-28 James Morris <james@jwm-art.net>
* CMakeLists.txt: enabled -Wall -Wextra (assume GCC compiler).
* libboxyseq/*: various minor problems such as missing headers
discovered and resolved due to compiler flags.
* boxyseq_gui/gui_main.c: new keyboard shortcuts, see
KEYBOARD_SHORTCUTS file.
* grid_boundary.h: new function grbound_flags_toggle.
* grid_boundary.h: modified GRID_BOUNDARY_FLAGS to be saner.
Previously from user perspective, boundaries could either play,
block, or ignore events. This was achieved by three flags but is
now achieved with two: GRBOUND_EVENT_PROCESS to ignore events or
not, and GRBOUND_EVENT_PLAY to process events as play events or as
block events. Toggling the process/ignore state no longer destroys
the play/block state.
* gui_box.c: fix zoom scaling to integer multiples to maintain sharp
edges to boxes.
* gui_grid.c: boundaries set to ignore events now drawn with a
dashed line style. selected boundary is shown not by colouring the
whole box as before but by a thick blue outline. all boundary
outlines drawn with translucency.
* gui_misc.[ch]: new function create_diagonal_hatching_pattern
does exactly as it says. unfortunately the pattern looks crap when
scaled by cairo so it isn't used for anything.
2012-01-24 James Morris <james@jwm-art.net>
* freespace_state.c: removed column smart search algorithm. column
smart searches now are performed by the row smart functions but
do so on a secondary array added to the freespace struct. the
secondary array is a 90 degree clockwise rotation of the primary
array. space removals and additions now incurr a minor performance
cost for operating on both arrays. however this cost is negligable
compared to the cost of searching by collumn on a data structure
optimized for search by row.
* freespace_test/freespace_test.c: tests for both column smart and
row smart are all performed and pass now.
2012-01-20 James Morris <james@jwm-art.net>
* in the entry for the 17th January 2012 i stated that
x_to_index_offset now returns the correct offset value
range, ie bit number. that is, it returns the bit
number in accordance with LSB0. previosuly it would
have been LSB1 (of which i can find no reference).
in the early days of the algorithm i may have tried
MSB1 or MSB0 but my unfamiliarity with bit twiddling
made it too confusing.
see: http://en.wikipedia.org/wiki/Bit_numbering
2012-01-18 James Morris <james@jwm-art.net>
* libboxyseq/freespace_state.c: further work done in
row-smart routines. fixed placements jutting out of
boundaries. 32, 16, and 8 bit arrays work now.
* freespace_test/freespace_test.c: additional 2 tests:-
3) test placement and removal and replacement, 100
of each of w:1~25, h:1~20.
4) test placement within limited boundary (ie boxes
smaller than boundary, and boundary smaller than
freespace grid). boundary sizes range from 8 to
120. boundaries filled with boxes until no space
remains. box size around half of boundary. tests
for jutting.
NOTE: collumn-smart routines still need development + testing.
2012-01-17 James Morris <james@jwm-art.net>
* libboxyseq/freespace_state.c: reworked fs_x_to_offset_index.
now is x_to_index_offset, returns index rather than offset.
correct offset value range.
* libboxyseq/freespace_state.c: rework row-smart search
routines, improve variable naming within them, enclose
debug messages within FSDEBUG ifdef guards.
* freespace_test/freespace_test.c: added proper testing
of freespace search and remove routines:-
1) test placement of box within a boundary of same size.
performed for all box sizes at all possible locations.
2) test placement of multiple equal-sized boxes. predict
expected location and compare with result.
NOTE: collumn-smart routines need reworking and tests developing.
2010-09-29 James Morris <james@jwm-art.net>
* libboxyseq/CMakeLists.txt: #define for noof freespace
state bits.
2010-09-29 Gabriel M. Beddingfield <gabriel@teuton.org>
* boxyseq_gui/CMakeLists.txt: fix linking for out-of-tree
and/or parallel builds.
2010-09-28 James Morris <james@jwm-art.net>
* gui_grid.c (various/all): box refactoring.
the creation of the scrollable, viewport, and drawing area
has been removed from the grid and made generic so that
other windows may use it (quite likely). the generic
code for handling the moving and resizing of boxes
has gone along with it.
* gui_box.c (new file): contains elements previously in
gui_grid.c - creates a scrollable drawing area,
handles resizing of it, handles motion, button
presses etc, related to box-objects within the drawing area.
* note: gui_box.c DOES NOT handle any drawing.
2010-09-27 James Morris <james@jwm-art.net>
* gui_grid.c (various functions): generic handling
the boundary-specifc code that was in the event
handling callbacks (ie button presses, motion events)
has been split out and placed into boundary specific
functions for each of the event types.
* gui_grid.c (various functions): generic handling
the event callbacks now switch on an object type
chosen and call the specific object types handling
function for that type of event
(ie gui_grid_motion_boundary)
* gui_grid.c (various functions): generic handling
the code performing the calculations to move and resize
boundaries has been genericised into functions to
handle any box with coordinates + dimensions as parameters.
* gui_grid.c (various again): resize calculation improvements.
2010-09-26 James Morris <james@jwm-art.net>
* gui_grid.c (gui_grid_motion_event): boundary detection fix.
* gui_grid.c (gui_grid_direction): called by gui_main when
arrow keys are pressed. currently moves a boundary.
* gui_grid.c (gui_grid_order_boundary): moves a boundary
forward or backward in the boundary list.
* gui_main.c (gui_key_press_event): *new* key processing.
will need attention in future when more key shortcuts
will be required.
* grbound_manager.c (grbound_manager_grbound_order): orders
a bounder backward or forward in the boundary list.
* llist.c (llist_order_node): swaps the data of the specified
node with the data of the previous node if it exists.
2010-09-24 James Morris <james@jwm-art.net>
* grid_boundary.c/h: threee new boundary 'states'
to play as normal, to treat all events as blocks, and
to ignore all events.
* gui_grid.c: modified colouring of events - blocks are
now always coloured grey. boundary outlines are grey when
in the block state and bright red when in the ignore state.
* gui_main.c: added keyboard shortcuts to handle changing
boundary states.
2010-09-24 James Morris <james@jwm-art.net>
* gui_grid.c: modifications to enable the grid as part of the
main window instead of as a seperate window as before.
* gui_grid.c: modified so that gui_grid deals only with the display
of the grid such that creation of buttons (ie zoom buttons)
happens elsewhere. introduced two functions to connect the
zoom buttons to the zoom callbacks.
* gui_main.c: static globals moved into struct...
struct defined in boxyseq_gui/include/gui_main_editor.h
2010-09-23 James Morris <james@jwm-art.net>
* gui_grid.c: using cairo_scale instead of performing scaling
calculations.
* gui_grid.c: (gui_grid_show): drawing area has scrollbars.
the drawing area is added to a viewport which in turn is added
to a scrolled_window - about time.
2010-08-15 James Morris <james@jwm-art.net>
* grid_boundary.c (grbound_private_new): channel no. innitialized.
* grid_boundary.c (grbound_private_dup): channel no copied to dest
these fixed the sudden-silence bug. that this bug did not occurr
more often was down to luck.
* real_time_data.c (rtdata_update): changed sleep loop to single.
this fixed a nasty infinite-loop bug.
* gui_grid.c (*): various GUI improvements. added boundary resize
capability via right-mouse click/release.
2010-08-14 James Morris <james@jwm-art.net>
* freespace_state.c (fs_find_row_smart_l2r): cornercase bug fixed.
this functions was fitting boxes whose right most edge lay beyond
the right most edge of the boundary. fixed by changing:
if (x >= endx && xoffset < endxoffset)
to
if (x >= endx && xoffset <= endxoffset)
strangely, this error did not turn up in the test data setup in
the old isolated development version of the freespace state
(then called freespace_grid) outside of the boxyseq tree.
2010-08-13 James Morris <james@jwm-art.net>
* Spent the morning being driven around by my Dad trying to find a
second hand wheel, tyre, and wheel nuts for my car. Some son of a
bitch stole a wheel off my car last night. Thanks Dad for coming
to the rescue. Now I can get to work... Hurray :| (So most of
the changes listed today were done yesterday/last night.
* boxy_sequencer*.*: replaced array based storage of patterns,
grid boundaries, and midi out ports with llist implementations.
* boxy_sequencer (boxyseq_rt_play): this function is cleaned up
by removal or arrays.
* grbound_manager.*
moport_manager.*
pattern_manager.*: these modules are used to replace the array
storage mentioned in connection with boxy_sequencer. they handle
creation/destruction of the data and store data in a llist. they
also convert the llist to a pointer array.
finally, they provide functions to perform operations in
connection with the RT thread (ie play/output etc).
* various other changes and tweaks as a result of above, and other
stuff i've forgotten and don't have time to remember because i
must forget all about this and go to work where i will be bored
shitless packing plastic punnets/trays/etc for eight hours.
2010-08-11 James Morris <james@jwm-art.net>
* real_time_data.c (rtdata_update): rt->ptr_free zeroed out
zeroing out of rt->ptr_free prevents duplicate freeing of
memory in rtdata_free.
* real_time_data.c (struct real_time_data): data now const.
* grid_boundary.c (grbound_rtdata_get_cb): now returns data!
2010-08-10 James Morris <james@jwm-art.net>
* grid_boundary.c (grbound_*): boundary now using the real_time_data
update mechanism... (Check MSG displayed by boxyseq when run :-)
2010-08-09 James Morris <james@jwm-art.net>
* real_time_data.c (rtdata_*): new generic real time dat module.
this uses glib atomic functions and is a generic version of the
rt update process from (the old versions of) pattern.c.
* pattern.c (*): refactoring. plist moved to event_list.c
the data structure which specializes llist for events was previously
called plist and resided within pattern.c. it is not called evlist and
resides in event_list.c. new code to handle the rt update process
using the new generic mechanism and glib atomic functions. other
minor maintanence jobs.
2010-08-04 James Morris <james@jwm-art.net>
* Lots, again and again.
2010-07-31 James Morris <james@jwm-art.net>
* boxy_sequencer.c (boxyseq_rt_init_jack_cycle): new function.
calls moport_rt_init_jack_cycle.
* boxy_sequencer.c (boxyseq_rt_play): code to detect 'shutdown'
events. when detected calls boxyseq_rt_clear and sets 'quitting'
flag so no further event processing ever takes place from that point
on.
* boxy_sequencer.c (boxyseq_rt_clear): calls moport_empty on all
midi out ports.
* boxy_sequencer.c (boxyseq_shutdown): initiates the shutdown
procedure.
2010-07-30 James Morris <james@jwm-art.net>
* grid_boundary.c (grid_remove_events): added calls to clear remaining
buffers.
2010-07-29 James Morris <james@jwm-art.net>
* jack_midi.c (all): deleted/moved to jack_process.c
* jack_transport.c (all): deleted/moved to jack_process.c
* jack_process.c (all): new file is a conglomeration of the code
formerly found in jack_midi.c and jack_transport.c. The API is now
more concise with less implementation leaking into it.
* include/jack_process_data.c: new file, contains a single data
structure used by jack_process.c implementation. Is a merger of the
two data structures originally contained in jack_midi.c and
jack_transport.c.
* jack_process.c (jd_rt_poll, jack_process_callback): additional
stopped/started detection, new transport reposition detection. These
trigger a call to boxyseq_rt_clear to wipe all event data from buffers
etc, as well as disabling the duplication/dropped ticks messages on
transport repositions.
* jack_process.c (jack_process_callback): some playhead fiddling
added to prevent dropped ticks when trying to synchronise with other
timebase master applications.
***** 2010-07-29 was first ChangeLog entry for BoxySeq *****