1. Future Vibe Check
  2. News

Future Vibe Check News

✨ Dev Log #3 - Chord Progressions in FVC

[p]Unwise, the developer of Future Vibe Check, is toiling through the code and has been making changes from the feedback and bug reports received from the public demo. He wrote some of the changes in the Alpha Demo Post-Mortem talking about the stats and some of the things he learned! It is a great read. [/p][p]
[/p][p]There is a demo available to check out on Steam and if you want to give feedback or see small updates from Unwise, then I would recommend joining the Future Vibe Check Discord![/p][p]
[/p][p]I talked with Unwise about Chord Progressions in Future Vibe Check.[/p][p][/p][p]Hey DJs,[/p][p]Last month we cracked open the Dynamic Measure System—the global metronome that keeps every automation mechanic and music you produce aligned. Today we’re answering the first step of, “Okay, the clock is ticking… but what does the procedural music system decide to play?”[/p][p]The first part of that answer is chord progressions. They’re what give the vibe we create a harmonic backbone. [/p][h2]1 Harmony 101 – Tonic, Sub-D, Dominant[/h2][p]Imagine a song that stays on one chord forever—you’d chill for ten seconds, then beg for change. Chord progressions are that change; they create tension (dominant), release (tonic), and the “in-between” lift (sub-dominant). Almost all modern music relies on chord progressions to drive a song forward. Music theory boils down into three functional “zones” of chords. [/p][p][/p]
[p]Zone[/p]
[p]Chords[/p]
[p]Feeling[/p]
[p]Tonic[/p]
[p]I,iii, vi[/p]
[p]Home base / resolution[/p]
[p]Sub-dominant[/p]
[p]ii, IV[/p]
[p]Tension builder[/p]
[p]Dominant[/p]
[p]V,vii°[/p]
[p]Pulls you back to tonic (home)[/p]
[p]A chord = a set of pitches stacked together (e.g., C-E-G). The specific set of pitches to be used are driven by the key/mode/scale of the music (we will go into what is a “pitch” and key/scale/mode in a later dev log). As a basic understanding, the Key sets the ‘home’ note, scale chooses the legal notes, and mode picks which scale degree feels like home (Ionian, Dorian, etc.)[/p][p][/p][p]What’s with the Roman numerals?
In music theory we name chords by their position inside the scale, not by absolute pitch.[/p][p]C-major scale = C D E F G A B[/p][p]We use numerals so the pattern I–V–vi–IV makes sense in any key (play it in C, G, F-sharp—doesn’t matter). FVC stores the degree (the number) and converts it to actual pitches only after it knows the current key/scale/mode. [/p][p]A classic pop loop C → G → Am → F is literally Tonic → Dominant → Tonic (relative) → Sub-dominant—motion that feels inevitable.[/p][p]Great songs juggle these zones to create motion in a piece of music. FVC’s generator uses the same underlying music theory but allows for more player control and modification in real-time. [/p][p][/p][h2]2 Under the Hood – The Progression Machine[/h2][p]Below is a slice of the actual generator (simplified for sanity):[/p][p][color]// For each slot in a 4-chord progression...[/color][/p][p][color]for (int i = 0; i < 4; i++)[/color][/p][p][color]{ // 1) Pick which zone we're drawing from switch (i) {[/color][/p][p][color]        case 0: currentPool = Roll(Data.TonicInfluence)        ? Tonic : SubD; break;[/color][/p][p][color]        case 1: currentPool = Roll(Data.SubdominantInfluence)  ? SubD  : Tonic; break;[/color][/p][p][color]        case 2: currentPool = Roll(Data.SubdominantInfluence)  ? SubD  : Dominant; break;[/color][/p][p]        [color]case 3: currentPool = Roll(Data.DominantInfluence)     ? Dominant :[/color][/p][p][color]                              Roll(Data.SubdominantInfluence)  ? SubD    : Tonic; break}[/color][/p][p][color]    // 2) Probability to apply a tritone substitution for jazzy colour[/color][/p][p][color]    int triTone = (currentPool == Dominant && Roll(Data.TritoneSubInfluence)) ? -1 : 1;[/color][/p][p][color]    // 3) Pick a step from the pool, honouring key-change safety checks[/color][/p][p][color]    progression(i) = triTone * PickSafeStep(currentPool, mode, scale, keyChange);}[/color][/p][p]
Design take-aways:[/p]
  • [p]Weighted randomness: All those [color]Data.*Influence[/color] numbers are tweakable in real-time. And, since we use scale degrees, the generator just rolls [1, 5, 6, 4]; looks at our key/scale to say, “We’re in A-minor Dorian,” where then we can easily map those numbers onto the A-minor Dorian scale and voilà—correct chords without rewriting any progression logic. Crank Dominant Influence and your loop gets spicier; lower it for chill lo-fi vibes. [/p]
  • [p]Key-change aware: [color]PickSafeStep[/color] avoids steps that clash when a key change is scheduled, so the musical turn feels intentional instead of broken.[/p]
  • [p]Tritone substitutions: Occasionally flipping  V chord ► bII chord injects that classic jazz surprise without derailing the groove.[/p]
