interactive audio effects processing gareth r. jones · interactive audio effects processing gareth...

28
Interactive Audio Effects Processing Gareth R. Jones Computer Science and Music 2001/02 The candidate confirms that the work submitted is their own and the appropriate credit has been given where reference has been made to the work of others. I understand that failure to attribute material which is obtained from another source may be considered as plagiarism. (Signature of student) _______________________________________

Upload: vukhanh

Post on 06-May-2018

221 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Interactive Audio Effects ProcessingGareth R. Jones

Computer Science and Music2001/02

The candidate confirms that the work submitted is their own and the appropriate credit has been givenwhere reference has been made to the work of others.

I understand that failure to attribute material which is obtained from another source may be consideredas plagiarism.

(Signature of student) _______________________________________

Page 2: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

i

Summary

This report deals with the subject of Digital Sound Processing effects plug-ins. The objective

of this project was to create D.S.P. effects plug-in with real-time capabilities that would take

an audio input, alter it with a specific algorithm and output it in its new form. The three

effects designed were for channel swapping (left becomes right, right becomes left), auto-

panning (the signal is continually passed from left to right and back again) and specified tap-

delay (the signal is repeated a specified number of times). This report contains background

analysis of plug-ins and audio processing technology currently available commercially for use

in music technology. Also presented is an evaluative study of the VST Plug-In Software

Development Kit that was used for this project.

Page 3: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

ii

Acknowledgement

I would like to thank my supervisor Dr Kia Ng for his guidance, advice and support

throughout the whole of this project.

Also, I would like to thank Dr Ewan Stefani from the music department for allowing me the

use of the electronic studio’s facilities.

In addition, I would like to acknowledge Steinberg for the use of the VST Plug-In Software

Development Kit version 2.0 - Copyright notice:[1] ”VST is a trademark of Steinberg Soft-

und Hardware GmbH”

Page 4: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

iii

Table of Contents

Summary…………………………………………………………….…………… (i)

Acknowledgement……………………………………………………………….. (ii)

Table of Contents………………………………………………………………... (iii)

1: Introduction…….……………………………………………………………...

1.1 Motivation for choosing this project

1.2 Description of problem

1.3 Minimum Requirements

1

1

1

2

2: Background……………………………………………………………………

2.1 D.S.P. Effects

2.1.1 Filtering / Equalisation

2.1.2 Time Warping

2.1.3 Vibrato

2.2 Audio Processing Plug-In Technology

2.3 Evaluation of commercially available plug-in

2.4 Evaluation of audio environment

2.4.1 Csound

2.4.2 Cubase VST

2.4.3 Cool Edit Pro

3

3

3

3

3

4

4

7

7

8

8

3: Implementation…………………………………….………………………….

3.1 Project Milestones

3.2 Visual C++

3.3 VST Plug-In Software Development Kit

3.4 D.S.P.Effects

3.41 Channel Swap

3.42 Auto-pan

3.43 Specified Tap-Delay

9

9

9

10

11

11

12

13

4: Evaluation……………………………………………………………………...

4.1 Evaluation of minimum requirements

4.2 Evaluation of prototype

4.3 Evaluation of planning

14

14

15

16

Page 5: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

5: Conclusion………………………………………….………………………….

5.1 Conclusion

5.2 Future Direction and Enhancement

17

17

17

References............................……………………………………………………... 18

Appendix A: Personal Reflection………………………………….……………. 20

Appendix B: Instructions for Plug-In use.......…………………….…………… 21

Appendix C: Screen Shots………………………………………….…………… 22

Page 6: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 1

1. Introduction

1.1 Motivation for choosing this project

In order fully profit on knowledge and experience, a project to combine the two disciplines of

computer science and music was necessary. Over the past few years, musicians, songwriters and

producers have used computers to aid them with songwriting and producing. One of the many ways

to enhance audio recordings is by applying effects on to the raw sound files to give the sound a

different quality.

By evaluating the existing commercially available software, researching into D.S.P. (Digital Sound

Processing) effects and addressing specific problems encountered personally in music technology, this

project aims to create a D.S.P. effects plug-in, suitable for use in Cubase VST (an audio/M.I.D.I.

software sequencer). Its function is to take an audio input, alter it using D.S.P. algorithms and output

it in its new form.

The scientific approach to the production of music is relatively new to me personally and sets up an

enticing challenge to balance musical creativity with a scientific method. It will also enable the

development of my knowledge and ability to use programming languages learnt in the SoC (School of

Computing) modules “Introduction to Programming” (SO11 and SO12) and “Object Oriented

Programming” (SO21).

1.2 Description of problem

In certain situations, users of commercially available software have found certain details to be lacking

in current implementation, or at least not developed enough to be useful or versatile. These include

real-time channel swapping, useful for re-distributing certain individual sounds if the mix of the

whole track sounds unbalanced, or the sounds are heavily biased to one side. This feature has been

generally implemented as a part of the functions of a wave editor (such as Syntrillium’s Cool Edit

Pro, Sonic Foundry’s Sound Forge or Steinberg’s Wavelab) but has been overlooked as a real-time

tool.

Neglected by many wave editors and also by audio sequencers (such as Steinberg’s Cubase VST or

Emagic’s Logic Audio) is a specified tap-delay. With this we could control the number of delays

outputted by specifying how many times to loop around the delayed output. Currently implemented

Page 7: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 2

delays include the single-tap delay where the input signal is outputted and then also returned back into

the delay once only, and the multi-tap delay, where the input signal is outputted and then continuously

fed back into the delay. The use of a specified tap-delay is for occasions where more than one tap is

needed to augment a sound, without flooding it for longer than it is needed. For example, it could be

configured so that in one bar of music that has a time signature of 4 beats a bar, a sound could played

on the first beat and the effect could reproduce this on the other beats in the bar, stopping once its task

is complete.

The reason for the choice of plug-in technology over stand-alone software is its real-time capabilities,

the existence of software that supports plug-in technology and its practical commercial appeal.

1.3 Minimum Requirements

- An evaluation of Csound, its architecture and its functionality to manipulate sound files.

- To learn Visual C++ and Cubase VST

- Investigate M.I.D.I. (Musical Instrument Digital Interface) protocol

- Research into D.S.P. and possible types effects to be implemented (filtering, panning, pitch

shifting, delay and some investigation into reverberation)

- Design and implement a plug-in module for effects processing.

Page 8: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 3

2.� Background

2.1 D.S.P. Effects

2.1.1 Filtering / Equalization

The process of filtering allows us to let through or block any frequencies we choose. It is one of the

most common D.S.P. effects and as such there are many algorithms to represent different types of

filtration. Tseng and Pei[2] provide us with a design for a IIR (this is a notch filter). The main angle

of the paper is centred around pole placement, which is found by solving a quadratic problem. Tseng

and Pei in another paper [3] discuss a comb-filter design, which uses FIRs rather than IIRs. There is

extensive talk of a fractional delay filter design to solve the problem of interference at harmonic

frequencies. This is because IIRs are “more sensitive to accumulation of roundoff errors in the filter

arithmetic than FIRs” [4]. The models provided in these two papers are of benefit to this project.

Another paper discusses filter morphing [5] where the output signal can change gradually from one

set of parameters to another. Coefficients are encoded using the ARMAdillo scheme [6] and results

show that the morphing performance of a parametric equalizer or shelving filter is superior to the non-

encoded version. Filter morphing is desirable for this project so therefore this article provides a good

reference point.

2.1.2 Time Warping

Time Warping is the process of manipulating an audio input so that it plays back faster or slower, or

morphing between different presets. Goldenstein and Gomes [7] presented a technique to compute

time warping using periodic information that it uses and replicates with an algorithm. Their goal is to

change the duration of the sample, without changing the actual pitch, ie. if the sample was a voice, it

would say the same things but slower or faster. They recognise the need to filter certain after

applying time warping, known as sampling rate conversion or resampling. They mention Dynamic

Time Warping, a technique that is implented in the system, Super Mbox, from Jang’s and Lee’s paper

[8]. Their system takes an audio input from a singer and based on the first few notes sang, it will

recognise the song and play the backing track, based on the musical key and tempo of the

performance. DTW is used to compare the input pitch vector to that of the song in the database.

2.1.3 Vibrato

Vibrato is the undulation of pitch of a note. This exists naturally in the playing of an instrument,

however when synthesizing a sound, it is important to include this if the output is going to sound

Page 9: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 4

realistic. For Chowning’s simulations [9] he uses the equation “V= 0.2 × log(pitch)” to calculate

vibrato. Disch and Zolzer [10] have a slightly more complex equation, as they are attempting to

model a mechanical vibrato bar. For this, their vibrato uses delay lines with sine type modulation,

backing up Pinkston’s claims about delay lines [11]. The system combines the vibrato with SSB

modulation and demodulation. Arroabarren et al. [12] have also analysed vibrato, using their findings

to propose their discrete time-frequency techniques to calculate

2.2 Audio Processing Plug-In Technology

For the platform we are exclusively dealing with for this project – the PC – the two main types of

audio processing plug-ins are DirectX™ plug-ins and VST plug-ins. DirectX™ (developed by

Microsoft) is more commonly used of the two. There are many more of these plug-ins commercially

available and also many more host applications that support them (Cool Edit Pro, Sound Forge). VST

plug-ins (developed by Steinberg) are designed to extend the capability of Steinberg’s software, in

particular Cubase VST, but also their other two big software packages, Wavelab and Nuendo.

Although their software supports DirectX™ technology, Steinberg are keen to promote the use of

VST technology. Their most popular plug-in set GRM Tools 1 and 2 are VST only.

2.3 Evaluation of commercially available plug-in

There are a number of software effects plug-ins available, some of the leading manufacturers being

Steinberg, TC Works, Waves, Prosoniq to but a few. An evaluation of some of the demonstration

versions that are available has been done to assess and evaluate the functionality of each plug-in based

on the same set of criteria, and using the same test procedure.

The set of criteria on which to contrast these plug-ins is as follows.

• Can the plug-in process different sample rates?

• Can the plug-in process mono and stereo files?

• Can the plug-in process different bit rates?

• Were there sufficient parameters to alter the sound?

• Did the parameters control the sound well and make a real difference?

• Was the GUI clear and helpful?

• Overall, was the plug-in easy to use?

Page 10: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 5

The same group of test files were used, including some at different sample rates (44,100Hz,

32,000Hz, 22,050Hz), different bit rates (8 bit and 16 bit), mono and stereo. As it turned out, Cubase

VST did not support 8-bit wave files and so all plug-ins cannot pass this test.

• dB-T tempo delay

A freeware plug-in from db-audioware, it implements a basic delay algorithm, with some high

and low pass filtering. Excellent quality output, and a few parameters to adjust such as feedback,

volume of the delay and panning of the returning delayed signals. This could be improved on by

implementing some changing parameters such as cross-panning rather than them all being static.

• Timeworks Delay 6022

Attempts to make this plug-in look like authentic hardware took away from its performance. The

GUI used a VU meter to show the input/output/delay level and was unclear at times. The text

used was also unclear, especially against such a dark coloured background. Aside from this, it is

an effective plug-in. A stereo delay, the parameters of the two delayed signals can be ganged and

altered in proportion, including the amount of original signal sent, the level of the returning signal

and the level of feedback (SPIN). The quality of the results was good, the delay algorithms are

very effective. However it was perhaps too simplistic in its approach whereas the results from the

dB-Tempo delay were a lot more impressive.

• Steinberg Freefilter

This plug-in implements equalization algorithms where control of a wide range of frequencies is

available through a 30 band graphic equalizer. Its GUI is reasonably straight forward though a

little reference to the help file was required. Results-wise, it was impressive due to its close

command of frequencies. However, it was sometimes difficult to maintain the complete control

of the filter drawing modes.

• Fusion Filter

This plug-in is made by Opcode and contains a filter and a modulator. The GUI was not very

clear, and not user-friendly, which hindered experimentation. There were too many features for

the one window. Its results were moderate; the filtering was very precise, perhaps a little too

much. Its main flaw was in the lack of a mix control between original and effected signal. Of

course the plug-in can be used through an insert point, however it is an unnecessary chore.

Page 11: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 6

• Prosoniq P warp

This plug-in also had a bad GUI, but because it lacked any clear indications of what the controls

were. There are 5 vertical sliders, which control a pitch warp effect, tone, feedback, a type of

reverberation. The results of using it were very original and interesting, however the lack of real

knowledge into how they were achieved negates the novelty factor.

• Arboretum Realizer Pro

A very simple yet effective design of plug-in, this combines D.S.P. algorithms for equalisation,

reverberation, stereo spreading and gain control. The results were good, a high quality output was

achieved. Simple, but clinical. Could be improved by perhaps expanding the equalisation for

greater control of the output signal.

• TC Native Parametric EQ

A very professional looking plug-in, this combines good visual appearance with exceptional use

of D.S.P. algorithms for parametric equalisation. Precise control of the output is obtainable, and

with a graphic view of the frequencies being boosted or cut, it is very easy to navigate. This work

can be expanded upon perhaps by allowing some of the filters to change over time.

• Timeworks Mastering EQ

Also professional looking, the overall interface is well structured and clear. As a mastering EQ it

only need control rogue frequencies in places and so the plug-in provides a 6 notch filters where

there is control over frequency, gain and width of the notch. Also featured is shelving EQ which

gives a simple cut and lift. Results were excellent, and there was very precise control over

frequencies. Although huge general cuts in frequencies could be made, it was more effective

doing the job for which it was designed.

Can the plug-in process different sample rates?Can the plug-in process mono and stereo files?Can the plug-in process different bit rates?Were there sufficient parameters to alter the sound?Did the parameters control the sound well and make a real difference?Overall, was the plug-in easy to use?

dB-T

tem

po d

elay

Tim

ewor

ks D

elay

602

2S

tein

berg

Fre

efil

ter

Fus

ion

Fil

ter

Pro

soni

q pi

war

p A

rbor

etum

Rea

lize

r P

roT

C N

ativ

e P

aram

etri

c E

QT

imew

orks

Mas

teri

ng E

Q

Page 12: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 7

2.4 Evaluation of audio environment

2.4.1 Csound

Csound is a synthesis program. It has the ability to generate sounds or import sounds from files, and

change their nature in some way. In the area we are interested in, signal processing, it has been

proved to be a effective and versatile piece of software. To use this software effectively, a knowledge

of the basic concepts in Csound is needed, so as to understand for example, the need for orchestra

files (describes the instrument) and score files (provides the notes to play). In general, it is not as

straightforward and user-friendly as a Windows based synthesizer. However it is many times more

powerful and the level of control is greater.

In his work, Mikelson [13] has many examples of effects that have been implemented, in the form of

block diagrams and also showing the source code of an instrument that utilises that effect. These

include 3-band equalizer, low-pass filter, vibrato, auto-panner and a stereo delay. The code follows a

similar template for each, with declaration of parameters followed by an algorithm using those

parameters. Some of the effects contain delay lines, and so we refer to Pinkston [11] who states that

delay lines are “the basis for a wide variety of synthesis and signal processing.” Csound provides us

with 3 basic delay lines – “delay1”, “delay” and “vdelay”. Delay is a fixed one sample delay,

however the other two have the delay time specified. In addition vdelay has a variable time delay.

These are the basic commands that are used in creating effects such as a variable delay vibrato, slap-

back echo and a continuous pitch-shift.

The significance of Csound to this project is to understand how effects can be reduced down to their

most simple level, and algorithms based on specified parameters can be implemented. There is an

issue with how accessible a Csound effects processor would be to the average computer musician.

Therefore we can transfer our findings in Csound on to a more popular platform.

Page 13: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 8

2.4.2 Cubase VST

There are two main types of audio environment in which plug-in effects are used. The first is the

sequencer and the second is the wave editor.

The sequencer allows MIDI and audio data to be programmed into an arrangement whereby it can be

played back and added to in real-time. One of the most popular sequencers of the past 10 years is

Steinberg’s Cubase. There are others such as Emagic’s Logic and Digidesign’s Pro Tools. However,

Cubase has remained the industry standard because of its unrivalled ability to deal with MIDI data

and its growing audio capabilities with low latency. Its MIDI functions have largely remained the

same since its first release on PC of version 1. It has been since the release and inclusion of

Steinberg’s VST technology that audio has become their concern. It has allowed them to branch into

areas such as plug-in effects technology and virtual instruments, the likes of which had not been seen

in combined MIDI/audio software before. It’s GUI is quite daunting on first look, however once it is

broken down into sections and time is spent learning where functions are, then it becomes very natural

to use.

2.4.3 Cool Edit Pro

Wave editors generally support plug-in technology as they can enhance the capabilities of their

software. Cool Edit Pro supports DirectX™ plug-ins, however it has many useful functions already

coded into the software. These are more tools than effects. Cool Edit Pro started off life as a

freeware wave editor but when it achieved popularity, Syntrillium decided to enter the commercial

market. It has a simplistic GUI, what you see is what you get. However, for a sound designer this is

perfect as using its built in tools such as convolution, noise and hiss reduction, and its series of

parametric and scientific filters, it allows the careful negotiation of sound waves. It is let down by its

lack of real-time implementation. Even something simple such as the gain on a channel takes a

second or two to acknowledge a change, and as this is pretty much the only thing that can be altered in

real-time, it scores low in that section.

Page 14: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 9

3. Implementation

3.1 Project Milestones

In order to ensure a coherent approach to this project, it is necessary to define certain milestones.

Firstly, the VST plug-in SDK must be explored in order to understand how a VST plug-in works with

the host application. To do this, it is first necessary to become familiar with the programming

