Giter Club home page Giter Club logo

open-stage-control's Introduction

open-stage-control's People

Contributors

adamadamsmusic avatar brunetton avatar cyberic99 avatar danielappelt avatar dependabot[bot] avatar erictheise avatar jean-emmanuel avatar jpcima avatar kdallafior avatar kdejaeger avatar magnusreichel avatar martinhn avatar pixelnerve avatar ritschwumm avatar stefanboca avatar t1st3 avatar trebmuh avatar willykaze avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

open-stage-control's Issues

Event delegation seems bad for UI perfs

0a868a7 seems to have a bad impact on UI performances : event delegation adds some delay between the user interaction and the widget's update, since the event has to bubble all the way to the root element to be handled instead of being handled directly by the widget.

startup screen does not allow not loading a session like "new"

The startup screen defaults to last used session, this can be changed to another session but there is no option to use a blank unnamed session. Hmm, canceling session load seems to do that. Adding a new session button would be more intuitive.

Also, unless the session is cleared (with cancel in the file dialog) the example button being set to true does nothing. Setting example to true should reset last used session I think, but not be saved for next start. That is, when the session is started and one of the examples is chosen, the examples: true should be reset.

In both cases, once the user knows about these issues and how to deal with them, they don't matter. But for a new user it may be confusing.

how to use with packaged app?

I can only access to control dashboard by Browser localhost:port , while the native OSX app(packaged from source) show nothing optional with backgroud only.

Fine control on faders with integer values is odd.

When using an int for fader value (0 to 1023 in this case) control mouse wheel seems to just send the same two values over and over. Things are fine with floats (-200 to +10). This is feed back related. When I turn Ardour's feedback off the problem goes away. So it is something to do with mapping from int back to pixel (or internal value). Debug mode shows that Ardour returns the same int that open stage control sends. This may go away if max is less than fader height. I am testing for working with motor faders with a 10bit ADC which seem to be common (so 0 to 1023). The idea is to make Ardour's OSC code as easy to use as possible with as many controllers as possible. So an int from 0 to 1023 for position and a dB value are the two modes I am looking at.
My config file is below. (testing against the osc branch of Ardour - F2 sets feedback up.)

ardour1024.js.zip

fader continues to send OSC info after reaching the end of stroke.

in a fader (in this case min=-1000, max=10) moving the fader past the end of the wiget continues to send OSC data. For example moving the mouse up the value reaches +10 (FS) i get 9.81, 9.87, 10, 10, 10, etc. till I stop moving the mouse. The same going down, I can get a screen of -1000 events. A new osc event should not be sent if it is identical to the last one sent. It may even be able to be discarded farther upstream. This is not a huge deal as the DAW will not do anything bad.

Push widget sets itself

The push button widget sets itself. That is pressing the push wiget, lights it's own LED. Most control surfaces I have worked with (mackie protocol control surfaces like the mackie or x-touch) leave LED control completely to the DAW. So the expected action is that press send /path i 1 and release sends /path i 0 but that the LED does not light or unlight for either of these actions. The LED should only respond to the DAW sending /path i 1 or /path i 0 not to the local push button value.

fader log scale seems backwards

Assuming that gain is being plotted by the fader, the range (in Ardour) is 0 -> 2 (-inf to +6 and 1= 0dB) with logscale false, 1 or 0dB is at the centre (linear scale). Setting logscale true would have the expectation that 1(0dB) would move up to about 80% to streach out the area between 0 and -144dB (the limit for 24bit audio) or more practically -90dB. Instead, the 0dB point moves to the 25%(ish) point so that 6dB takes up 75% of the scale and 0 to -90 gets 25% of scale.
Below is a complete fader widget, This for Ardour which has only +6 rather than the more normal +10 or +12. (for a fader that is +12 to -inf use min=0 and max=4) If you look at any mixer you will see that 0db (1 in this example) is at about %80 up. You should be able to see this just by watching the value at the bottom of the fader.