[h2]From Code to Gameplay[/h2][p]Every Dynamic Measure boundary we call GenerateNewProgression() to generate a new array of chords to build around as a progression. This progression is then used to drive other musical behavior in the composition and has its own length (connected to the time signature), repeat cycle, and rate of progression (how long does it take to get the first chord to the 2nd chord of the progression). We allow the player to determine these values like the speed of how long a progression will last. Fun fact - this ties into the day/night cycle of the game when you rebuild the progression shrine. Night marks the end of a chord progression while daytime marks the beginning of one[/p]
  • [p]Nodes React, Players Hear

    [/p]
    • [p]Expressiveness: [/p]
      • [p]UI elements expose Tonic / Sub-D / Dominant influence, Key Change Odds, Progression Rate, Max Repeats, and probability to repeat when a progression ends. [/p]
      • [p]This allows Expert players to handpick progressions for predictable songwriting while newcomers can modify probabilities to see what progression types feel ‘right’ to them. Tweaking a few percentages nudges the soundtrack from EDM to jazz-fusion without rewriting a single note.[/p]
    • [p]Music Coherence: When a signal lands on a Node, it queries [color]CurrentChordProgression[ProgressionStep][/color] to decide pitch values to emit. We will go through this logic in an upcoming blog post. This allows everything you play to tie back to the harmonic core of the chord progression. [/p]
[p][/p][hr][/hr][h2]4 Next Up[/h2][p]Next dev log we dive into melody—how FVC’s generators riff over these progressions and how you can bend them to your will with in-game tooling.[/p][p]Until then, keep those vibes in check and—if you haven’t already—[/p][p][Wishlist Future Vibe Check on Steam] and hop into the Discord for behind-the-scenes chats![/p][p]Peace, love, and perfect cadences – Unwise 🎧[/p]

✨ Alpha Demo Update #1 – June 2025

[h3][/h3][p][/p][h3]The overall reception to our alpha demo has been awesome! We launched our first demo update today that addresses much of the initial incoming feedback. See below for more![/h3][p][/p][h2]Obtrusive Tooltips - Fixed (mentioned by 32 players)[/h2]
  • [p]Pain Point: Our old tooltip system blocked the view when placing factories, especially when zoomed out. It was based on the concept of having inputs near the center of the screen, which proved to be a bad UX rule to follow for FVC. [/p]
  • [p]Fix: We moved the tooltips to join the rest of our HUD on the bottom panel and improved the layout so it never blocks the player's selection or placement process. [/p][carousel][/carousel]