language of Visual C++. This language has been chosen as the SDK example code has been

programmed in C++. Also because Visual C++ is PC based, it allows the transferral of compiled code

into the appropriate directory for testing to be more time efficient. The Visual element may also assist

in the development of GUI later on in the project [14].

Concurrent to this, the D.S.P. effects must be designed in order to have a model on which

implementation can be attempted. This can take the form of equations. Also, block diagrams maybe

useful.

Once a design has been completed, implementation and testing of these effects can be performed,

making sure that the plug-ins are robust in the host application.

Extensions to the project can be started once the effects are implemented, beginning with a design of a

suitable GUI for each plug-in. Implementation of this can follow.

3.2 Visual C++

The learning and investigation into Visual C++ extended upon knowledge and experience of C++

already acquired from the SoC (School of Computing) modules, SO11, SO12 and SO21. Its main

distinction from C++ used in these modules, was the ease in which variables and functions could be

traced back to their definitions, allowing navigation through example code to be more straightforward.

The principal way of understanding Visual C++ was to use the VST plug-in SDK as this would prove

to be the most relevant way to become familiar with the architecture of Visual C++ and the SDK

itself.

Page 15: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 10

3.3 VST Plug-In Software Development Kit

This SDK supplied us with example code, allowing the use of pre-existing functions and variables.

One of the key concepts of object oriented programming, inheritance, is insisted upon in the

documentation (included in the SDK as a .PDF file) as “the host application relies on them being used

as they are provided.” Also supplied was the logo required to be included in GUI designs so to

acknowledge Steinberg’s copyright on the SDK. There was also included examples concerning the

creation of VST instruments. However, this does not concern us for this project.

The 3 examples were for “gain-change,” “delay” and “delay with GUI.” The code for each is split

across 3 files, a header file, a code file and a main file. The header file contained declarations using

inheritance from “audioeffectx.h.” The code file contained the actual implementation of the effects

whilst the main file communicated with the host application. The 3 files were explained step by step

in the documentation as to why the lines were needed but unfortunately no explanation was given for

any of the files which were needed for inheritance which hindered the overall understanding of the

processes being undertaken.

Taking the gain-change as an example, the code for this was compiled and then the DLL file that had

been created was copied into the “vstplugins” directory within the directory structure of Cubase VST,

as any plug-ins are recognised by this particular host application upon initial loading only.

The plug-in had 1 parameter that was adjustable in real-time to alter the gain of a signal being routed

through it. However, the gain amount was displayed as a decimal number to 6 places. This may have

perhaps been more helpful as a percentage of the total gain. It also ranged from 0 to 1 when perhaps

the issue of gain boost had been overlooked. Using the criteria applied to the other commercially

available plug-ins from chapter 2, the gain-change performed well. It was able to process different

sample rates, as well as mono and stereo files, though still with the restrictions of the programming, it

could not process files lower than 16 bit. There was 1 parameter which was sufficient to control the

sound and it made an obvious difference to the audio output, although there is a question of how fine

the control is able to go. The GUI was basic and simple and overall the gain plug-in was very easy to

use.

The delay example was also compiled in order to assess its functionality and compare what it is doing

with the source code. The type of delay implemented was unspecified multi-tap. The input signal

would be initially outputted, but also applied into a feedback loop. This allowed the signal to be

outputted again at a specified level at a specified delayed point, and fed back into the loop until the

Page 16: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 11

signal is eventually inaudible. The assessment criteria from chapter 2 was also applied here and it

also could process different sample rates, and mono and stereo. The parameters were sufficient for

the task of a delay and were clear and audible in what effect they were having. The GUI was also

basic and simple and overall the delay plug-in was very easy to use.

3.4 D.S.P. Effects

The 3 types of D.S.P. effects we wish to implement are “channel swap,” “auto-pan” and “specified

tap-delay.” We will deal with each one’s design in turn.

3.4.1 Channel Swap

In order to achieve a channel swap, we have to take the input from both

channels, place the right channel in a buffer, swap the left channel to the

right channel and then copy the buffer to the left channel.

BUFFER = RIGHT

RIGHT = LEFT

LEFT = BUFFER

This will result in the left and right outputs being the opposite way

around to the way they were inputted.

In order to implement this effect, the code from the “gain-change” example was used, and was firstly

amended to remove the parameter, and all traces of gain variables. Once left with a shell of a plug-in

that would just turn off and on without affecting the output, the channel swap could be implemented.

Inside the code, there are two functions called “process” and “processReplacing.” The former would