The relevant part of a fader spec is:

                {
                    "type": "fader",
                    "id": "fade2",
                    "linkId": "",
                    "label": false,
                    "left": 0,
                    "top": 90,
                    "width": 74,
                    "height": 380,
                    "horizontal": false,
                    "css": "",
                    "range": {
                        "min": 0,
                        "max": 2
                    },
                    "logScale": true,
                    "precision": 2,
                    "meter": false,
                    "target": [],
                    "path": "/strip/gainabs",
                    "align": "left",
                    "color": "auto",
                    "preArgs": [
                        2
                    ],
                    "noPip": false,
                    "snap": false,
                    "compact": false,
                    "unit": "gain"
                },

FYI: the path spec is where Ardour is going for 5.0, feedback works as well with the same path. Not in GIT yet :)

Build directions don't work

On Ubuntu 16.04 nodejs version 4.2.6, the command:
sudo npm install -g npm
fails with: /usr/bin/env: ‘node’: No such file or directory

I did a:
sudo ln -s nodejs node
in /usr/bin and all is fine.
This may mean that instances of "node" should be changed to "nodejs"

This was a fresh pull from git with tag 5.1.

feature request: Allow set default text in text widget

Right now a text widget defaults to the widget id on startup. It stays that way till it gets an OSC message. Sometimes that doesn't happen. For example I have 10 "send" strips set up because I don't know how many any one channel will have and I can't:

  • create a widget on the fly
  • remotely hide/unhide a widget
  • change the text colour from background to forground remotely.
    So they all say sendname1, sendname2 etc. Then if a select another channel with fewer sends The ones I was using are cleared (blank). SO now I have realname, blank, sendname3, etc. Defaulting to either blank or settable text would be nice.

Osc to midi

Hi, i try to test Open Stage Control with Ableton.
I used with max4live with the "connection kit", it's realy great ! (but message with "_" don't work)
I would like to transform osc message to midi. I have test osc bridge from hexler but, nothing !
I don't know wich port osc-bridge are listening, and if i need to prepend the message...
Do you have any issues ? A tool to advice ?
Sorry for approximative english.
Thanks for that greeaaatt tool !!!

New code to allow fine control on touch screens doesn't work

Tried on two different devices. As soon as a second finger touches the same fader, the value resets to minimum value and stays there. Tried holding one finger still and moving the second (both the one closer to the top and the bottom. Moving both at the same time or moving them apart). Found out that holding a finger anywhere on the widget for too long opens the on screen keyboard :)

I can however operate 5 fader strips at the same time :) (my big fingers tend to have problems getting more than that on the 7inch screen)

Interface globalization to control Vilain::

My first thought was to give to Vilain:: the ability to be controled directly within the app.
But I suggested to myself to not closes the UI with the core app.
There, I found something that could be very interesting to achieve the goal of Vilain:: : having a remote UI to control it, just by OSC like SooperLooper do.
Hence, Vilain:: could be a complete "blind" app.
Do you see what I mean copain?

feedback sent with preargs doesn't work

If I set a fader as /fade1 range -200 to +10 I can use oscsend localhost /fade1 f -10 and the fader on my GUI moves to -10, great. However, If I set it to /fade ff 1 -10 (that is prearg = 1.0) and I send oscsend localhost /fade ff 1 -10 Open stage control does not respond. o-s-c sends the messages correctly, but does not respond to the same messages sent back.

use in a network and preset files sharing

hi, this looks like a very nice project!!

how can it be used in a network? I saw the fader moving in sync with the electron app and the browser on the same machine.

I tryed the electron app and the browser app, they don't seem to be able to load the preset files exported by one(electron) an imported by the other(web)

Merci

Open-stage-control doesn't build on Arch=ARM

From the npm-debug.log:

