View Full Version : Synth Multi-Viewer — Cross-Platform Editor
MysteryX
13th September 2026, 04:30
You'll like this one. Previous versions were proof-of-concept. This is a real software.
I was growing tired of the lack of tooling support for VapourSynth, and especially AviSynth, on Linux.
Comparing script variants is also very time-consuming and difficult without proper tools.
Synth Multi-Viewer
> GitHub (https://github.com/mysteryx93/Synth-Multi-Viewer)
Supports:
- VapourSynth and AviSynth
- x64 and ARM64
- Windows, Linux and MacOS
Features:
- Auto-detect VapourSynth and AviSynth library and plugin locations, or customize library and plugin locations
- Edit multiple scripts with tabs
- Run multiple previews at once
- Zoom and pan to look at details
- Frame navigation, zoom and pan are shared between preview tabs
- Rename each tab for reference
- Full-screen preview
- Copy frame to clipboard
- Code highlight for VapourSynth and AviSynth
TODO: Encode feature
Since this is now for both VapourSynth and Avisynth, the main thread will be on the VapourSynth forum (https://forum.doom9.org/showthread.php?p=1846056)
Selur
13th September 2026, 06:40
AviSynth, reports '(Error)':
https://i.ibb.co/N6bwBdx2/grafik.png (https://ibb.co/LzH47XSd)
What is 'Synth Multi-Viewer' looking for? (AviSynth.dll is in 'F:\Hybrid\64bit\Avisynth' and works fine with avsViewer)
I'm using AviSynth+ 3.7.5 (r4289, 3.7, x86_64)
Cu Selur
MysteryX
13th September 2026, 06:41
Point it to the exact file.
You can hover over Error and it will show more details in Tooltip.
Selur
13th September 2026, 06:54
Seems like it's trying to load a 32bit dll
https://i.ibb.co/WNCmkccd/grafik.png (https://ibb.co/GfmzWVV1)
=> Why is it trying to load that dll ?
Had to delete this and some other dlls, now the viewer reports '(Detected)', but pressing F5 with:
ClearAutoloadDirs()
SetFilterMTMode("DEFAULT_MT_MODE", MT_MULTI_INSTANCE)
LoadPlugin("F:\Hybrid\64bit\Avisynth\avisynthPlugins\LSMASHSource.dll")
Import("F:\Hybrid\64bit\Avisynth\avisynthPlugins\mtmodes.avsi")
# loading source: G:\TestClips&Co\files\test.avi
# color sampling YV12@8, matrix: bt601, scantyp: progressive, luminance scale: limited
LWLibavVideoSource("G:\TestClips&Co\files\test.avi",cache=false,dr=true,format="YUV420P8", prefer_hw=0)
# current resolution: 640x352
# Converting from 8 to 10bit for encoder
ConvertBits(10)
# setting output fps to 25.00000fps
AssumeFPS(25,1)
PreFetch(16)
# output: color sampling YUV420P10@10, matrix: bt601, scantyp: progressive, luminance scale: limited
return last
I get a white preview tab. No error message
Is there a way to:
a. stop the viewer from starting in fullscreen. (kind of annoying on a 57" 8k display :/)
b. so that 'Script 2' would get 'Viewer 2' ? Seems like viewer numbers are just counted up, even if there is only one viewer tab,...
https://i.ibb.co/x8DdyXCJ/grafik.png (https://ibb.co/840tJNK6)
Cu Selur
Ps.: would also be nice to be able to change the tab order
MysteryX
13th September 2026, 07:21
Ah, yes. You downloaded a 64-bit version, which cannot load a 32-bit DLL.
I was about to publish both 32-bit and 64-bit and decided last minute to exclude 32-bit as it's no longer supported and nobody has a 32-bit OS.
BUT -- some plugins never got ported to 64-bit, and for that reason alone, a 32-bit build is needed.
Give me a sec...
There you go. x86 version. (https://github.com/mysteryx93/Synth-Multi-Viewer/releases/download/v1.0/SynthMultiViewer-1.0_Win_x86_Setup.exe)
You can rename the tabs as you wish to organize them. Re-ordering tabs would be nice; adding tab colors also.
Selur
13th September 2026, 07:32
no hurry,...
Columbo
13th September 2026, 12:21
Why two threads about this with the same titles?
wonkey_monkey
13th September 2026, 12:27
One for VapourSynth, one for Avisynth, since it supports both. Seems reasonable, since each may throw up separate issues over time.
Columbo
13th September 2026, 12:50
Fair enough then.
wonkey_monkey
13th September 2026, 15:51
I tried opening a script with a BSSource'd YV12 clip and got this as the preview: https://i.ibb.co/j9Hjtt9d/image.png
instead of this: https://i.ibb.co/CKzV7C57/image.png
A bad conversion to (or interpretation as) RGB?
I've included the frame properties in the second screenshot in case they're causing the problem, because it displayed YV12 colorbars fine. It also opened a 10-bit 4:2:0 clip okay.
Edit: it's not frame properties. If I add a ConvertToRGB it displays as expected, but adding ConvertBits(10) or ConvertToYUV422 results in a similar incorrect preview.
geometer
14th September 2026, 05:39
FYI
I had a lot of trouble with 64bit.
Eventually I found out that I can reliably convert to the format where I want to do the processing, with the following chain:
MPEG2Source (....)
# in case MPEG2Source on 64bit delivers green gibberish, sometimes the following hack may help (try related options like SelectEven)
#last = AssumeTFF(last)
#last = SelectOdd(last)
AssumeFPS(30000,1001) # make sure this is your correct frame rate
ConvertBits(12)
ConvertToPlanarRGB(matrix="Rec709",interlaced=false)
ConvertToYUV444(matrix="PC.709", interlaced=false,chromaresample="lanczos4")
RGB as an intermediate format seems to clear the internal misunderstandings.
MysteryX
14th September 2026, 05:41
Version 1.1 is ready! (https://github.com/mysteryx93/Synth-Multi-Viewer/releases/tag/v1.1)
What's new:
- Fixed an AviSynth display bug
- Allow tab re-ordering
- Added tab colors to differentiate types
- Allow customizing tab color with Ctrl+T
- Added browse buttons for settings paths
- Tweaked default tab numbering
- Remember window size and maximized state
wonkey_monkey
14th September 2026, 18:00
- Fixed an AviSynth display bug
Still not working right on my YV12 script, although it is now more clearly interpreting the Y channel as RGB32:
https://i.ibb.co/60x75kJQ/image.png
MysteryX
14th September 2026, 22:41
What's the difference between your YV12 and mine?? ahh...... must be bit-depth!!
Grayscale, upside-down, and stretched was one bug: the Y plane drawn as BGRA.
and it's missing video properties.
wonkey_monkey
14th September 2026, 23:35
YV12 is 8-bit 4:2:0 by definition. I tried the same AVI file with ffmpegsource2 instead of BSSource: same bad result (wasn't expecting anything different, but you never know).
I also tried two other scripts with different BSSourced inputs (both 8-bit 4:2:0) and again got the bad results.
But ColorBars(pixel_type = "yv12") displays normally.
MysteryX
15th September 2026, 10:20
Version 1.2 is ready! (https://github.com/mysteryx93/Synth-Multi-Viewer/releases/tag/v1.2)
- Display video/frame properties (Ctrl+I)
- Fix AviSynth frame display bug
- Show detected AviSynth and VapourSynth versions in Settings
Video/Frame properties window now make it a pretty full viewer already. The only important feature missing is encoding. After that, everything else is optional additions.
Try again and let me know if you encounter additional issues.
MysteryX
16th September 2026, 12:06
Version 1.3 is ready! (https://github.com/mysteryx93/Synth-Multi-Viewer/releases/tag/v1.3)
- Enhanced text editor with auto-complete and plugin parameters information, for both VapourSynth and AviSynth
- '-' and '=' characters are no longer being eaten by the editor
- Add spacing in editor after line numbers
- Dark mode is less dark
- Redesigned seek bar
Wilbert
19th September 2026, 16:40
Great and very interesting! Could you add some notes in the readme about how to install it on Debian/Ubuntu? I guess i need to download the AppImage and run it (before marking it as executable). It seems it doesn't require other stuff?
1. When running the app it shows an example VapourSynth script by default (but i'm not interested in VapourSynth). Could you change this behavior? For example that you select in the settings whether to use AviSynth or VapourSynth by default, and that it remembers this setting when starting it the next time.
2. Could you add the possibility to scroll frame by frame (besides playing)?
MysteryX
20th September 2026, 02:39
You can run AppImage directly. It is fully self-contained, there is no dependency.
If you want to install it on the system, you can use App Image Launcher that allows "installing" from AppImage
https://github.com/TheAssassin/AppImageLauncher
I already made a lot of changes. Including adding a startup screen instead of a default document.
You can scroll frame by frame using arrow keys.
I'm currently adding very powerful autocomplete, hover hints and syntax support to the editor. Supporting *both* AviSynth and VapourSynth. I definitely over-engineered ScriptAssist, 350kb of raw source code, and the code is properly structured so it can't be much shorter. Using this as a test to push AI development to its limit and see how well it can produce such a complex feature. Did many rounds of Astra scanning for issues (performance, memory, edge cases) and fixing them with my stack. Currently adding a Functions Explorer window to complement it. This will be huge quality of life improvement. The enhanced editor works better for AviSynth since Python is untyped by default and this is not a Python engine; but both are working pretty well. Coming out soon!
MysteryX
20th September 2026, 02:44
I'm curious though. If you use AviSynth on Debian, how are you doing about plugins installation?
Wilbert
20th September 2026, 15:54
I already made a lot of changes. Including adding a startup screen instead of a default document.
You can scroll frame by frame using arrow keys.
Both changes are not in version 1.3 yet right? Because i'm using 1.3 and don't see arrow keys. It's confusing for a user that in the title of a tab you see Script 1, Script 2, etc, but it is not clear whether it concerns a AviSynth of VarpourSynth script. Perhaps you can change the titles to Script VS 1, Script VS 2, ..., Script AVS 1, Script AVS 2, etc ...
I'm curious though. If you use AviSynth on Debian, how are you doing about plugins installation?
That's a good question. Let me start by going off topic a bit (we can always move this part to a separate thread later).
I started using Debian two years ago, but I still use Windows on my other laptop (at least for now). I'm not a big user of AviSynth anyway (mainly for hobby). My goal is to update my plugins to avs+ and make them also available on Linux. But to get this going is much more difficult and complicated than i originally thought.
To make the discussion a big more general (and not just about my adventures). Let's say we differentiate between three groups of users:
- (1) normal users (who just want to use AviSynth and are not interesting in coding and compiling),
- (2) experienced users (the it-wizzards who know everything about coding and related stuff) and
- (3) simple users in between (like me who like to code a bit, but just 'easy' things for hobby).
So what is needed for the three groups of users (especially the normal and simple users) to get started with AviSynth+ and the few plugins that are avaiable?
Documentation
There is some documentation online, for example Building AviSynth+ on POSIX systems (https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/contributing/posix.html). That's very good, but in my view this is written for experiences users, and it doesn't say anything about plugins. About plugins there is only this thread AviSynth+ plugins and utilities for other OSes and CPUs (https://forum.doom9.org/showthread.php?p=1927689) (it gives only a list with available plugins and it most cases in the readme is explained how to compile them). The documentation is totally not adequate for normal users to using AviSynth+ on Linux (let alone that much plugins are not only available).
Usage
Another issue is that apparently a user needs to compile everything (AviSynth+ and plugins) himself in order to use AviSynth+. We can't ask this from normal users and for simple users (like me) this takes also very much time to find out. Normal users just want to install AviSynth and plugins instead of compiling it. For some reason this seems complicated or not possible.
AviSynth+
For Debian AviSynth+ is available on a non-official repository (https://www.deb-multimedia.org/ (https://www.deb-multimedia.org/dists/trixie/main/binary-armel/package/avisynth+)). So i tried this first (and added it to sources.list), but i got tons of errors in my package manager (because the repository is not official). Yes there are websites explaining how to get around this, but for me it was easier to compile it. I used the bash script from maas3n for this (see linux subforum; i could also have following the official documentation). The next annoying thing is that Debian comes with ffmpeg installed, but it has AviSynth disabled. So you need to install a separate ffmpeg with AviSynth enabled (using the same bash script or the official AviSynth+ documentation). So this is a hug hurdle for normal users and it takes much time to figure out for simple users like me.
AviSynth+ plugins
With installing plugins I mean the possibility to download a zip-file with plugin (*.so) and documentation (and copy the plugin to the autoloading folder or any other folder, and copy the documentation to some other folder). Like we do on Windows. Do you think this is possible? On Windows we ran into the issue that a plugin is compiled with MSVC version X and the user needs to manually copy the corresponding runtime library into the system folder. Perhaps we have similar uses on Linux, I have no idea. Can anyone comment on this?
Another thing i noticed is that in the existing sources for the Linux plugins (see earlier mentioned doom9 thread), these cmake files are used. In the online/offline AviSynth+ documentation (AviSynth FilterSDK for example) this stuff is not mentioned. It took days for me to figure how and why this stuff is used and i still don't know very well how to create and use it. It's a build system which converts make files into solution and project files. It's great because this works on all(?) popular compilers and you don't need to convert existing solution files (if you use a different compiler and or compiler version that the plugin was created with). I see this is also available on Windows compilers, but it took me some efforts to get it working there. In my opinion we can't bother normal users with this, and it least it should be documented very well for the other type of users.
So good documentation for all the types of users would help very much. I like to help with this, but my knowledge and time is also very limited ;) Of course that more plugins will be available on Linux (and are easy to install) would also help very much and is very much needed. But that's a difficult task.
qyot27
20th September 2026, 19:20
AviSynth+ plugins
With installing plugins I mean the possibility to download a zip-file with plugin (*.so) and documentation (and copy the plugin to the autoloading folder or any other folder, and copy the documentation to some other folder). Like we do on Windows. Do you think this is possible? On Windows we ran into the issue that a plugin is compiled with MSVC version X and the user needs to manually copy the corresponding runtime library into the system folder. Perhaps we have similar uses on Linux, I have no idea. Can anyone comment on this?
Unfortunately, no, distributing a .so is not really feasible. glibc - the equivalent of the MSVC runtime - is very picky about versioning, and every distro (and every different point release of said distro) can be shipping a different point version of glibc based on what their update cadence is like.
That quickly becomes a nightmare for trying to ship a binary plugin that would just work wherever. More broadly, this concern is part of the reason why things like Flatpaks, Snaps, and AppImages exist, by encapsulating the dependencies alongside the application and [usually] sandboxing them, but while that works for regular applications, it may not work nearly as well for libraries - like AviSynth and its plugins.
And then you also have the case that some distros don't use glibc, but a different stdlib like musl. So you'd end up having to provide dozens of slightly different builds for each individual system configuration rather than a single binary that works everywhere (at least as far as glibc distros are concerned; I think musl actually is better about this, but I don't have much experience in that side, and the distros that use musl are *far* more niche). Maybe, eventually, glibc will get overhauled in a way that allows for this, but people have been complaining about that for decades at this point.
Another thing i noticed is that in the existing sources for the Linux plugins (see earlier mentioned doom9 thread), these cmake files are used. In the online/offline AviSynth+ documentation (AviSynth FilterSDK for example) this stuff is not mentioned. It took days for me to figure how and why this stuff is used and i still don't know very well how to create and use it. It's a build system which converts make files into solution and project files. It's great because this works on all(?) popular compilers and you don't need to convert existing solution files (if you use a different compiler and or compiler version that the plugin was created with). I see this is also available on Windows compilers, but it took me some efforts to get it working there. In my opinion we can't bother normal users with this, and it least it should be documented very well for the other type of users.
Most of the plugins that have been ported to other OSes do use either CMake (partially because AviSynth+ itself does) or meson. And generally, since most of the plugins that have been ported are fairly simple and usually don't rely on external dependencies (exceptions being things like FFMS2 or LSMASHSource that depend on FFmpeg), once you've gotten used to building one of them that uses CMake or meson, the others are basically copy-and-paste the same steps, maybe tweak a configuration option here or there.
I have been working sporadically on a project that would then be able to be leveraged in maintaining the AviSynth plugin ecosystem on users' non-Windows OSes more seamlessly, but going through all of the different iterations of what differing distros/OSes would need, how to handle dependencies, and the other parts that drove me to attempt it in the first place all need to be sorted out first, since using it for AviSynth is more of simplifying the main project to just what AviSynth needs, rather than trying to do it the other way around.
That said, since AviSynth+ has finally been added to Homebrew, that is one potential solution (if the plugins get added as well), even though I'd wager most Linux users aren't going to install Homebrew on their machines just due to the historical inertia of "that's a Mac thing" (it's been usable on Linux for quite a number of years now, first as 'Linuxbrew' and then it was folded back under the main project). It's also available through NixOS, for those that get really into that system.
MysteryX
21st September 2026, 02:08
Left+Right arrows is listed in Help window since the early versions. That should work.
VS or AVS tabs have different colors to differentiate them.
For Linux plugins, for VapourSynth, they use Python Wheels, distributing pre-compiled binaries. Don't they run into the issues you mention? How are they handling it.
MeteorRain
21st September 2026, 02:34
I plan to explore AviSynth+/- eco system on Debian based system in the near future. But it'll take some time. With proper setup, installing plugins should be easy on Debian.
MysteryX
21st September 2026, 13:12
Version 1.4 is ready! (https://github.com/mysteryx93/SynthMultiViewer/releases/tag/v1.4) Very major overhaul.
What's new:
- Greatly enhanced text editor with ScriptAssist: autocomplete, method overloads and hover hints
- ScriptAssist supports both AviSynth and VapourSynth (works better in AviSynth; Python is extremely complex and untyped by default)
- Added Functions Explorer
- Add start page when no document is open
- Ask save confirmation when closing document
- Redesigned application icon
- Redesigned toolbar icons
- Redesigned scrollbars
- Fix horizontal scrollbar page-right
- Reviewed keyboard shortcuts and improved Help documentation
- Check for updates
I genuinely over-engineered ScriptAssist with 458kb of raw source code compiling into 269kb. I wanted to push AI to its limit to see how well it could structure such a complex feature. The code itself is structured properly. It's genuinely complicated to parse Python code and detect what VapourSynth python modules are available on the system that are actually for VapourSynth, There are tons of edge cases to account for to parse the scripts properly. The complexity is encapsulated in a library; the rest of the project remains faily simple.
ScriptAssist is working extremely well. It's a massive quality of life improvement. If it causes any issues, you can disable it in settings. If you encounter sub-optimal behaviors in either VapourSynth or AviSynth, you can open a ticket.
Edit: I re-published with updated deployment icons; Linux/MacOS packages stayed on the old icon
Wilbert
4th October 2026, 16:38
I tried your new version. Great! I like it very much! One more request ;) Would it be possible to add audio support or is this much work?
Wilbert
4th October 2026, 17:11
@qyot27,
Unfortunately, no, distributing a .so is not really feasible. glibc - the equivalent of the MSVC runtime - is very picky about versioning, and every distro (and every different point release of said distro) can be shipping a different point version of glibc based on what their update cadence is like.
That quickly becomes a nightmare for trying to ship a binary plugin that would just work wherever. More broadly, this concern is part of the reason why things like Flatpaks, Snaps, and AppImages exist, by encapsulating the dependencies alongside the application and [usually] sandboxing them, but while that works for regular applications, it may not work nearly as well for libraries - like AviSynth and its plugins.
And then you also have the case that some distros don't use glibc, but a different stdlib like musl. So you'd end up having to provide dozens of slightly different builds for each individual system configuration rather than a single binary that works everywhere (at least as far as glibc distros are concerned; I think musl actually is better about this, but I don't have much experience in that side, and the distros that use musl are *far* more niche). Maybe, eventually, glibc will get overhauled in a way that allows for this, but people have been complaining about that for decades at this point.
Thanks for your remarks! It's a pity the situation is so complicated on linux distributions. I guess we can't do much about this and just accept the reality.
Most of the plugins that have been ported to other OSes do use either CMake (partially because AviSynth+ itself does) or meson. And generally, since most of the plugins that have been ported are fairly simple and usually don't rely on external dependencies (exceptions being things like FFMS2 or LSMASHSource that depend on FFmpeg), once you've gotten used to building one of them that uses CMake or meson, the others are basically copy-and-paste the same steps, maybe tweak a configuration option here or there.
Ok i understand. When you don't have external dependencies then the cmake configurations are all the same (or at least they can be). When i have time i will make some example projects for avisynth.nl (for the FilterSDK i mean).
I have been working sporadically on a project that would then be able to be leveraged in maintaining the AviSynth plugin ecosystem on users' non-Windows OSes more seamlessly, but going through all of the different iterations of what differing distros/OSes would need, how to handle dependencies, and the other parts that drove me to attempt it in the first place all need to be sorted out first, since using it for AviSynth is more of simplifying the main project to just what AviSynth needs, rather than trying to do it the other way around.
That sounds like a very interesting project and should solve the plugin compatibilities right? ;)
That said, since AviSynth+ has finally been added to Homebrew, that is one potential solution (if the plugins get added as well), even though I'd wager most Linux users aren't going to install Homebrew on their machines just due to the historical inertia of "that's a Mac thing" (it's been usable on Linux for quite a number of years now, first as 'Linuxbrew' and then it was folded back under the main project). It's also available through NixOS, for those that get really into that system.
I know nothing about Homebrew, except that i see it is a package manager. I'm curious, how does it solve the plugin compatibilities once the plugins are added. Is it easy to get a plugin added to Homebrew? I see the AviSynth package is listed here: https://formulae.brew.sh/formula/avisynthplus. I see ffms2 is also avaiable: https://formulae.brew.sh/formula/ffms2
qyot27
4th October 2026, 23:47
I know nothing about Homebrew, except that i see it is a package manager. I'm curious, how does it solve the plugin compatibilities once the plugins are added. Is it easy to get a plugin added to Homebrew? I see the AviSynth package is listed here: https://formulae.brew.sh/formula/avisynthplus. I see ffms2 is also avaiable: https://formulae.brew.sh/formula/ffms2
I don't know how easy or hard it is to add formulae to Homebrew, as I've never tried to do so.
The ffmpeg-full and ffms2 formulae haven't been updated to let those be built with AviSynth support enabled. That would be something to file issues on their bug tracker about.
MysteryX
5th October 2026, 05:14
I tried your new version. Great! I like it very much! One more request ;) Would it be possible to add audio support or is this much work?
"Could"... but audio really only works for fast scripts; while most scripts don't run in real-time, which makes the utility limited. It would only result in stutter most of the time.
Still, "could". Well, for a certain category of scripts, it would be useful.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.