TGViewer
C++ - Reddit C++ - Reddit @r_cpp · 229 subscribers
Post #24630 12
audio-driven logic
auto source_sine = vega.Sine(0.2, 1.0f); // 0.2 Hz slow oscillator

static double last_input = 0.0;
auto logic = vega.Logic([](double input) {
// Arhythmic: true when sine crosses zero AND going positive
bool crossed_zero = (last_input < 0.0) && (input >= 0.0);
last_input = input;
return crossed_zero;
});

source_sine >> logic;

// 3. When logic fires, excite the bell
logic->on_change_to(true, [bell](auto& ctx) {
bell->excite(get_uniform_random(0.5f, 0.9f));
bell->set_fundamental(get_uniform_random(220.0f, 1000.0f));
});

// 4. Graphics (same as before)
auto window = MayaFlux::create_window({ "Audio-Driven Bell", 1280, 720 });
auto points = vega.PointCollectionNode(500) | Graphics;
auto geom = vega.GeometryBuffer(points) | Graphics;

geom->setup_rendering({ .target_window = window });
window->show();

// 5. Visualize: points grow when bell strikes (when logic fires)
MayaFlux::schedule_metro(0.016, [points]() {
static float angle = 0.0f;
static float radius = 0.0f;

if (last_input != 0) {
angle += 0.5f; // Quick burst on strike
radius += 0.002f;
} else {
angle += 0.01f; // Slow growth otherwise
radius += 0.0001f;
}

if (radius > 1.0f) {
radius = 0.0f;
points->clear_points();
}

float x = std::cos(angle) * radius;
float y = std::sin(angle) * radius * (16.0f / 9.0f);
float brightness = 1.0f - (radius * 0.7f);

points->add_point(Nodes::GpuSync::PointVertex {
.position = glm::vec3(x, y, 0.0f),
.color = glm::vec3(brightness, brightness * 0.8f, 1.0f),
.size = 8.0f + radius * 4.0f });
});
}
```

https://redd.it/1q1uuok
@r_cpp
Reddit From the cpp community on Reddit Explore this post and more from the cpp community
More from @r_cpp
  1. Oct 8, 2026Profiles for simplicity and guarantees - Bjarne Stroustrup - CppCon 2026 https://youtu.be/…
  2. Oct 8, 2026How to Fix autoconf-style Configuration Probing https://build2.org/blog/fix-autoconf.xhtml…
  3. Oct 8, 2026owl – a header-only C++23 HTTP framework where route patterns and handler extractors are c…
  4. Oct 8, 2026Removed by Reddit Removed by Reddit on account of violating the [content policy. ] https:/…
  5. Oct 8, 2026Is there a way to search across all P and N papers throughout standardization history? It…
  6. Oct 8, 2026CppCast Episode 412 : Safety and Interoperability with Rust and C++ https://cppcast.com/sa…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →