ref: ce0dff376781fa5f268aae6f194e4cf20ad555a4
dir: /Changelog/
Change History -------------- This file contains a list of all changes starting after the release of sox-11gamma. sox-12.17.5 ----------- o Thomas Klausner sent in patches to compile audio drivers under NetBSD. o Rahul Powar pointed out a memory leak in the WAV file handler. It wasn't calling the correct close() function when closing input files. o Modified play.1 man page to not use multiple name lines. This appears to confuse some conversion programs. Updated sox.1 man page for typo in reverb option. o Andrew Church fixed problem with header of stereo 8SVX files. o Jimen Ching added support to scan over garbage data at the beginning of MP3 files to find valid frames. This is useful to play WAV and AIFF files that have MP3 data in them until those handlers support it directly. To play those, force sox to use the mp3 handler with the "-t mp3" option. o Added patch from Ulf Harnhammar to wav handler to prevent buffer overflows. o Added patch from Redhat to allow resample to work on certain 64-bit machines (Sam Varshavchik) o Tony Seebregts added a file handler for headerless Dialogic/OKI ADPCM files (VOX files). o Jan Paul Schmidt added a repeat effect to do loops the brute force way. This is also good for file format that don't support loops as well. o Fix for OSS driver in rate tolerance calcs that were off because of type conversion problems. Guenter Geiger. o Allow reading sphere files with headers greater then 256 bytes. Jimen Ching. o Fix for vorbis were comments are displayed in KEY=value format always. Stop printing some info to stdout in case output is a pipe. Guenter Geiger. o J Robert Ray submitted fix for AIFF handler to ignore lowercase chunks that are unknown. o Bugfix for 8-bit voc files. Jimen Ching o General warning cleanups (cbagwell) sox-12.17.4 ----------- o Peter Nyhlen fixed a problem with reading Comments in Ogg Vorbis files. o Added install target to allow installing libgsm from main Makefile. Leigh Smith. o Minor updates to sox.c to free unused memory and close all input files during failures. o Pieter Krul added a patch that makes play script look at AUDIODEV environment variable if it exists to find which device to use. This allows scripts to work with Solaris SunRays and is a good idea in general. o Updated config.sub to detect latest supported OS's. o Fabrizio Gennari added support for reading and writing MP3 files using the external libraries libmad and libmp3lame. o Jens Henrik Goebbert sent in several bugfixes for integer overflows in the compand effect. o Dan Dickerman sent in patches for integer overflows in the resample effect. o Jimen Ching sent in a fix for multi-channel sound file processing using the avg effect. o Richards Bannister added patches to clean up prototypes and filter private sizes being to small. o Jimen Ching adds -d option to specify 64bit data size and changed Ulaw/Alaw encoding to default to 8bit data size if not specified. o David Singer pointed out that a MS program creates AIFF files with an invalid length of 0 in its header. Changed SoX to warn the user but continue instead of aborting since SoX can still read the file just fine. o Bert van Leeuwen added a file handler for Psion record.app used for System/Alarms in some Psion devices. o Richard Bannister sent in a patch to make writing vorbis files work with Vorbis 1.0 libraries. o Fixed configure scripts so that they can be ran with the --with-oss-dsp, --with-alsa, and --with-sun-audio options. Was causing compile time problems. Reported by Raul Coronado. o Change Ogg Vorbis support to use VBR encoding to match defaults of oggenc based on suggestion from Christian Weisgerber. o Prints error message now when a channel value of -1 is given. Reported by Pierre Fortin. o Fixed bug were memory could be trashed if a input WAV file contained a comment. Found by Rhys Chard. o Change command line to compile soxmix.o slightly to try and make Forte compiler happy. o Added support for ALSA 0.9 driver. Jimen Ching sox-12.17.3 ----------- o Removed check that prevented pan from being invoked when the input and output channels were the same. o Ciaran Anscomb added a flush to sunaudio driver after changing settings. This is because it can start buffering data as soon as the device is open and the buffered data can be in a wrong format. o trim wasn't accounting for # of channels and was generally broken. o Jeff Bonggren fixed trim bugs were it was failing when triming data that equaled to BUFSIZ. Also, trim now immediately returns ST_EOF when its done instead of requiring an extra call that returns no data. o auto effect wasn't rewinding the file if the file was less then 132 bytes. Changed auto parsing of header to be incremental instead of reading in a large buffer. o William Plant pointed out a bad pointer access in fade effect's parsing of options. o Ken pointed out a problem were private data was not 8-byte aligned and causing crashes on most RISC CPU's. Fixed by going back to old style of declaring private data as type "double" which usually forces strictest alignment. o ima_rw was miscompiling on alpha's because of a header ordering problem. o Erik de Castro Lopo pointed out that when writing 16-bit VOC files the headers did not contain the correct length or encoding type. o Seperated st.h into 2 files. st.h for libst users and st_i.h for internal use. o Added new types used extensively by libst: st_sample_t & st_size_t. This allows for more deterministic behavior on 64-bit machines and also allows sox to possibly work with much larger file sizes. o SoX was some times getting confused and thinking an EOF was an error case when reading audio files. Removed unneeded aborts when EOF was OK. o Silence effect was broken on stereo files. Also, made thresholds relative to original bit percision of audio data. When 16-bit audio is scaled up to 32-bits, a little bit of noise starts to look like a large amplitude of noise. Also, now using RMS values to smooth out clicks. RMS rolling window size is 1/10 of sample rate. o Changed Floats into a type of encoding instead of a size of audio data. o Put a flush at the end of OSS driver so that no old data would be left in internal buffers after changing audio format parameters. o Fixed problem were play script wasn't installed correctly if you build from another directory (pointed out by Mike Castle). o Made GSM support internal to libst (no external library required). o Change configure script to enable ulaw/alaw lookup tables and GSM support by default. Also have Makefile's make use of more configure prefix options to allow for customized installs. o Reverted ulaw/alaw conversion routines back to Sun's versions. o Modified raw file handler to write files in the same generic buffered fashion that was added for reading in 12.17.2. Seems to have speed up some types of writing. o Reading Ogg Vorbis files could get confused of when EOF was reached. o Added uninstall rules to Makefile. Added new ststdint.h to define *int*_t typedefs. o Added internal strcasecmp for OS/2. o Added support for swapping "bit" order (MSB becomes LSB) for raw u-law and A-law data. Some ISDN equipment prefers it this way. Use -x flag or new .la or .lu file extensions. o Annonymous patch submitted to fix types and spelling problems in various files. Also, updated VOC files to have u-law and A-law support as well as able to read in VOC files using a pipe. More examples added to soxexam file. sox-12.17.2 ----------- o Daniel Culbert found and fixed a bug in the polyphase effect that occurs on platforms that rand() can return large values. The bug resulted in polyphase resampling an audio file to a different rate then it said it was. o Stan Seibert contributed a handler for Ogg Vorbis files. It handles all input formats but can only save using default settings. o Darrick Servis has made major cleanups in the code in regards to error conditions. Helps people using libst. o Darrick Servis has added added optional seek functionality sox. Several formats have been modified to make use of this. o Geoff Kuenning rewrote the average effect into a general-purpose parametric mapping from N channels to M channels. o Geoff Kuenning added an optional delay-time parameter to the compander effect to allow companding to effectively operate based on future knowledge. o Geoff Kuenning Added support to fade and trim effect for specifying time in hh:mm:ss.frac format. Fixed a bug that caused integer overflow when large start/stop times were used. o Geoff Kuenning updated play/rec/soxeffect scripts to handle all effects added since 12.17. Spell-checked soxexam.1 file. o Jimen Ching updated ALSA configure support to auto-detect 4.x or 5.x API and compile correctly under those two. All other versions are unsupported. o Merged in the NetBSD package changes into CVS finally. o Removed broken support for non-ANSI compilers. o Makefile now places the correct path to SoX in the play/rec scripts based on configuration script values. o Alexander Pevzner provided a fix for OSS driver for sound being dropped under heavy CPU loads. Moved GETBLKSIZE operation until after setting up the format (SBLive! was modify the block size after changing formats). o With help from David Blythe, updated OSS drivers to use newer format interface. OSS driver will now attempt to detect a valid endian type to use with sound card. o Carsten Borchardt pointed out a bug in lowp filter. Added new nul file handler that reads and writes from/to nothing. Also added new synth effect that creates sounds using a simple synthesizer. Created a testcd.sh that uses two new features to create a test sound CD for testing audio equipment. o Ben Last added a new program that uses libst and will merge two seperate audio files into a single file with multiple channels. This was merged into the standard sox.c file by cbagwell. o Andreas Menke fixed some problems with the speed effect and how effects were drained. Also improved the usage of printf()'s to use stderr. o Corrected AU header length value when comments were less than 4 bytes. o Added support for reading non-standard bit size data from AIFF files. o Ignore unmatched MARK/INSTR chunks in AIFF files now instead of quiting. o Fixed ALAW encoding bug in .au files as pointed out by Bruce Forsberg. o Unified the raw reading functions. Probably slightly faster for most datatypes but was done to fix recording from the OSS driver. Control-C stopped working somewhere during the 12.17 series. o Ford Prefect added a dcshift which can shift the midline amplitude towards the true center. This will allow for a greater range of volume adjustments without clipping audio data. o Heikki Leinonen submitted a silence effect that will trim off silence from the beginning of a file. cbagwell made some modifications to trim off front and back as well as some other tweaks. o Made the "auto" effect the default file handler for input files. Also have auto handler now use file extensions if it can't figure it out. sox-12.17.1 ----------- o Andreas Kies fixed a bug were we were not detecting correctly if an output file was seekable. o Fixed a bug in the mask effect introduced in 12.17. If the libc version of rand() returned more then 15-bit values then it would trash your data. Reported by Friedhel Mehnert. o Added a new fade in/out effect from Ari Moisio. o AIFF files now ignore a MARK chunk if the loop type is NoLoop (0). o Fixed bug were it was impossible to output ADPCM data in wav files. o Fixed bug were rate had to be specified for sphere files (fix from Antti Honkela). o Added small work around to let compile with cygwin's gcc 95.2 which also now allows to compile with GSM support under windows. o Removed accessing of sound devices in tests for sound support and instead just look for needed header files. This allows the sound support to be detected even if the device is currently busy or when compiled on a box that doesn't have a sound card but the OS supports it (which is the enviornment of most distributions creating new binaries). o Added support to partially handle AIFC files but only uncompressed versions. This should allow people to work with raw CD audio data on Mac OSX and also gives a basis for adding future support for things like ADPCM processing. o Added new "earwax" effect from Edward Beingessner. It is meant to be used for CD audio played through headphones. It will move the sound stage from left/right to in front of you. o Trim effect did not compute locations as was documented in the man pages. Changed effect so that it computed the time the same way that the fade effect does. sox-12.17 --------- o Sox can now read and write w98 compatible gsm .wav files, if compiled properly with libgsm. Thanks go to Stuart Daines <sjd.u-net.com> for the gsm-wav patches. This is new, and relatively untested. See -g format option. o Sox can now write IMA_ADPCM and ADPCM compressed .wav, this is new, and relatively untested. See -i and -a format options in manpage. o General changes to wav.c for writing additional wav formats. Reading wave headers: more consistency checks. Writing wave headers: fixes for w98. o Speedups to adpcm read routines, new codex versions are now in ima_rw.c and adpcm.c. o Speedups for raw.c, especially for gcc with glibc. o Fixed a segfault problem with ulaw/alaw conversion, where an out-of-range index into the tables could occur. o More detailed output from the stat effect. o Continued rewrite of resample.c, now it is almost as fast with floating arithmetic as the old (buggy) version was with 16-bit integer arithmetic. The older version in sox-12.16 shifted frequencies slightly and was less accurate. o Extensive rewrite of polyphas.c, should be faster and use less memory now. The sox-12.16 polyphase code had some bugs. o New effect 'filter' which is a high-quality DSP lowpass/ highpass/bandpass filter using windowed sinc function methods, like polyphase and resample. o Jan Paul Schmidt added new low/high/bandpass and bandlimit filters to sox. They have much better results then the old versions of low/high/bandpass. The new effects are all Butterworth filters. o New data file type supported, -sl or extension .sl for signed 32-bit integers. Some simplification of the raw.c source. o Some test programs and scripts in the test directory, for making gnuplot plots of frequency response, error-levels of rate-conversion and filter effects. o Removed sbdsp code. All modern unixes are support via OSS, ALSA, or sun audio device interfaces. o Added AVR handler from Jan Paul Schmidt. o SoX now waits until the last possible moment before opening the output file. This will allow all input and effect options to be parsed for errors and abort before overwriting any file. o SoX will no longer write to files that exists. This will keep it from deleting files when a user mistakenly types "sox *.wav". o Added new compander effect from Nick Bailey. Nice general purpose filter. o Under Solaris, SoX now checks hardware ability to play stereo/PCM and forces output data to match. Sorry, no SunOS support. I don't have access to one any more. o Fixed array overrun bug in rate effect as pointed out by Ian Donaldson. o Fixed clip24() range as pointed out by Ted Powell. o Fixed possible segfault in echos effect, as pointed out by Zinx Verituse. o Moved most documentation to new "soxexam.1" manual page so that all users on a unix system will have access to important information. This means no more TIPS, CHEATS, or CHEATS.eft files. o Richard Kent fixed a byte alignment problem in aiff comment code. o Loring Holden added support to create missing directories on install and support for installs from outside the source directory. o Fabien COELHO added a pan and volume effect. o Fabien COELHO added a speed effect to sox (like speeding up a tape machine). Also added pitch which changes pitch without effecting duration and stretch which stretch time without effecting pitch. o Leigh Smith updated aiff support to use the COMT check when writing comments instead of the ANNO. It is the prefered method from Apple and newer programs are starting to require it. Also fixed some bugs in how we compute the length of various chunks in output files. o Changed the default block alignement for IMA ADPCM WAV files to use 256 which is what windows programs use. Badly written readers expect 256. o Matthias Nutt helped add support for specifying multiple effects to SoX on the command line. o Curt Zirzow added a trim effect to trim off audio data. o Updated ALSA driver to support new interface. Jimen Ching sox-12.16 --------- o Changed raw data functions to perform I/O operations using block reads. Should improve speeds greatly, especially when filesize is in megs. Got code ready to tweak speed more which also forced me to clean up Endian test code. o Fixed a bug in .au's handling of G.723. It wasn't using the correct number of bits. Added A-law support to .au. o Quoted $filename in play/rec scripts so that files with spaces in their names can be given. o Old OS/2 support didn't work. Replaced with known working EMX GCC compatible code. o ADPCM WAV files were defaulting to 8-bit outputs and thus losing some persision. Now defaults to 16-bit signed uncompressed data. o Fixed a couple cross-platform compiler issues. o Jimen Ching has added support for "configure" in to SOX. Finally, a good solution to cross-platform compiling! o Jimen Ching has added native support for the ALSA driver to play and record audio from. (jching@flex.com) o Minor correction for -r example in manual page. o Renamed sox.sh to soxeffect and rewrote. Symbolic links can be made from this file to the name of a sox effect. It will then run that effect on STDIN and output the results to STDOUT. o Fixed up some makefiles and 16-bit support from patches sent by Mark Morgan Lloyd (markMLl.in@telemetry.co.uk). Also added some nice DOS test bat files from him as well. o Cleaned up some more cross-platform compile problems. In the process got it working with Turbo C again, kinda. It still locks DOS up at times. o Made AIFF handler work with invalid headers that some programs generate. Also fix an Endian bug thats been there for quite a long time (when ran on Intel machines). Made comment lengths even length to make most MacOS programs happy. cbagwell o Resample function was updated by Andreas Wilde (andreas@eakaw2.et.tu-dresden.de) to fix problem were freqs. were off by a factor of 2. o Added an effect that swaps stereo channels. cbagwell o Combined play and rec scripts to a single program to ease mantaince. Also added GNU style long-options (--help). Careful, some options have change (but more logical). o Fixed a very old silly bug were low/high/bandpass filters would add some trash data to the end of the sound file. o "avg" effect wouldn't give error message when you tried to average x number of channels in to the same number of channels. o Fixed core dump when writting AIFF files with no comments. (Olaf Pueschel) sox-12.15 --------- o Juergen Mueller moved Sox forward quite a bit by adding all the most commonly known "Guitar Effects". He enhanced echo support, added chorus, flanger, and reverb effects. He also wrote a very handy CHEAT.eft file for using various effects. o Incorporated Yamaha TX-16W sampler file support provided by Rob Talley (rob@aii.com) and Mark Lakata (lakata@physics.berkeley.edu). o Fixed a small bug in hcom compression, dependent on sign extension. Leigh Smith (leigh@psychokiller.dialix.oz.au). o sox -h now prints out the file formats and effects supported. Leigh Smith and Chris Bagwell. o smp transfers comments more completely. Leigh Smith. o aiff manages markers and loops correctly and produces more verbose output. Leigh Smith. o Added polyphase resampler (kb@ece.cmu.edu). This adds a slightly different resampling algorithm to the mix. o Michael Brown (mjb@pootle.demon.co.uk) sent a patch to stop crashes from happening when reading mono MS ADPCM files. o Fabrice Bellard has added a less buggy 'rate' conversion. I've left the old rate code included but if all goes well this will become the new 'rate'. Please test and let me know how it works. Resample effect needs to be reworked now. o Heiko Eissfeldt: Implemented a simple deemphasis effect for certain audio cd samples. o Matija Nalis (mnalis@public.srce.hr) sent a patch to fix volume adjustment (-v) option of sox. o Fixed typo in optimazation flag in unix makefile, as pointed out by Manoj Kasichainula (manojk@io.com). o Fixed missing ';;' in play script. cbagwell o Fixed bug in determining length of IMA and MS ADPCM WAVE files. cbagwell o Fixed bug in how stereo effects were drained which fixed the "reverse" effect from only saving half of stereo files. cbagwell o Can use "-e" without an effect again. o Added -g and -a options for new style support of GSM and ADPCM. Added error checking to various formats to avoid allowing these types. sox-12.14 --------- o Bumped major version number up and shortened name. The shorter name should help the various distributions using this package. o Added support for MS ADPCM and IMA (or DVI) ADPCM for .wav files. Thanks to Mark Podlipec's xanim for this code (podlipec@ici.net). o Change Lance Norskog's email address to thinman@meer.net. The old one was bouncing. o Added path string to play and rec strings so that it could be run by users without complete paths setup (i.e. Ran by "rc" files during bootup or shutdown) o Fixed -e option from Richard Guenther (richard.guenther@student.uni-tuebingen.de) and fixed a small bug in stat. o Fixed a bug in the mask effect for ULAW/ALAW files. o Fixed a bug in cdr output files that appended trash to end of file. o Guenter Geiger (geiger@iem.mhsg.ac.at) made a rather large patch to allow sox to work on 64-bit alphas. It was done the easiest meathod by changing all long declarations to use a macro that knows to make it 32-bits. Want to port to another 64-bit-but-not-alpha machine? Grep for "alpha" to see changes. There are most likely several bugs left for alphas. Guenter is also supporting this package for the Debian distribution. o Did some major code cleanups to clear out some warning messages during compile. This is to clear up problems I'm finding under both alpha and dos. Some warning messages are actually useful now (pointing out possible data loss). Hopefully, I didn't break anything. o Code clean up allows me to finally compile code under Turbo C again. Too bad the EXE gets a currupted stack somewhere and locks up the system. Anyone want to try it with Borland C for me? If you get a working EXE I would like to start distributing a DOS package like there used to be. o Speaking of cleanups, anyone want to help cleanup the makefiles for various platforms? They are quite outdated right now and it is very obvious that Sox hasn't been able to compile under all the platforms it once did for several releases. Please send in the cleaned-up makefile versions along with what programs you used to compile it with. o There is a known bug in hcom's compress() function. It is allocating memory that can't be free'd under some OS's. It causes a core dump. sox-11gamma-cb3 --------------- This release of sox is mainly a bugfix release. The following things have changed: o Documentation has been updated when it was obviously wrong. Much more work could be done. Man pages were updated to work correctly on Solaris and add some missing info. o Several people sent me patches to fix compiling on Solaris as well as fix a few bugs. o Change USS driver's name to OSS. Man, does that driver like to change names! This could cause problems if you have made your own custom play and rec scripts. o Updated my email address. Sorry if I haven't responded to any emails as I no longer have access to my old address. Please use cbagwell@sprynet.com. o Fixed unix test scripts so that they worked again. o Fixed endian bug in psion .wve code. o Replaced outdated voc info file with detailed format info inside voc code. o Added new sound format, cvsd (Continuously Variable Slope Delta) from Thomas Sailer (sailer@ife.ee.ethz.ch). sox-11gamma-cb2 --------------- This release of sox is based on the latest gamma version released plus some patches I've made to support the following new features: I would like to thank everyone that wrote me about the long standing bug in Sox that could DELETE your /dev/* file if the program was aborted for reason such as invalid audio file. Special thanks for Bryan Franklin for sending in a patch when I was to busy to even look for it. o Better play support for 8-bit stereo voc files. New support for outputing both 8-bit and 16-bit stereo voc files. o Built-in support for playing and recording from Linux /dev/dsp. This is a re-write and seperate module from the previous support included inside the sbdsp module. Also fixes a buffer size bug that showed up when using newer versions of OSS. This driver will work with OSS (and older versions called USS, TASD and Voxware). o Support for audio playing and recording with SunOS /dev/audio. o Fixes a bug were /dev/audio or /dev/dsp could be deleted when playing an invalid format audio file. o Expanded options for play and rec scripts. You can now specify sox effects after the filename and hear them in real time. Please be sure that an older version of sox is not in your path because these script will possibly find it first and incorrectly use it. o Setting play/record volume still requires an external program. If you have one a command line program to do this (such as "mixer" for Linux) then you will want to edit the play and rec to use this. The current support for it is only in example form of how it can be done. The following information originally appeared in the main README file. It has been moved here since all new additions are documented in this file. Creator: Lance Norskog thinman@meer.net (inactive currently) Mantainer: Chris Bagwell cbagwell@sprynet.com Contributors: Juergen Mueller jmueller@uia.ua.ac.be chorus, echo, echos, flanger, phaser, and reverb effects. Guido Van Rossum guido@cwi.nl AU, AIFF, AUTO, HCOM, reverse, many bug fixes Jef Poskanzer jef@well.sf.ca.us original code for u-law and delay line Bill Neisius bill%solaria@hac2arpa.hac.com DOS port, 8SVX, Sounder, Soundtool formats Apollo fixes, stat with auto-picker Rick Richardson rick@digibd.com WAV and SB driver handlers, fixes David Champion dgc3@midway.uchicago.edu Amiga port Pace Willisson pace@blitz.com Fixes for ESIX Leigh Smith leigh@psychokiller.dialix.oz.au SMP and comment movement support. AIFF Loop/MIDI support David Sanderson dws@ssec.wisc.edu AIX3.1 fixes Glenn Lewis glewis@pcocd2.intel.com AIFF chunking fixes Brian Campbell brianc@quantum.qnx.com QNX port and 16-bit fixes Chris Adams gt8741@prism.gatech.edu DOS port fixes John Kohl jtkohl@kolvir.elcr.ca.us BSD386 port, VOC stereo support Ken Kubo ken@hmcvax.claremont.edu VMS port, VOC stereo support Frank Gadegast <phade@cs.tu-berlin.de> Microsoft C 7.0 & C Borland 3.0 ports David Elliot <dce@scmc.sony.com> CD-R format support David Sears <dns@essnj3.essnjay.com> Linux support Tom Littlejohn <tlit@seq1.loc.gov> Raw textual data Boisy G. Pitre boisy@microware.com OS9 port Sun Microsystems, Guido Van Rossum CCITT G.711, G.721, G.723 implementation Graeme Gill graeme@labtam.labtam.oz.au A-LAW format, Good .WAV handling, avg channel expansion Allen Grider grider@hfsi.hfsi.com VOC stereo mode, WAV file handling Michel Fingerhut Michel.Fingerhut@ircam.fr Upgrade 'sf' format to current IRCAM format. Float file support. Chris Knight Achimedes Acorn support Richard Caley R.Caley@ed.ac.uk Psion WVE handler Lutz Vieweg lkv@mania.RoBIN.de MAUD (Amiga) file handler Tim Gardner timg@tpi.com Windows NT port for V7 Jimen Ching jiching@wiliki.eng.hawaii.edu Libst porting bugs Lauren Weinstein lauren@vortex.com DOS porting, scripts, professional use Stan Brooks stabro@megsinet.net Rewrite of resample and polyphase code. DSP filter effect. Some test code/scripts. Stuart Daines <sjd.u-net.com> Patches for r/w support of gsm-encoded wav files, Cleanup of wav.c. Chris Bagwell cbagwell@sprynet.com OSS and Sun players, bugfixes, ADPCM support, patch collection and maintance. Matthias Nutt Multiple effects from command line. (your name could be here, too) (I've probably lost a few, and several people fixed the same bugs.)