SkillAgentSearch skills...

Newac

New Audio Components (NewAC) are designed to help your Delphi programs perform different sound processing tasks.

Install / Use

/learn @cherts/Newac
About this skill

Quality Score

0/100

Category

Design

Supported Platforms

Universal

README

Introduction

An introduction to NewAC, Delphi components for manipulating audio data.

Author

Andrei Borovsky, anb@symmetrica.net

Contributors

Several people have made contributions to the NewAC code.

  • Mikhail Grigorev
  • Lev Amelin: improved and extended TMP3Out component.
  • Thomas la Cour: Monkey Audio input/output components.
  • Jan Henrik Ejme: adding ACM-playing support.
  • Thomas Grelle: improving CDRip support.
  • Jan Bartels (ATR Industrie-Elektronik GmbH & Co. KG, Viersen, Germany): some useful corrections and suggestions.
  • Sergei Borisov: quite a few contributions, including WavPack, TTA, TAK, Tags, OptimFrog support and much more.
  • Eriks Aleksans: many useful suggestions.
  • Wayne Thursby: preparing documentation and not breaking things (not entirely, at least)
  • Christophe De Vocht: updated ACS_LAME unit.
  • Michael Reisch: TCDDBInfo component

Summary

  • Introduction An introduction to NewAC, Delphi components for manipulating audio data.
  • On the Web
    • Project Homepage You can find the official homepage of NewAC at https://github.com/cherts/NewAC
    • Project Discussion Discussion and support can be found on the Github at https://github.com/cherts/newac/discussions/landing
    • Project Source The source code for NewAC is now hosted on Github at https://github.com/cherts/NewAC
  • Version History See CHANGELOG.md.
  • A Note to the Reader It is only fair to warn you that this documentation is not complete.
  • Introduction to NewAC Programming
    • Basic Operation The New Audio Components package is a set of components designed to handle different sound processing tasks, such as reading and storing data in different audio formats, working with sound hardware, audio streams mixing and so on.
    • Ripping a CD to OGG Suppose you want your application to convert data from audio CD tracks to Ogg Vorbis audio compression format.
    • Converting Stereo to Mono To get stereo audio data from a *.wav file, convert it to mono and save to another *.wav file, we will need an instance of the TWaveIn component.
    • Using Streams Almost all NewAC components that read data from audio files or store data in audio file format can work with both disk files and memory streams (currently only TMACIn and TMACOut components do not support general streams).
    • Stopping and Pausing You can stop a playing chain by calling an output component’s Stop method.
    • Terminating the Playback You can call the output component’s Stop method to terminate an ongoing playback at any time, but because of the multithreaded nature of NewAC the playback doesn’t stop at once when requested.
  • Chaining Audio Tasks In some cases you may want to start the next audio task automatically right after the previous task has been finished.
  • Editing Sound Several sound-editing operations can be performed with NewAC.
  • Handling I/O Errors Programs operating in real world have to provide means to handle input and output errors.
  • Input Switching Most of the output components allow assigning new input on the fly
  • Avoiding Common Errors This section explains how to avoid some errors that are most often encountered by the programmers beginning to use NewAC.
  • Legacy Components Some NewAC components are now considered legacy.
  • Third Party Libraries Some of NewAC components require certain shared libraries, which are not included in the package but are publicly available and may be found on many sites both in source and binary forms.
  • Installation Since NewAc is an ordinary Delphi package its installation procedure should be straightforward for most of the Delphi users.
  • Writing Your Own Components Eventually you may want to extend NewAC with your own components.
  • Licenses The NewAC code itself is distributed free of charge, under a simple license that allows an unrestricted use (both non-commercial and commercial).

On the Web

Summary

An introduction to NewAC, Delphi components for manipulating audio data.

Project Homepage

You can find the official homepage of NewAC at https://github.com/cherts/NewAC

Project Discussion

Discussion and support can be found on the Github at https://github.com/cherts/newac/discussions/landing

Project Source

The source code for NewAC is now hosted on Github at https://github.com/cherts/NewAC

A Note to the Reader

It is only fair to warn you that this documentation is not complete. Like all the programmers in the World we prefer to write code, not the documentation. Some components and features are not covered just because we think they are insignificant to the user or are going to obsolescense. At the same time we try as mush as possible to make this documenation to reflect the latest state of NewAC package. It is important to note that the documentation will match up with your source code if you downloaded both of them at the same time from the same place. On the website, the very latest version of the documentation is readily available. It reflects the latest changes with the idea that more documentation is always a good thing.

If you read something in this documentation that disagrees with the source code you have, odds are you have outdated source. Unless you have production code, there is no reason not to pull directly from the Subversion repository. If for some reason there is instability in this code you would be doing everyone a favor by at least discovering and reporting it.

Note from Andrei Borovsky

Not being a native English speaker, I especially apologise for any grammatical and orthographical mistakes and clumsiness you may find in this documentation. If you find such a thing it is most probably my fault and not Wayne’s.

Introduction to NewAC Programming

