module Haematite

Overview

Haematite is a port of MeltySynth by Sinshu to Crystal. This provides MIDI music playback for Crystal projects with almost no dependencies.

Defined in:

haematite.cr
haematite/audchannel.cr
haematite/audiorenderer.cr
haematite/common.cr
haematite/constants.cr
haematite/dither.cr
haematite/enums.cr
haematite/fakefilter.cr
haematite/generator.cr
haematite/instrument.cr
haematite/lfo.cr
haematite/message.cr
haematite/midifile.cr
haematite/modulationenvelope.cr
haematite/modulator.cr
haematite/musfile.cr
haematite/oscillator.cr
haematite/preset.cr
haematite/regionpair.cr
haematite/sampleheader.cr
haematite/sequencedfile.cr
haematite/sequencer.cr
haematite/soundfont.cr
haematite/soundfontmath.cr
haematite/synthesizer-settings.cr
haematite/synthesizer.cr
haematite/voice.cr
haematite/volumeenvelope.cr
haematite/zone.cr

Constant Summary

DEFAULT_BLOCK_SIZE = 64

The default size of rendered blocks of audio, in bytes.

DEFAULT_CHORUS_INTERPOLATION = RemiAudio::Interpolate::Mode::Cubic

The default interpolation mode for the chorus effect.

DEFAULT_CHORUS_SEND = 0_u8

The default chorus level for a channel.

DEFAULT_ENABLE_CHORUS = true

The default value for enabling the chorus effect.

DEFAULT_ENABLE_PRESET_REMAPPING = true

The default value for enabling preset remapping.

DEFAULT_ENABLE_REVERB = true

The default value for enabling the reverb effect.

DEFAULT_ENABLE_SOFT_CLIPPING = true

The default value for enabling soft clipping.

DEFAULT_ENABLE_STEREO_ENHANCER = false

The default value for enabling the stereo enhancer effect.

DEFAULT_INTERPOLATION_MODE = InterpolationMode::Cubic

The default audio interpolation mode used when rendering audio.

DEFAULT_MAIN_VOLUME = 0.5

The default output volume of the synthesizer.

DEFAULT_MAXIMUM_POLYPHONY = 64

The default maximum number of concurrently playing voices.

DEFAULT_REVERB_MODE = ReverbMode::ZitaSimple

The default reverb type to use.

DEFAULT_REVERB_SEND = 64_u8

The default reverb level for a channel.

DEFAULT_SAMPLE_RATE = 44100

The default output sample rate.

DEFAULT_STEREO_ENHANCEMENT = 0.5

The default stereo enhancer level.

DEFAULT_VOICE_FILTER = FilterMode::Standard

The default type of lowpass filter to use for voices.

MAXIMUM_BLOCK_SIZE = 2048

The maximum supported block size.

MAXIMUM_CHORUS_SEND = 255_u8

The maximum chorus level for a channel.

MAXIMUM_INST_CHORUS_OVERRIDE = 1000

The maximum chorus level for an instrument/preset.

MAXIMUM_INST_REVERB_OVERRIDE = 1000

The maximum reverb level for an instrument/preset.

MAXIMUM_MAIN_VOLUME = 1.0

The maximum output volume of the synthesizer.

MAXIMUM_POLYPHONY = 256

The highest supported polyphony.

MAXIMUM_REVERB_SEND = 255_u8

The maximum reverb level for a channel.

MAXIMUM_SAMPLE_RATE = 352800

The maximum supported output sample rate.

MAXIMUM_STEREO_ENHANCEMENT = 1.5

The maximum stereo enhancer level.

MINIMUM_BLOCK_SIZE = 8

The minimum supported block size.

MINIMUM_CHORUS_SEND = 0_u8

The minimum chorus level for a channel.

MINIMUM_INST_CHORUS_OVERRIDE = 0

The minimum chorus level for an instrument/preset.

MINIMUM_INST_REVERB_OVERRIDE = 0

The minimum reverb level for an instrument/preset.

MINIMUM_MAIN_VOLUME = 0.001

The minimum output volume of the synthesizer.

MINIMUM_POLYPHONY = 8

The lowest supported polyphony.

MINIMUM_REVERB_SEND = 0_u8

The minimum reverb level for a channel.

MINIMUM_SAMPLE_RATE = 8000

The minimum supported output sample rate.

MINIMUM_STEREO_ENHANCEMENT = 0.0

The minimum stereo enhancer level.

NON_AUDIBLE = 1.0e-3_f32

A sample is considered not to be audible if it is below this.

NON_AUDIBLE_INT16 = (1.0e-3_f32 * 32768).clamp(Int32::MIN, Int32::MAX)

A sample is considered not to be audible if it is below this.

NON_AUDIBLE_INT24 = (1.0e-3_f32 * 8388608).clamp(-8388608, 8388607)

A sample is considered not to be audible if it is below this.

NON_AUDIBLE_INT32 = (1.0e-3_f32 * 2147483648_i64).clamp(Int32::MIN, Int32::MAX)

A sample is considered not to be audible if it is below this.

NON_AUDIBLE_UINT8 = ((1.0e-3_f32 * 128).clamp(Int8::MIN, Int8::MAX)) + 128

A sample is considered not to be audible if it is below this.

VERSION = "0.4.0"

The version of the library.

Class Method Summary

Class Method Detail

def self.arrayPool #