FreeFieldDirectivityTF
Description
FreeFieldDirectivityTF is a convention for storing directivity of acoustic sources (instruments, loudspeakers, singers, talkers, etc) in the frequency domain for multiple musical notes. We consider free-field directivites only, i.e., assuming that a potential room has no effect on the data. We consider musical notes as a parameter directly addressing musical instruments. The applications can be:
- Musical acoustics: When measuring of directivity of instruments, this convention can be used for storing the directivity data, which then can be used for general research in musical acoustics.
- Room-acoustic simulations: When rendering acoustic scenes combined with simulations of the room acoustics, this convention can provide the directivity data for more realistic auralizations.
A simple setting assumes that the acoustic source under consideration is surrounded by many microphones capturing the signal emitted by the source from different spatial directions. To this end, we define the following:
- Source represents the acoustic source under consideration.
- Emitters represent a more detailed structure of the Source. In a simple settings, a single Emitter is considered that is collocated with the source.
- Receivers represent the microphones capturing the sound from the acoustic source
- Listener represents the array of microphones. In a simple setting, the position of the Listener is collocated with the position of the Source.
- Data: The signal captured by a Receiver. The data is saved as complex numbers in Data.Real and Data.Imag at the N discrete frequencies for R receivers and M measurements.
- MIDINote describes the note the acoustic source was played. Note that MIDINote can be combined with TuningFrequency for a unique relation between the note and frequency. Both data can be ignored for atonal sources such as loudspeakers.
- Measurement captures a modification of the directivity condition:
- Modified orientation of the microphone array during the measurement? The ListenerView and ListenerUp will change.
- Another musical note played during the measurement? The MIDINote will change.
- Another direction of the directivity required for auralization? Search for the proper ReceiverPosition (in a postprocessed dataset with a single ListenerView) or for a spatial superposition of ListenerView, ListenerUp, and ReceiverPosition (in a dataset with raw measurements).
Examples for the data representation:
- Full spectrum and atonal instrument: The directivity of a cymbal, saved as a discrete single-sided spectrum for equidistant frequencies between 0 Hz and the Nyquist frequency. The played notes refer to different playing styles of the cymbal (different strength or hitting locations). Data.N represents the frequencies which are identical for each Measurement such as played note and direction.
- Full spectrum and tonal instrument: Signal of a violin (single tones, scales, or complete pieces), saved as a discrete single-sided spectrum for equidistant frequencies between 0 Hz and the Nyquist frequency. Data.N represents the frequencies which are identical for each measured condition. Such data are raw data from which directivities can be computed in a post-processing step.
- Harmonic spectrum: The directivity of a violin, saved for each harmonic frequency beginning with the fundamental frequency and ending at (N-1)th overtone of each played note. Data.N represents the index to a harmonic frequency with respect to the fundamental frequency described by MIDINote and TuningFrequency.
- Fractional octave spectrum: The directivity of a violin, with the spectrum represented by a few N fractional octaves. Data.N represents frequencies which are identical for each Measurement such as played note and direction. The data are post processed such that the spatial parameters of the Source and Listener are constant and the directivity is encoded in ReceiverPosition only. This format is intended to be used by room-acoustic simulations. Note that is might simplify the original representation of the measurement.
- Moving instrument: The influence of the musician on the directivity of the musician and/or the instrument. To this end, the spatial relation between the musician/instrument (=Source) and the microphones (Listener/Receivers) is important and thus represented in the metadata. The data can be captured by repeated recordings of the same note/scale/piece for different positions of the listener/instrument. Note that this is a complex scenario and thus yield a complex representation.
- EmitterMidiNote: For tonal instruments, this specifies the midi note number according to (The complete MIDI 1.0 detailed specification (version 96.1, third edition), https://www.midi.org/specifications-old/item/the-midi-1-0-specification) where a note number of 69 refers to A4 (fundamental frequency specified by Obj.TuningFrequency). In case of atonal instruments a null vector should be given.
- EmitterComment: Gives an additional verbal description of each note, which is highly recommend for documenting the data. This might be the musical dynamic (pp., ff., etc.), the string on which the note was played, the playing style (pizzicato, legato, etc.), or the location at which a cymbal was hit.
- GLOBAL:MusicianPostion: Specifies the position of the musician inside the microphone array and relative to the instrument. It is recommended that the direction of azimuth 0 deg. and elevation 0 deg. is used as a reference point/virtual audience towards which the musician is oriented.
- SourceViewDefinition: Because there will not be an agreement of how the source view is defined across different instruments, this has to be specified (e.g. 'Viewing direction of the bell' in case of a trumpet)
- SOFA-API
- M: Number of measurements. Must be M=1.
- E: Number of emitters, which for example correspond to played notes, or cymbal hits (see examples above).
- R: Number of receiver, which in this case refers to the number of microphones that were used for recording the data.
- N: Number of saved frequencies (see examples above).
- Applications
Version 0.1
This version uses SOFA 1.0 which reflects the AES69-2015 standard.
| Name | Default | Flags | Dimensions | Type | Comment |
|---|---|---|---|---|---|
| GLOBAL:Conventions | SOFA | rm | attribute | ||
| GLOBAL:Version | 1.0 | rm | attribute | ||
| GLOBAL:SOFAConventions | MusicalInstrumentDirectivity | rm | attribute | This conventions stores directivities of tonal instruments, atonal instruments, and singers/speakers, i.e., this requires some additional meta data entries. This convention is based on the not existing GeneralTFE. | |
| GLOBAL:SOFAConventionsVersion | 1.0 | rm | attribute | ||
| GLOBAL:APIName | rm | attribute | |||
| GLOBAL:APIVersion | rm | attribute | |||
| GLOBAL:ApplicationName | attribute | ||||
| GLOBAL:ApplicationVersion | attribute | ||||
| GLOBAL:AuthorContact | m | attribute | |||
| GLOBAL:Comment | m | attribute | |||
| GLOBAL:DataType | TF | rm | attribute | We store frequency-dependent data here | |
| GLOBAL:History | attribute | ||||
| GLOBAL:License | No license provided, ask the author for permission | m | attribute | ||
| GLOBAL:Organization | m | attribute | |||
| GLOBAL:References | attribute | ||||
| GLOBAL:RoomType | free field | m | attribute | The room information can be arbitrary | |
| GLOBAL:Origin | attribute | ||||
| GLOBAL:DateCreated | m | attribute | |||
| GLOBAL:DateModified | m | attribute | |||
| GLOBAL:Title | m | attribute | |||
| GLOBAL:InstrumentType | m | attribute | e.g. 'Violin' or 'human singer' | ||
| GLOBAL:InstrumentManufacturer | m | attribute | e.g. 'Stradivari, Lady Blunt, 1721' | ||
| GLOBAL:Musician | m | attribute | e.g. 'Christiane Schmidt', or 'artificial excitation by R2D2' | ||
| GLOBAL:MusicianPosition | m | attribute | e.g. 'sitting behind the instrument, facing the virtual audience at azimuth 0 deg. and elevation 0 deg.' | ||
| ListenerPosition | [0 0 0] | m | IC | double | |
| ListenerPosition:Type | cartesian | m | attribute | ||
| ListenerPosition:Units | metre | m | attribute | ||
| ReceiverPosition | [0 0 0] | m | rCI | double | |
| ReceiverPosition:Type | cartesian | m | attribute | ||
| ReceiverPosition:Units | metre | m | attribute | ||
| SourcePosition | [0 0 1] | m | IC | double | In order to store different directions/positions around the listener, SourcePosition is assumed to vary |
| SourcePosition:Type | spherical | m | attribute | ||
| SourcePosition:Units | degree, degree, metre | m | attribute | ||
| SourcePosition:Definition | m | attribute | Definition of the SourcePosition, e.g., 'Position of the bell' for a trumpet | ||
| SourceView | [0 0 1] | m | IC | double | Gives the orientation of the instrument, singer/speaker |
| SourceView:Type | spherical | m | attribute | ||
| SourceView:Units | degree, degree, metre | m | attribute | ||
| SourceView:Definition | m | attribute | Definition of the SourceView, e.g., 'Viewing direction of the bell' for a trumpet | ||
| SourceUp | [0 0 1] | m | IC | double | Gives the orientation of the instrument, singer/speaker |
| SourceUp:Type | spherical | m | attribute | ||
| SourceUp:Units | degree, degree, metre | m | attribute | ||
| SourceUp:Definition | m | attribute | Definition of the SourceUp, e.g., 'Viewing direction of the valves' for a trumpet | ||
| EmitterPosition | [0 0 0] | m | eCI | double | |
| EmitterPosition:Type | cartesian | m | attribute | ||
| EmitterPosition:Units | degree, degree, metre | m | attribute | ||
| EmitterMidiNote | cartesian | E | double | Defines the played note, e.g. 69=A4, 70=A#4, etc. (According to 'The complete MIDI 1.0 detailed specification' (version 96.1, third edition), https://www.midi.org/specifications-old/item/the-midi-1-0-specification). Not mandatory, but recommended for tonal instruments. | |
| EmitterDescription | cartesian | S, ES | attribute | verbal description of playing style, e.g., 'played on A string (pianissimo, pizzicato)', Not mandatory but highly recommended. | |
| Data.Real | 0 | m | mREn | double | The real part of the complex spectrum |
| Data.Imag | 0 | m | MREN | double | The imaginary part of the complex spectrum |
| TuningFrequency | I, E | double | Defines the fundamental frequency of A4 (midi note number 69). Not mandatory, but highly recommended for tonal instruments and singers | ||
| TuningFrequency:LongName | frequency | attribute | |||
| TuningFrequency:Units | hertz | attribute | Unit of values given in TuningFrequency | ||
| N | 0 | m | N, NE | double | Frequency values |
| N_LongName | frequency | m | attribute | ||
| N_Units | hertz | m | attribute | Unit of the values given in N |