* Fix: Don't crash on unreadable headers in EDF files.
* Fix: Assorted crashes/UX mishaps when managing RK1968 (and
possibly other) profiles.
* Fix: Saved patterns can be loaded again.
* Fix: Correctly calculate sibject timeline (remove days of empty
* Fix/misc: Keep up with GTK+ deprecations.
* Misc: Ensure reproducible build #2.
* New: Allow multiple instances, and use session lock files.
* Fix: Don't try to use uninitialized logging facility on
config validation failures.
* Fix: Only change active scale with Ctrl+Wheel on MW, leave other
scale values alone.
* New: Put a 'hint' widget in MW corner to explain how to change
profile vert and horiz scales.
* Fix: Remove code that was not up to c++-17 (which turned out to
be dead anyway).
* Fix: Ensure profile overview timeline is at least 1h long.
* Fix: Correctly identify channels by a matching prefix (like
"F3-AV"); also rework data structures in libsigfile/channel.*.
* New: Support building with gsl-2.0.
* Fix: Make widgets reappear on Empty Experiment splash.
* Fix: Depend on vte-2.91.
* Fix: Deal with GTK deprecations in glade resources of MW, SF
(more deprecated widgets still remain causing floods of warnings
(gtk_widget_override_font) and libconfig.
* Fix: Ensure display scales (signal, profiles) are sane (prevents
occasional infinite loop when displaying SF).
* Fix: Delete residual artifact files after global detect/clean.
* Fix: Correctly choose EMG channels in artifact detection by EMG
* Fix: Make sure saved profiles are exacrly matching in size.
* New: Always clean profiles when running with expdesign created
with an older version.
* Fix: Don't mess with screen resolution, restore fonts to normal
* Fix: gcc-5 build.
* Misc: Minor UI tweaks.
* Fix: Option to avoid using __DATE__ and __TIME__ (see
* Fix: Get desktop and icon files right.
* Fix: Deal with some GTK+ deprecations.
* Fix: Make it compile with g++4.9.
* New: SF: let RK1968 wisdom reside in external lua scripts.
* New: SF: unified Artifact Detection dialog including MC-based,
flat region (ex-Simple AD) and by EMG-perturbation.
* New: Get a reasonable logging facility (use -l file; "-" is
stdout; default is /dev/null).
* New: Properly handle various system/user/experiment/subject/
session stored settings packs (patterns, rk1968, etc).
* New: SF: compute, draw EMG steady tone.
* Fix: SF: don't blindly delete files in various pattern
locations, just append ~ to their file names.
* Fix: SF: fix jump to next/prev annotations.
* Fix: SF: load patterns from symlinked files.
* Fix: Use subject ID in place of name if the latter is missing.
* Fix: sigproc::interpolate() now samples at dt/2, doesn't lose
that extra point.
* Fix: Issues and inconsistencies when changing global page size.
* Misc: Incorporate edfhed.glade in aghermann.gresources.
* Misc: SF: trivial optimisation in pattern search.
* Misc: Separate upstream tree from distribution-related files.
* Misc: Do away with aghermann/**/liba.a files.
* Fix 32-bit builds where sizeof(size_t) != sizeof(unsigned long).
* MW: take care to recalculate profile drawing area width on
* Reorg source tree around main executable, libs, & tools.
* Properly use our own lib*.so (previously aghermann turned out
static despite libsigfile.so being installed).
* Plug a memory leak after early unique_ptr acquisition.
* SF: Move selection on montage (with Alt).
* SF: Artifact Detection dialog will now not get confused after
clicking outside it on other channels.
* New tool agh-profile-gen, a standalone profile generator.
* ascii (tsv) format support, including irregular, timestamped
time series data.
* Score assistant now uses delta and theta ranges as defined by
* MW: Change pixels-per-hour with Shift+Scroll.
* Remove stray AC_CHECK_FUNC(mremap).
* Check for mremap and use munmap+memmove+mmap if it is
unavailable; and comment out CEDFFile::resize() as unused.
* Properly fix CEDFFile::get_signal_*.
* Fix arg conversions in calls to CEDFFile::get_signal_*.
* Remove unused code that requires g++-4.7.
* Parse patient_id field in EDF header and extract subject gender,
DOB and id from it.
* Remove Subject Info dialog; use edfhed to change EDF header.
* Only plot finite profile values on msmt overview.
* Proper file size checks in CEDFFile ctor.
* Don't read last sidecar annotation twice.
* Support EDF+, including embedded annotations.
* edfhed: show embedded annotations with -a.
* Make all timestamps in sidecar files (a) relative to recording
start, (b) expressed in seconds, to be consistent with embedded
* Fix a SF crash when getting PSD on montage having channels with
variable sample rate, on OMP-enabled hosts.
* Fix a SF crash with montages with (>'z'-'a') channels.
* Expose general mouse scroll sensitivity on Setup->General
* Bind F1..3 to cycle thru profile, session and channel on
* Do away with separate EMG scale factor, use signal scale factor.
* Fix GtkScrolledWindow issue in Annotations dialog.
* Fix those random omp-related freezes on tree rescan.
* Make main window busy if profile regeneration needs to happen.
* URL fix for SWU page on jh.com/aghermann.
* Enable subject sort.
* Calculate SWU metric over time.
* SF: ensure signal line remains visible at high page sizes.
* Fix g++-4.8 build and address some -Wformat warnings.
* edfcat: proper handling of overshooting signal portions.
* SF: mark flat signal portions as artifacts.
* Fix envelope function.
* Fix dzcdf function.
* SF: reingeneered Patterns/Find dialog:
o use band-pass for target frequency matching;
o system, user, experiment and subject-wide patterns:
o obtain match index once, for instantaneous finding
against variable criteria;
o mark matches as annotations, incl. as phasic events such as
* Differentiate and make use of subject full/short name.
* SF: Ensure all annotations are shown (some inserted in
non-linear order were dropped).
* Clamp MC metric to 0 to prevent occasional negative values spoil
the profile plot.
* SF: Alt+1..9 to pop up channel menu.
* Fix many crashes when subjects have exclusive sets of channels.
* Various smaller fixes.
* Don't forget to save some .expdesign.conf settings.
* Purge cached profiles on version upgrade.
* Correctly set OMP max threads.
* edfcat conv: set physical_min/max.
* Fix Ububtu build.
* Experimental SWU profile; general overhaul of profiles.
* Fix SF Find dialog wrt search in a changed field channel.
* PSD: don't apply windowing function twice (deeply sorry about that!).
* Fix a regression of init sequence in a removed dir.
* Disallow inappropriate commands when initing in an empty dir.
* Display Experiment.tar.bz2 Download process in a vte widget.
* Allow main window to shrink (to fit into frigging 576 pixels down).
v. 0.7.2 (2012-10-28)
* Enable SMP for mass profile constructions and most other heavy
* Artifact detection profiles.
* Globally set filters, detect artifacts.
* Preserve expanded state of subject groups across refresh/rescan.
* Allow freq_from == 0 for profiles.
* SF: Transient, reversible detected artifacts in preview.
* MF: preserve tunables when reopening a previous model run.
* Distinguish full_pages and total_pages in EDF sources (fixed many a crash).
* Run ICA on original signal (not filtered).
* configure: don't require gcc >= 4.7.1.
v. 0.7.1 (2012-09-23)
* Apply window to taper edges before taking FFT.
* Fix startup when user has moved last-used dir between sessions.
* Fix edfcat conv operation.
* Properly implement session chooser.
* Show ChangeLog on version upgrade.
* SF: Improve scaling and spacing of channels.
* SF: Limit profile current page cursor bar width to .5 pixel.
* SF: Show precise time at mouse position.
* MF: Guard against S plunging <0.
* MF: Siman code cleanup, eventually to enable full SMP use (not
* Ultradian cycle detection (experimental).
* configure: require gcc >= 4.7.1.
* Collect ui files in a single gresource file.
v. 0.7.0.1 (2012-07-08)
* libsigfile/channel.cc: define static members of SChannel as POD
rather than as an STL container;
* debian/rules: manually add hardening flags, drop -pie (else
libsigfile.so fails to build).
* configure.in: don't precompile headers by default to enable
v. 0.7.0 (2012-07-01)
* Straighten up init sequence, refuse to init expdesign in
a non-writable directory.
* Canonicalize directory name given on command line;
* Refactor, optimize signal drawing;
* Measurements: Option to smooth profiles.
* Measurements: Overview pph and timeline height now configurable.
* ScoringFacility: Artifact autodetection using MC method.
* ScoringFacility: Artifact markings shown on hypnogram.
* ScoringFacility: Use simple spp-based decimation rather than
* ScoringFacility: Profile unit scales, dynamically constrained to
* ScoringFacility: Display signal properties on selection;
* ScoringFacility: Draw ticks on histogram;
* ScoringFacility: New menu item to locate selection in a SF channel.
* ScoringFacility: Better defaults for Find dialog;
* ScoringFacility: Improved PhaseDiff dialog.
* ScoringFacility: Fix jump to next/prev unscored/dirty pages;
* Reorg libsigproc, ultimately also do away with libsamplerate;
* Fix edf::get_signal_filtered wrt out-of-range artifacts, and
more fixes/safeguards in edf.cc;
* Many smaller UI tweaks throughout;
* edfcat, a new tool (limited to ascii->edf convert & channel drop
* configure: Option to enable/disable pch;
* configure: Don't enable AM_SILENT_RULES by default.
v. 0.6.0.1 (2012-06-04)
* Complete deboostification.
* Depend on any version of libconfig to enable ubuntu build.
v. 0.6.0 (2012-06-02)
* EEG Microcontinuity lite.
* ScoringFacility: show power spectrum.
* ScoringFacility: implement SaveMontageAsSVG.
* ScoringFacility: Autoscale on profiles.
* Use libconfig instead of boost, eat less fat.
* Also use libconfig for montage files (which would easily crash
* Use libunique to prevent multiple application instances running.
* Fix Ubuntu build which uses --as-needed.
* Many smaller fixes and UI tweaks.
v. 0.5.90 (2012-04-08)
* Groundwork for EEG microcontinuity (not there yet, slated for 0.6).
* Artifact window type and factor are no longer saved in EDF
* Autoscale profiles on measurements overview.
* Purge any mention of 'MVT' score.
* More accurate dnd and scan_tree behaviour wrt incorrectly placed
EDF sources, and more informative diagnostics.
* Fixed a couple of access-after-free in edf header parser.
* Fixed a segfault resulting when AZAmendment1 is in effect.
* Avoid unnecessary tree rescan on operating freq change on
* Buildable with g++-4.7.
v. 0.5.3.1 (2012-02-22)
* edfhed: one more pedantic fix (error_t to int) to enable hurd-i386 build.
v. 0.5.3 (2012-02-21)
* Flip pages when extending selection in ScoringFacility.
* Hypnogram alt (coloured) view.
* Don't crash on invalid row selected in GlobalAnnotations dialog.
* edfhed: implement useful options -R, -T and -t.
* edfhed: one pedantic fix (error_t to int) to enable hurd-i386 build.
v. 0.5.2 (2012-02-05)
* ModelrunFacility: add controls to highlight sleep stages.
* ModelrunFacility: add option to smooth empirical SWA.
* Add colour buttons for timeline day and night.
* edfhed can set fields now.
* Safely handle no-baseline conditions when scanning tree.
v. 0.5.1.1 (2012-01-22)
* debian: enable dh_autoreconf.
v. 0.5.1 (2012-01-17)
* Fix channel enumeration, don't crash on non-10-20 ones.
* More accurate sorting of channels (now all channels appear
nicely in Scoring Facility).
* Provide aghermann.ebuild (in gentoo dir after make dist-bzip2).
* Other assorted fixes and code refactoring.
* Fix operating freq range in Experiment.tar.bz2, now 2-3 Hz.
* Don't sed glade files in install-data-hook (fixes emerge).
v. 0.5.0 (2012-01-10)
* Fix crashes in Export Signal and a host of less critical fixes.
* More accurate display and interpolation for power profiles.
* Put checkboxes for amendments onto Modelrun Facility toolbar.
* Update SWA profile on Measurements overview tab to reflect any
changes after artifact marking in scoring facility.
* Implement simulation batch run.
* Rewrite custom score import, fix it wrt unequal page count in
file vs hypnogram.
* Preserve tried model runs in simulations overview (after
* Assign correct channel/freq. range values when re-opening
a previously obtained model run.
v. 0.4.4 (2012-01-03)
* Fix multiple AZAmendment1-related issues in modelrun facility.
* 'ClearAll' button on Simulations tab (for lack of better
handling of obtained modruns).
* Prettier text widgets in modelrun facility; a more informative log.
v. 0.4.3.5 (2011-12-30)
* debian/copyright: add attribution for src/libexstrom/exstrom.hh.
v. 0.4.3.4 (2011-12-30)
* debian/control: fill out build-depends.
v. 0.4.3.3 (2011-12-25)
* configure.in: a more accurate test for C++0x features we require
of host g++.
* debian/*: many housekeeping fixes.
v. 0.4.3.2 (2011-12-20)
* libsigfile.so now an internal library (make lintian well pleased).
v. 0.4.3.1 (2011-12-10)
* Use AC_OPENMP, fix compile breakage on non-smp hosts.
v. 0.4.3 (2011-12-07)
* Don't produce .so files for internal libraries
* edf.cc: fix one (non-fatal) -Wuninitialized.
* Fixes per lintian warnings.
* Use precompiled headers.
* Introduce MIME type 'application/x-edf' and bind edfhed-gtk to it.
* Correct zero-based day ticks in measurements overview.
v. 0.4.2 (2011-11-25)
* Use native fftw threads instead of custom omp code.
* Arrange expdesign controls into Main menu, with new items "Global notch
filter" and "Global montage reset".
* Fix export of modrun results.
* Fix disappearing modruns.
* Don't forget to close edf files (else we hit open files limit
after a couple tree rescans).
* Split edf-handling code from libaghcore into libedf (no edf+ yet).
v. 0.4.1 (2011-11-08)
* Fix finding prev artifact-containing page.
* Make preview reversible in ICA, along with other improvements.
* Notch filters; filters now properly saved.
* Scoring facility: Re-enable "Accept and take next" menu item.
v. 0.4.0 (2011-10-31)
* Independent Component Analysis using itpp routines.
* Scoring facility: show "current" channel.
* Menu item "Reset montage" (from main measurements overview).
* simulations-parametrs tab: androidesque explanatory labels for
amendment check boxes.
* scoring-facility: Display current score on montage.
* scoring-facility: Mark annotated regions on hypnogram.
v. 0.3.5 (2011-10-13)
* (Hidden) configure option to select main floating point type
used in ui (TFloat; mainly to test it works both with double and
* Fix issues with menus in scoring facility.
* Bring back to life EMG profile.
* Smooth PSD profile.
* Groundwork for ICA.
v. 0.3.4 (2011-10-02):
* General purpose annotations (not those stored in EDF+ files,
which are not yet supported).
* edfhed: make it a simple terminal-only EDF header viewer.
* edfhed-gtk: provide a .desktop entry; detect whether it is
invoked from a terminal or via a menu, and act reasonably
* man: add simple man pages for all executables.
* debian/control: change priority to Optional.
* rescan_tree: grey out when any scoring facilities are open to
* delete zero-length ancillary dot files.
* routine bugfixes.
v. 0.3.3 (2011-09-09):
* Experiment.tar.bz2: Sample dataset at
johnhommer.com/academic/code/aghermann, and a button to automate
download on first start.
Major changes going from 0.2.x to 0.3 were:
* the move to pure C++;
* move to Gtk3;
* unified scoring facility signal view on a single drawing area.
Changes from 0.1 to 0.2 (2010):
* use STL (those were really dark ages before this!);
* thoroughly reengineer the class tree;
* eventually use cairo for all drawing;
* mmap large files;
* use fftw rather than hand-written code which I suspected of
out-of-range memory access, but never understood sufficiently to
* use libresample and some borrowed code from exstrom.com for