2 info using [email protected]
3 info using [email protected]
11 verbose request uri https://registry.npmjs.org/open-stage-control
12 verbose request no auth needed
13 info attempt registry request try #1 at 19:01:59
14 verbose request id e416d22ca8a50a24
15 http request GET https://registry.npmjs.org/open-stage-control
16 http 404 https://registry.npmjs.org/open-stage-control
18 silly get cb [ 404,
19 silly fetchPackageMetaData Error: Registry returned 404 for GET on https://registry.npmjs.org/open-stage-control
19 silly fetchPackageMetaData at makeError (/usr/local/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:264:12)

I think all of these errors are to do with doing this on an ARM based system

Code optimization hints

shorten the scope chain

Global variables used in several places to access shared r/w variables between modules, the lookup chain should be shortened where possible.

avoid object property lookup

Repeated a.b.c.d are expensive, better cache them.

avoid using canvas save() and restore()

This is sometimes used for alpha manipulation -> c4c5577

avoid garbage collection on interraction

Avoiding var statements (using preallocated variables) in events handlers might be good

Editing broken in v0.16.2?

Great tool!
For some reason, I can't edit anything in v0.16.2. The widget properties doesn't show up, and right-click on the canvas has no effect. Everything works in v0.16.1.

Add an option to load an additionnal user custom module

  • the user module could provide :
    • osc messages filtering functions
    • initialization instructions
  • the module would be executed in a sandboxed context, with access to a few usefull methods (oscSend & oscReceive).
  • the module would be loaded once on the server's side
  • it would be written in javascript (ES6)

Midi Support

Hi, thanks for this wonderful free software :-)
I use it to control via OSC some VJ puredata patches...
Very often people use Midi controller to control UI. Do you think about add midi support to open stage control?
Thank you

Infinite "New Client Connecting"

Hi!
After load a session (maybe created with a biggest screen), get :

