<feed xmlns='http://www.w3.org/2005/Atom'>
<title>audio-visualizer-python/src/avp/components/image.ui, branch master</title>
<subtitle>(forked from djfun) a little GUI tool to render visualization videos of audio files</subtitle>
<id>https://kj-git.com/audio-visualizer-python/atom?h=master</id>
<link rel='self' href='https://kj-git.com/audio-visualizer-python/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://kj-git.com/audio-visualizer-python/'/>
<updated>2026-01-28T22:49:58+00:00</updated>
<entry>
<title>v2.2.1 - fix #74, fix #92, add optional 64th bar to Classic Visualizer, improve Conway default (#93)</title>
<updated>2026-01-28T22:49:58+00:00</updated>
<author>
<name>Brianna Rainey</name>
</author>
<published>2026-01-28T22:49:58+00:00</published>
<link rel='alternate' type='text/html' href='https://kj-git.com/audio-visualizer-python/commit/?id=f66eb99465c61232a7f649e66bee59504bb0e52c'/>
<id>urn:sha1:f66eb99465c61232a7f649e66bee59504bb0e52c</id>
<content type='text'>
* update gitignore
ignore profiling and coverage data

* F1 opens help window, create appName variable, move undostack class

* fix kaleidoscope effect, increase default Y values by +4
the increased y values allow the cells to continue animating for more than 60 minutes instead of 30 (at default 60f/t)

* update version number

* add minimumWidth to undo history window

* Classic Visualizer: option to include 64th bar

* Waveform component: fix #74 - new animation speed option

* move shared visualizer code into toolkit

* Waveform component: compress audio by default

* Waveform component: fix 100% animation speed

* new components receive random color

* update to Qt 6

* fix pushbutton stylesheet

* fix #92: replace ok/cancel with save/discard/cancel

* remove obsolete PaintColor subclass

* mv common shadow code into addShadow func

* add 3rd option of ok/cancel back to showMessage
the 3 options are:
- ok
- ok/cancel
- save/discard/cancel

* Image component: add shadow option

* small test of rgbFromString

* fix color tuple string

* test another way to get comp names from CLI

* rename component tests, add some more

* Image component: scale shadow based on resolution

* catch AttributeError if previewRender returns None

* Text component: fix blur radius only able to increase
the relativeWidgets system causes QDoubleSpinbox to only allow increases, because it really only works with integeres, so I changed the blur radius into a normal QSpinBox. I noted where the problem exists within component.py for future reference. This commit also removes an unneeded VerticalLayout from the ui file

* remove unnecessary QVBoxLayout

* paste shadow at x,y instead of using offset method

* fix tests due to shadow change

* don't print warning in connectWidget due to QFontComboBox</content>
</entry>
<entry>
<title>fix #89 with Image component v2.0 + 23 tests (#90)</title>
<updated>2026-01-22T21:29:46+00:00</updated>
<author>
<name>Brianna Rainey</name>
</author>
<published>2026-01-22T21:29:46+00:00</published>
<link rel='alternate' type='text/html' href='https://kj-git.com/audio-visualizer-python/commit/?id=a12be862e22bdec6a243a3f0b5f4f28d69084a2a'/>
<id>urn:sha1:a12be862e22bdec6a243a3f0b5f4f28d69084a2a</id>
<content type='text'>
* qtbot is needed in any test that uses a QObject
previously these tests would fail if they ran before qtbot was initialized by another test. I'm now running tests in a random order

* add tests for drawBars, readAudioFile, BlankFrame

* replace numpy.seterr with numpy.errstate

* fix incorrect comment

* add MockVideoWorker and imageDataSum

* test further into visualization (less likely to be a false positive)

* test FloodFrame function

* add failing test for Image component
one step towards fixing #89

* test component name CLI parsing

* prevent log warning when 1 setting changed

* correct tests to use widgets when needed

* test undo and blockSignals

* remove stretch_scale (use scale only)

* image ignores scale if stretch checkbox checked
fixes #89

* test Title Text component, ffmpeg command

* Image v2: replace stretched setting with resizeMode
3 resize modes are scale, cover, and stretch. Scale only applies when resizeMode is set to scale. Cover uses ImageOps.fit() to stretch while maintaining aspect ratio. Also, spinBox_scale was moved to be underneath comboBox_resizeMode.

