Git Product home page Git Product logo

Comments (11)

dchwebb avatar dchwebb commented on August 20, 2024

No license - you are more than welcome to do anything you like with the code.

from disphaze.

dchwebb avatar dchwebb commented on August 20, 2024

And by the way, feel free to ask any questions you may have about the project. I just do this for fun so always enjoy chatting about synths!

from disphaze.

eclab avatar eclab commented on August 20, 2024

I appreciate this, but without a license, it's a copyright violation use your code: you fully own the copyright. What a license does is formally declare that we have the right to you use your code and under what conditions.

If you're in the category of "do whatever you want with this", I suggest Apache 2.0, which is the best of the licenses of this category. Just slap the Apache 2.0 license text in the top directory of the project, called LICENSE, and call it a day. Don't even bother modifying the file headers in your code, it's not that important.

from disphaze.

dchwebb avatar dchwebb commented on August 20, 2024

Added Apache licence.

from disphaze.

eclab avatar eclab commented on August 20, 2024

I'm working on a small project for adding PD to Mozzi on the Arduino. I'm looking for simple PD versions for all the casio waves. BTW, I think you've been replicating waves from the front panel of the CZ series, but you might be interested that the front panel lies: the way the waves work is entirely different. In fact, there are eight waveforms, only one of which is "resonance" so to speak (it's often called "multi-sine"), and waves consist of pairs of waveforms plus a window function: there are eight window functions. So there are technically 8^3 combinations, not 6, though many are duplicates and others are useless. It'd be really nice to have distortion generators for all eight (well, 7) of the basic waveforms, the rest is easy to put together. See the Casio CZ-1 Splunking page, which is good at explaining it, though it doesn't give any clues as to the specific functions for doing distortion. This guy got good generators for Saw and Square, and built a resonance function but that's not how resonance works in the CZ: it's just increasingly high-frequency Sine run through a triangle window function. I've not found any other useful code.

from disphaze.

eclab avatar eclab commented on August 20, 2024

I am confused a bit by your PD code. I think you have a fixed PD generator for (say) sawtooth in the form of a lookup table, and what you're doing is cross-fading between it and sine, rather than using parameterizable function generator? I could be mistaken? It's not super clear. This might work in a pinch and I might do that but was hoping to actually find a fast (non-float, non-division, sine only via lookup table) way to produce the distortion functions.

from disphaze.

dchwebb avatar dchwebb commented on August 20, 2024

There are a couple of mechanisms going on here. The 'resonance' waves are implemented pretty much how the hardware works.

For the other waves my approach was to 'move' through a sine wave with the speed dictated by the phase distortion look-up table. I then sampled the phase distorted waves from my Casio CZ, built a little program to calculate the look-up table, and stored that.

So I'm not cross-fading between the phase distortion look-up and the sine wave; I'm dynamically adjusting the speed I play back the sine wave based on the scaled phase distortion wave. It's phase distortion, but implemented very differently to the Casio.

I wasn't really aiming for accuracy - more to make a fun homage to the Casio that would work in a Eurorack situation. The sounds tend to be more aggressive than the original and work well in a monophonic situation whereas the original Casio excels as a polyphonic synth (to me, anyway).

from disphaze.

eclab avatar eclab commented on August 20, 2024

I wonder if that would work in my situation. Lookup tables always good -- I'm on an arduino with no hardware division nor floating point -- but the whole architecture might be too computationally costly... [I'm doing AE Modular GRAINS].

from disphaze.

dchwebb avatar dchwebb commented on August 20, 2024

That makes it a lot harder - I am way too lazy to work with fixed point maths. I will generally try and avoid divides anyway, unless they can be implemented as integer bit shifts.

I haven't delved massively deeply into the Casio architecture (the patent document is available but is incredibly complicated). However I am fairly sure they would have used a much simpler method than me for performance on older processors.

I also think that one thing that has a fairly significant impact on the sound is the analog LP filter on the output. I don't know what they are using exactly - it is marked 'LPF17K' on the schematic, so I assume it is filtering at 17 KHz.

from disphaze.

eclab avatar eclab commented on August 20, 2024

from disphaze.

dchwebb avatar dchwebb commented on August 20, 2024

I'm not exactly sure. The DAC goes to an 'Expander Circuit' and then a 'Sample/Hold Circuit', before being filtered and output. I haven't really looked into what these do but possibly create artifacts that need to be filtered.

from disphaze.

Related Issues (1)

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.