[h2]Placement and Belts - Fixed (mentioned by 30 players)[/h2]
  • [p]Pain Point: Players had a tough time placing belts quickly. In addition, they had trouble seeing the path of their belts and struggled with the positioning of certain belt setups.[/p]
  • [p]Fix: We reworked our placement system entirely which now supports[/p]
    • [p]Click-and-hold placement with autogeneration of rectilinear paths, curving, and the ability to place anchors![/p]
    • [p]Indicators that reveal directions of belts and belt neighbors.[/p]
    • [p]Introduction of T-junction belts in input and output positions.[/p]
    • [p]Pipette tool to quickly place objects, hotkeys to open building categories, and drag-to-delete options.[/p]
    [p][/p]
[h2]I/O Indicators - Fixed (mentioned by 24 players)[/h2]
  • [p]Pain Point: Players had a tough time knowing which direction would input into a factory and which one would be an output. [/p]
  • [p]Fix: We built a custom indicator shader that shows this information on placement and on hover that pulses to the tempo of your music! Now you can FLOW easily! [/p]
[carousel][/carousel][h2]Tutorialization Flow - Fixed (mentioned by 18 players)[/h2]
  • [p]Pain Point: Players felt that the tutorial and the tutorial screen system were excessive and constantly interrupted the player as it took up the whole screen and was unskippable. [/p]
  • [p]Fix: We adopted a model of progressive disclosure and a tutorial tab to the main character menu. Now, when a quest pops up the player can solve it but if they take longer than expected to complete a tutorial task, a tutorial button will pop up which they can choose to interact with. We have big plans to dramatically improve our tutorial in the July update. [/p][p][/p][p][/p]
[h2]Bugs - Mentioned by 15 players[/h2]
  • [p]Of course, we squashed tons of bugs like menu lock-ups, instrument switching, settings saving, and tons more! [/p]
[h2]New Features [/h2]
  • [p]We also added neat new tools to play around with in CREATIVE mode like a Modulator to control the timing of your music and a Signal Splitter to modify the patterns of different sections of your composition! Check out some of the wild community creations in our discord![/p]
[h2]What’s cooking for the July Update 🔨[/h2]
  • [p]New tutorial path – Reworking the early game crafting loop and tutorial. Our immediate goal here is clarity, not reinvention. We want to shave time off the “aha, I’m making music!” moment while protecting the sandbox depth that testers already love.[/p]
  • [p]More QOL – Improved icons, menus, and tooltips. In addition, we have plans for blueprints and mass selection. [/p]
  • [p]New Music Tools – Arpeggiation, reverse strumming and more! [/p]
[hr][/hr][p]Thanks for building the vibe with us. More soon! You can always access our roadmap or share feedback here. [/p][p]— Unwise & the FVC team 🎛️🎶[/p][p]
[/p]

Dev Log #2: Deep Dive on Procedural-music (Timing)

[p]Hey DJs,

I hope you have been enjoying the Future Vibe Check demo! There have already been amazing creations made by the community! Make sure to make your own vibe in the demo if you haven't had a chance yet. [/p][p][/p][p]Last month, we explained why we junked conveyor-belt sequencing for node networks. Today, we’re zooming in on our Dynamic Measure System—the bit of code that maintains timing across the player’s factory to ensure everything is synced to play at the right time. In one sentence: the Dynamic Measure System is the metronome that everything in FVC marches to—music, machines, and VFX. In one sentence: the Dynamic Measure System is the metronome that everything in FVC marches to—music, machines, and VFX.[/p][h2]What’s a “Dynamic Measure” anyway?[/h2][p]Most games treat music like a playlist: fire a clip, wait, fire the next. In FVC every bar of music is generated in real-time from tiny sixteenth-note steps. A Dynamic Measure is the conductor that:[/p]
  • [p]Maintains the global clock of the music system[/p]
  • [p]Counts sixteenth note steps to support musical progression changes[/p]
  • [p]Broadcasts events so factories and logistics stay in sync[/p]
  • [p]Adapts its own length if you speed-up or slow-down the tempo mid-gameplay.[/p]
