yoooi0 / multifunplayer Goto Github PK
View Code? Open in Web Editor NEWflexible application to synchronize various devices with media playback
Home Page: https://yoooi0.github.io/MultiFunPlayer/
License: MIT License
flexible application to synchronize various devices with media playback
Home Page: https://yoooi0.github.io/MultiFunPlayer/
License: MIT License
As an MFP user, I use a microUSB cable with a magnetic tip to connect o a PC, and I use MFP with VR.
On occasion the cable has been pulled and it disconnects, and I reconnect it (since it's magnetic, that's easy to do by feel with an HMD over your eyes. It snaps into place with no problem
Alternately, I disconnect the cable and power from the connected device before closing the software.
In both cases, an error box pops up that requires a user action to close. With the new ability to auto-connect to interfaces that shouldn't happen anymore. If Serial comms (or others, including the various software apps) are lost, MFP should go into a silent reconnecting loop until either Serial is re-established or until the interface is stopped with the stop command (in the UI or with a keybind-equivalent)
Step to reproduce
Desired behavior
When the USB cable is disconnected, MFP should:
Sometimes the vibrations don't stop, even when the V0 axis is 0
The device itself keeps vibrating? Changing the update rate from 60hz to 0 and back to 60hz makes the device stop vibrating.
There's currently a bug in the firmware where there will be random jerk added to the last axis because a character is dropped: https://discordapp.com/channels/664171761415356426/664173666963030016/916778835826077696
I usually experience the jerk on R2 (which is a mild inconvenience) but when it happens on R0 it can unplug the TValve. I'm assuming MFP only sends axis values when they change which is why sometimes it's my R2 that jerks and sometimes my R0.
A workaround that seems to work for me with the latest version (since I don't use vibes or V0) is to set V0 to a Random Motion that always goes and to crank the speed up. When I do this I haven't seen it jerk any of the axis unexpectedly. I believe what's happening is now it's always sending a V0 axis command every single update where as before the last axis on any command sent could vary and then cause a random axis to jerk.
Tempest is sending A90 at the end of every command in his serial controller, if I'm understanding correctly
For example speed/acceleration/intensity based
VLC, MPC-HC, other?
All "sensible" user-accessible settings and sliders should (over time) gain an assignable keybinding for interacting with that setting to enable external command/control from software like VoiceAttack for AutoHotKey.
Examples, top to bottom in the UI, by panel.
Open/Close Player Settings panel
Connect/disconnect each player
Autoconnect Enable/disable button
Open/Close Script Settings panel
The 3 sync setting buttons
Global offset slider (keybinds to + and - the offset by a user selectable amount, default .01 sec)
Open/Close Axis panel
For each axis:
Select a specific axis and make it 'active'
Open script location
Load Script
Clear Script
Reload Script
(maybe) Move Script
Invert
Link Axis (with an available keybind to select each axis)
Disconnect axis (same as clicking X on a linked axis)
Link Axis Priority checkbox toggle
Increment/decrement Strength and Speed sliders by user selectable amount
Keybinds for Interpolation
Autohome toggle per axis (and maybe globally?), and + - sliders for delay and duration
Open/Close script values panel
Open/Close Connections Settings Panel
Select a connection (same as clicking on it)
Connect/Disconnect a connection (BP, NW, Pipe, Serial)
Increase/Decrease top/bottom sliders for each axis (reusable based on which panel is open?)
Increase/decrease update rate for Serial, Pipe, Network, BP.io
Either always force to latest version or support all of them since v0.2.
Would require DeviceAxis to be dynamic.
With configurable time offset from script start
2021-12-25 22:03:12.5983|TRACE|MultiFunPlayer.VideoSource.ViewModels.DeoVRVideoSourceViewModel|Received "{"path":"/storage/emulated/0/VR CGI TH gem/ashtotes_tt_h265_180_lr.mp4","duration":143.333,"currentTime":2.10255265,"playbackSpeed":1.0,"playerState":0}" from "DeoVR"
2021-12-25 22:03:12.6362|ERROR|MultiFunPlayer.VideoSource.ViewModels.DeoVRVideoSourceViewModel|DeoVR failed with exception|System.ArgumentException: Drive name must be a root directory (i.e. 'C:') or a drive letter ('C'). (Parameter 'driveName')
at System.IO.DriveInfoInternal.NormalizeDriveName(String driveName)
at System.IO.DriveInfo..ctor(String driveName)
at MultiFunPlayer.VideoSource.MediaResource.MediaResourceFactory.TryParsePath(String path, IMediaResourceInfoBuilder builder)
at MultiFunPlayer.VideoSource.MediaResource.MediaResourceFactory.CreateFromPath(String path)
at MultiFunPlayer.UI.Controls.ViewModels.ScriptViewModel.Handle(VideoFileChangedMessage message)
at Stylet.EventAggregator.HandlerInvoker.Invoke(Object message)
at Stylet.EventAggregator.<>cDisplayClass5_1.<PublishWithDispatcher>b2()
at Stylet.EventAggregatorExtensions.<>c.<Publish>b__1_0(Action a)
at Stylet.EventAggregator.PublishWithDispatcher(Object message, Action`1 dispatcher, String[] channels)
at Stylet.EventAggregatorExtensions.Publish(IEventAggregator eventAggregator, Object message, String[] channels)
at MultiFunPlayer.VideoSource.ViewModels.DeoVRVideoSourceViewModel.ReadAsync(TcpClient client, NetworkStream stream, CancellationToken token)
Hello, there!
As part of the university research we are currently doing regarding the security of Github Actions, we noticed that one or many of the workflows that are part of this repository are referencing vulnerable versions of the third-party actions. As part of a disclosure process, we decided to open issues to notify GitHub Community.
Please note that there are could be some false positives in our methodology, thus not all of the open issues could be valid. If that is the case, please let us know, so that we can improve on our approach. You can contact me directly using an email: ikoishy [at] ncsu.edu
Thanks in advance
The vulnerability fix that is missing by actions' versions could be related to:
(1) CVE fix
(2) upgrade of vulnerable dependency
(3) fix to secret leak and others.
Please consider updating the reference to the action.
If you end up updating the reference, please let us know. We need the stats for the paper :-)
Hello Yoooi0
First, a huge shoutout to you and this awesome Player.
It would be nice, if it has premade patterns inbuilt.
Like for the beginning, just up and down in endless loop would be really nice with speed customizations.
Greetings
Clasher
Mainly for url/dlna
If a video directory is chose and is unavailable (for example, being on an external disk), the program will fail to launch providing the attached error stack trace.
Steps to reproduce:
Hi,
I can't start it, I installed .net but no window shows up.
In the Logs I can find this:
2021-11-05 17:14:51.0469|FATAL|AppDomain|System.DllNotFoundException: Unable to load DLL 'buttplug_rs_ffi' or one of its dependencies: Das angegebene Modul wurde nicht gefunden. (0x8007007E)
at Buttplug.ButtplugFFILogCalls.ButtplugCreateLogHandle(ButtplugLogCallback callback, IntPtr ctx, String level, Boolean aUseJSON)
In the folder there is the buttpluf_rs_ffi.dll but why can it not be found?
Release v1.17.2.0
If I setup motion and turn on "Update without Script" it will immediately start moving that axis, regardless of video player status and regardless if "Update when Paused" is checked.
Notice how in the screenshots the axis has moved even though the video is paused and "Update when Paused" is not enabled
Rework comport combobox to show devices with descriptions
Save selected device id instead of com port if possible
a loop function for short videos would be cool
Hello,
Is there some hope you release a Linux build of MFP?
Caused by BindableCollection<T>
not being thread safe
I am running one of the earlier free, as in not from steam, versions of whirligig. THis version is no longer available from the website it seems.
On
Whirligig
is queried, however the version I am using has the name Whirligig64bit
.
Currently I have no C# toolchain set up so I did not patch this name, instead I changed the application from Whirligig64bit.exe
to Whirligig.exe
and apparently unity then also expects Whirligig_Data
folder instead of Whirligig64_Data
. After this change MultiFunPlayer was able to find the process.
I don't know about the steam version, but in anycase checking for either Whirligig
or Whirligig64bit
instead of only the first one would solve this issue. I can make a PR if you want me too, but as I don't have a C# toolchain I would make it a "blind" one ;)
On a very similar topic I have a variant of DeoVR
called SLR
, from sexlikereal and as I understand this is a modified version of DeoVR
with some integration with their online video portal. Would it make sense to Process.GetProcessesByName
for either DeoVR
or SLR
? I haven't tried yet, but I'll do the same filename rename switcheroo from SLR
to DeoVR
to test.
Add generic "motion providers".
Requires "blending" redesign.
Requires priority settings for script vs link/motion provider.
Hi!
Thanks for writing this :o)
Every time I try to start it, I get a popup saying i must install .NET
I've followed the link and tried 5.0.0 x86 and 5.0.0 x64 (Windows) and the latest 5.* branch, but none of them stop the popup - it seems to think it isn't installed. I've verified in Add/Remove Programs that .NET Runtime 5.0.0 IS installed. It looks like I must be doing something wrong, but what.......
Thank you.
Default to device up is up in ui
Ideally find a way to get uuid per device, otherwise save by name and overwrite if multiple devices found.
Issues:
Examples:
L0::LinkAxis::Value
with customizable target axisSerial::L0:Range::Minimum::Value
with customizable valueGreatly reduces number of actions.
Solves #15.
Allow resizing height and support scrolling the content.
Limit MaxHeight to content height.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.