************************************************************* *** History of SOFA API for Matlab and Octave *** Acoustics Research Institute, Austrian Academy of Sciences, Vienna *** Project leader: Piotr Majdak, piotr@majdak.com *** Contributors: *** Michael Mihocic *** Harald Ziegelwanger *** Hagen Wierstorf *** Wolfgang Hrauda *** Fabian Brinkmann *** Felix Perchfler ************************************************************* *** DEVELOPMENT STATUS *** *** v1.1.3 - bug fixes from unreleased SOFA API v1.1.2 merged to latest version of branch v1: - SOFAplotGeometry: bug fix if no SourceView given - FreeFieldDirectivityTF: missing eCM in EmitterPosition fixed - SOFAcheckFilename: do not convert if filename is http:// - SOFAplotHRTF: plot TF with regular frequency grid. Not tested for irregular grids, though... *** v1.1.2 - v1.1.2 is the first version of SOFA branch v1; major updates are implemented in master branch (v2) - SOFAconvertConventions: bug fixed when converting from SimpleFreeFieldTF/GeneralTF or from SimpleFreeFieldSOS to SimpleFreeFieldHRIR: N has not been removed from the API.Dimensions structure *** v1.1.1 - SOFAstart: bug fix when starting for the first time - SOFAconvertTUBerlinBRIR2SOFA.m: bug fixed in Obj.ReceiverPosition: left / right was inverted - SOFAconvertTHK2SOFA.m: bug fixed in Obj.ReceiverPosition: left / right was inverted - SOFAconvertFHK2SOFA.m: bug fixed in Obj.ReceiverPosition: left / right was inverted - SOFAappendText.m: example added to help - SOFAcompileConventions: fix for changes in Octave 4.2 - FreeFieldDirectivityTF: updated to version 0.2 *** v1.1.0 (not released) - SOFAremoveVariable added. It removes a variable from the SOFA object. - SOFAplotGeometry: show SourceView, and bug fix ListenerView. - SOFAdbPath, SOFAdbURL: reset the path/URL to the default if the parameter is 'reset'. - SOFAhrtf2dtf: handling for R=1 added. - SOFAfind added: Find an index for a given position (draft, to be improved). - SOFAload: provide error message on loading unknown conventions *** v1.0.4 (29.4.2019) - on "SOFA upgrade warning", display a message on how to switch it off - SOFAplotHRTF: 'magsagittal' added to plot HRTFs along a sagittal plane. - SOFAload can use filenames beginning with "db://" to indicate to load from the database (local or remote) - SOFAstart avoids repeated starts now - - once SOFAstart has been started, SOFAstart won't be executed fully again, when the paths are still available. - Call SOFAstart('restart') if a restart needs to be forced. *** v1.0.3 (5.9.2018) - automatic load of the netcdf package in Octave on SOFAstart - SOFAspat: bugs in normalization, actual position selection removed - SOFAhrtf2dtf: RMS and weighted averaging added, Octave compatibility ensured - SOFAcompileConventions: bug fix when compiling conventions in Octave 4.2.1 - test_SOFAall: suppress irrelevant warnings - SOFAconvertMIT2SOFA: wavread replaced by audioread - SOFAconvertConventions: it can convert from SimpleFreeFieldTF to SimpleFreeFieldHRIR. - SOFAplotHRTF: more variable input of parameters, normalization optional - SOFAconvertTHK2SOFA: converter from THK format (in miro format) to SOFA added. *** v1.0.2 (16.8.2016) - SOFAplotHRTF: extended to SimpleFreeFieldTF and some cases of GeneralTF - SOFAplotGeometry: extended to SimpleFreeFieldTF - SOFAconvertTUBerling2SOFA: uses MultiSpeakerBRIR now - SOFAspat, SOFAcalculateAPV: minor bug fixes *** v1.0.1 (10.6.2015) - miro class is not supported in Octave. Error is thrown in demo_FHK2SOFA and converterFHK2SOFA - demo_BTDEI2SOFA: bug fix in renamed BTDEI files - demo_SOFA2ARI: bug fix in coordinate comparison *** v1.0.0 (3.6.2015) - 'short' flag added to SOFAstart in order to show only a short header on start-up. - warnings are function-specific now and can be specifically enabled/disabled. *** v0.9.1 (13.5.2015) - 0.9.1 is the internal numbering for the release version 1.0 RC2 - SimpleFreeFieldSOS added - SOFAexpand and SOFAaddVariable handle Data. variables now - SOFAplotHRTF supports SimpleFreeFielsSOS now *** v0.9.0 (12.5.2015) - 0.9.0 is the internal numbering for the release version 1.0 RC1 - update of all conventions to SOFA 1.0 - changes according to the AES212-standard implemented - Octave: upgraded to a new netcdf-package: http://modb.oce.ulg.ac.be/mediawiki/index.php/Octave-netcdf - Matlab/Octave: NETCDF* functions merged for both systems (thx to Hagen Wierstorf) - HRTFs directory: database handling improved: - SOFAdbPath mirrors http://sofacoustics.org/data now. - Warning: directory structure of HRTFs/SOFA changed! - all SOFA files created by demo_ will be saved in sofa_api_mo_test - all demo_ files which use SOFA files will be automatically downloaded from sofacoustics.org - clean up of comments - SOFAcalculateAPV: reimplemented - horsph and sph2hor: bug fixes - directory CDL deleted (had historical relevance only) - SOFAdefinitions: flag 'units' added for unit aliases. - SOFAgetConventions: returns empty vector if conventions not supported *** v0.4.4 (until 20.4.2015) unreleased *** v0.4.3 (5.6.2014) by Piotr Majdak - fix: annoying bug in SOFAupgradeConventions *** v0.4.2 (7.4.2014) by Piotr Majdak - fix: SOFAhrtf2dtf supports more than two receivers *** v0.4.1 (30.3.2014) by Piotr Majdak - MultiSpeakerBRIR conventions added - SOFAcompact: compacts variables along dimensions, opposite to SOFAexpand. Functionality not complete for 3D variables - SOFAcompare: compares two SOFA objects. Preliminary functionality; compares attributes only - SOFAexpand: expanding of Data added - bug fix: SOFAplotGeometry - function-specific warnings added: SOFA:upgrade and SOFA:save - SOFAload optimized for handling huge (3.7 GB) data files on a 4 GB RAM machine *** v0.4 (19.3.2014) by Piotr Majdak - implements SOFA 0.6: - GLOBAL_Source renamed to GLOBAL_Origin - GLOBAL_TimeCreated and GLOBAL_TimeModified renamed to GLOBAL_DateCreated and GLOBAL_DateModified, respectively - If ListenerUp is provided, ListenerView must be provided as well. If ListenerView is provided, ListenerView_Type and ListenerView_Units must be provided as well. This also applies to Source, Emitter, and Receiver objects. - Geometry: only "cartesian" or "spherical" coordinate systems allowed - In SimpleFreeFieldHRIR: GLOBAL_SubjectID renamed to GLOBAL_ListenerShortName - Converters adapted to provide more precise information - SOFAappendText added for appending a text to an attribute - SOFAdefinitions: returns various definitions, depending on the input flag - SOFAupgradeConventions: upgrades conventions up to 0.6 now. *** v0.3.1 (2.9.2013) by Piotr Majdak - zip file required 7-zip, fixed - minor bug fixes *** v0.3.0 (27.8.2013) by Piotr Majdak - major change: .API added to the structure, contains .Dimensions and the dimension sizes (formely known as .DimSize) - implements SOFA 0.5 (without the support for string arrays) - upgrade of SimpleFreeFieldHRIR 0.3 and other conventions - syntax of convention files .csv adapted to that from the specs ("_" replaced by ":") - SOFAcalculateAPV added, provides calculation of the apparent position vector (APV) - SOFAplotGeometry added, rudimentary plotting available for SimpleFreeFieldHRIR and SingleRoomDRIR - SOFAaddVariables supports private variables now *** v0.2.9 (30.5.2013) by Piotr Majdak - development snapshot for the draft of SOFA 0.4 - tested for Matlab (Octave support not finished yet) - conventions implemented as CSV files which are compiled to MAT at start and are cached by SOFAgetConventions - user-defined HRTF database path - seemless download of remote SOFA files on SOFAload - user-defined HRTF internet repository - seemless upgrade from SOFA 0.3 files on SOFAload *** v0.2.1 (13.5.2013) by Piotr Majdak - Bug fix with the wrong spelling of "License" - "License" it very restrictive per default now - demo_SOFAsave included *** v0.2.0 (2.5.2013) by Piotr Majdak - Updated to SOFA 0.3 - Octave support added - demo_* create file names compliant with MS DOS FAT character set - test script (test/test_SOFAall.m) added - converters do not add database specific attriubutes, this is done in demo_* - new demos: SOFAmerge, SOFAload, SOFAsave - readme improved - Pulse.sofa removed as binary, it can be created with demo_SOFAsave now - Link to HRTF files saved as SOFA added (nice for playing around) *** v0.1.4 (2.5.2013) by Piotr Majdak - Major bug fix: dimension order reversed while loading/saving in Matlab - Some other minor issues closed - Ready for intercompatibility test between Matlab and Octave *** v0.1.3 (18.4.2013) by Piotr Majdak - This version implements SOFA specs version 0.2 with the following limitations: - no Octave support - only SimpleFreeFieldHRIR supported and tested - Detailed changes: - directory structure changed - new converter added: SOFA2ARI - SOFAdbPath added *** v0.1.2 (17.4.2013) by Piotr Majdak - SOFAload: partial loading added. Load of metadata only or by measurement section - docs: changes since AES2013-specs added. - history file moved to docs - Repository cleaned from older stuff *** v0.1.1 (16.4.2013) by Piotr Majdak - SOFAload improved: checks added. Still further checks would be nice, but it can be used now. - SOFAsave improved: saves user-defined variables - SOFAexpand added: expands the singleton dimensions in the SOFA object - Convertors for MIT KEMAR, LISTEN, and CIPIC databases added (with corresponding demos) - HRTF directory created where all HRTFs should be stored. The convertors rely on that. - SOFAspat improved, now the engine works better *** v0.1.0 (11.4.2013) by Piotr Majdak - Saving/Loading works in Matlab, it is quite rudimentary now: - Data and Variables saved as Double - No string in variables supported yet - One Conventions implemented and tested (SingleFreeFieldHRIR) - Loading: no checks (todo) - Saving: removes optional variables (bug) - No partial loading/saving yet - Convertion: ARI2SOFA with demo_ARI2SOFA added - Spatialization: very rudimentary demo added (SOFAspat and demo_SOFAspat), just for fun *** v0.0.12 (12.3.2013) by Piotr Majdak - Conventions: transmitter renamed to emitter *** v0.0.11 (7.3.2013) by Piotr Majdak - Conventions added - Octave branch deleted - Examples: ARI2SOFA as a function - General: adapted to current specs. Don't use yet. *** v0.0.10 (5.3.2013) by Piotr Majdak - ARI2SOFA: changed to a function now, the fields are more clear defined - SOFAsave: transmitted and receiver separated, dimensions changed - Specs have drastically changed - beware of using this version at the current development state *** v0.0.9 (31.1.2013) by Piotr Majdak - included octave part from Hagen Wierstorf - changed the data structure format - added try-catch to SOFAsave to avoid open file handles *** v0.0.8 (24.08.2012) by Wolfgang Hrauda - changed data structure format - updates and fixes in several functions and scripts - added Eigenmike.sofa as a demo file *** v0.0.7 (23.08.2012) by Wolfgang Hrauda - now using structures or cells as input and output values of functions - added and renamed several functions and scripts - updates in several functions and scripts *** v0.0.6 (14.08.2012) by Wolfgang Hrauda - added new functions for coordinate type conversion - functionality of SOFAgetData slightly expanded - dismissed function SOFAloadVariables (is now an option in SOFAload) - "ARI_to_SOFA_lab_setup" updated - minor fixes in several functions *** v0.0.5 (08.08.2012) by Wolfgang Hrauda - implemented additional dimensions for string variables in SOFAsave - added new function SOFAloadVariables (a variant of SOFAload) - added new demo script "ARI_to_SOFA_lab_setup" - fixes in several functions *** v0.0.4 (07.08.2012) by Wolfgang Hrauda - fixed some issues in SOFAsave - minor changes in SOFAload - added new functions SOFAgetID, SOFAgetData, SOFAlistVariables *** v0.0.3 (03.08.2012) by Wolfgang Hrauda - split demo script in two API functions and one script that calls them - change file extension to 'sofa' *** v0.0.2 (01.08.2012) by Wolfgang Hrauda - finished matrix dimension check *** v0.0.1 (31.07.2012) by Wolfgang Hrauda - demo script that loads ARI .mat file, converts it to SOFA format and writes to .nc-file then reads all data from .nc.file