Tabula Sonora 0.1.0
A native C++20 implementation of the Roland Sound Canvas VA synth voice
Loading...
Searching...
No Matches
ts::RenderOptions Struct Reference

How a sequence should be rendered. More...

#include <tabulasonora/render_options.hpp>

Public Member Functions

int effective_drum_map_row () const noexcept
 The row this actually resolves to.

Public Attributes

ToneMap map = ToneMap::sc8820
 Which vintage's tone map program changes resolve against.
double tail_seconds = 2.2
 Time to render past the last note.
double output_gain = 1.0
 Linear gain applied to the finished mix.
int drum_channel = 9
 MIDI channel routed to the drum path.
std::optional< int > drum_map_row
 Drum map row, or nothing to take the row the vintage selects.
bool reverb = true
bool chorus = true
bool delay = true
bool efx = true
std::optional< int > reverb_type
 Force an effect type instead of taking it from the stream.
std::optional< int > chorus_type
std::optional< int > delay_type
std::optional< double > end_seconds
 Stop rendering at this many seconds, if given.
const ChannelMaskchannels = nullptr
 Per-channel mute and solo, or nothing for everything audible.

Detailed Description

How a sequence should be rendered.

Member Function Documentation

◆ effective_drum_map_row()

int ts::RenderOptions::effective_drum_map_row ( ) const
inlinenodiscardnoexcept

The row this actually resolves to.

Member Data Documentation

◆ map

ToneMap ts::RenderOptions::map = ToneMap::sc8820

Which vintage's tone map program changes resolve against.

◆ tail_seconds

double ts::RenderOptions::tail_seconds = 2.2

Time to render past the last note.

◆ output_gain

double ts::RenderOptions::output_gain = 1.0

Linear gain applied to the finished mix.

◆ drum_channel

int ts::RenderOptions::drum_channel = 9

MIDI channel routed to the drum path.

◆ drum_map_row

std::optional<int> ts::RenderOptions::drum_map_row

Drum map row, or nothing to take the row the vintage selects.

Nothing in a MIDI file can reach this: the module picks it from the part's internal bank code, and that translation is not reversed. Both renderers take it, and they must, or one file would render as two different arrangements.

◆ reverb

bool ts::RenderOptions::reverb = true

◆ chorus

bool ts::RenderOptions::chorus = true

◆ delay

bool ts::RenderOptions::delay = true

◆ efx

bool ts::RenderOptions::efx = true

◆ reverb_type

std::optional<int> ts::RenderOptions::reverb_type

Force an effect type instead of taking it from the stream.

◆ chorus_type

std::optional<int> ts::RenderOptions::chorus_type

◆ delay_type

std::optional<int> ts::RenderOptions::delay_type

◆ end_seconds

std::optional<double> ts::RenderOptions::end_seconds

Stop rendering at this many seconds, if given.

◆ channels

const ChannelMask* ts::RenderOptions::channels = nullptr

Per-channel mute and solo, or nothing for everything audible.


The documentation for this struct was generated from the following file: