chuck-1.4.1.0 (numchucks) released!
Dear all, chuck-1.4.1.0 (numchucks) is available: http://chuck.stanford.edu/ http://chuck.cs.princeton.edu/ 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: http://chuck.stanford.edu/release/VERSIONS Thank you and keep on chuckin'... Perry, Spencer, Ge and ChucK Team ------- 1.4.1.0 (NOTE) chuck-1.4.1.0 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 SinOsc foo; // print to console info about its underlying type foo.help(); (OR) // call help() from any class (identical output as above) SinOsc.help(); 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) LiSa2 (stereo) LiSa4 (quad), LiSa6 (6-channel; laptop orchestra edition!) LiSa8 (8-channel), LiSa16 (16-channel) - (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. float op4Feedback(); 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. float filterStartFreq(); 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, TubeBell, Wurley - (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 default 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): examples/stereo/stereo_noise.ck - (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 after it reaches the beginning of the file (e.g., if the first sample is non-zero) - (fixed) resolved a bug in ADSR when sustain is set to 0 and audio stops, .releaseTime return NaN and basically the world ends (thanks to mariobuoninfante for help in addressing this) - (fixed) reset Gen10 table to allow add/remove partials; thanks to mariobuoninfant - (fixed) updated MidiOut and removed check in order to allow messages of size less than or greater than 3 bytes; thanks to mariobuoninfant for this issue report on Ubuntu Studio 64-bit; this fix addresses the sending of MIDI clock, stop, continue, and SysEx -- also thank you mariobuoninfante for the fix. - (fixed) ChucK shell can now be exited either by the "exit" command or through ctrl-c. Previously. ctrl-c sometimes failed to end the the program due to logic in the global cleanup function; this has been addressed. - (fixed) addressed an issue where Chugins were being loaded twice. - (fixed) the --chugin-load:off option is now correclty taken into account and will appropriately result in no Chugins being loaded. - (deprecated) Chubgraph => (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 http://chuck.stanford.edu/doc/examples http://chuck.cs.princeton.edu/doc/examples - (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 ChucK::start() - (internal/development) Thanks to Mark Cerqueira -- migrated from old Travis CI (continuous integration testing) to GHA (GitHub Actions).
participants (1)
-
Ge Wang