Coder Social home page Coder Social logo

qdot / syncydink Goto Github PK

View Code? Open in Web Editor NEW
18.0 9.0 18.0 4.8 MB

A web based video player that supports multiple viewing modes, haptic formats, and output devices

Home Page: http://buttplug.world/syncydink

License: BSD 3-Clause "New" or "Revised" License

JavaScript 26.49% HTML 0.31% TypeScript 50.09% Vue 19.31% CSS 3.79%

syncydink's Introduction

SYNCYDINK IS NO LONGER MAINTAINED

This repo has been archived and neither it or the app will be updated anymore. If you would like to fork and create your own version, feel free. There's more info in this github issue.

SyncyDink

npm Patreon donate button

SyncyDink is (going to be) a web based video player and encoder (once we're done with it), using:

On top of these systems, Syncydink provides a way for users to load haptics files to synchronize with movies. Supported haptics hardware includes:

This hardware can be accessed via:

  • WebBluetooth in Chrome on Linux, macOS, ChromeOS, and Android 6 or higher (All except gamepads)
  • buttplug-csharp on Windows

Supported Haptic File Formats:

Support The Project

If you find this project helpful, you can support our projects via Patreon! Every donation helps us afford more hardware to reverse, document, and write code for!

License

Syncydink is BSD licensed.

Copyright (c) 2017-2018, Nonpolynomial Labs LLC
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

* Neither the name of the project nor the names of its
  contributors may be used to endorse or promote products derived
  from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

syncydink's People

Contributors

mirshko avatar qdot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

syncydink's Issues

Add haptic file playback

Use the haptic-movie-file-utils package to read haptic commands and play them back when the player time updates.

Sidenav not scrollable on Mobile Safari iOS 10.3

Action:
Made sidenav large enough to need scrolling (connect to buttplug server, scan, show device)

Expected:
Can scroll up/down

Actual:
Cannot scroll

  • Chrome 59 Linux/Android: Works
  • Firefox 56 Nightly (Windows/Linux): Works
  • Safari iOS 10.3: Broken
  • Safari macOS 10.1.1: Works
  • Microsoft Edge 40.15063: Works

Implement Code splitting to keep buttplug-js from being uglified

Currently we have webpack add everything to one big chunk, which is then minified by UglifyJSPlugin. This mangling ends up breaking buttplug, as we make some hard assumptions about class naming/fetching that screw up when classes are changed. We should split Buttplug into its own webpack chunk that won't be minified against the rest of the project.

UI not responding to different media sizes

For all of the work we're doing with things like material, the UI is not currently showing up as reactive. We probably need some top level containers we're missing or something.

Fix video.js font inclusion

vue-video-player uses require to bring in a font file. We're apparently not copying it to the right place, because we can never see the font in the player.

Bring up syncydink website

Welp. We now own syncydink.com. Just bring up a simple single page app website for it, point to repo and buttplug.world installation.

Rewrite vue-video-player in typescript

The vue-video-player is a fairly simple wrapper around video.js, that works ok enough. However, it lacks type symbols, some of the font loading doesn't seem to play well with our type system, etc. It should be fairly easy to reimplement it in typescript, and gives us more flexibility in working with video.js, since we may be doing odd stuff with it.

Buttplug Panel hamburger button UI

The hamburger button should:

  • Turn red and stay visible when not connected to a buttplug server
  • Turn green and fade out when connected.
    • Should fade in when pointer comes within a certain proximity.
    • Should be visible when video paused or stopped

Create right sidenav for encoding

Create right sidenav for encoding options. Should be swipable similar to left sidenav. May also need its own hamburger or something.

Don't reference outside font sets

We fetch video.js and material fontsets from CDNs right now. Syncydink is supposed to be completely self-hosted, so we need to make sure we fold those sets into this.

Add script timeshift feature

Scripts should be playable even when movies have different in/out points. Provide a way for users to shift script time to match movies manually.

encydink: built-in haptic video encoder

Build basic video encoding capabilities into Syncydink. This should basically replicate the Blender UI for the moment, meaning:

  • Zoomable timeline with all actions
  • Points on timeline should be selectable/movable/deletable
  • Keyboard overrides
    • move forward/backward in movie
    • 0-9 for position entry
  • Output to funscript (other formats can come later)
  • Timeline playhead position should follow movie if movie is play. Similarly, if playhead is scrubbed, movie should react accordingly

Buttplug panel needs client name setter

Currently syncydink announces to the buttplug server that it is "Buttplug Panel". Applications consuming the panel control should be able to set the client name so that it's clear what's connected to the server.

Buttplug message names getting mangled by uglifier?

2017-07-13 09:28:27.9933|TRACE|ButtplugJsonMessageParser|Got JSON Message: [{"t":{"Id":5,"ClientName":"SyncyDink Video Player"}}]
2017-07-13 09:28:27.9933|TRACE|ButtplugJsonMessageParser|Message serialized to: [{"Error":{"ErrorCode":3,"ErrorMessage":"Message does not conform to schema: ArrayItemNotValid: #/[0]\n{\n  NoAdditionalPropertiesAllowed: #/[0].t\n}\n","Id":0}}]

Only seems to throw in certain browser instances, so may be a caching thing?

Add translation from Launch to Vibration

Translate launch position to vibration with 3 ramp styles:

  • Linear
  • Linear-V (Go bottom then back to top on each command, mostly for Cock Hero)
  • Logarithmic
  • Exponential

Create events every .05-.1s between launch events.

Add Vorze message conversion

Convert Funscript haptics commands for use with the Vorze A10 Cyclone SA. ScriptPlayer already has this functionality, can probably borrow from there for now.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.