Giter Site home page Giter Site logo

as's People

Contributors

anlexmatos avatar ascustomworks avatar kant avatar ritschwumm avatar zezic 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

as's Issues

tiny sin

hi Alfredo!

I noticed your update and came to look. I am sure it was not your intention, but seeing your modules takes the wind out of my sails… nice stuff!

I was intrigued by your comment about correcting the sin wave output of the "MyModule" Template plugin. I looked at both your version and the original, and I do not see a difference.

You: sine = sinf(2.0f * M_PI * (phase+1 * 0.125f))

which is just a phase shift of the original, unless you meant

sine = sinf(2.0f * M_PI * ((phase+1) * 0.125f))

which is just a frequency change.

I don't know where sine = sinf(2 * M_PI * phase)+ sinf(2 * M_PI * phase * 2)*5 came from, unless it was in a version of MyModule.cpp that has come and gone. Certainly not a pure sin wave! But it's just a sin wave plus a heavily weighted harmonic, unless it was

sine = (sinf(2 * M_PI * phase)+ sinf(2 * M_PI * phase * 2))*5

in which case again we have a sin wave and harmonic which is a pleasant sound sawfish.

As for the polarity at a glance all the functions have a range of -5 to 5 after the scaling multiplication.

BTW I found https://www.desmos.com/calculator very useful for looking at this close.y.

alto777

BPM Clock outputs Buggy based on what's expected per time signature

AS 0.6.8

X/4 Time

Unsure about 8th and 16th notes, but in relation to Quarter notes, Bar trigger outs are bugged on certain Time Signatures. Occurs at all BPM on regular duration (40-240)

  • 3/4 acts like 1/4
  • 6/4 acts like 2/4
  • 9/4 acts like (working) 3/4
  • 12/4 acts like 4/4
  • 15/4 acts like 5/4

X/8 Time

Assuming that a beat in 3/8 or 6/8 is a Dotted Quarter Note (as per how it would be Handled musically), 5/8 (for but one example) isn't outputting the beat correctly. Most X/8 Time Sigs are outputting One Beat for every Two 8ths (except for Numerators that are mults of 3, which work correctly).

It should be:

Bar: X----|X----|
Beat: X--X-|X--X-|
8th:  xxxxx|xxxxx|

What I'm seeing:

Bar:  X----|X----|
Beat: X-X-X|-X-X-| 
8th:  xxxxx|xxxxx|

I assume that things are implemented using only a small number of step counters, as opposed to a sequencer table lookup, so I don't know if this would be an easy thing to fix... :-S

My apologies if all of this is coming out wonky, I'd just like my stuff to actually sound vaguely prog, Like a mellower Meshuggah. https://youtu.be/bhPaY1HEjEc?t=1m42s

Response re: the Fundamental issues Delay thread

Hi, rather than clutter up Fundamental's issues with my half-baked delay implementation, which you expressed interest in, I'll paste it here and clutter up your issues instead - feel free to delete it of course... :)

So in my module's constructor, I create an instance of the stk delayA delay line:

long maxDelay = engineGetSampleRate() * MAX_DELAY_SECS;
delay = new stk::DelayA(0.5, maxDelay);

Then the module's step method is something like:

void DelBoy::step() {
    float len = /* get the delay length param value */
    float sig =  /* get the input value */
    sig = sig / 10.0001 + 0.5;
    outputs[SIGNAL_OUT].value = (delay->tick(sig) + delay->tapOut(len)) / 2.0;
}

(This is untested code, since I've edited it down a bit for simplicity. As you will be able to see, it lacks a feedback param too! But should be enough to get started with)

As for inclusion, I copied Stk.h, Stk.cpp, DelayA.h and DelayA.cpp into my plugin src/ folder and just needed #include "DelayA.h" in my module cpp file. I think that was it. If I was intending to release, of course, I hope I'd have a less offensively naive way of amalgamating the stk dependency.. :)

EDIT: Hey, great modules, BTW, thanks a lot for those! :)