[p]Put simply: it’s the glue between design-time music theory and run-time chaos.[/p][h2] Time signature → measure → sixteenth steps – the building blocks[/h2]
[p]Musical term[/p]
[p]Definition[/p]
[p]How FVC uses it[/p]
[p]Time signature[/p]
[p]how many beats fit in one bar and what length a beat is. 4/4 (the pop standard) = “four quarter-note beats per bar.”[/p]
[p]Stored in a TimeSignature class where we manage how many ‘steps per measure’ are in the time signatures we support. All timing maths starts here.[/p]
[p]Measure / bar[/p]
[p]A single “box” of music drawn on staff paper—four beats long in 4/4.[/p]
[p]Our Dynamic Measure treats one bar as a unit of gameplay time. Most musical changes happen at bar boundaries.[/p]
[p]Sixteenth step[/p]
[p]A bar chopped into 16 equal slices (think “rapid metronome clicks”). In 4/4 time, 4 sixteenth notes in 1 beat and 16 in one measure. [/p]
[p]The smallest pulse we schedule. 1 sixteenth = 0.25 beats in 4/4. All factory events snap to these slices. The duration of it is based on the tempo or how many beats per minute. [/p]
[p]
[/p][h2]Sixteenth-Step Timer / OnStepInMeasurePlayed – The Game’s Metronome[/h2][p]Every frame we:[/p]
  1. [p]Subtract deltaTime from SixteenthStepTimer. Unity can’t guarantee sub-ms timing, so we re-add the lost microseconds into the next step. This keeps long play-sessions phase-locked—crucial when there are many instruments and half your factory machines triggering off the same clock.[/p]
  2. [p]When the timer hits zero, we fire the current sixteenth step and immediately re-arm the timer to BeatLength / 4 (a sixteenth note).[/p]
  3. [p]If we miss by a hair (because frame-rate isn’t sample-accurate) we carry that drift forward so long-sessions never de-sync.[/p]
[p]Result: Because everyone listens to the same event, animations, craft timings, and logistic movement are connected to the musical timing. Also, whether you’re locked at 240 FPS or dipping to 50 FPS, the timing is maintained. [/p][h2]Measure Bar Boundaries[/h2][p]When SixteenthStepsTaken == StepsPerMeasure we’ve reached the bar-line:[/p]
  • [p]GenerateNewProgression() rolls fresh chord progressions based on more user modifiable variables so the soundtrack evolves. We will take a deep dive on how progressions are made in a future post. [/p]
  • [p]ResetMeasure() zeros all counters while keeping that new progression in mind. [/p]
[p]Why only on the bar line? Musically, key or chord shifts feel natural at the start of a phrase. [/p]
[p]Key Parts[/p]
[p]What it does[/p]
[p]Gameplay impact[/p]
[p]Measure boundary[/p]
[p]Generates a fresh chord progression and zeroes the counters.[/p]
[p]Let the soundtrack evolve based on global settings you can manage on different measure boundaries. Your factories produce music that is temporally appropriate. [/p]
[p]Sixteenth Step playback[/p]
[p]Fires events & visual callbacks every sixteenth step.[/p]
[p]Drives movement, craft timings, and determines time of playback that is synced to the global timer. [/p]
[h2]Putting it all together – the timing chain[/h2][p]Time signature (e.g., 4/4) ➜ defines Beats Per Bar/Measure[/p][p]            ↓[/p][p]Measure = one bar (4 beats)[/p][p]            ↓[/p][p]Measure split into 16 sixteenth steps[/p][p]            ↓[/p][p]BeatLength (tempo) / 4 = real-time seconds per sixteenth step timer[/p][p]            ↓[/p][p]Dynamic Measure counts steps → fires OnStepInMeasurePlayed[/p][p]            ↓[/p][p]At step 16 or when we reach total steps in measure: GenerateNewProgression + ResetMeasure
[/p][p]6. What’s next?[/p][p]Next month we’ll expose more of how the generator determines what to play based on generated chord progressions. Until then, keep the vibes checked ✌️[/p][p][/p][p]Check out the Future Vibe Check demo on Steam and if you enjoy it, consider giving us a wishlist and leaving a review! If you would like to learn more about the game, then join the Future Vibe Check Discord![/p]

