<feed xmlns='http://www.w3.org/2005/Atom'>
<title>audio-visualizer-python, branch master</title>
<subtitle>(forked from djfun) a little GUI tool to render visualization videos of audio files
</subtitle>
<id>https://git.aedrielkylejavier.me/audio-visualizer-python/atom?h=master</id>
<link rel='self' href='https://git.aedrielkylejavier.me/audio-visualizer-python/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.aedrielkylejavier.me/audio-visualizer-python/'/>
<updated>2026-03-06T23:27:51+00:00</updated>
<entry>
<title>Explicit license-files (#99)</title>
<updated>2026-03-06T23:27:51+00:00</updated>
<author>
<name>Aeliton G. Silva</name>
</author>
<published>2026-03-06T23:27:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.aedrielkylejavier.me/audio-visualizer-python/commit/?id=93a8c5f3c2f90060bce62a36b4bc263fa10d89c7'/>
<id>urn:sha1:93a8c5f3c2f90060bce62a36b4bc263fa10d89c7</id>
<content type='text'>
This entry indicates which files need to distributed with the package.

Closes #98.</content>
</entry>
<entry>
<title>v2.2.4 - Quiet FFmpeg; add "invert" option to Classic Vis; fix CLI parsing for Image component (#96)</title>
<updated>2026-02-12T20:38:54+00:00</updated>
<author>
<name>Brianna Rainey</name>
</author>
<published>2026-02-12T20:38:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.aedrielkylejavier.me/audio-visualizer-python/commit/?id=f03a3a686c7304588dd434322c73506531e53595'/>
<id>urn:sha1:f03a3a686c7304588dd434322c73506531e53595</id>
<content type='text'>
* change noisiness of terminal output
ffmpeg no longer prints everything into the terminal unless we're in `--verbose` mode. percentage progress text stays on one line while not in verbose mode.

* Added hint to run `avp --verbose` if `avp --log` is run with no avp_debug.log file present

* Classic Visualizer: add invert option

* Image component: fix path commandline option

* Image component: restrict file formats in CLI to match GUI

* Color component: add tooltip to color2 picker (second color of gradients)

* change tests to work with pytest-xdist
avp core stores its config (location of `settings.ini`) in temp directories if using multiple workers to run tests, so they don't interfere with each other. when using a single worker, the `tests/data/config` directory is still used

* check alt comp names when parsing cmdline

* rename `original.py` to `classic.py`

* move `component.py` into subpackage

* rename comp_original to comp_classic

* show traceback if renderFrame() raises exception

* do not try to insert non-existent components from project files

* add "composite" property for components
if a component returns "composite" then it will receive a frame to draw on during calls to previewRender and frameRender

* more tests of projects, actions, waveform, spectrum, image, color, classic

* do not change presetDir to "projects" within PresetManager</content>
</entry>
<entry>
<title>docs: add macOS installation instructions (#95)</title>
<updated>2026-02-08T15:13:46+00:00</updated>
<author>
<name>Ingenium23</name>
</author>
<published>2026-02-08T15:13:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.aedrielkylejavier.me/audio-visualizer-python/commit/?id=48a9105eab94e64101470402427564203e1d8970'/>
<id>urn:sha1:48a9105eab94e64101470402427564203e1d8970</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix `settings.ini` not located in correct path</title>
<updated>2026-01-29T21:30:43+00:00</updated>
<author>
<name>Brianna Rainey</name>
</author>
<published>2026-01-29T21:30:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.aedrielkylejavier.me/audio-visualizer-python/commit/?id=b283aa418a1c0016a63a328fec6259dfe110cefe'/>
<id>urn:sha1:b283aa418a1c0016a63a328fec6259dfe110cefe</id>
<content type='text'>
</content>
</entry>
<entry>
<title>v2.2.2 - fix flaky tests, fix UnboundLocalError in MainWindow.createNewProject (#94)</title>
<updated>2026-01-29T19:50:29+00:00</updated>
<author>
<name>Brianna Rainey</name>
</author>
<published>2026-01-29T19:50:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.aedrielkylejavier.me/audio-visualizer-python/commit/?id=71a22c6a121d1294a05ef35020c525fa70cae2fd'/>
<id>urn:sha1:71a22c6a121d1294a05ef35020c525fa70cae2fd</id>
<content type='text'>
* search more than one filename for compName

* remove extra QVBoxLayout

* insert default components using name instead of index

* bump version 2.2.1 to 2.2.2

* tests do not use `.config` for settings
Core.storeSettings() is no longer called as a side effect any time avp.core is imported. Thus the tests use a new `initCore` method and the normal user path now relies on entering via `cli.py`. This means certain toolkit functions (e.g., ones using `FFMPEG_BIN`) no longer work if imported from a different python script, unless they call Core.storeSettings() themselves to initialize the settings.ini file

* fix UnboundLocalError in createNewProject</content>
</entry>
<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://git.aedrielkylejavier.me/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>add GitHub Action to run tests</title>
<updated>2026-01-23T02:53:26+00:00</updated>
<author>
<name>Brianna Rainey</name>
</author>
<published>2026-01-23T02:53:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.aedrielkylejavier.me/audio-visualizer-python/commit/?id=864898419e810055b51e3a32fccb00a62aab9a6b'/>
<id>urn:sha1:864898419e810055b51e3a32fccb00a62aab9a6b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>bump version for PyPI release</title>
<updated>2026-01-22T22:08:04+00:00</updated>
<author>
<name>Brianna Rainey</name>
</author>
<published>2026-01-22T21:54:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.aedrielkylejavier.me/audio-visualizer-python/commit/?id=0a521106c4f57a7a198e8238ad9bf6772c4e23b5'/>
<id>urn:sha1:0a521106c4f57a7a198e8238ad9bf6772c4e23b5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>make Life component respond to audio</title>
<updated>2026-01-22T21:40:37+00:00</updated>
<author>
<name>Brianna Rainey</name>
</author>
<published>2026-01-22T21:40:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.aedrielkylejavier.me/audio-visualizer-python/commit/?id=801777e5348ed5e5665d2472f14f36673c253d66'/>
<id>urn:sha1:801777e5348ed5e5665d2472f14f36673c253d66</id>
<content type='text'>
also adds a dissolve effect between frames and a kaleidoscope effect
the fancier shape types ignore audio for now. Fixes #91
</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://git.aedrielkylejavier.me/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>
</feed>
