Neither am I . . . I thought it was color-coding for MATLAB syntax, actually .m is the Objective-C extension (explains why it kind of colored wrong . . .).billstei wrote:
I'm not familiar with XCode
Sine Sine Everywhere a Sine
- KVRAF
- 1617 posts since 11 Dec, 2008 from Minneapolis
-
- KVRian
- Topic Starter
- 595 posts since 20 Jan, 2006
In an earlier post Howard suggested the idea of using more than one OSC/waveset with "a bit of jiggery-pokery", and so I took the same audio wav and split it into two pieces, and made 32 Wavetables instead of 16. Also I set the fundamental base frequency at 40 Hz instead of 80. I think it annunciates a little better. No doubt Howard can come up with better jiggery-pokery than myself -- I really hate that I used up MSEG3 & 4 to gate the OSCs.
I Am Zebra 2
P.S. I also cheated a bit with some EQ.
I Am Zebra 2
P.S. I also cheated a bit with some EQ.
-
- KVRian
- Topic Starter
- 595 posts since 20 Jan, 2006
Can't Sleep, Clowns Will Eat Me
It occurs to me that the current genSBlendWavetable script normalizes each Wave table individually rather than as a complete set, and this would necessarily produce a (highly) compressed (and noisy) sound. Bugs! Will have to look into this...
It occurs to me that the current genSBlendWavetable script normalizes each Wave table individually rather than as a complete set, and this would necessarily produce a (highly) compressed (and noisy) sound. Bugs! Will have to look into this...
-
- KVRian
- Topic Starter
- 595 posts since 20 Jan, 2006
I was able to evade the evil clowns, and this morning I revised the script to normalize the entire wavetable set as a whole, and indeed there is more dynamic range in my IAmZebra patch (which I won't bother posting). Of course if you want lots of LOUDNESS you can always compress it, or even use my delta patches, like SBlendAllDown10Pct and SBlendAllUp10Pct, and even SBlendAllClear and SBlendAllWavesAllClear (dig around in here: http://www.hbci.com/~billstei/pub/zebra2/DeltaPatches ) to tweak the volume of individual Wave tables. Remember that those delta patches work on all currently active OSCs so be sure to disable any OSCs that you don't want affected by the change.
So here is Version 1.2.2
Zebra Octave Fun Pack Ver 1.2.2
So here is Version 1.2.2
Zebra Octave Fun Pack Ver 1.2.2
-
- KVRian
- Topic Starter
- 595 posts since 20 Jan, 2006
The latest Octave scripts with the newest newer newness:
1) You can now specify an oscillator number 0, and this means to put the wavetable set in all (and only) active oscillators. Remember that in order for an oscillator to be active it must be both on the grid and highlighted.
2) All patches (regardless of oscillator number being 0 or 1-4) will only set a wavetable if the OSC is set to SpectroBlend before the patch is applied.
Zebra Octave Fun Pack 1.3
1) You can now specify an oscillator number 0, and this means to put the wavetable set in all (and only) active oscillators. Remember that in order for an oscillator to be active it must be both on the grid and highlighted.
2) All patches (regardless of oscillator number being 0 or 1-4) will only set a wavetable if the OSC is set to SpectroBlend before the patch is applied.
Zebra Octave Fun Pack 1.3
-
- KVRian
- Topic Starter
- 595 posts since 20 Jan, 2006
The latest Octave script has windowing functions. In the previous version we called genSBlendWavetable like this:
genSBlendWavetable("Zebra.wav", 80, "MyPatch", 1, 1:16)
and this would have been using a rectangular FFT window (i.e. no scaling of any kind), so in the new script, Version 1.4, we make the call like this:
genSBlendWavetable("Zebra.wav", 80, 0, @rectwin, 0, "MyPatch", 1, 1:16)
and this would produce identical results. The three new arguments are as follows:
0 -- overlap - not available yet, use 0 for now
@rectwin -- winfunc - the windowing function, use @rectwin, or one of the following:
@barthannwin, @bartlett, @blackman, @blackmanharris, @bohmanwin
@chebwin (winopt = attenuation), @flattopwin (winopt = "periodic" or "symmetric")
@gausswin (winopt = alpha (width, larger is narrower)), @hamming, @hann
@kaiser (winopt = beta), @nuttallwin, @parzenwin, @taylorwin - not available
@triang, @tukeywin (winopt = taper to constant sections ratio)
0 -- winopt - windowing function option, use 0 for any that don't require this
The idea of using say, @hann, i.e. Hanning, is to reduce the spectral noise produced by the discontinuity of the edge of the FFT window. There are lots of window types built in to Matlab/Octave, and these are all available (except for taylorwin which is Matlab only and needs two options). Going back to my IAmZebra patch, I tested an @hann version of it, and I do think there is a noticeable difference in the quality (again I won't post it, but I hope to conclude later with a 4 Oscillator Jiggery Pokery Spectro Monster patch, per Howard's terrifying vision of said machinery).
Zebra Octave Fun Pack Ver 1.4
genSBlendWavetable("Zebra.wav", 80, "MyPatch", 1, 1:16)
and this would have been using a rectangular FFT window (i.e. no scaling of any kind), so in the new script, Version 1.4, we make the call like this:
genSBlendWavetable("Zebra.wav", 80, 0, @rectwin, 0, "MyPatch", 1, 1:16)
and this would produce identical results. The three new arguments are as follows:
0 -- overlap - not available yet, use 0 for now
@rectwin -- winfunc - the windowing function, use @rectwin, or one of the following:
@barthannwin, @bartlett, @blackman, @blackmanharris, @bohmanwin
@chebwin (winopt = attenuation), @flattopwin (winopt = "periodic" or "symmetric")
@gausswin (winopt = alpha (width, larger is narrower)), @hamming, @hann
@kaiser (winopt = beta), @nuttallwin, @parzenwin, @taylorwin - not available
@triang, @tukeywin (winopt = taper to constant sections ratio)
0 -- winopt - windowing function option, use 0 for any that don't require this
The idea of using say, @hann, i.e. Hanning, is to reduce the spectral noise produced by the discontinuity of the edge of the FFT window. There are lots of window types built in to Matlab/Octave, and these are all available (except for taylorwin which is Matlab only and needs two options). Going back to my IAmZebra patch, I tested an @hann version of it, and I do think there is a noticeable difference in the quality (again I won't post it, but I hope to conclude later with a 4 Oscillator Jiggery Pokery Spectro Monster patch, per Howard's terrifying vision of said machinery).
Zebra Octave Fun Pack Ver 1.4
- KVRAF
- 4197 posts since 23 May, 2004 from Bad Vilbel, Germany
Looking forward to that, Bill!billstei wrote:...again I won't post it, but I hope to conclude later with a 4 Oscillator Jiggery Pokery Spectro Monster patch, per Howard's terrifying vision of said machinery...
-
- KVRian
- Topic Starter
- 595 posts since 20 Jan, 2006
Yay! Overlapping is now implemented, and my initial impression with the original "Zebra" sample and using @hann (Hanning) and a 10% overlap is that the "B" sound, that I thought was not pronounced very well, is much better now, including the "R" sound which follows it.
I'm not sure how much further I would want to develop this particular tool, as the number of command line arguments gets to be cumbersome, and the types of features that I can imagine beg for a graphical interface.
It occurs to me (duh) that being limited to 16 Waves per oscillator limits the length and quality of resynthesis, although having low quality is itself a "feature", a kind of spectral crushing, that gives voice resynthesis a vocoder-like character. If I were to make a feature request for "More Waves" I think I would want it to be selectable, so that you could choose 16, 32, 64, 128 Waves per OSC (and this would keep old patches from breaking that only used/want 16).
Zebra Octave Fun Pack Ver 1.5
Have fun
I'm not sure how much further I would want to develop this particular tool, as the number of command line arguments gets to be cumbersome, and the types of features that I can imagine beg for a graphical interface.
It occurs to me (duh) that being limited to 16 Waves per oscillator limits the length and quality of resynthesis, although having low quality is itself a "feature", a kind of spectral crushing, that gives voice resynthesis a vocoder-like character. If I were to make a feature request for "More Waves" I think I would want it to be selectable, so that you could choose 16, 32, 64, 128 Waves per OSC (and this would keep old patches from breaking that only used/want 16).
Zebra Octave Fun Pack Ver 1.5
Have fun
- KVRAF
- 4197 posts since 23 May, 2004 from Bad Vilbel, Germany
Now that you've done all the basics, somebody really needs to do the packaging. It would be a shame if such a useful program stayed at the command-line stage - without a graphic interface, hardly anybody would use it. Do you have any ideas about how this could be achieved, and by whom?billstei wrote:...I'm not sure how much further I would want to develop this particular tool, as the number of command line arguments gets to be cumbersome, and the types of features that I can imagine beg for a graphical interface.
There's a threshold of complexity (visible to the user) above which the fun factor of programming synths drops sharply, and Zebra is close to the edge - the perfect position!If I were to make a feature request for "More Waves" I think I would want it to be selectable, so that you could choose 16, 32, 64, 128 Waves per OSC...
Example: For me, the Virus C was the pinnacle of the range. The TI - although a much more powerful synth - simply has too many parameters to program it as effectively as the C.
I repeat: "too many parameters to program it as effectively"
-
- KVRian
- Topic Starter
- 595 posts since 20 Jan, 2006
I can program in just about any language, and I have done graphical programs of various sorts. I think there are a lot of questions that I need to answer first:Howard wrote:Now that you've done all the basics, somebody really needs to do the packaging. It would be a shame if such a useful program stayed at the command-line stage - without a graphic interface, hardly anybody would use it. Do you have any ideas about how this could be achieved, and by whom?billstei wrote:...I'm not sure how much further I would want to develop this particular tool, as the number of command line arguments gets to be cumbersome, and the types of features that I can imagine beg for a graphical interface.
1) Is there a toolkit that would make the program work on the most platforms?
2) Is there an FFT library that is also cross platform?
3) Is someone like Jupiter8 already doing this, with the obvious advantages of having a basic framework in place?
4) Is it worth the trouble?
Maybe Answers
1) QT is interesting (I am not much of a KDE fan, but it doesn't matter). WxWidgets "sizers" make me want to scream and break things. GTK is goofy. GTKmm is better, but no, still GTK underneath. JUCE, uh uhn no way. FLTK maybe, not sure. Python is an evil snake language. Ruby is cool but is a PITA to deploy. Java makes sense I guess.
2) Ummm, fftw ? Octave uses it I think. http://www.fftw.org/index.html
3) ?
4) I am remarkably bored. Did I mention wanting More Waves per oscillator?
-
- KVRian
- Topic Starter
- 595 posts since 20 Jan, 2006
P.S. - I was just looking at: http://www.free-soft.org/guitool and unless someone kicks me really hard somewhere that hurts a lot, why would I not use QT? (that chart makes it look like it doesn't work on OSX but that can't be true: http://www.qtsoftware.com/products/platform/qt-for-mac
- KVRAF
- 4197 posts since 23 May, 2004 from Bad Vilbel, Germany
Definitely worth it for thrilling the Zebra2 tweakers community!billstei wrote:4) Is it worth the trouble?
- KVRAF
- 1617 posts since 11 Dec, 2008 from Minneapolis
I grabbed some QT stuff for Octave on OS X and it was fine (I like GTK more on Linux but for OS X GTK is still shaky).billstei wrote:P.S. - I was just looking at: http://www.free-soft.org/guitool and unless someone kicks me really hard somewhere that hurts a lot, why would I not use QT? (that chart makes it look like it doesn't work on OSX but that can't be true: http://www.qtsoftware.com/products/platform/qt-for-mac
Adobe AIR is probably overkill here but is pretty impressive, the part of me that pretends to predict future tech trends says it's where a fair amount of computing is headed.
