39 _audio_playlist->read (buf, mbuf, gbuf, 0, 256 * 2 - 128, 0);
42 for (
int i = 0; i < 64; ++i) {
43 float const fade = i / (double) 63;
44 float const r0 = i * fade;
45 CPPUNIT_ASSERT_DOUBLES_EQUAL (r0, buf[i], 1e-16);
49 for (
int i = 64; i < 128; ++i) {
50 CPPUNIT_ASSERT_DOUBLES_EQUAL (i, buf[i], 1e-16);
56 _ar[1]->fade_in()->curve().get_vector (0, 128, fade_in, 128);
57 _ar[1]->inverse_fade_in()->curve().get_vector (0, 128, fade_out, 128);
62 for (
int i = 128; i < 256; ++i) {
64 float region_fade_out = 1;
69 region_fade_out = (((double) 1 - 0.0000001) / 63) * (255 - i) + 0.0000001;
75 float r0 = i * region_fade_out;
76 r0 *= fade_out[i - 128];
78 float const r1 = (i - 128) * fade_in[i - 128];
79 CPPUNIT_ASSERT_DOUBLES_EQUAL (r0 + r1, buf[i], 1e-16);
83 for (
int i = 256; i < (384 - 64); ++i) {
84 CPPUNIT_ASSERT_DOUBLES_EQUAL (i - 128, buf[i], 1e-16);
88 for (
int i = (384 - 64); i < 384; ++i) {
89 float const fade_out = (((double) 1 - 0.0000001) / 63) * (383 - i) + 0.0000001;
90 CPPUNIT_ASSERT_DOUBLES_EQUAL ((i - 128) * fade_out, buf[i], 1e-16);
102 _ar[0]->set_default_fade_in ();
103 _ar[0]->set_default_fade_out ();
104 _ar[1]->set_default_fade_out ();
106 _playlist->add_region (_r[0], 0);
107 _r[0]->set_length (256);
109 _playlist->add_region (_r[1], 128);
110 _r[1]->set_length (256);
118 CPPUNIT_ASSERT_EQUAL (
false, _ar[0]->fade_in_is_xfade ());
119 CPPUNIT_ASSERT_EQUAL (
false, _ar[0]->fade_out_is_xfade ());
120 CPPUNIT_ASSERT_EQUAL (
true, _ar[1]->fade_in_is_xfade ());
121 CPPUNIT_ASSERT_EQUAL (
false, _ar[1]->fade_out_is_xfade ());
130 rl.push_back (_r[0]);
131 rl.push_back (_r[1]);
132 _playlist->combine (rl);
135 CPPUNIT_ASSERT_EQUAL ((uint32_t) 1, _playlist->n_regions ());
149 _audio_playlist->read (buf, mbuf, gbuf, 0, 256 * 2 - 128, 0);
152 for (
int i = 0; i < 64; ++i) {
153 float const fade = i / (double) 63;
154 float const r0 = i * fade;
155 CPPUNIT_ASSERT_DOUBLES_EQUAL (r0, buf[i], 1e-16);
159 for (
int i = 64; i < 128; ++i) {
160 CPPUNIT_ASSERT_DOUBLES_EQUAL (i, buf[i], 1e-16);
166 _ar[0]->inverse_fade_out()->curve().get_vector (0, 128, fade_in, 128);
167 _ar[0]->fade_out()->curve().get_vector (0, 128, fade_out, 128);
172 for (
int i = 128; i < 256; ++i) {
174 float region_fade_in = 1;
175 if (i < (128 + 64)) {
176 region_fade_in = (i - 128) / ((
double) 63);
179 float r0 = i * fade_out[i - 128];
180 float r1 = (i - 128) * region_fade_in;
181 r1 *= fade_in[i - 128];
183 CPPUNIT_ASSERT_DOUBLES_EQUAL (r0 + r1, buf[i], 1e-16);
187 for (
int i = 256; i < (384 - 64); ++i) {
188 CPPUNIT_ASSERT_DOUBLES_EQUAL (i - 128, buf[i], 1e-16);
192 for (
int i = (384 - 64); i < 384; ++i) {
193 float const fade_out = (((double) 1 - 0.0000001) / 63) * (383 - i) + 0.0000001;
194 CPPUNIT_ASSERT_DOUBLES_EQUAL ((i - 128) * fade_out, buf[i], 1e-16);
206 _ar[0]->set_default_fade_in ();
207 _ar[0]->set_default_fade_out ();
208 _ar[1]->set_default_fade_out ();
210 _playlist->add_region (_r[0], 0);
211 _r[0]->set_length (256);
213 _playlist->add_region (_r[1], 128);
214 _r[1]->set_length (256);
216 _r[1]->lower_to_bottom ();
224 CPPUNIT_ASSERT_EQUAL (
false, _ar[0]->fade_in_is_xfade ());
225 CPPUNIT_ASSERT_EQUAL (
true, _ar[0]->fade_out_is_xfade ());
226 CPPUNIT_ASSERT_EQUAL (
false, _ar[1]->fade_in_is_xfade ());
227 CPPUNIT_ASSERT_EQUAL (
false, _ar[1]->fade_out_is_xfade ());
236 rl.push_back (_r[0]);
237 rl.push_back (_r[1]);
238 _playlist->combine (rl);
241 CPPUNIT_ASSERT_EQUAL ((uint32_t) 1, _playlist->n_regions ());
LIBARDOUR_API PBD::PropertyDescriptor< layer_t > layer
CPPUNIT_TEST_SUITE_REGISTRATION(CombineRegionsTest)
LIBARDOUR_API PBD::PropertyDescriptor< boost::shared_ptr< AutomationList > > fade_out
LIBARDOUR_API PBD::PropertyDescriptor< boost::shared_ptr< AutomationList > > fade_in
std::list< boost::shared_ptr< Region > > RegionList