Releases: yakuda-stack/Dream-VoiceTraining
Release list
v1.1.5: spectrogram fix and folder settings
[1.1.5] — 2026-09-09
Added
- Folder names can be built from parts, like file names. Subfolder →
From parts … offers calendar week, week span (07.09-13.09), date, year,
month, day and free text, tickable and reorderable, joined with spaces —
folders may hold those, file names here may not.KW37 07.09-13.09 Voice Trainingis what the default selection plus a word of your own produces,
which is how such folders usually get made by hand. The fixed periods stay
where they were; picking one changes nothing about how it behaves. - A Day name part. With Month now contributing only the month, year,
month and day can be ticked separately and add up to what Date gives in
one piece.
Fixed
- The detail spectrogram stays sharp when you zoom in. It was computed
once at the width of the chart, so zooming stretched a handful of columns
into blocks. Both charts are now redrawn for whatever stretch of time is on
screen. The spectrogram gets the same number of columns over less time, and
its analysis window shrinks with the view — 1024 samples is 64 ms at 16 kHz,
so at a 25 ms zoom every column used to see almost the same piece of audio
and the picture turned into horizontal streaks. Below roughly a tenth of a
second you now see the individual glottal pulses. The trade is frequency
resolution, which is exactly the trade you want when zooming in. Brightness
is still derived from the whole recording, so a quiet passage does not
brighten up just because you looked at it closely. The image also sits where
it belongs now: the first column starts half a window in, and that offset
used to be ignored. - The waveform above it is redrawn from the samples themselves. Its
envelope had 2400 points for the whole recording — one every 2.5 ms in a
six-second take, which at high zoom left a staircase with no relation to the
signal. A narrow view now plots one point per sample. - The spectrogram comes back at the height it left. Both charts in the
advanced area now have fixed stretch factors; without them Qt redistributed
the space by size hints and the chart returned smaller or larger than
before.
v1.1.4 picture fix
[1.1.4] — 2026-09-09
Fixed
- The tutorial looks for its screenshots in more places, and says so when it
finds none. It searched next topaths.pyand under/usr/shareonly.
That misses two real cases: the launcher being a symlink, since.resolve()
follows it out of the folder the files actually live in, and the Arch
package, which installs them under/usr/lib/dream-voicetraining. Both are
covered now, along with the directory of the launched script and the working
directory. A miss is written to the debug log with every path it tried, and
the diagnostics show where the screenshots were found — a page without
pictures is no longer a guessing game.
v1.1.3 UX
[1.1.3] — 2026-09-09
Added
- A spectrogram in the detail window. Advanced now shows one under the
waveform, on the same time axis, so every moment sits at the same place in
both. The selection can be dragged in either of them — a spot you recognise
by its formants no longer has to be found in the waveform first. A checkbox
next to the range switches it off. The contrast comes from the recording
itself rather than from fixed limits, so a quiet take is not simply black. - Import existing recordings. Import … on the Sessions tab takes WAV
files from anywhere on disk, analyses them and files them like any other
session. Files are copied, never moved — the originals stay where they are.
Each one keeps its own file name, so it shows up in the list under the name
it had on disk; two files of the same name get a number, and a name that
cannot be used at all falls back to the normal scheme. A later move puts
them in the right subfolder without renaming them. You pick one type for the
whole selection and can change it per recording afterwards. Each file keeps
its own sample rate rather than being assumed to match the microphone, which
would put pitch and formants off by exactly that ratio, and its modification
date becomes the recording time, so it lands in the right month folder and
the right place in the list. A file that cannot be read is reported by name
at the end instead of ending the run. - 8, 24 and 32-bit WAV files can be read, not just 16-bit. Files with
floating-point samples still cannot — those have to be converted first, and
the import now says so instead of failing obscurely. - Recording types of your own. Settings → Options now lists every type
and lets you add your own — a warm-up, a passage, whatever you keep coming
back to. They show up in the type picker on the Live tab, in the
right-click menu of the session list and in the detail window, and they can
go into the file name like the built-in ones do. Each gets its short form
once, when it is created, and keeps it: recordings made weeks ago carry that
short form in their file name, so renaming would lose them. Deleting a type
says how many recordings use it and what they will read as afterwards —
their files and values are untouched, but the name behind the type is gone. - Practice texts you can choose between. The field on the Live tab now
sits under a dropdown. The built-in text stays where it was, and anything
you type can be saved under a name of its own — a warm-up, a paragraph from
a newspaper, a passage you keep coming back to. Save as … offers the name
of the entry you are on, so revising one is two clicks; on the built-in text
the field starts empty, and it keeps its own wording. The choice is
remembered, so the same text is up again next time. Switching away from
unsaved changes asks first. - The pitch history reads out under the mouse. Moving the pointer across
Last 30 seconds draws a dashed line at that height with the frequency
next to it, so you can measure off the curve instead of estimating between
the grid lines. The readout follows the line, so it stays put while the
time window scrolls underneath. - Both live charts can be cleared by hand. Right-clicking the pitch
history offers Clear history, the spectrogram Clear spectrogram. Since
neither is wiped on start any more, this is the way to start fresh — after
the third exercise the beginning of the first was still in the picture.
The charts' built-in pyqtgraph menu is gone with it: zoom and axis ranges
are switched off here, so every entry in it was without effect.
Fixed
- A saved design survives a restart again. Colours, background image and
card opacity were written to the configuration correctly, but never read
back: the call that applies them ran before the configuration was loaded and
therefore always saw the empty default, which reset everything to the
preset. The startup sequence now loads first and applies afterwards, and
restoring an empty design is a no-op rather than a reset. - "Whole recording" in the detail window now does something visible. It
only reset the numbers back to the stored ones, so with no analysed
selection in play the button appeared dead. It now opens the selection up
to the entire recording as well, which is what the numbers in the table
refer to. While the waveform has not loaded — or the file is gone — the
button stays disabled instead of pretending.
Changed
- The Month name part is now just the month. It used to contribute the
year as well, so switching on Year and Month together produced
2026_2026-03. It now contributes03, and the year comes from the part
that is named after it. Recordings named under the old scheme are still
recognised as self-generated, so a later move sorts them into folders
instead of leaving them behind. The month subfolder keeps the year —
it also drives the counter reset, and without the year January 2027 would
land in January 2026's folder. - Starting the stream no longer wipes the spectrogram and the pitch
history. Both carry on where the previous run left off, so stopping to
clear your throat no longer costs you the last thirty seconds. The clock
behind the history only advances while the stream is running, so the pause
leaves no gap in the curve.
v1.1.2 changelog and option tab rename folder and data name
[1.1.2] — 2026-09-07
Added
- A tab for how recordings are named. Settings → Options holds the
recording folder and the whole naming scheme in one place, with a live
preview of the next file name and its full path at the very top. It updates
on every change and never consumes a counter number while you try things out. - Subfolders per day, calendar week, month or year — or none at all.
Recordings are filed by their own date, not by the day they were moved. - A file name assembled from parts. Custom text front and back, year,
month, calendar week, date, time of day, recording type and a running
counter. Each part can be switched on and off and dragged into any order by
its grip on the left, with arrow buttons for those who would rather not
drag. Every row shows what it currently contributes, even while switched
off. Parts that come out empty are simply left out. - The preview shows the name in coloured badges, one per part, so it is
obvious which switch produced which piece of the name. It sits in a card of
its own above everything else: the folder small and dim on top, the file
name large below it. - Each part carries its own settings. Time with seconds sits under the
time row, the number of digits and the reset interval under the counter row,
and the two custom text fields are the rows themselves. The settings appear
with their part and disappear with it — choosing seconds while the time is
not in the name at all was a question without an effect. - Fixed: the two buttons that move a part up and down showed a stub of a
dash instead of their arrows. They carried▲and▼all along, but the
side padding every button inherits left two pixels for the glyph and Qt cut
it away. They now use their own narrow style. - Longer explanations live behind a small ⓘ as tooltips instead of standing as
grey paragraphs under every field, and the page is laid out in two columns:
what makes up the name on the left, what happens to files that already exist
on the right. Both together take the scrolling out of the tab. - Time of day with or without seconds (
14-30-15or14-30). - A running counter with a chosen number of digits and a reset interval:
never, daily, weekly, monthly or yearly. A button sets it back to 1 by hand. - The calendar week uses the ISO year, so the 1st of January still lands in the
last week of the year before instead of opening a second folder for the same
week.KWstays fixed regardless of interface language, for the same reason
the type short forms do: a language switch must not rename existing files.
Changed
- A Changelog button under Settings → Info. It opens the version history
in a window of its own, rendered as formatted text rather than raw Markdown.
The text is fetched from the project page on GitHub, because the copy that
ships with an installation ends at the version you already have — and what
changed since your version is the thing you came to read. Without a
connection, or when the fetch fails, the shipped copy is shown instead and
the window says which of the two you are looking at. - The only network connection this program makes. It happens when you
press that button and never in the background; there is still no update
check and nothing is sent but the request itself. The fetch runs in a thread
of its own, so the window opens immediately instead of standing still until
a timeout runs out. The README statement about network use was corrected
accordingly. - The introduction knows about the new tab. Its settings page lists
Options first and says what it holds, and the sessions page points at
Settings → Options for the file names now that Choose folder only picks a
folder. - Settings tabs reordered to Options, Analysis, Target profiles,
Design, Info — roughly how often one changes something there. The dialog
still opens on Info, which is what you want in front of you when you open
the settings without a particular parameter in mind. - Choose folder no longer opens a dialog first. It opens the folder dialog
of the system and nothing else. Asking about the naming scheme when someone
is looking for a folder was one question too many; the scheme moved to the
Options tab. - Existing recordings are moved to the assembled scheme, not just to month
folders and the type. Whether a name was given by the program or by hand is
now decided by taking the name apart into its parts, so hand-given names stay
untouched under any scheme. During a move the counter is handed out per
period in recording order, not from the stored value — a move brings along
months that are long over. - Empty subfolders left behind by a scheme change are cleaned up, not only
month folders. - Settings now roll back the recording folder and the naming scheme on
Cancel, along with everything else. A move is excluded: moved files are not
coming back, so the move button applies its selection right away.
Migration
- A configuration from 1.1.1 keeps its behaviour:
month_foldersbecomes one
folder per month,type_in_nameswitches on the type part. Nothing is
rewritten until the Options tab is used.
v1.1.1 save folder
[1.1.1] — 2026-09-05
Added
- A place to say where recordings go. Choose folder sits next to Open
folder under Sessions and opens a small dialog: the folder itself at the
top, then a checkbox for one folder per month and one for the recording type
in the file name, with a live example of what a new file will be called. An
external drive or a synced folder was possible before only by moving the
whole data directory withDREAM_VOICETRAINING_HOME, which took the settings
along with it. - A button that moves what is already there. At the bottom of the same
dialog: existing recordings are moved into the chosen folder and renamed to
the chosen scheme. Names given by hand are kept, a file of the same name at
the destination is never overwritten, and files that cannot be found are
reported instead of dropped from the list. The setting is only stored once
the files have actually arrived. - Recordings can now live in subfolders.
sessions.jsonstores the name
relative to the recording folder with forward slashes, so the list stays
usable across systems, and it stays in the program data itself — a list that
travels with the WAV files onto an external drive is gone the moment the
drive is not plugged in. Recordings left behind at the old location are still
found and played. - The type in the file name uses a fixed English short form —
reading,hum,
vowel-a,vowel-i,vowel-u,free— so switching the interface language
does not rename anything.
v1.1.0 mikrofon change fix
[1.1.0] — 2026-09-04
Added
- A proper input picker beside the microphone box. The button next to it
opens a wide list with the full name of every input, the technical name of
the selected one underneath, and a refresh button. Windows users could not
read past the middle of names like USB Advanced Audio Device Analoges
Stereo in a drop-down that had to share the toolbar with everything else. - The microphone box now carries the full name as a tooltip as well.
Fixed
- The same microphone appearing twice is now explained instead of puzzling.
It was never a duplicate: a sound card with two capture inputs reports both
under one description, and every output has its own monitor source. Entries
that share a name now get the piece of their technical name that tells them
apart appended — two USB Audio Device become (00) and (01) — and the
picker says so in a sentence at the bottom. Where the technical names match
too, the entries are numbered, so the list is never ambiguous.
Changed
- The recording type and target voice boxes no longer take the width of
their longest entry. A stylesheet rule set a 180 px minimum on every
drop-down, so Reading text was as wide as Pitch test (hum) and the space
was missing where it was actually needed. The minimum is now 90 px, the
microphone box asks for 220 px and grows with the window, and the two short
boxes are capped.
v1.0.9 windows desktop icon
[1.0.9] — 2026-09-03
Added
- A downloaded EXE offers to set itself up on the first start. Anyone who
takes the plain executable instead of the setup runs it out of the download
folder, ends up without an icon anywhere, and loses the program the next
time that folder gets tidied. It now asks once — the answer, yes or no, is
remembered — and on yes copies itself to
%LOCALAPPDATA%\Programs\Dream-VoiceTraining, puts an icon on the desktop
and an entry in the start menu, registers under Apps & features, and
restarts from the new location. The file left behind in the download folder
is deleted by the restarted copy, because Windows will not let a running
program delete itself. - The question is deliberately not asked for the portable build (it is meant
to stay where it is), for a copy already under Program Files (the setup did
all of this), or when running from source.
Changed
- The setup now installs to
C:\Program Files\Dream-VoiceTrainingand
asks for administrator rights once, instead of installing per user. The
wizard has a page for the desktop icon and the start menu entry, both ticked
by default, and puts an Uninstall entry in the start menu beside the
program. Recordings and settings stay where they are on uninstall — they are
in%APPDATA%and%LOCALAPPDATA%, never in the install folder.
v1.0.8 windows fix and tutorial
[1.0.8] — 2026-09-03
Added
- The last page of the introduction carries the project links — source
code and issues, Discord, Ko-fi — each with the address written out
underneath, so it is clear where a click leads before making it. They were
only in Settings → Info before, which is not where somebody looks who has
just finished the introduction and hit a problem.
Fixed
- Those same links on the info page rendered without their colour: the style
attribute was built inside an f-string asstyle=f"...", and the strayf
made the attribute invalid. Both places now build the link from one helper,
so the next change to it cannot drift apart again.
[1.0.7] — unreleased
Fixed
- Step 9 of the introduction pointed at a button nobody could see. The
page about the settings marks the ⚙ button, which sits in the Live tab —
but the page before it switches to Sessions to show the view button, and
nothing switched back, so the marker hid itself and the step explained a
button while pointing at nothing. Which tab to open is no longer decided
from a list of keys: the window looks up which tab actually contains the
target and brings that one forward. A control moved to another tab now
keeps working without anyone remembering to update a special case.
v1.0.6 tutorial + info for f1 f2 etc
[1.0.6] — 2026-09-03
Removed
- The guided run is gone. The toggle in the toolbar and the panel in the
Live tab have both been removed, along with their strings and styles. On some
setups the countdown could leave the panel hanging: the timer kept the stream
and the recording state to itself, and once that went wrong there was no way
out other than restarting the program. Everything it did can be done by hand
— pick a type, record, trim in Advanced — so a feature that freezes is
worse than no feature.
Added
- A recommended first round in the first-run introduction, taking over what
the guided run used to explain: pitch test (a held hum, about four seconds),
then /a/, /i/ and /u/ at about three seconds each, every one as its own take
with its own type, plus the hint to select the calm middle in Advanced
afterwards. Reachable again at any time from Settings → Info → Show
introduction again. - A pulsing golden ⓘ points at the control each page is about — the
microphone list, the type box, the ⓘ in the toolbar, the Sessions tab, the
view button. It sits on the real main window rather than on a picture of it,
ignores mouse clicks so the control underneath stays usable, and survives a
language switch. Pages about the detail view, which is not open at that
moment, carry a screenshot with the same marker on the spot that matters. - Four new introduction pages: what F0, F1 and F2 mean and where the two
ⓘ buttons explain them; advanced mode, with the waveform, the draggable
region and why cutting out the calm middle is the whole point; making the
column layout yours, covering the header menu, dragging columns and the view
dialog; and what sits behind the settings button, tab by tab. packaging/make-intro-shots.pyrenders the introduction screenshots from the
real interface with invented data, once per language. The marker positions
fall out of it: they are computed from where the tab, the Details button, the
row ⓘ, the Advanced toggle and the analyse button actually sit, and are
written toassets/intro/shots.json. Hand-taken screenshots go stale and are
always in one language.- Screenshots for those pages ship in
assets/introand are installed by all
four packaging paths. If they are missing, the pages stay readable without
pictures instead of failing.
Changed
-
Picking a language on the first page moves straight on. That page has one
job; making people confirm it with Next afterwards was a click for nothing. -
The microphone page now says what to do in one line: pick the microphone from
the list, press Start, speak normally, watch the level card. -
The introduction window sizes itself to the page. One fixed size for all
of them meant a page with three paragraphs sat in a window built for a
screenshot, three quarters empty. Text pages now open at roughly 760×380,
screenshot pages as wide as the picture needs. Heading and text stand in
their own 700 px column, so line length stays readable under a wider image. -
The introduction shows screenshots in the interface language, and swaps
them when the language changes rather than keeping the pictures it was built
with. -
The settings dialog opens on Info. That tab holds the version, the links,
the debug window and the button that shows the introduction again — what
people are looking for when they open settings without a specific parameter
in mind. -
Built-in analysis templates are no longer named in German in the English
interface. They carried their German names in the code, so Leises
Mikrofon and Formantmessung (Vokal halten) showed up untranslated. They
now have keys and translated labels; an old name in an existingconfig.json
is migrated on load, so a saved selection survives the update. -
The About dialog is now an Info tab in the settings, next to Design.
Version, links, licence, the note on network use and the file locations all
live there, and it is reading material rather than a window that wants
something, so a tab fits it better than a dialog. -
The buttons that used to crowd the settings button row moved to the top of
that tab: show introduction again, debug window, copy system info and
open folder. The button row is back to OK, Cancel and Apply. -
The debug button keeps its error counter and turns red there just as before.
[1.0.5] — unreleased
Added
- First-run introduction. On the very first start the program asks for a
language and then walks through five short pages: set your level, pick a
recording type, where sessions and details live, where to look things up,
and one page on not training through pain. It is not modal, so the
microphone can be set up while reading. Reachable again at any time from
Settings → Show introduction again.
Changed
- Windows builds are now two single files.
Dream-VoiceTraining.exefor
the installer andDream-VoiceTraining-Portable.exefor carrying around.
Neither needs an_internalfolder or anything else beside it — one file is
the whole program. - The portable build keeps settings and recordings in a
Dream-VoiceTraining-Datafolder next to the executable instead of under
%APPDATA%. It recognises portable mode by the file name, or by a
portable.txtplaced beside it if the executable was renamed. If that
folder cannot be written — a read-only drive, or Program Files — it falls
back to the normal user folders rather than failing to start.
v1.0.4
[1.0.4] — 02.09.26
Added
- Reference window behind the ⓘ in the toolbar. Nineteen topics in six
sections explaining what every number in the program actually is: pitch and
its percentiles, intonation, the formants F1 to F3 and what physically moves
them, H1/H2 and weight, harmonicity, jitter and shimmer, how to read the
spectrogram, what the recording types are for, how target profiles and the
analysis parameters work, and how to get a first measurement that is worth
anything. - The window is not modal: it stays open beside the main window, so you can
look something up while recording rather than instead of recording. Pressing
ⓘ again brings the existing window forward instead of opening a second one. - Full-text search across titles, bodies and keywords in the active language.
- Written in English and German, switching with the interface.
[1.0.3] — 02.09.26
Added
- Windows support. Settings go to
%APPDATA%\Dream-VoiceTraining,
recordings to%LOCALAPPDATA%— deliberately the local branch, or a roaming
profile would drag hundreds of WAV files across the network at every login. - Device list works without
pactl. Windows reports the same microphone once
per host API; the WASAPI entry is kept, the rest dropped, and the API is
shown in the label so the choice stays traceable. "Stereo Mix" and
"What U Hear" are classified as monitors, VB-Cable and Voicemeeter as
virtual sources. - Build scripts under
packaging/windows: a PyInstaller spec that bundles the
PortAudio DLL shipped with sounddevice and drops the Qt modules the program
never uses, a PowerShell script producing a portable ZIP, and an Inno Setup
installer that installs without administrator rights and leaves recordings
and settings alone when uninstalling. Segoe UIadded to the font stack.
Fixed
- Spin box arrows sat on top of the number rather than beside it, so
clicking the up arrow put the cursor in the field instead of raising the
value. Styling aQSpinBoxat all makes Qt stop drawing its sub-controls
in the right place, and the border-triangle trick from CSS does nothing
there — Qt wants an image. The arrows are now generated as SVG in the
theme's text colour and regenerated when the theme changes. On Linux the
native style happened to hide the problem; it only showed on Windows.
Note
The Windows build is untested by the author of this changelog entry — it was
written on Linux and could not be executed there. Treat 1.0.3 on Windows as a
first attempt and report what breaks.