forked from tlecomte/friture
-
Notifications
You must be signed in to change notification settings - Fork 0
/
changelog.txt
687 lines (626 loc) · 31.8 KB
/
changelog.txt
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
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
Friture Changelog
(full changelog can be found in the git repository)
HEAD
New:
+ (generator) Add ramps at start/stop to avoid undesirable bursts.
Change:
+ (delay estimator) Increase the delay smoothing for more reliabilty
Bugfix:
+ (levels) remove the bogus factor of 2 on the rms. Now the rms of a sine is
3dB below its peak, as expected.
Version 0.6 - 2012/06/07
New:
+ (general) Track the number of Xruns. Display it in the about dialog,
in the statistics tab.
+ (delay estimator) Cross-correlation is time averaged for robustness, better
significance estimation, and phase info taken from the weighted
cross-correlation too.
+ (delay estimator) Use generalized cross-correlation computation, with PHAT
weighting. Now the estimation is much more robust in a reverberating
environment.
Change:
+ (general) Increase sample rate to 48000 Hz. This simplifies and improves the
quality of the filters in the octave spectrum.
+ (octave spectrum) Fix midband frequencies, so that they match the ISO
bands of an equalizer
Version 0.5 - 2012/05/26
New:
+ (delay estimator) The maximum reliably-estimated delay is now configurable.
Just in case somebody needs more than one second
+ (delay estimator) Replace the peak detection by cross-correlation
The cross-correlation is computed on (largely) subsampled data. It
not only provides the delay, but also the in-phase information,
and a measure of the correlation quality (value of the normalized
correlation coefficient).
+ Display the level labels with a 250 ms period.
This reduces the work that needs to be done (drawing text is
costly), and makes the values much more readable.
Version 0.4 - 2012/05/18
New:
+ First embryo of documentation
+ Add PyPI requirements.txt file, so that friture dependencies
be installed by 'pip'
+ New text file for user-readable changelog
Change:
+ (delay_estimator) Optimization
Bugfix:
+ (generator) Test for zero mean before using it as a denominator
+ (Pink noise generator) Fix the parameter k
k, the number of white channels to sum, was dynamic,
and this was causing changes of colors in the produced noise,
changes that could be heard.
+ (Generator) Fix exception in pink noise generator.
Now returns empty array when asked for n=0 samples
+ (Generator) prevent overflows at -1.
Premultiplying by 0.99.
+ (Generator) time array was not incremented properly.
Version 0.3 - 2012/04/29
+ (delay estimator) also display the delay in meters
+ (py2exe) Exclude more dll from the package
+ Increment version
+ Add version and release date in the about page.
+ Properly delete widgets when closed or changed.
+ (py2exe) do not exclude subprocess
subprocess is now required by psutils
+ (py2exe) do not ignore difflib
difflib is now required for numpy
+ Do not redraw the delay label if the text has not changed.
+ Disable the linear screen interpolation in timeplot.
This was bogus signal-wise, and practically prevented from
displaying some data correctly.
+ Introduce a variable for the time window in the scope.
+ Remove the minus peak in the burst generator.
+ Remove the bogus time inversion in the scope.
+ Fix message for delay estimator in single channel.
+ Fix detection of peaks in the delay estimator.
+ Add a new widget to measure delays.
Detect peaks in two channels and measure the time
difference between the two.
+ Enlarge the trigger window
(and remove leftover debug statement)
+ Change scope to trigger on center of window, improve triggering.
+ Fix buffer growth in ringbuffer.py
+ Allow negative times in the scope horizontal axis
+ Fix indentation
+ Immprove the burst generator
Make the computation cleaner, and double its amplitude.
+ Move the norm computation (after fft) to own function so that it appears on the profile directly
+ Move the sweep generator in a separate class
+ Pass 0 to cpu_percent to make it non-blocking
+ Fix indentation
+ Add more comments about instructions for PyPI
+ Add some usage comments to setup.py, and add a little text to the description
Version 0.2 (Windows 2011/10/31 - all platforms PyPI 2012/01/04)
+ Add Numpy include to Cython extension building
+ Fix audiobackend reference for the generator when launched in the central widget
+ Increase pink noise fidelity
+ Cleanup generator import (avoid scipy import)
+ Fix py2exe inclusion of OpenGL packages
+ Fix integer comparison in pink noise code
+ Plug the generator dock into the dock widgets
+ Generator dock
+ Add output devices listing in audiobackend class
+ Update properly the histogram spectrum coordinate transform when the scale changes
+ Avoid calling the filters with empty input arrays
+ Fix use of the decimate function in the no-initial-conditions case
+ Define a separate decimate function
+ Enable the filter initial conditions propagation for correct filtering
+ Ring buffer size can grow (fix issues with long delays)
+ Fix qwt/opengl/numpy widget for arrays proper initialization (actually fix multiple simultaneous FFT widgets)
+ Add a spectrum GUI setting for single/dual channels
+ Introduce a delay setting that acts one the spectrum (for now)
+ Save and restore the input device/channel/single//duo configuration
+ Simplify baseline computation (and remove substraction warning
+ Make the about dialog a child of the mainwindow so that it is closed automatically when the mainwindow is closed.
+ Some preliminary code for baseline setting
+ Some preliminary code for nicer shading
+ Fix qwt/opengl/numpy plot for linear scale
+ Add legend to the scope when two channels are used
+ Two channels mode for the level meter
+ Two channels for the scope
+ Make the spectrum draw the power difference when two channels are used
+ New feature : two-channel difference as input
+ Fix background gradient in spectrum
+ Enable the qwt/opengl/numpy spectrum plot instead of the original curved one
+ Add cumulative time profiling stats
+ Put the individual icon files in the repository
Windows Version 2012/05/26
+ Qt plugin for svg icons (qsvg4.dll) now depends on QtXml, thatpy2exe failed to include automatically
Windows version 2012/05/17
+ Fix histplot transforms initializations (removes errors on startup) and make transformation more performant
+ Use array operations for the canvas transformation
+ Fix add-dock toolbar icon, which was badly rendered on windows
+ Fix dock settings icon, which was badly rendered on windows
+ Convert to MUI2, fix encoding, improve uninstaller
+ Nice microphone photo for the splash screen - license is cc-by-2.0
+ Remove non-updated statistics
+ The current working directory no longer needs to be set at the end of install
+ generated_filters.pkl is no longer to be installed
+ Store the filter params in a true python file, simplifies the import
+ Fix vu-meters that decrease indefinitely
Version 0.1 on PyPI - 2011/02/02
+ Fixes for non-py2exe setup
+ Improve setup.py for distribution, with classifiers, startup script and manifest
+ Allow friture.py to be executed as a child of another script, such as lsprofcalltree
+ Fix off-by-one pixel for the level meter
+ Remove bogus styling of the level meters
+ Let python manage the spectrogram painter object lifetime
+ Ordering for object creation fixed
+ Move friture.py to subdir
+ Move scripts to subdir, remove lsprofcalltree from friture.py
+ Move Cython extension to subsubdir
+ Move source files to subdir
Windows version 2011/01/29
+ Fix uninstaller, improve installer info
+ Use packaging date for the installer version
+ Fix for the installer move
+ Move some source files to subdir
+ Move .ui files to subdir
+ Move ui*.py and resource py file to friture subdir
+ Move the installer and Microsoft redist pack to a subdirectory
+ Update install instructions
+ Move test files to sandbox subdir
+ Move image files and resource file to a subdirectory
+ Move installation details to a separate file
+ Move profiling info to separate file
+ New colors for FFT spectrum, less agressive
+ New style for octave spectrum's peaks
+ Add 'central dock' label to clarify what is the central widget
Windows version 2011/01/09
+ Stop py2exe from complaining about msvcp90.dll
+ Add manual bounds ckecking in exponential smoother
+ Add code to include numpy headers when building the cython extension on Windows
+ Major cleanup and optimisation in the histogram plot
+ Better peak meter, remove integer conversions
+ Add exponential smoothing (0.125 s) to the RMS level widget
+ Cleanup and optimization in octavespectrum update
+ Fix bug : could not add any dock when all of them were removed
+ Major performance improvements in histplot by caching and avoiding QwtInterval
+ Specific import from PyQt4.QtGui to improve startup time
+ Add Cython machinery to setup.py
+ Make the exponential smoothing smarter, and implement it as a cython module (dramatic speed improvement)
Windows version 2010/11/08
+ (NSIS installer) Fix Working Directory when starting Friture at the end of the installation
Windows version 2010/11/04
+ Optionally remove settings when uninstalling (NSIS)
+ Improve dock deletion, and dock index selection
+ Use a real exponential moving average at the output of the octave filters
+ Fix settings initialization for the 2D spectrogram, fft and octave spectrum (Note: could be done slightly smarter)
Windows version 2010/10/25
+ Clean and fix errors about bar widths in the octave spectrum
+ Fix minimumSizeHint computation for octave, time and spectrum plots from a missing replot() at init end
+ Add tooltips to the control bar
+ Update splash screen with logo
+ Tweak FFT spectrum default settings
+ Tweak defautl settings for the octave spectrum
+ Fix default settings for the 2D spectrogram (log frequency scale)
+ Remove levels and scope widgets from the default set of widgets shown on the first launch
+ Improve the profiler info
+ Add an option to set the reponse time in the octave spectrum.
Windows version 2010/09/29
+ Check if the bar pixmap needs to be updated only once per timer update.
+ Use an opaque color for the FFT spectrum plot brushes, disables the stroke,
and draw the grid on top.
+ More generic NSIS script, more robust ot my own mistakes !
+ Even more precise import for lighter py2exe distribution
+ Tweak About message, add email address, remove name.
+ Fill the peak curve in the FFT spectrum
+ Import from scipy.signal.sigtools and scipy.signal.filter_design instead of scipy.signal
+ Import lfilter from scipy.signal.sigtools instead of scipy.signal
+ Hyperlink for the homepage address in the about widget
Windows version 2010/07/14
+ Exclude unused modules from py2exe
+ Include the filters file in nsis distribution
+ Separate filter design and use in two different source files.
+ Import more selectively. Hopefully helps py2exe
+ Include the filters coeff file in py2exe packaging
+ Add X-grid to the octave spectrum
+ Tweak widget names
+ Display a colorbar next to the spectrogram plot
+ Fill under the spectrum curve, makes it a little more readable
+ Recreate ring buffers when necessary only
+ Do not call len() multiple times
+ Avoid checking for proper ringbuffer at each timer tick.
+ Use pre-generated filters coeff instead of recomputing them at each change.
+ Disable filter conditions propagation for now.
+ Introduce peaks in the octave spectrum.
+ Tweaks to the decimating filters analysis.
+ Go for order-3 decimating filter
+ Go for 50 dB stopbands
+ Better analysis of the filter bank frequency response
+ Go for a non-decimating filter bank since the frequency output of the decimating one in close to catastrophic...
+ Introduce zi/zf to the filtering without decimation
+ Code for visual analysis of the filters frequency response
+ Use log10 scale engine while the log2 engine still has references issues.
+ Switch to 80dB stopband filters to make the octave analyzer nicer with single frequency excitation.
+ Simplify histogram draw by removing the horizontal bar feature.
+ Fix canvas height caching
+ Implement ring buffer for filtering - seems like there's an issue with the filters stability
+ Move the ring buffer class to its own file for reuse
+ Move octave filtering to a class
+ Add audiobuffer method to get the new points only
+ Fixed and improvements to the histplot pixmap cache
+ Cache bar in a pixmap.
+ Spacebar is a shortcut for start/stop
+ Move from 7 octave to 8 octave
Windows version 2010/06/29
+ Allow 1/3, 1/6, 1/12 and 1/24 octave filters, with proper weightings.
+ Implement IIR+decimation instead of IIR only. Will be especially useful for more-than-one
bands per octave.
+ Make bands number automatically computed from the bands per octave choice.
+ Add Hann window to the fft code for better frequency resolution.
+ Implement an octave-band filter widget.
+ Finish and cleanup implementation of an octave (or fraction of octave) filter bank
+ Move scope trigger to the left edge
+ Move the log to a dedicated tab in the about dialog
+ Make the statistics widget part of the about window instead of a dock widget.
+ Start/Stop for the spectrogram timer.
+ Spectrum scale defaults to log10.
+ Spectrogram default to log10 scale.
+ Move About code to source file instead of ui file, and prepare for
tabing.
+ Fix start/stop button text.
+ Fix the start/stop icon state.
+ Fix minimum size of the level widget.
+ Display the weighting state in the spectrum y-axis title.
Windows version 2010/06/16
+ Add human middle-ear weightings A, B and C to the spectrum and spectrogram settings.
+ Put common code for the docks control bar in a separate file.
+ Allow to select the channel for any device stream with more than one channel.
+ Bugfix : actionStart belongs to self.ui
+ Reorder icons in the toolbar
+ Pass the logger to widget classes
+ Monitor the global CPU usage in the statistics widget. This may deserve its own widget, with something like QProgressBar.
The feature is based on psutil, which becomes a new dependency for friture !
+ Set size policies of scope, spectrum, spectrogram so they can be shrinked
+ Move ui code from Ui_xyz.py to xyz.py directly
Windows version 2010/06/06
+ Fix to the vcredist section in the installer script.
+ Lighter gradients in the widgets.
+ Tell the user that the levels and scope widgets have no settings yet.
+ Put the VC++2008 redistribuable libs in the tree.
+ Install VC redistribuable libraries.
Windows version 2010/06/04
+ Draw a white background on the plots mouse trackers.
+ New log icon with an exclamation mark
+ New icon to add a new dock
+ Use About Friture instead of just About for the About button
+ Use the friture icon for the About button
+ Comment out the toolbar styling for now, not that beautiful
+ At first launch, do not display the log and stat docks.
+ At first start the central widget is a spectrogram.
+ Default set of docks at first start.
+ Use smaller fonts for the plot axis titles.
+ Remove the docks separator styling, not very nice.
+ Update the installer file list.
+ Automatically distribute the Qt svg plugin.
+ Exclude powrprof.dll in py2exe distribution.
+ Put the settings icon on the left.
+ Do not fail when ctypes cannot find the dll
+ Comment out the stylesheets for now, and use stock dock widgets instead of using a custom titlebar
+ Set the separator style to black 1 pixel.
+ Apply some styling to the toolbars so that they look more custom.
+ Slightly change the plots background gradients to nicely merge
with the grid.
+ Set central layout margins to zero.
+ Pass the logger to the spectrum, scope, levels widgets.
Do the same for all widgets in the central widget too.
+ Add a dummy scope and levels settings dialog.
+ Fix spectrogram initial settings.
+ Implement the spectrum y range settings.
+ Fix spectrum initial settings.
+ Remove previous static scope, spectrum and spectrogram widgets
+ Save and restore central widget state
+ Remove the settings buttons from the spectrum and spectrogram widgets
+ Now the central widget is very close to the dock widget in feature/aspect
+ Move spectrum stylesheet from mainwindow ui file to spectrum code file.
+ Move scope stylesheet from the global ui file to the scope file
+ Add a settings icon to the dock.
+ Add an icon to the "dock" button.
+ Dock icon based on svg objects, no contour or path.
+ Custom icon for dock/undock.
+ Use an icon for the dock close button.
+ Add (modified) about svg.
+ Restore state before restoring geometry.
+ Save and restore the window geometry.
+ Save and restore dock states.
+ Add the possibility to choose the dock widget type on creation.
+ Save and restore docks existence and positions.
+ Assign a fixed height to the dock control widgets.
+ Add a dock button to the floating dock.
+ Stylesheet the dock control widgets.
+ Add another special control widget to a floating dock.
+ Add a custom toolbar as the dockwidget titlebar.
+ Enable the spectrogram timer in a dock
+ Enable the code to select a widget in a dock.
+ Put the Dock code in a separate file
+ Connect the new dock widget to the timer, pass it the audiobuffer.
+ Directly connect the widgets to the display timer.
+ Pass the audiobuffer in separate functions instead of passing it
when asking for the widget update.
+ Connect the statistics update function directly to the timer tick
+ Move the buffer update to a specific function, directly connnected to the timer tick
+ Actually add a dock and a widget (needs to be connected to the timer tick still)
+ Move settings for spectrogram and spectrum to separate classes and window
+ Move audio backend code to a separate file
+ Move audio initialization to a separate method
+ Use isVisible() functions instead of visibilityChanged signals.
+ Refactor the frequency range code
+ Move the spectrogram code and ui in separate files
+ Move spectrum to separate code and ui files
+ Use numpy fancy indexing to compute the peak falloff
+ Move scope widget to separate .py and .ui files
+ Fix for levels statistics
+ Move the level widget code in a separate source file, and in a
separate ui file.
+ Make the log text selectable
+ Scroll the log widget so that the last log line is visible
+ Set the log and statistics widget backgrounds as white
+ Add a line number to the log messages
+ Remove log base 2 frequency scale
+ Move audio ring code to a separate file.
+ Source file encoding fix
+ Factorize the stream opening function.
+ Comment functions as slots or methods. Will help me to separate
methods to their own appropriate module if applicable.
+ New Logger class, built to handle log messages from all the
program classes.
+ Put "Settings" dialog code in a separate file.
+ Put the "About" dialog code in a separate file.
+ New titlebar widget mockup. Plan: one dockwidget = one visualiation
placeholder.
Windows version 2010/03/20
+ Remove dash from Windows installer filename.
+ Automatically use the date as the Windows installer name.
+ Add the icons to the source versioning, and fix setup.py
+ Add icon to the Windows exe.
+ Workaround to properly display the icon in Windows 7 taskbar.
Windows version 2010/03/17
+ Special case for stderr on Windows, logging to a file.
+ Add custom icon for the About icon in the toolbar
+ Add an icon in the About dialog
+ Add an about dialog.
+ Update window icon
+ Move some messages to the new logging window.
+ Add logging window
+ Cleanup stylesheet
+ Display text labels in the toolbar, in a white font.
+ Use solid lines for plot grids
+ Disable latency logging by commenting out (forgot to disable
the file creation, caused permission problems on Windows).
+ Update NSIS script with proper license text, and installer name that
include the version number.
+ Update levels icons with gradient and white offset.
Windows version 2010/03/16
+ Update statistics icon.
+ Add a grid to the spectrum
+ Add a grid the scope
+ Disable latency logging facility for now.
+ Add small radius to the border corners of levels, scope and spectrum.
+ Add stylesheets for scope, spectrum and levels to make them a little fancier, and
learn how to use CSS.
Windows version 2010/03/15 (executable & installer not publicly released)
+ NSIS script to generate a install exe from a py2exe distribution.
+ Special case for IOError on stream read. To be more specialized
to the input overflow case.
+ Add frame corders to all qdockwidgets, so that they are more
easily moved.
+ Add a "cool modern" linear gradient as a toolbar background.
+ Put the statistics in a QScrollArea to gain some space.
+ Change settings dialog title and icon.
+ Update window icon.
+ Add icon to the settings menu
+ Update start/stop icons
Windows version 2010/03/12 (no installer, executable not publicly released)
+ Add some excludes to setup.py:py2exe
+ Comment out cochlear code since it is unused for now, and causes
py2exe to include a lot of scipy, if not all.
First ever Windows executable (not publicly released) 2010/03/11
+ Workaround a bug in scipy imports that appears when using py2exe.
+ Add code for cochlear processing. Not enabled yet, may not
be the best idea after all.
+ Add a file with an implementation of the gammatone
filter bank in numpy (currently only half-converted
from Matlab)
+ Add code for logarithmic scope, not enabled yet.
A better solution could be to dynamically adjust the scale, using
the same kind of algorithm as for the peak computations.
+ Finally fix off by one color computation.
+ Ask Qt not to update the canvas background on each paint event.
+ Use astype instead of digitize, which is mush slower because it can do
so much more. Nest step could be to use a function instead of a
precomputed palette.
2009/11
+ Small simplificaton in UI layout code
+ Use numpy clip function
+ Add profiling instructions at the top of friture.py
+ Add a script to convert the pstats output to a graphviz dot file, which can
in turn be converted to a png
+ Replace a boolean mask with a simple substraction
+ Cache the decimation computation to avoid a log2.
+ Replace uses of .max() with [-1] where possible.
+ Do the dB conversion once instead of twice for level widgets
+ Remove a useless sqrt since we do a log10 just after.
+ Cache the canvas object for all plots, since it appears to be a
slow call in qwt.
+ Add a window icon, currently very basic
+ Simplify peak computation
+ Introduce one more cached array for peak computation
+ Decimate as much as possible before doing the fft
+ Remove log10 usage from peaks computation in the spectrum
+ Just import what is needed in audioproc.py
+ Cache the frequency scale in audioproc
+ Move the spectrum processing to its function.
+ Move scope processing ot its function.
+ Move level processing to its function
+ Remove the use of the status bar to gain screen spece.
Use the plot picker instead.
+ Move the frequency scale definition to the processing function.
This is in preparation to the use of decimation to decrease
computing time for fft of small upper range.
+ Compute the peaks directly on the interpolated spectrum.
Fewer peaks to compute when the fft size is larger than the number
of pixels in the plot, which is a common case.
+ Move the computing of peaks to a specific function.
That way it appears independently in the profile.
+ Use command-lien arguments to select the profiling tool.
Default to no profiling.
+ Bug fix : stream is in int16 format, not int32 ! This fixes the frequency
scale factor of 2 that was observed.
+ Use SAMPLING_RATE instead of hardcoded number.
+ Use rfft since the input is real.
+ Cleanup spectrum code.
+ Add basic trigger capability to the scope widget
+ Move the default position for the statistics widget to the left.
+ Replace the settings button with an action in the toolbar.
+ Move settings to a separate dialog. Greatly cleans up the interface !
2009/10
+ Disable antialiasing fro scope and spectrum. Dramatically improves
the performance !
+ Intelligently (i.e. with interpolation) limit the number of points
to be drawn on the plot to the canvas width (in pixel units). Avoids
the spectrum painting time to skyrocket for high fft sizes
+ Add statistics field about spectrogram timer period
+ Change statistics description to be more meaningfull
+ Add timing statistics about computation and display
+ Add file for log2 scale engine
+ Disable plots decimation since it raises issues with the spectrum
plot and its peaks
+ Add time information for each timer events
+ Factorization of log10
+ SYnc to qsynthmeter.cpp rev 306, adds gradient look
+ Simplify fft size save/restore
+ Fix frequency scale saving
+ Fix the frequencies labels formatting
+ Fix the frequency label formatting
+ Save/restore color ranges
+ Save/restore time range.
+ Save/restore frequencies minimum and maximum
+ Save/restore the frequency scale
+ Save and restore the fft size when closing/starting Friture.
+ Move state save/restore to specific functions
+ Add base 2 logarithmic frequency scale for the spectrogram.
Warning: the frequency scales drawn on the side of the graph are wrong !
I am waiting for a bug fix in PyQwt before implementing them.
+ Change the frequency range for the spectrogram too.
+ Add two spinBoxes for frequency range selection. Only works for the spectrum
for now.
+ Uncheck actionStart when changing input device
+ Major timer redesign.
Now we have two timers: one for 1D and 2D widgets (levels, scope, spectrum,
statistics), and one for 3D widgets (spectrogram). Using an audio buffer
avoids latency issues. This audio buffer behaves like the spectrogram pixmap.
It is a circular buffer, with data written twice.
+ Add statistics about FFT period.
+ Log to a file the time delay between spectrogram updates. Add a script
to analyze it, called hist.py
+ Add new file "hellogl.py" to experiment with opengl drawing.
+ Save and restore dock and toolbar states on exit and restart, respectively.
+ Allow to modify the time range of the spectrogram.
+ Fix the logic of lost chunks in the timer slot.
+ Make the time range a parameter in the CanvasScaledSpectrogram class.
+ Add a flag to indicate that we are processing the last chunk of the
timer fire, so that if we are not we do not bother updating the screen.
+ Replace while loop with a for loop, allows to know where we are
in the process.
+ Store the number of available chunks in a variable instead of
calling the interface multiple times.
+ Add a statistics entry about mean number of chunks by timer fire,
in the last 1000 timer fires.
+ Add a latency measurement to the statistics.
+ Add icon for the statistics button in the toolbar. Now we have icons
for all buttons.
2009/09
+ Add profiling option with console output instead of a file for
kcachegrind.
+ Add an icon for the spectrum action.
+ Do not update the spectrum when the widget is not visible.
+ Do not compute and update the levels when the widget is not visible.
+ Do not try to display the statistics when the widget is not visible.
+ Do not update the scope widget when it is not visible.
+ Add svg icons for levels and scope widget.
+ Add an icon for the Stop button.
+ New resource svg for the Start button. Also rename the resource
file to resource_rc.py since it's what Qt Designer asks for.
+ Use QDockWidget::toggleViewAction instead of our own actions with
signals and slots.
+ Fix FFT size in UI
+ Add a __del__ method for explicit deletion of the spectrogram painter
and its pixmap. Avoids a segfault.
+ Add a setup.py file with basic commands for py2exe. Allows building
an exe for Windows.
+ Add resource.py to the versioned-controled files.
+ More fine tuning to the level widget layout. Move it to the left.
+ Fix Level widget layout.
+ Fix minimum size for the qsynthmeter widget.
+ Small adjustment to level widget layout. Needs more work.
+ Remove frame around spectrogram. Fix statusbar.
+ Add tollbar buttons to toggle the display of individual widgets.
+ Move the Start/Stop button to a new toolbar. Move the scope, spectrum,
level and statistics widgets to dock widgets.
+ Dynamically choose the maximum number of chunks to read by timer
tick based on the latency reported by portaudio.
+ Handle up to three chunks in a row instead of discarding the additional
ones.
+ Be a little more verbose for statistics, to be clearer.
2009/08
+ Add a link to the wiki in README
+ Rework the layout of the level meter a little bit.
+ Add peaks to the spectrum widget
+ Derive qsynthMeter from QFrame and give it a raised look
+ Int conversion cleanup
+ Use default for size hints of levels.
+ Change the way audio levels are displayed : put them closer to the
level widget.
+ Remove the display of the max of the current audio data.
+ Fix the time axis on the spectrogram widget. Now set to 10 seconds
for every choice of the FFT window length.
2009/07
+ Add a spacer in the first horizontal layout to give a more natural
size to the buttons.
+ Use only integers in frequency scales.
+ Move buttons at the top of the layout for better alignment of the
widgets.
+ Use custom labels using 'k' for thousands in frequency scales
widgets.
+ Switch from seconds to milliseconds in the signal widget.
+ Add pointer info in the status bar when clicking in the signal or
spectrum widgets.
+ Add pointer info in the status bar when clicking on the rolling spectrogram widget.
2009/06
+ Add statistics about useless timer events
+ Bugfix : forgot to reset the needfullreplot switch
+ Display info about lost chunks of data
+ Fix logarithmic scale in the spectrum plot
+ Fix use of timer and Start button when changing device
+ Factor device test code
+ Print an error message when selecting a non-working input device
+ Non-fatal error on device change
+ Iterate over available devices for a working one
On startup, first try the default system device, and then the other
+ Bugfix for delays
If the program is too slow to process all the chunks, discard those
in excess. In fact, it is not that it is too slow, it is probably
that there is a small mismatch between the timer period and the audio
buffer period.
+ Major timer-based refactor
All sub-processes have been removed and replaced with a timer in the
main process. This timer fires every 20 ms or so and retrieves audio
data. This removes a lot of complexity coming from synchronization
issues.
Additionnally a level-meter widget is introduced, and the plot widgets
have been optimized so that only the needed part is redrawn (namely axes
are not redrawn).
2009/01
+ Add a copy of the GPLv3.
+ Update License statements to GPL version 3.
+ Add proper encoding statements, and License statements.
+ Add details in TODO.
+ Add items and details in TODO.
+ Add a TODO file.
+ "Simplify" locking.
+ Move profiling code to be all conditional.
commit 812b5b8050a921267c4844457d70d7a2a853c6e5
Author: Timothée Lecomte <[email protected]>
Date: Fri Jan 9 21:47:07 2009 +0100
first commit