* change transformData into staticmethod
the purpose is to allow easier reuse in other components

* add respondToAudio option to Image component
this causes the image to scale up and down slightly based on the input audio file

* cache static portion of image when animating
increases rendering speed of a 1-minute video by 12 seconds (based on two manual tests anyway)</content>
</entry>
<entry>
<title>Use pyproject.toml + uv_build</title>
<updated>2026-01-13T07:22:25+00:00</updated>
<author>
<name>Aeliton G. Silva</name>
</author>
<published>2026-01-13T01:39:55+00:00</published>
<link rel='alternate' type='text/html' href='https://kj-git.com/audio-visualizer-python/commit/?id=f975144f25d34f97329b2d4e52891061573cea08'/>
<id>urn:sha1:f975144f25d34f97329b2d4e52891061573cea08</id>
<content type='text'>
This replaces setup.py by a modern pyproject.toml using uv_build
backend.

Dependencies are being also managed by uv, so to install dependencies
and run the project one can execute:

```
uv sync
uv run pytest # optional
python -m avp
```

To build the both source and binary (wheel) distribution package run:
```
uv build
```

Uv can be installed with `pip install uv`.

The directory structure has been changed to reflect best practices.
- src/* -&gt; src/avp/
- src/tests -&gt; ../tests
</content>
</entry>
</feed>
ommit/download.php?id=b12a66beaecad509249fc45f31da7416e4ee71fd&amp;follow=1'>kj.bash: download.php</a></td><td>kj_sh604</td><td>1</td><td><span class='deletions'>-200</span>/<span class='insertions'>+169</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-07-09 00:43:09 -0400'>2023-07-09</span></td><td class='logsubject'><a href='/procrastiSlides/commit/LaTeX.php?id=ef92a53a6ede6d1be420267e8218833ef8dffb2a&amp;follow=1'>kj.bash: LaTeX.php</a></td><td>kj_sh604</td><td>1</td><td><span class='deletions'>-29</span>/<span class='insertions'>+32</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-07-09 00:42:03 -0400'>2023-07-09</span></td><td class='logsubject'><a href='/procrastiSlides/commit/licenses.php?id=d3c18c13c87367e911addddce1422c2cf8790307&amp;follow=1'>feat: updated top page description</a></td><td>kj_sh604</td><td>1</td><td><span class='deletions'>-45</span>/<span class='insertions'>+45</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-07-09 00:41:11 -0400'>2023-07-09</span></td><td class='logsubject'><a href='/procrastiSlides/commit/info.php?id=36faa6bd8f734085eecd661714e067fb19d96dec&amp;follow=1'>feat: updated feature list and description</a></td><td>kj_sh604</td><td>1</td><td><span class='deletions'>-68</span>/<span class='insertions'>+68</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-07-09 00:40:15 -0400'>2023-07-09</span></td><td class='logsubject'><a href='/procrastiSlides/commit/index.php?id=7decc721218569a789b8e0fc3dbfe25e4693c0db&amp;follow=1'>feat: new site homepage description, 16:9 themes plug</a></td><td>kj_sh604</td><td>1</td><td><span class='deletions'>-146</span>/<span class='insertions'>+147</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-06-11 01:49:48 -0400'>2023-06-11</span></td><td class='logsubject'><a href='/procrastiSlides/commit/LaTeX.php?id=04fd84acb1a19f243ebfb6797e93265498751770&amp;follow=1'>refactor: follow more of PHP style rules</a></td><td>Blista Kanjo</td><td>1</td><td><span class='deletions'>-2</span>/<span class='insertions'>+2</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-06-11 01:48:29 -0400'>2023-06-11</span></td><td class='logsubject'><a href='/procrastiSlides/commit/mit.php?id=afddc5cef821a97d541ee0c622d06a09e04889a4&amp;follow=1'>refactor: follow more of PHP style rules</a></td><td>Blista Kanjo</td><td>5</td><td><span class='deletions'>-10</span>/<span class='insertions'>+10</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-06-11 01:47:46 -0400'>2023-06-11</span></td><td class='logsubject'><a href='/procrastiSlides/commit/README?id=78cb24b15798e348dae3f693fd6f434dde284736&amp;follow=1'>refactor: updated README</a></td><td>Blista Kanjo</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+14</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-06-11 01:02:05 -0400'>2023-06-11</span></td><td class='logsubject'><a href='/procrastiSlides/commit/index.php?id=8e896b8b3025b461ba8aaea091308cb113beef6e&amp;follow=1'>refactor: code formatting</a></td><td>Aedriel Kyle Javier</td><td>2</td><td><span class='deletions'>-256</span>/<span class='insertions'>+303</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-05-29 17:30:39 -0400'>2023-05-29</span></td><td class='logsubject'><a href='/procrastiSlides/commit/img/raleighAroundMe.webp?id=ae514c58c2c8cdb647f9a1112e93481ed8d1361a&amp;follow=1'>feat: new 16:9 theme thumbnails</a></td><td>Blista Kanjo</td><td>6</td><td><span class='deletions'>-0</span>/<span class='insertions'>+0</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-05-29 17:30:09 -0400'>2023-05-29</span></td><td class='logsubject'><a href='/procrastiSlides/commit/output/raleighAroundMe.md?id=8e3947ed7538ed742634373f6995ed8c49b643e2&amp;follow=1'>feat: 16:9 slide themes markdown files</a></td><td>Blista Kanjo</td><td>6</td><td><span class='deletions'>-0</span>/<span class='insertions'>+35</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-05-29 17:28:57 -0400'>2023-05-29</span></td><td class='logsubject'><a href='/procrastiSlides/commit/index.php?id=ef6e4abd50af3f07b8f42bae7430917aec6b5e4d&amp;follow=1'>feat: 16:9 conversion logic</a></td><td>Blista Kanjo</td><td>2</td><td><span class='deletions'>-6</span>/<span class='insertions'>+140</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-05-29 13:58:17 -0400'>2023-05-29</span></td><td class='logsubject'><a href='/procrastiSlides/commit/output/test169.md?id=bfe25a65e46475cd76e64b64c47bed08f992b80c&amp;follow=1'>notForProd: added test files for 16:9 themes</a></td><td>Blista Kanjo</td><td>4</td><td><span class='deletions'>-0</span>/<span class='insertions'>+72</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-05-28 17:46:14 -0400'>2023-05-28</span></td><td class='logsubject'><a href='/procrastiSlides/commit/index.php?id=da5b36a7db46e047fce8c76e8f936c25993f3b97&amp;follow=1'>refactor: set as new upcoming version</a></td><td>Blista Kanjo</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-05-28 17:45:49 -0400'>2023-05-28</span></td><td class='logsubject'><a href='/procrastiSlides/commit/download.php?id=fa7bcca78392dbeb167601b2a60f4a3f8109683d&amp;follow=1'>refactor: set as new upcoming version</a></td><td>Blista Kanjo</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-05-08 17:35:29 -0400'>2023-05-08</span></td><td class='logsubject'><a href='/procrastiSlides/commit/includes/nav-footer.php?id=86533f412a4bea643d99a794fcf655827163decf&amp;follow=1'>refactor: updated github information</a></td><td>Blista Kanjo</td><td>1</td><td><span class='deletions'>-2</span>/<span class='insertions'>+2</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-02-14 23:17:12 -0500'>2023-02-14</span></td><td class='logsubject'><a href='/procrastiSlides/commit/css/style.css?id=6edd3ce93b3e800194ccf5a2b956b64e8efb5d76&amp;follow=1'>refactor: better `blue` for the light mode site</a></td><td>Blista Kanjo</td><td>1</td><td><span class='deletions'>-4</span>/<span class='insertions'>+4</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2023-02-14 23:09:30 -0500'>2023-02-14</span></td><td class='logsubject'><a href='/procrastiSlides/commit/css/style.css?id=06664ec5e5d689eb3e803554627d14461ba1a0c8&amp;follow=1'>refactor: replaced `visited` link colors to the same color as unvisited links</a></td><td>Blista Kanjo</td><td>1</td><td><span class='deletions'>-2</span>/<span class='insertions'>+2</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2022-11-11 18:53:38 +0800'>2022-11-11</span></td><td class='logsubject'><a href='/procrastiSlides/commit/index.php?id=a12f4ce5044b44418446f49395711a9ba738a074&amp;follow=1'>Fix error undefined array key for first time users</a></td><td>Charles Reyes</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+4</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