Uncaught IndexSizeError: Failed to execute 'createRadialGradient' on 'CanvasRenderingContext2D': The r0 provided is less than 0.
Source: src/browser/js/app/widgets/sliders/knob.js @ line 218```
When a new client is connecting, get the same error, and an infinite "New client connecting" on the first client.

PreArgs does not allow setting type.

preArgs is wonderful. It does a pretty good job of setting string or float but it does not allow sending Ints. That is sending a /path if 3 3.57 for example. It seems a number is either ff or ii. Perhaps only setting float of the number is . and int for no . would work. So a preArg of 3 is an int and 3.0 is a float. As happens, the DAW I am working with doesn't seem to care and will accept a float where an int is specified. However, the developer I was talking to, seems to consider this a bug.

OSC Message won't to be sending

Hi,
I love this software because it's fully customizable. But I am wondering why my OSC message wont to be send from this app to another. I've already try to intercept messages with oscdump but still not having feedback. Thank you so far

Adress Tabs

Hello,
Est il prévu qu'il y ai une commande osc associé au tabs ?
Ca fonctionne très bien avec modal pour piloter l'affichage de l’extérieur ou envoyer une info une fois le modal sélectionné mais j'aimerai utiliser le même type de contrôle sur les fenêtres sans utiliser l'ensemble de l'écran.

User guide is missing arm arch

It is mentioned that one can use:
npm run debarm
but not that one needs export ARCH=armv7l
(it is unfortunate that it is still not installable on a pi :) I think what is used of v7l is compatible with armhf though so I may try a fudge)

Extra note: I can go to the dist/open-stage-control-linux-armv7l/ directory and run ./open-stage-control from that directory. So the executable seems to run on a pi anyway.

Initial values

Each control do not have any initial value. This is an issue while settings some UI to anything different from everything ZERO

Fader meter doesn't show on some chrome browsers.

Using chromium (Linux 64bit) I can see the fader meter (very narrow) ok. However, using Chrome on an android the fader meter does not show up. I tried changing:
width:1rem; to width:8rem; in _fader.scss but that made no difference. I am using a width for the fader itself that is less than "auto" would give, so less than 100%.

In my case it may make more sense to use a separate meter so the colour can contrast as well. But I thought you would like to know that the meter can not always be seen.

BTW, I am very happy with the new release, I can at least "npm start *" on the RPi (arm) now though I can still not install. So far it is very usable and has escaped any of the normal android remote control pitfalls. (like faders that jump)

electron commandline paramters seem to have changed

New version of electron was downloaded as part of install.
running:
npm run build
Failed with:
Usage: electron-packager --platform= --arch=
(and the rest of the usage statement below that)

Running npm start {whatever} works fine.

Can't edit a full container.

If a strip or panel is full of widgets. It can not be selected to edit. This is particularly noticeable with the strip container where the widgets auto size to fill the strip. I would suggest that being able to select a widget by clicking on it from the list in it's parents list of widgets would be the best way of doing this.
(I have been getting around this by removing enough widgets from a strip to have open space to click on)

Little bugs

Tabs : Impossible de modifier les tabs en multitouch.
push : lorsque qu'on reste appuyé sur un push et qu'on relache un autre parametre, la valeur du push revient à 0.

[Feature] Add Basic Plotting Support

Adding some basic non-interactive plotting of data points could be used to better visualize the state of OSC controlled data. Examples of such data include ADSR envelopes, filter graphical responses, and raw waveforms.

Render error when open a Modal

Hi,
I got an display error when open a modal widget.
Here a screenshot :
capture d ecran de 2017-02-17 19-57-15

It happen both on the build-in client and on my andoid's chromium.
Resize the window (or rotate the android device) redraw and fix the display.

Thanks again for the soft !

Fader wish list

  1. No scale. I tried making it transparent, but the space used by the scale is still used. In other words the reason for removing the scale is for better real estate use.

  2. The knob widget has a "pan" settings where centre shows no marker bar but left or right do. It would be nice to be able to do this with faders too. Round knobs look nice, but they take a lot of room and on a tablet there is not much room. So a fader is nicer to use. Perhaps a setting that only shows the value point and not the origin to value bar might serve better for this use being more generic. Maybe there is already a way of doing this with a CSS command.

  3. I am not sure if this can be done... Using a db scale like a standard fader works really well with breakpoints. There is one exception. There is no way of putting an infinity mark at the bottom. I can live without this though. right now I do 1%= -150 (24bit limit-ish) minimum -1000, but of course the -150 and -1000 are on top of each other. I have copied the breakpoints from a P&G fader. Looks nice works really well with the DAW too. On second thought, I think -1000db is pretty obvious and the DAW shows -inf.

Note: sorry for using the same issue again. I was just using the email address.

[Feature] Use parent's ID in osc adress

hi !
Is there a way to use the widget ID or the parent's ID in the osc adress ?
Use case : a slider in a Strip named "MyTrack" send "/strip/MyTrack/Gain"

Thanks !

Out of limits incoming OSC value gives 0 result

I have a fader set up in db with max = 10 and min = -200 (-196 = inf on this DAW). Everything works except for right at the bottom of the fader. I am playing with Ardour code right now and using the gain to dB functions for feed back. When I pull the fader in the GUI all the way down I have either -inf or I have -700. In both cases the open stage control fader jumps to 0 rather than min. In my opinion, if the value input is less than min the fader should become min, and if the value is greater than max the fader should be set to max. (I have not tested the over-max situation)

Also, it would be nice (wish list), if the value for the the fader showed the text next to the fader scale. example:"min": {
"inf": -200
},
Still puts -200 in the editable value field, inf would be nice so that the user sees the same thing on the scale and the value. I will not be upset if this just gets put aside as won't fix though...

Launch without X server

Hi !
Is it possible to launch the server (no gui) without any X server ?
Or from an ssh session without need X forward ?

It seem just crash, and return "1".

Thanks a lot,
wargreen

HiDPI / Retina Testing

Everything needed to scale the interface is implemented, but no test has been made with HiDPI / Retina devices. Some testing and feedback on this would be greatly appreciated.

Feature request: Send OSC message at startup

There may already be a way to do this, but I could not find it. Right now I have a button that tells the host how many strips it has for banking, what kind of feedback I want, what kind of fader math to use, etc. (/set_surface iiii as happens) It would be nice if the *.js file had a "send at load" OSC message. This is important because it tells all the buttons, faders, text boxes what the current state is.

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.