FLOW not an issue

hi Alfredo!

As I get deeper into Rack, I am learning to hear errors the way I would see them. I have become obsessed with the clicking that hard edges introduce. I just happened to grab your Flow module to see if it was some hard edges on another experiment, sure enough!

But the switch was a bit slow, so poking into your code I redid it at 0.02 volts / step. Closer to ON/OFF hard, but still no clicks.

I observe that you fade at 0.001 volts / step, this would be different speeds at different sample rates - I have some fade-in/fade-out that is also steps, not time, dependent, but I will add "yet", even though I never use anything but 44100, the sample rate God intends us to use…

Anyway, I express thanks that you make your code openly available, it means a quick experiment can be done at the cost of reversing a bit of it, which in any case always teaches me something.

I am thinking that I should fade up/down all my gate signal outputs, that is take responsibility on my side for the hard edges. It isn't that hard. But almost no one does that, gates tend to be hard edged, so to speak. I wonder if you have an opinion. Frequently gates go into ADSRs and such like, where edges can be mitigated, and I certainly want to be able to have, for example, a full attack but man that clicking, now that I am aware of it, is ver annoying. Another option switch?

Also: I noted the on-off nature of Flow, fixed that for my experiment by using the OR of triggers created on the rising and falling edges of the control input. Hetrick Boolean for logic, and my own clock edge detector. Total fun.

alto777

phaserfx issue

Hi,

I found the following issue with the PhaserFX 0.6.8 in VCV:

  • 1st instance (middle row) bassline with the phaserfx as the final effect before going to the mixer.
  • 2nd instance (bottom row) created where a pad uses a second phaser as end effect too before mixing.
  • issue: the second phaser starts to play the bassline once the depth knob is turned up, even though nothing is connected to the in (bottom row phaser shows output light on the out).
  • when connecting up the pad audio and turning up the the depth knob, the output of the phaser is a mix of the pad and the bassline
  • tried both copying as picking a new instance of the phaserfx, both same issue. tried disconnecting cables and initializing the instance, both same problem.

I am not a programmer, but it seems like the second phaser shares an audio input variable with the first one, that becomes active when the depth knob is turned up.

image

Sawish Oscillator has pronounced DC offset

This simple oscillator + scope patch demonstrates. Not a huge deal in isolation, but when used with other processing modules (i.e. phaser, reverb, anything with a feedback path) the offset is magnified to the point that the waveform is pushed up against 0DbFS and the sound disappears.
AS-Saw-DCOffset.zip

Potential dropouts due to VU meteres

Hey Alfredo,
YEs , the problems I had had been having with Rack seems to stem from your VU meters.. Attached are both the patch that gave issues and the same patch without your meters.

  • System stats , Asus PN5-Y motherboard
    Intel Core two quad Q9300 running at 2.75 GHz
    8 GB DDR2 ram
    NVidia GeForce 550 Ti ( adding this because I can also use GPU for HDMI audio)
    Windows 7 home Premium ..Up to date

06trialrack.zip

I am sure you followed my posts in group.. oh and your tiny OSC's .. They flicker randomly not in any relation to frequency generated.

8 stage sequencer

hi Alfredo!

I needed a 8 sequencer and happened to grab your variant. In the Fundamental SEQ-3 the "STEPS" knob is snappy, allowing easy selection of 1 to 8 steps, but in yours the knob is not. Is this a design choice, if so, what is the thinking?

alto777

A-B-Y Switch

The A-B-Y Switch module doesn't display in Ubuntu 16.04.

8CH and 4CH Mixer 0.6.13

Hi. Having issues making sense of the mixer's resultant levels. If I inject a 1 volt signal into channel 1, the left and right outputs are 0.71V each when all mixers are at full level and the output channel is 1.41V. See pic.

image

If I pan hard left, the both left and right channels are affected: shuouldn't the left channel be unaffected? Also the Channel 1 output is affected by the panning too. See pic.

image

I can't follow the logic as to what is happening. Am I misunderstanding how this mixer works?