Summary

  • Basic Operation The New Audio Components package is a set of components designed to handle different sound processing tasks, such as reading and storing data in different audio formats, working with sound hardware, audio streams mixing and so on.
  • Ripping a CD to OGG Suppose you want your application to convert data from audio CD tracks to Ogg Vorbis audio compression format.
  • Converting Stereo to Mono: To get stereo audio data from a *.wav file, convert it to mono and save to another *.wav file, we will need an instance of the TWaveIn component.
  • Using Streams: Almost all NewAC components that read data from audio files or store data in audio file format can work with both disk files and memory streams (currently only TMACIn and TMACOut components do not support general streams).
  • Stopping and Pausing: You can stop a playing chain by calling an output component’s Stop method.
  • Terminating the Playback: You can call the output component’s Stop method to terminate an ongoing playback at any time, but because of the multithreaded nature of NewAC the playback doesn’t stop at once when requested.

Basic Operation

The New Audio Components package is a set of components designed to handle different sound processing tasks, such as reading and storing data in different audio formats, working with sound hardware, audio streams mixing and so on.

Most of the components in the New Audio Components package belong in one of three categories: input components, output components, or converter components.

The input components acquire audio input from some source (device, disk file, etc.) and convert it into a digital audio stream which is the internal audio representation in NewAC. The output components take in the digital audio produced by input components and send it to some audio output device or store it on disk in a specified audio file format. Converter components perform different operations on audio streams. These components take in a digital audio stream and output a stream which is modified according to the function of the component. The following diagram illustrates the flow of audio data in the NewAC processing chain.

All components are linked via their Input properties. Arrows show connections between components (from WaveOut1 to AudioIn1). Audio data flows through the chain in the opposite direction, from AudioIn1 to WaveOut1. In this example we read audio data from the sound card input component AudioIn1 (input component), pass it through the RateConverter1 component (converter component) and store in a *.wav file via WaveOut1 component (output component).

The converter component is not a necessary element in this chain. In many cases you will just connect input and output components together to convert data from one format to the other or to perform I/O with some particular device. As you can see NewAC isn’t just a collection of components implementing interfaces to some hardware or file formats. It is rather a set of building blocks with which you can construct a complete sound-processing application.

Note that an audio processing chain may have more than one input (by using TAudioMixer) and more than one output (by using TAudioPass or TAudioTap descendents).

The driving force of this sound processing chain is an output component. Output components use internal thread objects that call data retrieving functions of the input/converter components attached to the output component. Note that NewAC provides you with two ways to set the amount of CPU time consumed by these threads: <ThreadPriority> and <Delay>. You can use these properties to set the desired performance/CPU usage ratio for your application.

Ripping a CD to OGG

Suppose you want your application to convert data from audio CD tracks to Ogg Vorbis audio compression format. First, you put in

Related Skills

diffs

338.0k

Use the diffs tool to produce real, shareable diffs (viewer URL, file artifact, or both) instead of manual edit summaries.

clearshot

Structured screenshot analysis for UI implementation and critique. Analyzes every UI screenshot with a 5×5 spatial grid, full element inventory, and design system extraction — facts and taste together, every time. Escalates to full implementation blueprint when building. Trigger on any digital interface image file (png, jpg, gif, webp — websites, apps, dashboards, mockups, wireframes) or commands like 'analyse this screenshot,' 'rebuild this,' 'match this design,' 'clone this.' Skip for non-UI images (photos, memes, charts) unless the user explicitly wants to build a UI from them. Does NOT trigger on HTML source code, CSS, SVGs, or any code pasted as text.

openpencil

1.8k

The world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.

ui-ux-designer

Use this agent when you need to design, implement, or improve user interface components and user experience flows. Examples include: creating new pages or components, improving existing UI layouts, implementing responsive designs, optimizing user interactions, building forms or dashboards, analyzing existing UI through browser snapshots, or when you need to ensure UI components follow design system standards and shadcn/ui best practices.\n\n<example>\nContext: User needs to create a new dashboard page for team management.\nuser: "I need to create a team management dashboard where users can view team members, invite new members, and manage roles"\nassistant: "I'll use the ui-ux-designer agent to design and implement this dashboard with proper UX considerations, using shadcn/ui components and our design system tokens."\n</example>\n\n<example>\nContext: User wants to improve the user experience of an existing form.\nuser: "The signup form feels clunky and users are dropping off. Can you improve it?"\nassistant: "Let me use the ui-ux-designer agent to analyze the current form UX and implement improvements using our design system and shadcn/ui components."\n</example>\n\n<example>\nContext: User wants to evaluate and improve existing UI.\nuser: "Can you take a look at our pricing page and see how we can make it more appealing and user-friendly?"\nassistant: "I'll use the ui-ux-designer agent to take a snapshot of the current pricing page, analyze the UX against Notion-inspired design principles, and implement improvements using our design tokens."\n</example>

View on GitHub
GitHub Stars70
CategoryDesign
Updated3mo ago
Forks22

Languages

Pascal

Security Score

77/100

Audited on Dec 18, 2025

No findings