Comments (11)
No license - you are more than welcome to do anything you like with the code.
from disphaze.
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.
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.
Added Apache licence.
from disphaze.
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.
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.
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.
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.
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.
from disphaze.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from disphaze.