Future Vibe Check Demo

Hey DJs,

[h2]It’s time to bring the vibes. Future Vibe Check demo is now available![/h2]

[previewyoutube][/previewyoutube]

Future Vibe Check joined Six One Indie where Buddy took a deep dive into the musical automation game Future Vibe Check where you don't just produce goods but produce music! Summoned by Infinity, you must rebuild reality. The call of endless optimization will be sublimated into sound. Automate the Vibe. Defend the Vibe. Become the Vibe.

Check out the demo here and if you enjoy it, please give us a wishlist
https://store.steampowered.com/app/3724990/Future_Vibe_Check_Demo/

[h2]Demo Contest[/h2]
I want to challenge you to make the best sounding world in the Future Vibe Check demo! Design and create the best sounding world to win a prize! To enter, join the Future Vibe Check Discord and enter your submission there!

- riv otter

Dev Log #1: Why Did We Ditch Belts for Musical Nodes?

[p]Hey DJs,

Last month, we revealed that Akupara Games is publishing our first automation game, Future Vibe Check. [/p][previewyoutube][/previewyoutube][p] I talked with Unwise, the solo developer of Future Vibe Check, about what they have been working on. [/p][p]Hey everyone—Unwise here with a quick peek under the hood of Future Vibe Check. Early prototypes pushed music “items” along conveyor belts to an endpoint to be played. The inspiration at the time were sequencers and tracks in a DAW (desktop audio workstation) where there is a linear progression of time and music is played left > right. This seemed like a great fit with the concept of conveyor belts in automation games. [/p][p] [/p][carousel][/carousel][h2]This worked but there were two things missing. [/h2]
  • [p]Since items moved on a ‘belt’  (similar to a DAW Track) it was hard to modify as music was being played. Music happened to you once parts arrived vs you engaging with the creation at runtime.[/p]
  • [p]The belt based system didn’t communicate music information outside the visual of the item itself which was hard to understand with 100s of items traversing a belt path. This needed to change so that more music information could be understood and visualized. Since items moved on a ‘belt’ (similar to a DAW Track) it was hard to modify as music was being played. Music happened to you once parts arrived vs you engaging with the creation at runtime. The belt based system didn’t communicate music information outside the visual of the item itself which was hard to understand with 100s of items traversing a belt path. This needed to change so that more music information could be understood and visualized. [/p]
[h2]So, we rebuilt the music creation system [/h2][p]into a Node Based Composition system and maintained belts for the crafting loop. [/p]
  • [p]Rhythm = Distance: Players place nodes on a grid and each cell on the grid is a sixteenth-note. Drop a node four cells away and you’ve got a perfect quarter beat. Timing is something you place, not something you scroll through. Players already think in conveyor-belt lengths and tile counts, so binding rhythm to distance means they never leave that spatial reasoning loop. This condenses rhythm and routing into a single view—ideal for quick iteration during gameplay.[/p]
  • [p]Signals, Not Items: Instead of shuttling physical notes, we moved to players creating an abstract “signal” that is sent to their node network and  impacts the music played. That means zero belt congestion and instant branching—perfect for quickly modifying beats. [/p]
  • [p]Probabilistic & Generative: One advantage of thinking in networks is that a signal can fork to any number of nodes; this then makes music creation probabilistic. You become the conductor, tweaking patterns on the fly.The switch turned composition in FVC from a destination into a creative building journey working in concert with the belt based automation loops. [/p]
[p][/p][p]Next month, we will talk about how the music is played once a signal reaches a node by taking a deep dive in our procedural music in FVC. Peace and Love - Unwise[/p][p][/p]