I also noticed that if the left channel Mix In is used without a right channel (open input) it does not get added to the mix.

AS v0.5.6 - Quad VCA/Mixer module : initial gain at 0 for all faders.

Hi Antonio,

Reporting a small - not critical - issue about faders in "QuadVCA/Mixer": initial gain for all four sliders are set to 0, instead of 50% like your other mixer modules (VCA and 8-CH Mixer).

On your todo list for next release (not crucial) :-)
Bravo for your lastest Tremolo FX.

Regards.
Dominique Camus

Feature Request: Kill Gate Soft cut off

Kill Gate is super handy, but I have to add a slew limiter most of the time to quell the hard cut off, otherwise there is an audible snap at cut-off. Is there a better way to do this? Or could a switch be added to Kill Gate to enable a soft cut off?

Thanks!

GUI: Inconsistent visual treatment on ports

This is not a major issue, but several AS modules don't follow the industry standard visual differentiation between in and out ports. Some, like QuadVCA/Mixer, do follow the standard with a box around only the out ports, but others, like the 2, 4, and 8-channel mixers, have a box around some of the inputs as well as the outputs, which can be a little confusing.

Would be happy to dig into the SVGs and make a PR for this!

Triggers Mk1 and MK2 - possible feature request and/or question

Hi,

I have a question that might be a feature request if doing so is possible without major effort:

I really like your Trigger modules. But one thing that I can't help think of when I use them is this: Why limit the trigger labels to the finite set you have defined? Is there a reason why there could not be a "custom" category that would allow a user to type in their own value for a given trigger? Obviously this would in the Real Eurorack world this would not work, but for a virtual module, such an option seems trivial. I am imagining that the ability define and customize the displayed label text might be quite helpful - especially in a live performance, or for helping to logically organize event triggers.

My question is: is there a development limitation that prevents this? or is this an aesthetic choice?

AS Stereo Delay colour dials are non-operational when sends are in use

This module is in every one of my patches, but one thing I've always wondered is: Is there any particular reason why the colour dials cease to operate when the send and returns are in use? I just can't see why this would be, it's slightly frustrating having to place filters on the end of both returns every time they are used...rather than just turning the dial.

Phaser FX creates "mix" when more than one

Hi!

This one took me a while to nail down what was happening. I added a Phaser FX to one of my channels prior to my mixer and everything was great. I added a second one to another channel and then it seemed I couldn't get my mix right. It turns out the second Phaser seems to create a mix as if they were stereo Phasers with a separate channel going to left and one to right, but they are independent modules.

Not knowing how it's been implemented, it seems they are not separate instances from each other. A second instance shares the inputs and outputs. Hope this makes sense. Let me know if you need me to put a sample patch together to demonstrate this.

Thanks!
Mike

P.S. I don't know how to make a feature request so I'll just ask it here. I'm often trying to figure out a way to incorporate the accents that some modules create. What seems like something that should be simple isn't, but what would be nice is if a VCA had an Accent input as well as the normal CV from an envelope generator. It could have a CV knob that lets you choose the amount of accent when it arrives. Maybe I should just be summing the output of the EG with the accent signal, but that requires another module and more patching than if a VCA had an accent input. Am I missing something simple when it comes to dealing with accents? Thanks for reading!

Tiny patch for vu meter testing

tiny vu meter test patch.zip
okay here is the smallest patch I can make that will trigger the issues . seems if I strip everything out but the mixer tinysine and the vu meters.. active or inactive the problem shows up with 6 meters and goes away like a reverb or delay back to no clicking when I drop to 5 meters in the rack.

BPM Clock: Time Signature Change de-syncs outputs