contain code for effects being called upon as an auxiliary input whereas the latter contains the code

for the effect being called as an insert. As channel swapping only works in an insert capacity

(otherwise the original signal would still exist and we would end up with both sides on both channels)

the code for “process” was left blank.

There were initial problems in testing, where the compiled code did not appear to anything, or in some

cases, only swap one channel creating an exact copy of the right channel on the left. This was

Page 17: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 12

overcome and the channel swap was tested with the group of test files used to assess the commercially

available plug-in.

3.4.2 Auto-pan

The theory behind an auto-pan effects plug-in involves an input signal being

converted to mono if it is not already. It is then outputted using an incremental

and decremental system where the output will appear to change from one

speaker to another when in reality, it will just be fading the volume up and

down. The pseudo-code for this is as follows.

{int X = 44100 // declared in header

bool = true // declared in header

float T = 1 // declared in header, time for one cycle to be complete}

if bool = true {X--;}

if bool = false {X++;}

if X = 0 {bool = false;}

if X = (44100 * T) (bool = true;}

volume = x / (44100 * T)

leftOutput = 1*volume;

rightOutput = 1 * (1 – volume);

However whilst trying to implement this, problems occurred. In a test to make one just the left

channel fade from 0 (off) to 1 (full volume), it became apparent that we could not guarantee when the

cycle would begin. ie. one would expect the equation to take effect from the beginning of its cycle,.

ie. volume = 0. However, once the plug-in was switched on, in several tests the effect was already

partially through its process, each time at a different point. Many hours were spent trying to

overcome this problem, but unfortunately there was no successful conclusion to this.

Page 18: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 13

3.4.3 Specified Tap-Delay

The specified tap-delay allows the user to define how many times they

would like to repeat the input signal. The pseudo-code is as follows:

User defines X;

User defines delay;

For (int Y = 0; Y < X; Y++)

{

leftOutput = (leftFeedback * amount);

rightOutput = (rightFeedback * amount);

pause (delay);

}

This effect was unfortunately left un-implemented due to the difficulties encountered with the auto-

pan plug-in.

Page 19: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 14

4. Evaluation

In order to evaluate this project, it is necessary to define a set of criteria on which it can be judged.

• Were the minimum requirements met?

• Did the project produce a viable solution?

• Was the project plan followed?

4.1 Evaluation of minimum requirements

The minimum requirements as stated in chapter 1 have each been achieved. Criteria for judging them

include questions such as:

• Did Csound have good enough functionality to fulfil the needs of the project?

• Was Visual C++ and Cubase VST learnt to a degree where it cannot be judged as a hindering

factor to the project?

• Did MIDI protocol provide any solutions to the problem?

• Did the research into D.S.P. effects aid the project and in what way?

An evaluation of Csound was made and reached a conclusion that a Csound effects processor,

however powerful and intricate would not be accessible to the average computer musician. If it were

to have a more user-friendly GUI, then perhaps there may be a case for a stand alone effects

processor, but that still would not satisfy the need of the project

During the process of learning the VST plug-in SDK, I learnt some of the basics of Visual C++ and

have been able to navigate its architecture successfully. Cubase VST proved to be easy to learn how

to use, and although quite complicated at times, many of its functions and capabilities were in the end,

quite straightforward. However, knowledge of either program could not be described as a hinderance.

A brief investigation of MIDI protocol discovered that it was not a viable option for changing

parameters or affecting plug-ins in any way using this current version of the VST SDK. MIDI and

audio seem to run independent processes and only come together on the sequencer main page. MIDI

could be used to trigger audio using external sound modules such as tone generators or samplers, but

for the purposes of this project, it could not be a controller for any audio code.

Page 20: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 15

Some of the research into D.S.P. involved effects that were not implemented. The papers studied

proved useful in achieving an awareness of how to tackle issues surrounding D.S.P. and re-

constructing effects through algorithms.

4.2 Evaluation of prototype

One working VST plug-in was implemented, a channel swap, able to work in a real-time

environment. It is a simple yet overlooked effect that has not been realised as part of the main

software program. Although it features in Cool Edit Pro, this does not allow the sound to be changed

in real-time. The screen shots in Appendix B show the difference between input and output waves.

From this we can see that the output wave has not been degraded in any way and so it achieves its

purpose without compromising the sound quality.

If we apply the criteria used to evaluate the commercially available plug-ins in chapter 2, we can say

that it cannot pass the bit rate test because Cubase VST will not accept 8-bit wave files. However it

processed all different sample rates. It fails the stereo/mono test as it can’t channel swap a mono

input. There were no parameters to alter the sound with so therefore it fails the two criteria regarding

parameters, but it was overall easy to use. So using my own criteria, it only passes 2 out of 6.

It would have been very useful to have been able to implement the auto-pan feature, but if no control

can be gained over when the effect is to start, then there is no control over the wave itself. This is not

satisfactory for anyone wishing to specifically control an effect.

The VST SDK was very difficult to use and ultimately hindering. There was a lack of documentation

explaining precisely what all the sections of code did, just a brief section advising the developer to use

inheritance. Their 3 examples were explained where possible but because most inherited their

functions from other files, these were not explained and so I found it to be confusing. Especially as

the inheritance hierarchy was quite extended and convoluted, but not explained in the documentation.

Page 21: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 16

4.3 Evaluation of planning

• Did the project stick to the plan as proposed in the mid-term report?

The project schedule submitted was too ambitious, and included some of the enhancements that I

didn’t have time to implement. It was not possible to foresee the problems encountered with the VST

SDK and so as a result, many of the tasks dependant on this were delayed. With hindsight, it may

have been useful to try to gain some feedback from people who had already attempted to use the

SDK, or failing that, to have planned to learn the SDK earlier in the schedule as part of the research.

Page 22: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 17

5. Conclusion

5.1 Conclusion

This report has discussed a number of issues in music technology with regards to effects processing

and their plug-in implementation. A number of issues have been dealt with but could be expanded

upon. It has presented a blueprint for some D.S.P. effects and has seen a successful implementation

of one of them. More work would be needed to pursue the usefulness of the VST plug-in SDK,

however the chances are that with the recent newly-coded release of Cubase VST, the SDK will be

updated in order to include some new capabilities that Steinberg have been working on. Overall, this

report has solved one of the problems identified at the beginning, and has provided ideas for other

possibilities that could be implemented.

5.2 Future Direction and Enhancement

There are many ways on which this project could have been expanded but given the time constraints

and limited scope of this project, I have been unable to do so. Below are some examples of possible

areas of enhancement.

There are plenty of D.S.P. algorithms that have not been explored in the music software. As time

goes on, this will surely increase. During my research, one particular area of study that seemed to be

the most individual and most beneficial to the world of computer music was the real-time

implementation of a stereophonic acoustic echo canceller [15] [16]. This has enormous benefits for a

sound designer who wishes to restore a recording that contains unwanted echo as equalisation

techniques can only reduce it so much.

Another way to enhance this project would be to expand the input devices to include the “Music Via

Motion (MVM)” system that has been developed by the ICSRiM at university [17]. This system

allows a camera to detect movement and interpret that movement to execute commands or trigger

audio or midi. This could be extended to allow parameters of plug-ins to change depending on the

movement detected. Combined with the previous enhancement suggestion, this could be used to

allow a user to point to exactly where they would like the sound to come from, and could

subsequently be encoded in surround sound to make it so.

Page 23: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 18

References

[1] Steinberg Website “http://www.steinberg.net”

[2] Chien-Cheng Tseng; Soo-Chang Pei. “Stable IIR notch filter design with optimal pole placement”,

IEEE Transactions on Signal Processing, Volume: 49 Issue: 11 , Nov 2001. Page(s): 2673 –2681

[3] Soo-Chang Pei; Chien-Cheng Tseng “A comb filter design using fractional-sample delay”. IEEE

Transactions on Circuits and Systems II: Analog and Digital Signal Processing. Volume: 45 Issue: 5

, May 1998. Page(s): 649 -653

[4] Roads, C.; Strawn, J.; Abbott, C.; Gordon J.; Greenspun P. “The Computer Music Tutorial” MIT

Press, Cambridge, Boston. 1996.

[5] Yinong Ding; Rossum, D. “Filter morphing for audio signal processing” IEEE ASSP Workshop on

Applications of Signal Processing to Audio and Acoustics, 1995.. Page(s): 217 –221

[6] Rossum, D. “The ‘ARMAdillo’ Coefficient Encoding Scheme for Digital Audio Filters”.

Proceedings of IEEE Workshop on Applications of Signal Processing to Audio and Acoustics,

Mohonk Mountain House, New Paltz, New York, October 1991.

[7] Goldenstein, S.; Gomes, J. “Time warping of audio signals” Proceedings of the Computer

Graphics International, 1999 Page(s): 52 –57

[8] Jang, J. R., Lee, H “Hierarchical Filtering Method for Content-based Music Retrieval via Acoustic

Input” MM’01. Sept. 30-Oct, 2001, Ottawa, Canada. ACM 2001

[9] Chowning, J. “Frequency Modulation Synthesis of the Singing Voice.” In M. Matthews and J.

Pierce, eds. 1989. “Current Directions in Computer Music Research.” Cambridge, Massachusetts:

the MIT press pp. 57-63.

[10] Disch, S.; Zölzer, U. “Modulation and Delay Line Based Digital Audio Effects” Proceedings of

the 2nd COST G-6 Workshop on Digital Effects (DAFx99) NTNU, Trondheim, Dec 9-11, 1999.

[11] Pinkston, R. “Using Csound to Understand Delay Lines and Their Applications” In R.

Boulanger, ed. 2000. “The Csound book” Cambridge, Massachusetts: the MIT press pp. 575-594.

Page 24: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 19

[12] Arroabarren, I.; Zivanovic, M.; Bretos, J.; Ezcurra, A.; Carlosena, A. “Measurement of Vibrato

in Lyric Singers” Proceedings of the 18th IEEE Instrumentation and Measurement Technology

Conference, 2001. Volume: 3 , 2001 Page(s): 1529 -1534 vol.3

[13] Mikelson, H. “Modelling a Multieffects processor in Csound” In R. Boulanger, ed. 2000. “The

Csound book” Cambridge, Massachusetts: the MIT press pp. 575-594.

[14] Arfib, D. “Visual Representation For Digital Audio Effects and Their Control” C.N.R.S.

Laboratoire de Mécanique et d’Acoustique. [email protected]

[15] Eneroth P. Gay, S.L. Gansler, T. Benesty, J. “Studies of aWideband Stereophonic Acoustic Echo

Canceler” Proceedings of the 19th IEEE Workshop on Applications of Signal Processing to Audio and

Acoustics, New Paltz, New York, Oct 17-20, 1999.

[16] Eneroth P. Gay, S.L. Gansler, T. Benesty, J. “A Real-time Implementation of a Stereophonic

Acoustic Echo Canceler” IEEE transactions on Speech and Audio Processing, Volume 8, No.5, July

2001

[17] ICSRiM website :- http://www.leeds.ac.uk/icsrim/

Page 25: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 20

APPENDIX A: Personal Reflection

There are two ways in which I would like to reflect upon this project. Firstly I will deal with the

project content and lessons I believe I have learnt over the duration of the project, followed by

observations on the project experience in general.

Firstly, the task of creating a VST plug-in was not an easy one by any means. I would recommend

strongly to anyone considering a future project similar to this work that they have a background in

music technology, but that they know specifically about plug-in technology. For although my

knowledge of Visual C++ and Cubase VST were not a hindrance, my lack of complete understanding

of the VST SDK was key in the progress of the project. Because the SDK was so vital to the success

of the project, I would recommend learning the SDK as one of the first tasks, even during research. I

learnt that even the simplest thing can sometimes turn out to be the most convoluted.

I do believe I have learnt many things with regards to D.S.P. effects and the way plug-in technology

works with music software such as Cubase VST. I think it is perhaps the absence of a couple of more

implemented effects that make me most disappointed that it took so long to get around the SDK. I do

not feel I am finished in anyway, but perhaps that is to do with my own personal goal to utilise what I

have learnt through this project in my music career.

I would definitely recommend plug-in technology over stand alone implementations from a user point

of view.

As far as the project experience itself goes, I am disappointed that I did not manage to keep to my

original time plan. However I do believe that it has been valuable to me, not just in a technical sense

but that it has allowed me to explore and begin to problem solve on a grander scale individually. I

would advise the keeping of a journal as this helps to maintain the thought processes and also note

down anything that has been tried, even if unsuccessful. I found this to be of benefit

Page 26: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 21

APPENDIX B: Instructions for plug-in use

On the CD, in the root directory is a file entitled ChannelSwap.dll

Copy this file into the “vstplugins” directory usually found at the location

“C:\Program Files\Steinberg\Cubase VST24\vstplugins”

* This could differ depending on where Cubase VST was installed and which version you are using.

Run Cubase VST and in the effects section, included in the list should be an effect entitled

“ChannelSwap” – select it and turn it on. There are no parameters to alter.

Page 27: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 22

APPENDIX C: Screen Shots

Page 28: Interactive Audio Effects Processing Gareth R. Jones · Interactive Audio Effects Processing Gareth R. Jones ... Another paper discusses filter morphing [5] where the output signal

Page 23