Ase namespace
The Anklang C++ API namespace.
Namespaces
- namespace AnsiColors
- The AnsiColors namespace contains utility functions for colored terminal output.
- namespace Aux
- Auxillary algorithms brodly useful.
- namespace FastMemory
- Utilities for allocating cache line aligned memory from huge pages.
- namespace Lib
- Namespace for implementation internals.
- namespace Loft
- Loft - A special purpose memory allocator for lock- and obstruction-free thread progress.
- namespace MidiLib
- Namespace used for Midi Processor implementations.
- namespace Path
- The Path namespace provides functions for file path manipulation and testing.
- namespace Test
- Helper namespace for unit testing.
Classes
-
template <size_t SIZE>struct AlignedPOD
-
template <class Value>class AsyncBlockingQueue
- This is a thread-safe asyncronous queue which blocks in pop() until data is provided through push().
- class AtomicBits
- Vector of atomic bits, operates in blocks of 64 bits.
-
template <class T>class AtomicIntrusiveStack
-
template <typename Value, template<class> class GrowOnlyAllocator = Loft::struct AtomicStack
Allocator> - class AudioEngine
- struct AudioParams
- Audio parameter handling, internal to AudioProcessor.
- class AudioProcessor
- Audio signal AudioProcessor base class, implemented by all effects and instruments.
- struct AudioProcessorInfo
- Detailed information and common properties of AudioProcessor subclasses.
- struct AudioTransport
- Transport information for AudioSignal processing.
- class AutoSeeder
- AutoSeeder provides non-deterministic seeding entropy.
- class Blob
- Binary large object storage container.
- struct BusInfo
- Structure providing supplementary information about input/output buses.
- struct CPUInfo
- Acquire information about the runtime architecture and CPU type.
- class CString
- Compact, deduplicating string variant for constant strings.
- class CStringTable
- Map std::
string <-> uint IDs, thread safe. -
template <class... A>class CallbackList
- Reentrant callback list with configurable arguments.
- struct Choice
- Representation of one possible choice for selection properties.
- class Clip
- Container for MIDI note and control events.
- struct ClipNote
- Part specific note event representation.
- struct ConvertJsTrigger
- Convert between Jsonipc::JsonValue to JsTrigger.
- struct ConvertValue
- Convert between Value and Jsonipc::JsonValue.
- struct ConvertValueP
- Convert between ValueP and Jsonipc::JsonValue.
- struct ConvertValueR
- Convert between ValueR and Jsonipc::JsonValue.
- struct ConvertValueRP
- Convert between std::
shared_ptr<ValueR> and Jsonipc::JsonValue. - class CustomDataContainer
-
template <typename T>class CustomDataKey
- CustomDataKey objects are used to identify and manage custom data members of CustomDataContainer objects.
- class Device
- Interface to access Device instances.
- struct DeviceInfo
- Info for device types.
- class DispatcherSource
- EventLoop source for handler execution.
- class Driver
- Base class for a PCM and MIDI devices.
- struct DriverEntry
- Driver information for PCM and MIDI handling.
- class Emittable
- Base type for classes with Event subscription.
- class EmittableImpl
- Implementation type for classes with Event subscription.
- struct EnumInfo
- Get auxiallary enum information.
- struct Event
- Structure for callback based notifications.
- class EventFd
- Wakeup facility for IPC.
- class EventList
- Maintain an array of unique
Event
structures with change notification. - class EventLoop
- Loop object, polling for events and executing callbacks in accordance.
- class EventSource
- EventLoop source for callback execution.
-
template <typename T, size_t ALIGNMENT = FastMemory::class FastMemArray
cache_line_size> - Array with cache-line-alignment containing a fixed numer of PODs.
- class FileCrawler
- Class implementing a file system crawler.
- union FloatIEEE754
- class Gadget
- Base type for classes that have a Property.
- class GadgetImpl
- Base type for classes that have a Property.
-
template <class, class = void>struct Has_serialize_f
- Has_serialize_f<T> - Check if
serialize(T&,WritNode&)
is provided forT
. - struct Id32
- Helper class for integer IDs up to 32 Bit, possibly of enum type.
- class IniFile
- Class to parse INI configuration file sections and values.
- class IniWriter
- Class to write INI configuration file sections and values.
- class JsTrigger
- Callback mechanism for Jsonapi/Jsonipc.
- class KeccakCryptoRng
- class KeccakFastRng
- class KeccakGoodRng
- class KeccakRng
- struct LoftConfig
- Configuration for Loft allocations.
- struct LoftFree
- A std::
unique_ptr<> deleter for Loft allocations. - struct LoftStats
- Statistics for Loft allocations.
- struct Logscale
- Logarithmically map (and invert) a range onto 0…+1.
- class MainLoop
- An EventLoop implementation that offers public API for running the loop.
-
template <auto setter, auto getter = nullptr>class Member
- Implement C++ member field API with a 0-sized class from setter and getter, maybe combined with
[[no_unique_address]]
. -
template <auto accessor>class Member<accessor, nullptr>
- Member accessor class based on a single accessor, maybe combined with
[[no_unique_address]]
. - class MidiDriver
- Base class for a MIDI devices.
- struct MidiEvent
- MidiEvent data structure.
- class MidiEventOutput
- A stream of writable MidiEvent structures.
-
template <size_t MAXQUEUES>class MidiEventReader
- An in-order MidiEvent reader for multiple MidiEvent sources.
- struct MidiNote
- Components of a MIDI note.
- class Monitor
- Interface for monitoring output signals.
-
template <typename Node>struct MpmcStack
-
template <class T>struct Mutable
- Helper to modify const struct contents, e.g. asyn job lambda members.
- class Mwc256
- Marsaglia multiply-with-carry generator, period ca 2^255.
- class NativeDevice
- Interface to access NativeDevice instances.
- class Object
- Base type for classes with Property interfaces.
- class ObjectImpl
- Implementation type for classes with Property interfaces.
-
template <class Event, class CompareOrder>struct OrderedEventList
- Container for a sorted array of opaque
Event
structures with binary lookup. - struct Param
- Structured initializer for Parameter.
- struct ParamExtraVals
- Helper to specify parameter ranges.
- struct Parameter
- Structure to provide information about properties or preferences.
- struct ParameterMap
- Parameter list construction helper.
- class ParameterProperty
- Abstract base type for Property implementations with Parameter meta data.
- class Pcg32Rng
- class PcmDriver
- Base class for a PCM devices.
- struct PcmDriverConfig
- PCM device configuration.
-
template <class Class>class Persistent
- struct PollFD
- Mirrors struct pollfd for poll(3posix)
- class PollFDSource
- EventLoop source for IO callbacks.
- class Preference
- Class for preference parameters (global settings)
- struct ProbeFeatures
- Bits representing a selection of probe sample data features.
- class ProcessorManager
- Interface for management, connecting and processing of AudioProcessor instances.
- class Project
- Projects support loading, saving, playback and act as containers for all other sound objects.
- class Property
- A Property allows querying, setting and monitoring of an object property.
- class PropertyImpl
- Property implementation for GadgetImpl, using lambdas as accessors.
-
template <size_t MAXQUEUES, class ForwardIterator>struct QueueMultiplexer
- class Re
- Wrapper for std::
regex to simplify usage and reduce compilation time. - struct Resource
- Description of a resource, possibly nested.
- class ResourceCrawler
- Helper to crawl hierarchical resources.
- struct RtCall
- Wrap simple callback pointers, without using malloc (obstruction free).
- struct RtJobQueue
- Add a simple callback to the main event loop, without using malloc (obstruction free).
- struct SHA3_224
- struct SHA3_256
- struct SHA3_384
- struct SHA3_512
- struct SHAKE128
- struct SHAKE256
- class Serializable
- Interface for serializable objects with Reflink support.
- class Server
- Central singleton, serves as API entry point.
- class SharedBase
- Common base type for polymorphic classes managed by
std::
.shared_ptr<> -
template <class T, class Less = std::class SortedVector
less<T>> - Vector that keeps its elements sorted.
- class Strings
- Convenience Constructor for StringSeq or std::vector<std::string>
- class TaskRegistry
- The task registry keeps track of runtime threads for profiling and statistical purposes.
- struct TaskStatus
- Acquire information about a task (process or thread) at runtime.
- struct TelemetryField
- Telemetry segment location.
- struct TelemetrySegment
- Telemetry segment location.
- struct TickSignature
- Musical time signature and tick conversions.
- class TimedSource
- EventLoop source for timer execution.
- class Track
- Container for Clip objects and sequencing information.
- class TrackImpl
- Ase::
Track implementation. - class USignalSource
- EventLoop source for handler execution.
- struct UserNote
- Contents of user interface notifications.
- struct Value
- Value type used to interface with various property types.
- struct VirtualBase
- Common base type to allow casting between polymorphic classes.
- class Writ
- Document containing all information needed to serialize and deserialize a Value.
-
template <typename T, typename = void>struct WritConverter
- Template to specialize string conversion for various data types.
- class WritNode
- One entry in a Writ serialization document.
Enums
- enum class Error: int32_t { NONE = 0, PERMS = EPERM, IO = EIO, NO_MEMORY = ENOMEM, NO_SPACE = ENOSPC, NO_FILES = ENFILE, MANY_FILES = EMFILE, RETRY = EINTR, NOT_DIRECTORY = ENOTDIR, FILE_NOT_FOUND = ENOENT, FILE_IS_DIR = EISDIR, FILE_EXISTS = EEXIST, FILE_BUSY = EBUSY, INTERNAL = 0x30000000, UNIMPLEMENTED, FILE_EOF = 0x30001000, FILE_OPEN_FAILED, FILE_SEEK_FAILED, FILE_READ_FAILED, FILE_WRITE_FAILED, PARSE_ERROR = 0x30002000, NO_HEADER, NO_SEEK_INFO, NO_DATA_AVAILABLE, DATA_CORRUPT, WRONG_N_CHANNELS, FORMAT_INVALID, FORMAT_UNKNOWN, DATA_UNMATCHED, CODEC_FAILURE, BROKEN_ARCHIVE, BAD_PROJECT, NO_PROJECT_DIR, DEVICE_NOT_AVAILABLE = 0x30003000, DEVICE_ASYNC, DEVICE_BUSY, DEVICE_FORMAT, DEVICE_BUFFER, DEVICE_LATENCY, DEVICE_CHANNELS, DEVICE_FREQUENCY, DEVICES_MISMATCH, WAVE_NOT_FOUND = 0x30004000, INVALID_PROPERTY, INVALID_MIDI_CONTROL, OPERATION_BUSY }
- Enum representing Error states.
- enum class IBusId: uint16 { }
- ID type for AudioProcessor input buses, buses are numbered with increasing index.
- enum class MidiEventType: uint8_t { PARAM_VALUE = 0x70, NOTE_OFF = 0x80, NOTE_ON = 0x90, AFTERTOUCH = 0xA0, CONTROL_CHANGE = 0xB0, PROGRAM_CHANGE = 0xC0, CHANNEL_PRESSURE = 0xD0, PITCH_BEND = 0xE0, SYSEX = 0xF0 }
- Type of MIDI Events.
- enum class MidiMessage: int32_t { NONE = 0, ALL_SOUND_OFF = 120, RESET_ALL_CONTROLLERS = 121, LOCAL_CONTROL = 122, ALL_NOTES_OFF = 123, OMNI_MODE_OFF = 124, OMNI_MODE_ON = 125, MONO_MODE_ON = 126, POLY_MODE_ON = 127, PARAM_VALUE = 0x70, NOTE_OFF = 0x80, NOTE_ON = 0x90, AFTERTOUCH = 0xA0, CONTROL_CHANGE = 0xB0, PROGRAM_CHANGE = 0xC0, CHANNEL_PRESSURE = 0xD0, PITCH_BEND = 0xE0, SYSEX = 0xF0 }
- Extended type information for MidiEvent.
- enum class MusicalTuning: uint8 { OD_12_TET, OD_7_TET, OD_5_TET, DIATONIC_SCALE, INDIAN_SCALE, PYTHAGOREAN_TUNING, PENTATONIC_5_LIMIT, PENTATONIC_BLUES, PENTATONIC_GOGO, QUARTER_COMMA_MEANTONE, SILBERMANN_SORGE, WERCKMEISTER_3, WERCKMEISTER_4, WERCKMEISTER_5, WERCKMEISTER_6, KIRNBERGER_3, YOUNG }
- Musical tunings, see: http://en.wikipedia.org/wiki/Musical_
tuning. - enum class OBusId: uint16 { }
- ID type for AudioProcessor output buses, buses are numbered with increasing index.
- enum class ParamId: uint32 { }
- ID type for AudioProcessor parameters, the ID numbers are user assignable.
- enum class SpeakerArrangement: uint64_t { NONE = 0, FRONT_LEFT = 0x1, FRONT_RIGHT = 0x2, FRONT_CENTER = 0x4, LOW_FREQUENCY = 0x8, BACK_LEFT = 0x10, BACK_RIGHT = 0x20, AUX = uint64_t (1) << 63, MONO = FRONT_LEFT, STEREO = FRONT_LEFT | FRONT_RIGHT, STEREO_21 = STEREO | LOW_FREQUENCY, STEREO_30 = STEREO | FRONT_CENTER, STEREO_31 = STEREO_30 | LOW_FREQUENCY, SURROUND_50 = STEREO_30 | BACK_LEFT | BACK_RIGHT, SURROUND_51 = SURROUND_50 | LOW_FREQUENCY }
Typedefs
-
template <class T>using Atomic = boost::atomic<T>
- Substitute for std::
atomic<> with fixes for GCC. -
using ChoicesFunc = std::
function<ChoiceS(const CString&)> - Handler to generate all possible parameter choices dynamically.
-
template <typename T>using LoftPtr = std::
unique_ptr<T, LoftFree> - A std::
unique_ptr<> for Loft allocations. -
using MinMaxStep = std::
tuple<double, double, double> - Min, max, stepping for double ranges.
-
using ParamInitialVal = std::
variant<bool, int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, float, double, const char*, std:: string> - Initial value for parameters.
-
using PropertyGetter = std::
function<void(Value&)> - Function type for Property value getters.
-
using PropertyLister = std::
function<ChoiceS(const ParameterProperty&)> - Function type to list Choice Property values.
-
using PropertySetter = std::
function<bool(const Value&)> - Function type for Property value setters.
-
template <bool value>using REQUIRES = typename ::
std:: enable_if<value, bool>::type - REQUIRES<value> - Simplified version of std::enable_if<cond,bool>::type to use SFINAE in function templates.
-
template <bool value>using REQUIRESv = typename ::
std:: enable_if<value, void>::type - REQUIRESv<value> - Simplified version of std::enable_if<cond,void>::type to use SFINAE in struct templates.
-
using String = std::
string - Convenience alias for std::
string. -
using StringS = std::
vector<String> - Convenience alias for a std::vector<std::string>.
-
using ValueVariant = std::
variant<std:: monostate, bool, int64, double, String, ValueS, ValueR, InstanceP> - Variant type to hold different types of values.
- using int16 = int16_t
- A 16-bit signed integer.
- using int32 = int32_t
- A 32-bit signed integer.
- using int64 = int64_t
- A 64-bit unsigned integer, use PRI*64 in format strings.
- using int8 = int8_t
- An 8-bit signed integer.
- using uint = uint32_t
- Provide 'uint' as convenience type.
- using uint16 = uint16_t
- A 16-bit unsigned integer.
- using uint32 = uint32_t
- A 32-bit unsigned integer.
- using uint64 = uint64_t
- A 64-bit unsigned integer, use PRI*64 in format strings.
- using uint8 = uint8_t
- An 8-bit unsigned integer.
- using unichar = uint32_t
- A 32-bit unsigned integer used for Unicode characters.
Functions
- static auto anklang_cachedir_base(bool createbase = false) → String
- Find base directory for the creation of temporary caches.
- static void atexit_clean_cachedirs()
- Clean temporary caches of this process.
- static auto bit_rotate64(uint64_t bits, unsigned int offset) → uint64_t
- Rotate left for uint64_t.
-
template <class Num>static auto byte_hash64(const Num* data, size_t length) → ASE_CONST uint64_t
- Fast byte hashing with good dispersion and runtime randomization.
- static auto codepoint_is_namestartchar(uint32_t c) → bool
- static auto codepoint_is_ncname(uint32_t c) → bool
-
template <typename T>static auto divmod(T dividend, T divisor, T* reminderp) → T constexpr
- Compute integers division and modulo with one X86 asm instruction.
-
static auto find_text_file(ptrdiff_t symbol_address) → std::
string - Find the binary file containing the runtime symbol at
symbol_address
. -
template <class Num>static auto fnv1a_consthash64(const Num* ztdata) → uint64_t constexpr
-
template <class Num>static auto fnv1a_consthash64(const Num*const data, size_t length) → uint64_t constexpr
- Variant of fnv1a_consthash64() for memory blocks of arbitrary size.
- static auto has_debug_key(const char*const debugkeys, const char*const key) → bool
- Quick boolean check for a colon separated key in a haystack.
- static auto hash_secret() → ASE_PURE uint64_t
- Provide hashing nonce for reseeding hashes at program start to avoid collision attacks.
- static auto initialized_ase_gettext_domain() → const char*
- Initialize gettext domain for ASE.
-
template <std::static auto make_case_table(const MkFun& mkjump) → auto
size_t LAST, typename MkFun> -
template <typename MkFun, size_t ... INDICES>static auto make_indexed_table(const MkFun& mkjump, std::
index_sequence<INDICES...>) → auto - Create a
std::
, wherearray<Fun,N> Fun
is returned frommkjump (INDICES…)
. -
template <class Num>static auto pcg_hash32(const Num* data, size_t length, uint64_t seed) → ASE_CONST uint32_t
-
template <class Num>static auto pcg_hash64(const Num* data, size_t length, uint64_t seed) → ASE_CONST uint64_t
- static auto pcg_hash64(const char* ztdata, uint64_t seed) → ASE_CONST uint64_t
- pcg_hash64() variant for zero-terminated strings.
- static auto pid_string(int pid) → String
- Create process specific string for a
.pid
guard file. -
template <typename UInt>static auto rotl(UInt bits, uint32_t offset) → UInt constexpr
- Bitwise rotate-left pattern recognized by gcc & clang at -O1 iff sizeof (bits) == {8,16,32,64}.
-
template <typename UInt>static auto rotr(UInt bits, uint32_t offset) → UInt constexpr
- Bitwise rotate-right pattern recognized by gcc & clang at -O1 iff sizeof (bits) == {8,16,32,64}.
-
static auto string_hash64(const std::
string& string) → ASE_CONST uint64_t - Fast string hashing with good dispersion for std::
string and runtime randomization. - static auto string_hash64(const char* ztdata) → ASE_CONST uint64_t
- pcg_hash64() variant for zero-terminated strings.
- static auto tmpdir_prefix() → String
- Prefix for temporary cache directories, also used for pruning of stale directories.
-
template <typename T>static auto unalias_ptr(T* ptr) → T*
- Force compiler to forget the origin of a possibly aliasing pointer.
-
template <int CODEPOINT>static auto utf8character(const char* str, uint32_t* unicode) → size_t
- static auto utf8codepoint(const char* str, uint32_t* unicode) → size_t
- Returns length of unicode character in bytes.
- static auto utf8skip(const char* str) → size_t
- Returns length of unicode character in bytes.
- auto _(const char* string) → const char*()
- Translate message strings in the Anklang/ASE text domain.
-
auto _(const std::
string& string) → std:: string() - Translate message strings in the Anklang/ASE text domain.
- auto _(const char* string, const char* plural, int64_t n) → const char*()
- Translate message strings in the Anklang/ASE text domain, use @plural forms if
!= 1. -
auto _(const std::
string& string, const std:: string& plural, int64_t n) → std:: string() - Translate message strings in the Anklang/ASE text domain, use @plural forms if
!= 1. -
template <class T>__attribute__((__pure__))
- Provide demangled stringified name for type
T
. -
template <class T>__attribute__((__pure__))
- Provide demangled stringified name for object
obj
. -
template <class Type, class ... Ts>__attribute__((always_inline)) inline void new _inplace(Type &typemem
- Call inplace new operator by automatically inferring the Type.
-
template <class Type>__attribute__((always_inline))
- Call inplace delete operator by automatically inferring the Type.
- void anklang_cachedir_clean_stale()
- Clean stale cache directories from past runtimes, may be called from any thread.
- void anklang_cachedir_cleanup(const String& cachedir)
- Cleanup a cachedir previously created with anklang_
cachedir_ create(). - auto anklang_cachedir_create() → String
- Create exclusive cache directory for this process' runtime.
- auto anklang_home_dir(const String& subdir) → String
- Get Anklang home dir, possibly adding
subdir
. -
auto anklang_runpath(RPath rpath,
const String& segment) → std::
string - Retrieve various resource paths at runtime.
- auto application_name() → String
- Retrieve the localized program name intended for user display.
- void application_name_init(String desktopname)
- Set the application_name to a name other than program_alias if desired.
- auto ase_build_id() → const char*
- Provide a string containing the ASE library build id.
- auto ase_error_blurb(Error error) → const char*
- Describe Error condition.
-
template <class A0, class... Ar>auto ase_gettext(const char* format, const A0& a0, const Ar&... restargs) → const char*
- Translate a string, using the ASE locale.
- auto ase_version() → const char*
- Provide a string containing the package version.
- void assertion_failed(const char* msg, const char* file, int line, const char* func) noexcept
- Print instructive message, handle "breakpoint", "backtrace" and "fatal-warnings" in $ASE_DEBUG.
- void assertion_fatal(const char* msg, const char* file, int line, const char* func) noexcept
- Print a debug message via assertion_
failed() and abort the program. -
auto backtrace_command() → std::
string - Find GDB and construct command line.
- void breakpoint() ASE_ALWAYS_INLINE
- Cause a debugging breakpoint, for development only.
-
template <class T>void call_delete(T* o)
- Simple way to create a standalone callback to delete an object of type
T
. - void collect_runtime_entropy(uint64* data, size_t n)
- Collect entropy from the current process, usually quicker than collect_
system_ entropy(). - void collect_system_entropy(uint64* data, size_t n)
- Collect entropy from system devices, like interrupt counters, clocks and random devices.
- auto constexpr_equals(const char* a, const char* b, size_t n) → bool constexpr
- Test string equality at compile time.
-
auto cpu_arch() → std::
string - Retrieve string identifying the CPU architecture.
- auto cpu_info() → String
- Retrieve string identifying the runtime CPU type.
- auto cstrings_to_vector(const char* s, ...) → StringS
- Construct a StringS from a NULL terminated list of string arguments.
- auto current_locale_strtold(const char* nptr, char** endptr) → long double
- Parse a double from a string ala strtod(), trying locale specific characters and POSIX/C formatting.
-
auto damerau_levenshtein_distance(const std::
string& source, const std:: string& target, const float ci, const float cd, const float cs, const float ct) → float -
auto damerau_levenshtein_restricted(const std::
string& source, const std:: string& target, const float ci, const float cd, const float cs, const float ct) → float -
template <typename Float>auto db2voltage(Float x) → Float
- Convert Decibel to synthesizer value (Voltage).
-
template <typename Float>auto db2voltage(Float x) → ASE_CONST Float
- Convert Decibel to synthesizer value (Voltage).
-
template <typename Float>auto db_changed(Float a, Float b) → Float
- Determine a significant Decibel change.
-
template <typename Float>auto db_changed(Float a, Float b) → ASE_CONST Float
- Determine a significant Decibel change.
-
template <class ... Args>auto debug(const char* cond, const char* format, const Args&... args) → void ASE_ALWAYS_INLINE
- Issue a printf-like debugging message if
cond
is enabled by $ASE_DEBUG. - auto debug_enabled() → bool
- Check if any kind of debugging is enabled by $ASE_DEBUG.
- auto debug_key_enabled(const char* conditional) → bool
- Check if
conditional
is enabled by $ASE_DEBUG. -
auto debug_key_enabled(const ::
std:: string& conditional) → bool - Check if
conditional
is enabled by $ASE_DEBUG. -
auto debug_key_value(const char* conditional) → ::
std:: string - Retrieve the value assigned to debug key
conditional
in $ASE_DEBUG. -
void debug_message(const char* cond,
const std::
string& message) - Print a debug message, called from Ase::debug().
-
auto decodefs(const std::
string& utf8str) → std:: string - Decode UTF-8 string back into file system path representation, extracting surrogate code points as bytes.
- void diag_flush(uint8 code, const String& txt)
- Handle stdout and stderr printing with flushing.
- auto diag_prefix(uint8 code) → String
- Create prefix for warnings and errors.
-
auto displayfs(const std::
string& utf8str) → std:: string - Convert UTF-8 encoded file system path into human readable display format, the conversion is lossy but readable.
-
auto encodefs(const std::
string& fschars) → std:: string - Encode a file system path consisting of bytes into UTF-8, using surrogate code points to store non UTF-8 bytes.
-
template <typename Enum>auto enum_lister(const ParameterProperty&) → ChoiceS
- Helper to list Jsonipc::Enum<> type values as Choice.
-
auto executable_name() ASE_PURE -> std::
string - Retrieve the name part of executable_
path(). -
auto executable_path() → std::
string - Retrieve the path to the currently running executable.
- void fast_copy(size_t n, float* d, const float* s)
- Copy a block of floats.
- void fast_copy(size_t n, uint32_t* d, const uint32_t* s)
- Copy a block of integers.
- auto fast_db2voltage(float x) → float
- Float precision variant of db2voltage using fast_
exp2(). - auto fast_exp2(float x) ASE_CONST -> float
- auto fast_hz2voltage(float x) → float
- Float precision variant of hz2voltage using fast_
log2(). - auto fast_log2(float x) ASE_CONST -> float
- auto fast_voltage2db(float x) → float
- Float precision variant of voltage2db using fast_
log2(). - auto fast_voltage2hz(float x) → float
- Float precision variant of voltage2hz using fast_
exp2(). -
template <class ... Args>auto fatal_error(const char* format, const Args&... args) → void ASE_NORETURN
-
template <class RandomIt, class Compare>void fixed_sort(RandomIt first, RandomIt last, Compare comp = std::
less<typename std:: iterator_traits<RandomIt>::value_type>()) - Use sorting networks to sort containers <= 16 elements without allocations.
- void floatfill(float* dst, float f, size_t n)
- Fill
n
values ofdst
withf
. - auto force_double(double d) → double
- Force number into double precision floating point format, even with
-ffast-math
. - auto force_float(float f) → float
- Force number into single precision floating point format, even with
-ffast-math
. - auto hz2value(float x) ASE_CONST -> float
- Convert Hertz to synthesizer value (Voltage).
-
template <typename Float>auto hz2voltage(Float x) → Float
- Convert Hertz to synthesizer value (Voltage).
-
template <typename Float>auto hz2voltage(Float x) → ASE_CONST Float
- Convert Hertz to synthesizer value (Voltage).
-
template <typename Float>auto hz_changed(Float a, Float b) → Float
- Determine a significant frequency change (audible Hertz).
-
template <typename Float>auto hz_changed(Float a, Float b) → ASE_CONST Float
- Determine a significant frequency change (audible Hertz).
- auto irintf(float f) → ASE_CONST int
-
template <class T>auto json_parse(const String& jsonstring, T& target) → bool
- Parse a well formed JSON string and assign contents to
target
. -
template <class T>auto json_parse(const String& jsonstring) → T
- Parse a well formed JSON string and return the resulting value.
-
template <class T>auto json_stringify(const T& source, Writ::Flags flags = Writ::Flags(0)) → String
- Create JSON string from
source
. - void load_registered_drivers()
- Load all registered drivers.
- auto loft_alloc(size_t size, size_t align) → LoftPtr<void>
- Allocate
size
bytes (with limited alignment support), may return a nullptr. - auto loft_bucket_size(size_t nbytes) → size_t
- Calculate the real bucket size allocated for a requested size.
- auto loft_calloc(size_t nelem, size_t elemsize, size_t align) → LoftPtr<void>
- Allocate and 0-initialize
nelem * elemsize
bytes, may return a nullptr. - void loft_get_config(LoftConfig& config)
- Retrieve current configuration.
- void loft_get_stats(LoftStats& stats)
- Get statistics about current Loft allocations.
- auto loft_grow_preallocate(size_t preallocation_amount) → size_t
- Grow the preallocated arena, issues syscalls.
-
template <class T, class ... Args>auto loft_make_unique(Args && ... args) → LoftPtr<T>
- Construct an object
T
from Loft memory, wrapped in a unique_ptr. - void loft_set_config(const LoftConfig& config)
- Configure watermark, notification, etc.
-
void loft_set_notifier(const std::
function<void()>& lowmem) - Install obstruction free callback to notify about watermark underrun.
- auto loft_stats_string(const LoftStats& stats) → String
- Stringify LoftStats.
- void log_setup(bool inf2stderr, bool log2file)
- Open log file.
-
template <class... A>auto logerr(const String& dept, const char* format, const A&... args) ASE_PRINTF(2 -> void void
- Format and send a log message to the user, stderr and log file, using the POSIX/C locale.
-
template <class... A>void logerr(const String& dept, const char* format, const A&... args)
- Log error to stderr and logfile.
-
template <class... A>void loginf(const char* format, const A&... args) ASE_PRINTF(1
- Write a string_format() message to the log file (or possibly stderr), using the POSIX/C locale.
-
template <class... A>void logtxt(const char* format, const A&... args)
- Log text into logfile only.
-
template <typename Enum>auto make_enum_getter(Enum* v) → std::
function<void(Value&)> - Value getter for enumeration types.
-
template <typename Enum>auto make_enum_setter(Enum* v) → std::
function<bool(const Value&)> - Value setter for enumeration types.
- void memset4(uint32* mem, uint32 filler, uint length)
- Fill a memory area with a 32-bit quantitiy.
- auto monotonic_counter() → uint64
- A monotonically increasing counter, increments are atomic and visible in all threads.
- auto operator+=(ChoiceS& choices, Choice&& newchoice) → ChoiceS&
- Convenience ChoiceS construciton helper.
- auto parameter_guess_nick(const String& parameter_label) → String
- Create a few letter nick name from a multi word parameter label.
- auto posix_locale_strtold(const char* nptr, char** endptr) → long double
- Parse a double from a string ala strtod(), trying locale specific characters and POSIX/C formatting.
-
template <class... Args>void printerr(const char* format, const Args&... args)
- Print a message on stderr (and flush stderr) ala printf(), using the POSIX/C locale.
-
template <class... Args>void printout(const char* format, const Args&... args)
- Print a message on stdout (and flush stdout) ala printf(), using the POSIX/C locale.
- auto program_alias() → String
- Retrieve the program name as used for logging or debug messages.
- void program_alias_init(String customname)
- Set program_alias to a non-localized alias other than program_argv0 if desired.
- auto program_cwd() → String
- The current working directory during startup.
- auto random_float() → double
- auto random_frange(double begin, double end) → double
- auto random_int64() → uint64_t
- auto random_irange(int64_t begin, int64_t end) → int64_t
- auto random_nonce() → uint64_t
- Provide a unique 64 bit identifier that is not 0, see also random_
int64(). - void random_secret(uint64_t* secret_var)
- Generate a secret non-zero nonce in secret_var, unless it has already been assigned.
-
template <typename T>auto register_audio_processor(const char* aseid = nullptr) → CString
- Add an AudioProcessor derived type to the audio processor registry.
- auto register_driver_loader(const char* staticwhat, Error(*)() loader) → bool*
- Register loader callbacks at static constructor time.
- auto sched_fast_priority(int tid) → bool
- Try to acquire low latency scheduling priority, returns true if nice level is < 0.
- auto sched_get_priority(int tid) → int
- Retrieve the nice level of process or thread
tid
. - auto sched_set_priority(int tid, int nicelevel) → bool
- Try to set the nice level of process or thread
tid
tonicelevel
. - void sha3_224_hash(const void* data, size_t data_length, uint8_t hashvalue[28])
- Calculate 224 bit SHA3 digest from data, see also class SHA3_
224. - void sha3_256_hash(const void* data, size_t data_length, uint8_t hashvalue[32])
- Calculate 256 bit SHA3 digest from data, see also class SHA3_
256. - void sha3_384_hash(const void* data, size_t data_length, uint8_t hashvalue[48])
- Calculate 384 bit SHA3 digest from data, see also class SHA3_
384. - void sha3_512_hash(const void* data, size_t data_length, uint8_t hashvalue[64])
- Calculate 512 bit SHA3 digest from data, see also class SHA3_
512. - void shake128_hash(const void* data, size_t data_length, uint8_t* hashvalues, size_t n)
- Calculate SHA3 extendable output digest for 128 bit security strength, see also class SHAKE128.
- void shake256_hash(const void* data, size_t data_length, uint8_t* hashvalues, size_t n)
- Calculate SHA3 extendable output digest for 256 bit security strength, see also class SHAKE256.
-
template <class Target, class Source>auto shared_ptr_cast(Source* object) → std::
shared_ptr<typename std:: remove_pointer<Target>::type> -
template <class Target, class Source>auto shared_ptr_cast(const Source* object) → const std::
shared_ptr<typename std:: remove_pointer<Target>::type> - See shared_
ptr_ cast(Source*). -
template <class Target, class Source>auto shared_ptr_cast(std::
shared_ptr<Source>& sptr) → std:: shared_ptr<typename std:: remove_pointer<Target>::type> - See shared_
ptr_ cast(Source*). -
template <class Target, class Source>auto shared_ptr_cast(const std::
shared_ptr<Source>& sptr) → const std:: shared_ptr<typename std:: remove_pointer<Target>::type> - See shared_
ptr_ cast(Source*). -
template <class Source>auto shared_ptr_from(Source* object) → std::
shared_ptr<typename std:: remove_pointer<Source>::type> - Use
shared_ptr_cast<>()
to convert an object pointer into ashared_ptr<>
. - auto square_max(uint n_values, const float* ivalues) → float
- Find the maximum suqared value in a block of floats.
- auto square_sum(uint n_values, const float* ivalues) → float
- Calculate suqare sum of a block of floats.
- auto strerror(int errno_num) → const char*
- Get POSIX locale strerror.
- auto string_canonify(const String& string, const String& valid_chars, const String& substitute) → String
- auto string_capitalize(const String& str, size_t maxn, bool rest_tolower) → String
- Capitalize words, so the first letter is upper case, the rest lower case.
- auto string_casecmp(const String& s1, const String& s2) → int
- Like strcasecmp(3) for UTF-8 strings.
- auto string_casefold(const String& src) → String
- Yield UTF-8 string useful for case insensitive comparisons.
- auto string_cmp(const String& s1, const String& s2) → int
- Like strcmp(3) for UTF-8 strings.
- auto string_cmp_uuid(const String& uuid_string1, const String& uuid_string2) → int
- Returns whether uuid_string1 compares smaller (-1), equal (0) or greater (+1) to uuid_string2.
- auto string_demangle_cxx(const char* mangled_identifier) → const char* noexcept
- Demangle identifier via libcc.
- auto string_endswith(const String& string, const String& fragment) → bool
- Returns whether
string
ends withfragment
. - auto string_endswith(const String& string, const StringS& fragments) → bool
- Returns whether string ends with any element of
fragments
. - auto string_find_word(const char* haystack, const char* word) → const char*
- Find occurance of
word
inhaystack
. -
template <class... Args>auto string_format(const char* format, const Args&... args) → ASE_NOINLINE String
- Formatted printing ala printf() into a String, using the POSIX/C locale.
- auto string_from_bool(bool value) → String
- Convert a boolean value into a string.
- auto string_from_cquote(const String& input) → String
- Parse a possibly quoted C string into regular string.
- auto string_from_double(double value) → String
- Convert a double into a string, using the POSIX/C locale.
-
auto string_from_double_vector(const std::
vector<double>& dvec, const String& delim) → String - Construct a string out of all double values passed in dvec, separated by delim.
- auto string_from_errno(int errno_val) → String
- Returns a String describing the passed in errno value, similar to strerror().
- auto string_from_float(float value) → String
- Convert a float into a string, using the POSIX/C locale.
- auto string_from_int(int64 value) → String
- Convert a 64bit signed integer into a string.
- auto string_from_long_double(long double value) → String
- Convert a long double into a string, using the POSIX/C locale.
- auto string_from_pretty_function_name(const char* cxx_pretty_function) → String
-
template <typename Type>auto string_from_type(Type value) → String
- Create a string from a templated argument value, such as bool, int, double.
- auto string_from_uint(uint64 value) → String
- Convert a 64bit unsigned integer into a string.
- auto string_has_int(const String& string) → bool
- Checks if a string contains a digit, optionally preceeded by whitespaces.
- auto string_hexdump(const void* addr, size_t length, size_t initial_offset) → String
- auto string_is_canonified(const String& string, const String& valid_chars) → bool
- Check if string_
canonify() would modify string. - auto string_is_ncname(const String& input) → bool
- auto string_is_uuid(const String& uuid_string) → bool
- Returns whether uuid_string contains a properly formatted UUID string.
- auto string_islower(const String& str) → bool
- Check if all string characters are Unicode lower case characters.
- auto string_isupper(const String& str) → bool
- Check if all string characters are Unicode upper case characters.
- auto string_join(const String& junctor, const StringS& strvec) → String
-
template <class... Args>auto string_locale_format(const char* format, const Args&... args) → ASE_NOINLINE String
- Formatted printing ala printf() into a String, using the current locale.
-
auto string_locale_vprintf(const char* format,
va_
list vargs) → String - Formatted printing like string_vprintf using the current locale.
- auto string_lstrip(const String& input) → String
- Strip whitespaces from the left of a string.
- auto string_match_identifier(const String& ident1, const String& ident2) → bool
- Check equality of strings canonicalized to "[0-9a-z_]+".
- auto string_match_identifier_tail(const String& ident, const String& tail) → bool
- Variant of string_
match_ identifier() that matches tail against ident at word boundary. - auto string_multiply(const String& s, uint64 count) → String
- Reproduce a string s for count times.
- auto string_normalize_nfc(const String& src) → String
- Yield normalized composed UTF-8 string.
- auto string_normalize_nfd(const String& src) → String
- Yield normalized decomposed UTF-8 string.
- auto string_normalize_nfkc(const String& src) → String
- Formatting stripped normalized composed UTF-8 string.
- auto string_normalize_nfkd(const String& src) → String
- Formatting stripped normalized decomposed UTF-8 string.
- auto string_option_check(const String& optionlist, const String& feature) → bool
- Check if an option is set/unset in an options list string.
- auto string_option_find(const String& optionlist, const String& feature, const String& fallback) → String
- Retrieve the option value from an options list separated by ':' or ';' or
fallback
. -
auto string_option_find_value(const char* string,
const char* feature,
const String& fallback,
const String& denied,
bool matchallnone) → std::
string_view - Low level option search, avoids dynamic allocations.
- auto string_replace(const String& input, const String& marker, const String& replacement, size_t maxn) → String
- Replace substring marker in input with replacement, at most maxn times.
- auto string_rstrip(const String& input) → String
- Strip whitespaces from the right of a string.
- auto string_set_A2Z() → const String&
- Returns a string containing all of A-Z.
- auto string_set_a2z() → const String&
- Returns a string containing all of a-z.
- auto string_set_ascii_alnum() → const String&
- Returns a string containing all of 0-9, A-Z and a-z.
- auto string_split(const String& string, const String& splitter, size_t maxn) → StringS
- auto string_split_any(const String& string, const String& splitchars, size_t maxn) → StringS
- auto string_startswith(const String& string, const String& fragment) → bool
- Returns whether
string
starts withfragment
. - auto string_startswith(const String& string, const StringS& fragments) → bool
- Returns whether string starts with any element of
fragments
. - auto string_strip(const String& input) → String
- Strip whitespaces from the left and right of a string.
- auto string_substitute_char(const String& input, const char match, const char subst) → String
- Replace all occouranes of match in input with subst.
- auto string_to_bool(const String& string, bool fallback) → bool
- auto string_to_cescape(const String& str) → String
- auto string_to_cquote(const String& str) → String
- Returns a string as C string including double quotes.
- auto string_to_double(const String& string) → double
- Parse a double from a string, trying locale specific characters and POSIX/C formatting.
- auto string_to_double(const char* dblstring, const char** endptr) → double
- Similar to string_
to_ double(const String&), but returns the first failing character position in endptr. -
auto string_to_double_vector(const String& string) → std::
vector<double> - Parse a string into a list of doubles, expects ';' as delimiter.
- auto string_to_hex(const String& input) → String
- Convert bytes in string
input
to hexadecimal numbers. - auto string_to_identifier(const String& input) → String
- Force lower case, alphanumerics + underscore and non-digit start.
- auto string_to_int(const String& string, size_t* consumed, uint base) → int64
- Parse a string into a 64bit integer, optionally specifying the expected number base.
- auto string_to_long_double(const String& string) → long double
- Parse a long double from a string, trying locale specific characters and POSIX/C formatting.
- auto string_to_long_double(const char* dblstring, const char** endptr) → long double
- Similar to string_
to_ long_ double(const String&), but returns the first failing character position in endptr. - auto string_to_ncname(const String& input, uint32_t substitute) → String
- auto string_to_seconds(const String& string, double fallback) → double
- Parse string into seconds.
-
template <typename Type>auto string_to_type(const String& string) → Type
- Convert a string to template argument type, such as bool, int, double.
- auto string_to_uint(const String& string, size_t* consumed, uint base) → uint64
- Parse a string into a 64bit unsigned integer, optionally specifying the expected number base.
- auto string_tolower(const String& str) → String
- Convert all string characters into Unicode lower case characters.
- auto string_totitle(const String& str) → String
- Convert all string characters into Unicode title characters.
- auto string_toupper(const String& str) → String
- Convert all string characters into Unicode upper case characters.
- auto string_url_decode(const String& urlstr, const bool form_url_encoded) → String
- Decode URL %-sequences in a string, decode '+' if
form_url_encoded
. - auto string_url_encode(const String& rawstr, const bool form_url_encoded) → String
- Encode special characters to URL %-sequences, encode space as '+' if
form_url_encoded
. - void string_vector_erase_empty(StringS& svector)
- Remove empty elements from a string vector.
- auto string_vector_find(const StringS& svector, const String& prefix, const String& fallback) → String
- auto string_vector_find_value(const StringS& svector, const String& prefix, const String& fallback) → String
- void string_vector_lstrip(StringS& svector)
- Left-strip all elements of a string vector, see string_
lstrip(). - void string_vector_rstrip(StringS& svector)
- Right-strip all elements of a string vector, see string_
rstrip(). - void string_vector_strip(StringS& svector)
- Strip all elements of a string vector, see string_
strip(). -
auto string_vprintf(const char* format,
va_
list vargs) → String - Formatted printing ala vprintf() into a String, using the POSIX/C locale.
- auto text_convert(const String& to_charset, String& output_string, const String& from_charset, const String& input_string, const String& fallback_charset, const String& output_mark) → bool
- auto timestamp_benchmark() → uint64
- Returns benchmark timestamp in nano-seconds, clock starts around program startup.
- auto timestamp_format(uint64 stamp, uint maxlength) → String
- Convert stamp into a string, adding µsecond fractions if space permits.
- auto timestamp_realtime() → uint64
- Return the current time as uint64 in µseconds.
- auto timestamp_resolution() → uint64
- Provide resolution of timestamp_
benchmark() in nano-seconds. - auto timestamp_startup() → uint64
- Provides the timestamp_
realtime() value from program startup. - auto uint16_swap_le_be(uint16_t v) → uint16_t constexpr
- Swap 16-Bit integers between __BIG_ENDIAN and __LITTLE_ENDIAN systems.
- auto uint32_swap_le_be(uint32_t v) → uint32_t constexpr
- Swap 32-Bit integers between __BIG_ENDIAN and __LITTLE_ENDIAN systems.
- auto uint64_swap_le_be(uint64_t v) → uint64_t constexpr
- Swap 64-Bit integers between __BIG_ENDIAN and __LITTLE_ENDIAN systems.
- auto unicode_is_assigned(uint32_t u) → bool constexpr
- Return whether u matches any of the assigned Unicode planes.
- auto unicode_is_character(uint32_t u) → bool constexpr
- Return whether u is not one of the 66 Unicode noncharacters.
- auto unicode_is_control_code(uint32_t u) → bool constexpr
- Return whether u is one of the 65 Unicode control codes.
- auto unicode_is_noncharacter(uint32_t u) → bool constexpr
- Return whether u is one of the 66 Unicode noncharacters.
- auto unicode_is_private(uint32_t u) → bool constexpr
- Return whether u is in one of the 3 private use areas of Unicode.
- auto unicode_is_valid(uint32_t u) → bool constexpr
- Return whether u is an allowed Unicode codepoint within 0x10FFFF and not part of a UTF-16 surrogate pair.
- auto utf8_to_unicode(const char* str, uint32_t* codepoints) → size_t
-
auto utf8_to_unicode(const std::
string& str, std:: vector<uint32_t>& codepoints) → size_t -
auto utf8decode(const std::
string& utf8str) → std:: vector<uint32_t> - Convert valid UTF-8 sequences to Unicode codepoints, invalid sequences are treated as Latin-1 characters.
-
auto utf8encode(const uint32_t* codepoints,
size_t n_codepoints) → std::
string - Convert codepoints into an UTF-8 string, using the shortest possible encoding.
-
auto utf8encode(const std::
vector<uint32_t>& codepoints) → std:: string - Convert codepoints into an UTF-8 string, using the shortest possible encoding.
- auto utf8len(const char* str) → size_t
- Count valid UTF-8 sequences, invalid sequences are counted as Latin-1 characters.
-
auto utf8len(const std::
string& str) → size_t - Count valid UTF-8 sequences, invalid sequences are counted as Latin-1 characters.
- auto value2hz(float x) ASE_CONST -> float
- Convert synthesizer value (Voltage) to Hertz.
-
template <typename Float>auto voltage2db(Float x) → Float
- Convert synthesizer value (Voltage) to Decibel.
-
template <typename Float>auto voltage2db(Float x) → ASE_CONST Float
- Convert synthesizer value (Voltage) to Decibel.
-
template <typename Float>auto voltage2hz(Float x) → Float
- Convert synthesizer value (Voltage) to Hertz.
-
template <typename Float>auto voltage2hz(Float x) → ASE_CONST Float
- Convert synthesizer value (Voltage) to Hertz.
-
template <typename Float>auto voltage_changed(Float a, Float b) → Float
- Determine a significant synthesizer value (Voltage) change.
-
template <typename Float>auto voltage_changed(Float a, Float b) → ASE_CONST Float
- Determine a significant synthesizer value (Voltage) change.
-
template <class ... Args>void warning(const char* format, const Args&... args)
- Issue a printf-like warning message.
-
template <class C>auto weak_ptr_fetch_or_create(std::
weak_ptr<C>& wptr, const std:: function<std:: shared_ptr<C>()>& ctor) → std:: shared_ptr<C> - Fetch
shared_ptr
fromwptr
and createC
withctor
if needed. - auto zintern_decompress(unsigned int decompressed_size, const unsigned char* cdata, unsigned int cdata_size) → uint8*
- void zintern_free(uint8* dc_data)
- Free data returned from zintern_
decompress().
Variables
- constuint AUDIO_BLOCK_FLOAT_ZEROS_SIZE constexpr
- Maximum number of values in the const_float_zeros block.
- const double DOUBLE_EPSILON constexpr
- Double round-off error at 1.0, equals 2^-53.
- const char GUIONLY constexpr
- GUI READABLE WRITABLE.
- constuint MIDI_NOTE_ID_FIRST constexpr
- First (internal) MIDI note event ID (lower IDs are reserved for external notes).
- constuint MIDI_NOTE_ID_LAST constexpr
- Last valid (internal) MIDI note event ID.
- const char STANDARD constexpr
- STORAGE GUI READABLE WRITABLE.
- const char STORAGE constexpr
- STORAGE READABLE WRITABLE.
- constint64 TRANSPORT_PPQN constexpr
- Maximum number of sample frames to calculate in Processor::render().
- bool ase_debugging_enabled
- Global boolean to reduce debugging penalty where possible.
- bool ase_fatal_warnings
- Global boolean to cause the program to abort on warnings.
- bool assertion_failed_fatal
- Global flag to force aborting on assertion warnings.
- uint64_t cached_hash_secret
- Use hash_secret() for access.
- const float*const cent_table
- Finetune factor table with 201 entries for
-100…0…+100
cent. - float const_float_zeros
- Block of const floats allof value 0.
- JobQueue main_jobs
- Execute a job callback in the Ase main loop.
- RtJobQueue main_rt_jobs
- Queue a callback for the
main_loop
without invoking malloc(), addition is obstruction free. - const float*const semitone_tables_265
- Musical Tuning Tables, to be indexed by
MusicalTuning
Enum documentation
enum class Ase:: MidiEventType: uint8_t
Type of MIDI Events.
Enumerators | |
---|---|
PARAM_VALUE | |
NOTE_OFF | |
NOTE_ON | |
AFTERTOUCH |
Key Pressure, polyphonic aftertouch. |
CONTROL_CHANGE |
Control Change. |
PROGRAM_CHANGE | |
CHANNEL_PRESSURE |
Channel Aftertouch. |
PITCH_BEND | |
SYSEX |
enum class Ase:: SpeakerArrangement: uint64_t
Flags to indicate channel arrangements of a bus. See also: https://en.wikipedia.org/wiki/Surround_
Enumerators | |
---|---|
NONE | |
FRONT_LEFT |
Stereo Left (FL) |
FRONT_RIGHT |
Stereo Right (FR) |
FRONT_CENTER |
(FC) |
LOW_FREQUENCY |
Low Frequency Effects (LFE) |
BACK_LEFT |
(BL) |
BACK_RIGHT |
(BR) |
AUX |
Flag for side chain uses. |
MONO |
Single Channel (M) |
STEREO | |
STEREO_21 | |
STEREO_30 | |
STEREO_31 | |
SURROUND_50 | |
SURROUND_51 |
Function documentation
static bool Ase:: codepoint_is_namestartchar(uint32_t c)
Check c
to be a NameStartChar, according to the QName EBNF. See https:/
static bool Ase:: codepoint_is_ncname(uint32_t c)
Check c
to be a NameChar, according to the QName EBNF. See https:/
template <class Num>
static uint64_t Ase:: fnv1a_consthash64(const Num* ztdata) constexpr
Simple, very fast and well known hash function as constexpr with good dispersion. This is the 64bit version of the well known FNV-1a hash function, implemented as a C++11 constexpr for zero-terminated strings, so the hashes can be used e.g. as case labels in switch statements.
template <std:: size_t LAST, typename MkFun>
static auto Ase:: make_case_table(const MkFun& mkjump)
Create a jump table std::
, where Fun
is returned from mkjump (0 … LAST)
. Note, mkjump(auto)
is a lambda template, invoked with std::
.
template <class Num>
static ASE_CONST uint32_t Ase:: pcg_hash32(const Num* data,
size_t length,
uint64_t seed)
Hash function based on the PCG family of random number generators (RNG). This function is based on the paper [PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation](http:/
template <class Num>
static ASE_CONST uint64_t Ase:: pcg_hash64(const Num* data,
size_t length,
uint64_t seed)
Hash function based on the PCG family of random number generators (RNG). This function is similar to pcg_hash32() at its core, but because the output is 64bit, the accumulated 64bit LCG state does not need to be bit reduced. A fast but statistially good mixing function with 5 xor/shifts and one multiplication is applied as output stage. This function is allmost as fast as fnv1a_consthash64 due to the similar structures of the inner loops, but it tends to score much better in Avalanche effect tests, usch as SMHasher.
template <int CODEPOINT>
static size_t Ase:: utf8character(const char* str,
uint32_t* unicode)
Decode valid UTF-8 sequences, invalid sequences are treated as Latin-1 characters.
- CODEPOINT=0: The return value indicates the number of bytes forgivingly parsed as a single UTF-8 character.
- CODEPOINT=1: The return value indicates the number of bytes forgivingly parsed as a single UTF-8 character and
*unicode
is assigned. If*unicode
is >= 0x80, a Latin-1 character was encountered. - CODEPOINT=2: Invalid characters are encoded as private code points in the range 0xEF80..0xEFFF, see also: https://en.wikipedia.org/wiki/UTF-8#PEP_
383 - CODEPOINT=3: Validly encoded code points in the range 0xEF80..0xEFFF are also treated as invalid characters and are encoded into 0xEF80..0xEFFF.
void Ase:: assertion_failed(const char* msg,
const char* file,
int line,
const char* func) noexcept
Print instructive message, handle "breakpoint", "backtrace" and "fatal-warnings" in $ASE_DEBUG.
Issue a warning about an assertion error.
std:: string Ase:: backtrace_command()
Find GDB and construct command line.
Command to start external debugger for a backtrace.
void Ase:: collect_runtime_entropy(uint64* data,
size_t n)
Collect entropy from the current process, usually quicker than collect_
To provide good quality random number seeds, this function gathers entropy from a variety of process specific sources. Under Linux, this includes the CPU counters, clocks and random devices. In combination with well established techniques like syscall timings (see Entropics13 Entropics13) and a SHA3 algorithm derived random number generator for the mixing, the entropy collection is designed to be fast and good enough for all non-cryptographic uses. On an Intel Core i7, this function takes around 25µs.
void Ase:: collect_system_entropy(uint64* data,
size_t n)
Collect entropy from system devices, like interrupt counters, clocks and random devices.
This function adds to collect_
String Ase:: cpu_info()
Retrieve string identifying the runtime CPU type.
Returns | Example: "4 AMD64 GenuineIntel FPU TSC HTT CMPXCHG16B MMX MMXEXT SSESYS SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 " |
---|
The returned string contains: number of online CPUs, a string describing the CPU architecture, the vendor and finally a number of flag words describing CPU features plus a trailing space. This allows checks for CPU features via a simple string search for " FEATURE ".
float Ase:: damerau_levenshtein_distance(const std:: string& source,
const std:: string& target,
const float ci,
const float cd,
const float cs,
const float ct)
Damerau-Levenshtein Distance with unrestricted transpositions. Calculate the unrestricted Damerau-Levenshtein string distance with quadratic time complexity and quadratic memory requirement. Memory: 4 * |source|*|target| + constant.
float Ase:: damerau_levenshtein_restricted(const std:: string& source,
const std:: string& target,
const float ci,
const float cd,
const float cs,
const float ct)
Damerau-Levenshtein Distance with restricted transposition. Calculate the restricted Damerau-Levenshtein string distance with quadratic time complexity and linear memory requirement. Memory: 12 * max(|source|,|target|) + constant.
float Ase:: fast_exp2(float x) ASE_CONST
Fast approximation of 2 raised to the power of x
. The parameter x
is the exponent within [-127.0…+127.0]
. Within -1…+1
, the error stays below 4e-7 which corresponds to a sample precision of 21 bit. For integer values of x
(i.e. x - floor (x) → 0
), the error approaches zero. With FMA instructions and -ffast-math
enabled, execution times should be below 10ns on 3GHz machines.
float Ase:: fast_log2(float x) ASE_CONST
Fast approximation of logarithm to base 2. The parameter x
is the exponent within [1.1e-38…2^127]
. Within 1e-7…+1
, the error stays below 3.8e-6 which corresponds to a sample precision of 18 bit. When x
is an exact power of 2, the error approaches zero. With FMA instructions and -ffast-math enabled
, execution times should be below 10ns on 3GHz machines.
template <class ... Args>
void ASE_NORETURN Ase:: fatal_error(const char* format,
const Args&... args)
Issue a printf-like message and abort the program, this function will not return. Avoid using this in library code, aborting may take precious user data with it, library code should instead use warning(), info() or assert_
ASE_CONST int Ase:: irintf(float f)
Round float to int, using round-to-nearest Fast version of f < 0 ? int (f - 0.5) : int (f + 0.5)
.
template <class... A>
void Ase:: loginf(const char* format,
const A&... args) ASE_PRINTF(1
Write a string_format() message to the log file (or possibly stderr), using the POSIX/C locale.
Log info to logfile (and stderr for some configs)
String Ase:: parameter_guess_nick(const String& parameter_label)
Create a few letter nick name from a multi word parameter label.
Find a suitable 3-letter abbreviation for a Parameter without nick.
double Ase:: random_float()
Generate uniformly distributed pseudo-random floating point number. This function generates a pseudo-random number like random_
double Ase:: random_frange(double begin,
double end)
Generate uniformly distributed pseudo-random floating point number within a range. This function generates a pseudo-random number like random_
uint64_t Ase:: random_int64()
Generate a non-deterministic, uniformly distributed 64 bit pseudo-random number. This function generates pseudo-random numbers using the system state as entropy and class KeccakRng for the mixing. No seeding is required.
int64_t Ase:: random_irange(int64_t begin,
int64_t end)
Generate uniformly distributed pseudo-random integer within range. This function generates a pseudo-random number like random_
template <class Target, class Source>
std:: shared_ptr<typename std:: remove_pointer<Target>::type> Ase:: shared_ptr_cast(Source* object)
Returns | A std:: |
---|---|
Exceptions | |
std:: |
if shared_from_this() throws, unless the Target* form is used. |
Shorthand for std::dynamic_pointer_cast<>(shared_from_this()). A shared_
String Ase:: string_canonify(const String& string,
const String& valid_chars,
const String& substitute)
Enforce a canonical charset for a string. Convert all chars in string
that are not listed as valid_chars
with substitute.
const char* Ase:: string_demangle_cxx(const char* mangled_identifier) noexcept
Demangle identifier via libcc.
Demangle a std::typeinfo.name() string into a proper C++ type name. This function uses abi::__cxa_demangle() from <cxxabi.h> to demangle C++ type names, which works for g++, libstdc++, clang++, libc++.
String Ase:: string_from_pretty_function_name(const char* cxx_pretty_function)
Extract the full function name from PRETTY_FUNCTION. See also ASE_SIMPLE_FUNCTION.
String Ase:: string_hexdump(const void* addr,
size_t length,
size_t initial_offset)
Produce hexdump of a memory region. Each output line consists of its hexadecimal offset, 16 hexadecimal bytes and the ASCII representation of the same 16 bytes.
bool Ase:: string_is_ncname(const String& input)
Check input
to be a NCName, according to the QName EBNF. See https:/
String Ase:: string_join(const String& junctor,
const StringS& strvec)
Join a number of strings. Join a string vector into a single string, using junctor inbetween each pair of strings.
StringS Ase:: string_split(const String& string,
const String& splitter,
size_t maxn)
Split a string, using splitter as delimiter. Passing "" as splitter will split the string at whitespace positions.
StringS Ase:: string_split_any(const String& string,
const String& splitchars,
size_t maxn)
Split a string, using any of the splitchars as delimiter. Passing "" as splitter will split the string between all position.
bool Ase:: string_to_bool(const String& string,
bool fallback)
Interpret a string as boolean value. Interpret the string as number, "ON"/"OFF" or distinguish "false"/"true" or "yes"/"no" by starting letter. For empty strings, fallback is returned.
String Ase:: string_to_cescape(const String& str)
Escape text like a C string. Returns a string that escapes all characters with a backslash '\' that need escaping in C language string syntax.
String Ase:: string_to_ncname(const String& input,
uint32_t substitute)
Convert input
to a NCName, according to the QName EBNF. See https:/
String Ase:: string_vector_find(const StringS& svector,
const String& prefix,
const String& fallback)
Returns | fallback if no match was found. |
---|
Search for prefix in svector and return the matching element. If multiple matches are possible, the last one is returned.
String Ase:: string_vector_find_value(const StringS& svector,
const String& prefix,
const String& fallback)
Returns | fallback if no match was found. |
---|
Search for prefix in svector and return reminder of the matching string. If multiple matches are possible, the last one is returned.
bool Ase:: text_convert(const String& to_charset,
String& output_string,
const String& from_charset,
const String& input_string,
const String& fallback_charset,
const String& output_mark)
Convert a string from one encoding to another. Convert input_string from encoding from_charset to to_charset, returning output_string. Interpret unknown characters according to fallback_charset. Use output_mark in place of unconvertible characters. Returns whether the conversion was successful.
size_t Ase:: utf8_to_unicode(const char* str,
uint32_t* codepoints)
Convert valid UTF-8 sequences to Unicode codepoints, invalid sequences are treated as Latin-1 characters. The array codepoints must be able to hold at least as many elements as are characters stored in str. Returns the number of codepoints stored in codepoints.
size_t Ase:: utf8_to_unicode(const std:: string& str,
std:: vector<uint32_t>& codepoints)
Convert valid UTF-8 sequences to Unicode codepoints, invalid sequences are treated as Latin-1 characters. Returns the number of codepoints newly stored in codepoints.
uint8* Ase:: zintern_decompress(unsigned int decompressed_size,
const unsigned char* cdata,
unsigned int cdata_size)
Parameters | |
---|---|
decompressed_size | exact size of the decompressed data to be returned |
cdata | compressed data block |
cdata_size | exact size of the compressed data block |
Returns | decompressed data block or NULL in low memory situations |
Decompress data via zlib.
Decompress the data from cdata of length cdata_size into a newly allocated block of size decompressed_size which is returned. The returned block needs to be released with zintern_