Joined: Jul 07, 2007
Location: Berks County, PA
Audio files: 89
|Posted: Tue Jul 13, 2021 9:31 am Post subject:
Subject description: from ChucK maillist
|Ge's email to the ChucK maillist June 25:
chuck-220.127.116.11 (numchucks) is available:
This is a significant update to ChucK that addresses many issues while
adding new features, UGens, examples, and internal groundwork for future
directions. We heartily recommend updating to this latest version. The
release notes are reproduced below and can be found at this URL:
Thank you and keep on chuckin'...
Perry, Spencer, Ge and ChucK Team
(NOTE) chuck-18.104.22.168 is the first significant release resulting from a
coordinated team effort to update and improve ChucK for teaching and
research. In April 2021, Perry and Ge led a ChucK "Global
Repair-a-thon", which identified issues and put forth a new Development
Roadmap. The ChucK dev team will follow this roadmap for updates, new
features, and new ChucK mediums (e.g., Chunity, WebChucK, FaucK,
ChucKTrip, and more). Many people were involved in this significant
release, including Jack Atherton, Mike Mulshine, Matt Wright, Rebecca
Fiebrink, Dan Trueman, Lloyd May, Mark Cerqueira, Mario Buoninfante,
Perry Cook, Spencer Salazar, and Ge Wang. Many thanks to everyone who
contributed. Happy ChucKing!
- (added) static Object.help();
All ChucK objects (i.e., all non-primitive types) can now invoke
.help(), which will dynamically generate and print to console
the description and inheritance hierarchy of the underlying type,
as well as the available functions at runtime. This can be called
on any object instance or on any class (without an instance):
// any object instance
// print to console info about its underlying type
// call help() from any class (identical output as above)
Intended to be a quick runtime reference / learning tool!
- (added) examples/help.ck -- show .help() in action
- (added) examples/deep/chant.ck (by Perry Cook, 2006) -- a chant
singing synthesizer that makes use of ChucK's strongly-time and
concurrent programming features.
- (added) new Multi-channel LiSa UGens! (LiSa10 was already present)
LiSa6 (6-channel; laptop orchestra edition!)
- (fixed) LiSa playback bug; voice panning now handles the mono case;
previously was silencing voice playback
- (added) new STK set/get access functions in FM:
float op4Feedback( float value );
Set operator 4 feedback.
Get operator 4 feedback.
float opADSR( int opNum, float a, float d, float s, float r );
Set operator ADSR: attack, decay, sustain, release.
float opAM( int opNum, float value );
Set operator amplitude modulation.
float opAM( int opNum );
Get operator amplitude modulation.
float opGain( int opNum, float value );
Set operator gain.
float opGain( int opNum );
Get gperator gain.
float opRatio( int opNum, float ratio );
Set operator frequency ratio.
float opRatio( int opNum );
Get operator frequency ratio.
float opWave( int opNum, int wave );
Set operator waveform [1-8].
- (added) new Synthesis Toolkit (STK) FM instruments from Perry!
HnkyTonk: STK-style Honkey Tonk Piano FM synthesis instrument.
(aka, Algorithm 1 of the Yamaha TX81Z DX11 FM synthesizer)
FrencHrn: STK-style French Horn FM synthesis instrument.
(aka, Algorithm 2 of the Yamaha TX81Z DX11 FM synthesizer)
KrstlChr: STK-style "Crystal Choir" FM synthesis instrument.
(aka, Algorithm 7 of the Yamaha TX81Z DX11 FM synthesizer)
*** for each of these, try using the new .help() to examine its
documentation and interface; e.g., HnkyTonk.help(); ***
- (added) new Moog function:
float filterStartFreq( float freq );
Set filter starting frequency.
Get filter starting frequency.
- (added) new STK examples:
examples/stk/frenchrn-algo2.ck -- FM French Horn demo
examples/stk/honkeytonk-algo1.ck -- fun with FM Honkey Tonk
examples/stk/krstlchr-algo7.ck -- heavenly FM Kristal Choir
examples/stk/hevymetl-acoustic-algo3.ck -- FM HevyMetl
=> Nylon Guitar
examples/stk/hevymetl-trumpet-algo3.ck -- FM HevyMetl => Trumpet
examples/stk/rhodey-song.ck -- a lovely little number
- (updated) tweaks to a number of STK UGens, which may result in audio
changes; the affected UGens are:
BandedWG, BeeThree, FMVoices, HevyMetl, PercFlut, Rhodey,
- (fixed) issue in PluckTwo in computing delay length; this affects
the tuning of various plucked string models, including Mandolin.
- (added) .frames() for SndBuf and SndBuf2; returns the number of
sample frames in the loaded sound file. This is identical in
behavior to .samples() -- but for stereo+, .frames() is
semantically more accurate than .samples().
- (added) "global" declarations for int, float, string, Object, UGen,
Event; this can be used in-language across ChucK files (each file
must first "declare" the global value before using it). This also
support usage from external hosts such as Chunity. (thanks to Jack
Atherton for this work!)
- (added) constant power panning (as controlled by the .pan parameter)
for all UGen_Stereo--including Pan2, stereo dac, stereo adc; this is
controllable using the new .panType parameter. By default, constant
power panning is NOT enabled for dac and adc, whose panning behavior
is unchanged (panType==0) and favors a kind of unity-gain-preserving
but perceptually suspect panning scheme. By contrast, Pan2 will
to use constant power panning (panType==1). This change will alter
the effect of any existing code that uses Pan2. Specifically, it
will introduce a ~3 dB reduction in the output Pan2 (it is possible
to restore the previous behavior by explicitly setting .panType to
0). This ~3 dB reduction corresponds to the equal-powered amplitude
value when pan is at center (pan=0). Mathematically, the reduction
amount can be calculated using Std.lintodb(Math.cos(pi/4))
(To hear this new behavior, check out):
- (BEHAVIOR CHANGED) clearly separated array.size() and
array.capacity(); for historical/compatibility reasons, array.cap()
is the same as array.size() and generally should be avoided in favor
of either .size() or .capacity()
- (BEHAVIOR CHANGED): internally, all ChucK static functions are now
passed an extra parameter (Chuck_Type * TYPE) as a pointer to the
base type/class. This will affect Chugins, which should be updated/
rebuilt with the latest headers.
- (BEHAVIOR CHANGED): when connecting two multi-channel UGen's (both
are at least stereo), say LHS => RHS, if LHS channels < RHS
channels, the channels will be connected one-by-one up to the LHS
channel count; previously, the LHS channels will be automatically
repeated to connect to the RHS channels that have no corresponding
LHS channels. This behavior can still be achieved by manually
connecting the individual channels of LHS and and RHS through
LHS.chan(n) and RHS.chan(n).
- (fixed) resolved a bug with SndBuf not playing when .rate < 0 and
while .pos beyond the end
- (fixed) resolved a bug with SndBuf where it could output DC when
.rate <0> (new) Chugraph;
Chubgraph will continue to function, with a deprecation warning.
- (documentation) updated embedded documentation text for all
statically linked UGens and libraries.
- (documentation) brought examples in alignment between distribution
and the online examples collection; many examples updated for
clarity and utility
- (internal/refactor) the "Mega Merge 2021" integrates a long-standing
branch since REFACTOR-2017 that includes support for globals and was
the basis for Chunity. Future Chunity releases will align with
mainline ChucK language features. (thanks to Jack Atherton for
several years of laying the groundwork and for ChucK in Chunity!)
- (internal/developement) added m_started flag to the ChucK class to
avoid a strange (but mostly harmless) condition when the virtual
machine is shutting down and ChucK::run() attempt to call
- (internal/development) Thanks to Mark Cerqueira -- migrated from old
Travis CI (continuous integration testing) to GHA (GitHub Actions).
When the stream is deep
my wild little dog frolics,
when shallow, she drinks.