If I change the Numerator in the Time Signature (I'm sure the denominator would trigger this as well), the Bar de-syncs from the beat until I either stop or reset the unit.

Maybe add an internal reset (not sending a trigger on the reset out) to the code when those dials get changed?

Reverb Stereo FX v1.0.3 - right channel output

Hi,
I was doing a test of various reverbs in a patch and tried Stereo FX. But I found that the right channel output is driven harder compared to other stereo reverbs.

In this snapshot you can see that the right channel output on AUX A lasts much longer when the reverb is pushed. Is this normal?
image
Thanks.

Triggers MKx producing 1 sample momentary triggers

Hi Alfredo,

I noticed a small potential problem with Tiggers MKI, MKII and MKIII, concerning the trigger outputs that are produced when using the momentary buttons. In Rack's standards:

https://vcvrack.com/manual/VoltageStandards.html#triggers-and-gates

triggers should last 1 millisecond, and in your modules I believe they last only one sample (at 44.1 kHz, that's only about 22.6 microseconds).

If we look at the code from MKI, we can see this since BtnTrigger.process() returns true only on the precise sample step where a rising edge was detected, the .value = volts will only last for that sample, and after it goes back to 0.0f in the else.

if (BtnTrigger.process(params[MOMENTARY_SWITCH].value)) {
        resetLight = 1.0;
        if (!running) {
            outputs[TRIGGER_OUT].value = volts;
        }
    }else{
        if (!running) {
             outputs[TRIGGER_OUT].value = 0.0f;
        }
    }

If you want to see why the current method can be problematic, connect the output of MKI into the clock of a PulseMatrix, and use momentary with 10V to advance the sequencer, and it will not advance since it won't detect the output of MKI as the triggers are too short.

If you want, a simple fix would be to use PulseGenerator in Digital.hpp, as indicated by Andrew in the link above.

Thanks for considering this! Cheers :-)

Rack v1: Crash when loading modules in module browser

Backtrace on Ubuntu 18.04:

Thread 1 "Rack" received signal SIGSEGV, Segmentation fault.
0x00007fffec46f4b1 in MsDisplayWidget::draw (this=0x555557019710, args=...) at src/DelayPlusStereo.cpp:365
365         to_display << std::right  << std::setw(5) << *value;
(gdb) bt
#0  0x00007fffec46f4b1 in MsDisplayWidget::draw(rack::widget::Widget::DrawArgs const&) (this=0x555557019710, args=...) at src/DelayPlusStereo.cpp:365
#1  0x000055555578d209 in rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) (this=this@entry=0x555556f70260, args=...) at src/widget/Widget.cpp:174
#2  0x00005555557795df in rack::app::ModuleWidget::draw(rack::widget::Widget::DrawArgs const&) (this=0x555556f70260, args=...) at src/app/ModuleWidget.cpp:259
#3  0x000055555578d209 in rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) (this=this@entry=0x555556f701f0, args=...) at src/widget/Widget.cpp:174
#4  0x000055555578c072 in rack::widget::ZoomWidget::draw(rack::widget::Widget::DrawArgs const&) (this=0x555556f701f0, args=...) at src/widget/ZoomWidget.cpp:38
#5  0x000055555578d209 in rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) (this=this@entry=0x555556f70140, args=...) at src/widget/Widget.cpp:174
#6  0x000055555578b6a7 in rack::widget::FramebufferWidget::drawFramebuffer() (this=0x555556f70140) at src/widget/FramebufferWidget.cpp:187
#7  0x000055555578bb48 in rack::widget::FramebufferWidget::step() (this=0x555556f70140) at src/widget/FramebufferWidget.cpp:79
#8  0x000055555578dd08 in rack::widget::Widget::step() (this=0x555556285650) at src/widget/Widget.cpp:151
#9  0x000055555578dd08 in rack::widget::Widget::step() (this=0x5555562855e0) at src/widget/Widget.cpp:151
#10 0x000055555578dd08 in rack::widget::Widget::step() (this=this@entry=0x555556282da0) at src/widget/Widget.cpp:151
#11 0x000055555574abba in rack::ui::SequentialLayout::step() (this=0x555556282da0) at src/ui/SequentialLayout.cpp:14
#12 0x000055555578dd08 in rack::widget::Widget::step() (this=this@entry=0x55555627fd40) at src/widget/Widget.cpp:151
#13 0x000055555574ab11 in rack::ui::MarginLayout::step() (this=0x55555627fd40) at src/ui/MarginLayout.cpp:10
#14 0x000055555578dd08 in rack::widget::Widget::step() (this=0x55555627fca0) at src/widget/Widget.cpp:151
#15 0x000055555578dd08 in rack::widget::Widget::step() (this=this@entry=0x555556282c90) at src/widget/Widget.cpp:151
#16 0x000055555574be16 in rack::ui::ScrollWidget::step() (this=0x555556282c90) at src/ui/ScrollWidget.cpp:36
#17 0x000055555578dd08 in rack::widget::Widget::step() (this=0x555556288310) at src/widget/Widget.cpp:151
#18 0x000055555578dd08 in rack::widget::Widget::step() (this=0x55555627f840) at src/widget/Widget.cpp:151
#19 0x000055555578dd08 in rack::widget::Widget::step() (this=this@entry=0x555555e3ed90) at src/widget/Widget.cpp:151
#20 0x000055555577f98c in rack::app::Scene::step() (this=0x555555e3ed90) at src/app/Scene.cpp:51
#21 0x000055555573ad59 in rack::Window::run() (this=0x555555e67450) at src/window.cpp:363
#22 0x00005555556b44f5 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at src/main.cpp:185

AS Drums: AS RCK HiHAT

Doesn't display in Linux. Might be the same issue as before with the name of the SVG I think it was? Please have a look at your other modules as well to see if there are any other issues. I just bought them, but not really satisfied at the moment. Especially since they're so quiet and need more voltage.

Also, please make all the modules in the Drums output to 16V, or similar to Vult's voltage. I have to use the waveshaper plugin to increase the voltage to have any competency with Vult modules.

Other than that, they're okay so far!
Thanks.

Triggers MKII User-defined Labels

Feature Request: add an optional JSON configuration file (ala' Rack template.vcv) for specifying an array of user-defined label text values. Reasonable constraints on the number of characters, encodings, etc. expected as appropriate for enumerated labels.

Request: Reverse Lighting Pattern on Flow

Maybe it's just me, but it would make more sense to me if the big buttons light up red when signal is flowing, rather than when it's not. Otherwise, LOVE your stuff!

High CPU usage of the Stereo VU meter

Hi Freddy,
love your modules, but... there is always a but... can you tell me why the CPU usage of the stereo VU meter is so high ?

AS High CPU - 15102019

(I know when I connect something to the in, it goes down a little, but still it's very high).
Even Plateau is using less and it's a CPU intensive module?
The mono ones are OK.

Greetings Peter.

ReScale 0.6.13

Hi,
found a quirk with ReScale. With the 0V/5V input and 0V/10V output (Switch 4), the output voltage does not drop below 5V. Looks like an offset is used instead of a scaling issue? See pic.

image
Regards...

DelayPlus with time modulation corrupts the waveform

Hi Alfredo,
Comparing the module DelayPlus and the fundamental Delay, considering also what i would expect, I think that the module DelayPlus under time modulation produces incorrect waveforms, compared to the clean ones produced by the fundamental one. Moreover, judging by eyes, appears to me that at high frequency the modulation is applied less smoothly compared to the fundamental one, as it passes from one extreme to the other skipping intermediate states. Attached is a patch where the alteration of waveforms is evident.
VCV Rack 0.6.0 Windows 10, AS Modules 0.6.6

Thank you for the awesome modules!

DelayBug.zip

ADSR does not retrigger

Hi, I did a search for ADSR on your open issues and saw nothing. I hope this is not a duplicate.

The ADSR v1.0.1 does not seem to retrigger when a signal goes to the retrig input. If I play a keyboard note by note, then a gate goes to the Gate input and the ADSR works. If the note is sustained and then a retrigger comes because another note was chosen while still sustaining the previous note, the ADSR does not trigger. Instead it remains on sustain and did not restart the attack.

I hope that made sense. The summary is that it just doesn't retrigger the ADSR whn a retrigger signal is received.

Love your ADSR and Delay Plus all the time. I use other modules on a pretty regular basis.
Thanks!
Mike

Mixer mix slider does not work.

the mix slider of the rightmost mixer ( the last one before audio-8 module) does not work. What seems strange, is that sometimes, depending on some conditions it does work, but i don't know why. But it never works in the attached file on my machine.

bug.vcv.zip

BPM Clock (AS v0.5.3): RST button having strange behavior...

Hi,

As indicated in title, the BMP Clock module having a strange behavior when I use its RST button: all sequencers behind (with correctly wired CLOCK and RESET) they restart at first step (it's the main goal), but then run very quickly while the RST button is hold (seqs run at correct speed when this button is released, however).

I have tested with VCV's Pulse Matrix 16, Autodafe's 16-Step Sequencer, cf's trSeq and... your step sequencer. Same behavior.

Hope mine explanations are clear.

Regards.
Dominique.

LICENSE file

Speaking mostly for the sake of others, you should collect all used source licenses into the LICENSE.txt file which is distributed with the binary, so people know the licenses of the source works. Example:

### Fundamental ###

<paste Fundamental's LICENSE.txt here>

### HetrickCV ###

<paste HetrickCV's LICENSE.txt here>

...

Compile error on Windows with latest master HEAD

Revision: 0af9dcb

g++  -Wsuggest-override -std=c++11  -fPIC -I../../include -I../../dep/include -DSLUG=AS -DVERSION=0.6dev -MMD -g -O3 -march=nocona -ffast-math -fno-finite-math-only -Wall -Wextra -Wno-unused-parameter -DARCH_WIN -D_USE_MATH_DEFINES -c -o build/freeverb/revmodel.cpp.o freeverb/revmodel.cpp
src/SEQ16.cpp: In member function 'virtual void SEQ16::randomize()':
src/SEQ16.cpp:136:20: error: 'random' was not declared in this scope
    gateState[i] = (random() > 0.5);
                    ^~~~~~
src/SEQ16.cpp:136:20: note: suggested alternative: 'rand'
    gateState[i] = (random() > 0.5);
                    ^~~~~~
                    rand

random() needs to be randomUniform()

[Feature Request] - Add Accent input to VCA

What would be nice is if a VCA had an Accent input as well as the normal CV from an envelope generator. It could have a CV knob that lets you choose the amount of accent when it arrives. It seems that summing the EG CV input with the Accent input is all that's needed. Of course, it may not be that simple.
Thanks for considering. I tend to use the Fundamental VCA most frequently since it's very simple in appearance and function and has graphical feedback. I use yours when I need stereo VCAs. I use your ADSR almost exclusively and Bogaudio on occasion.
Mike

Multi 2x5 feature request

Hi Alfredo,
In Multi 2x5, when the 2nd input at the top right is unconnected, it could perhaps automatically use the first input's signal, thus becoming a 1x10 Multi, and all for free :-)
Cheers!
Marc

MIDI toggles on mixers require double on/off

Hello,

Love your modules thanks for all your hard work.

Issue report: MIDI toggles (0-127 on/off) require double activation on mute switches. Should be 127=on, 0=0ff

However, I can also see the advantage of the way you implemented it; this way it can be "tapped" on/off, with a MIDI note for example

steps start at 1

I find it impractical that steps starts at zero.
When I want the counter to count 16 steps, I have to set the dial to 15.
I think this has been discussed before, but I think it would be easier to start the count at 1.
Unless there is a good reason for 0 :)
Just my thought, I use your stuff all the time, great work!

Can't add VU meters

After trying to add Mono VU meter or Stereo VU meter to my rack I got nothing. Console is quiet.
I'm on Linux and my Rack is built from unstable master branch (0.6).

Does it work for you? Can you hint me on how can I investigate this problem myself?

Thank you a lot for such nice modules collection!

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.