## 5 Implementation
### Cosound Opcodes
#### 5.4.2 tvconv
); //FFT csound->rfft(fwd,itusp); csound->rfft(fwd,itsp); //increment iterators itnpsp+=ffs,itresp+=ffs; itn+=ffs,itr+=ffs; if(itnsp==insp.end()){ itnsp=insp.begin(); itnp=in.begin(); itn=in.begin(); itr=ir.begin(); } //spectraldelayline for(csnd::AuxMem<MYFLT>::iteratoritl=itnsp, it2=irsp.end()-ffs;it2>=irsp.begin(); itl+=ffts,it2-=ffts){ if(itl==insp.end())itl=insp.begin(); ins=to_cmplx(itl); irs=to_cmplx(it2); //spectralproduct for(uint32_ti=1;i<pars;i++)ous[i] += ins[i] * irs[i];  ous[0] += real_prod(ins[0], irs[0]);  }  // IFFT  csound->rfft(inv, out.data());  n = 0;  }  frz1 += incl, frz2 += inc2;  irp++, inp++;  }  return OK;  }

## 6 Applications and Use Cases

The two different convolution techniques described above has been used as the basis for two live processing instruments. The instruments are software based and designed to be used with live performers, convolving the sound produced by one musician with the sound produced by another. The instruments are packaged in the form of software plugins in the VST (Virtual Studio Technology (VST) is a software interface that integrates software audio synthesizer and effect plugins with audio editors and recording systems.) plugin format, compiled using the Cabbage [47] framework. Source code for the plugins is available at [48]). This work has been done in the context of a larger research project on crossadaptive audio processing [7], wherein these convolution techniques can be said to form a subset of a larger collection of techniques investigated. The aims of the crossadaptive research forms the motivation for the design of the instruments, and thus it is appropriate to describe these briefly before we move on. It is noteworthy that the work with the application has been done in the context of artistic research, following methods of artistic exploration rather than scientific methods. This means that there have been more of a focus on exploring the unknown potential for creative use of these techniques than there has been on testing explicit hypotheses. Thus, there is not a quantifiable verification of test results, but rather an investigation of some application examples expected to prove useful in our artistic work. Intervention into regular and habitual interaction patterns between musicians is one of the core aspects of the research. More specifically, the project aims to develop and explore various techniques of signal interaction between musical performers, such that _the actions of one_ can influence _the sound of the other_. This is expected to stir up the habitual interaction patterns between experienced musicians, and thus facilitating novel ways of playing together, enabling new forms of music to emerge. Some of the crossadaptive methods will be intuitive and immediately engaging, others might pose significant challenges for the performers. In many cases, the musical output will not be immediately appealing, as the performers are given an unfamiliar context and unfamiliar tools and instruments. We do still very much rely on their performative experience to solve these challenges, and the instruments are designed to be as playable as possible within the scope and aims outlined. The crossadaptive project includes a wide range of signal interaction models, many based on feature extraction (signal analysis) and mapping the extracted features onto parametric controls of sonic manipulation by means of digital effects processing [49]. Those models of signal interaction has the advantage that any feature can be mapped to any sonic modulation; however, all mappings between features and modulations are also artificial. It is not straightforward to create a set of mappings that is as rich and intuitive to the performer as, for example, the relationship between physical gestures and sonic output of an acoustic instrument. The convolution techniques that are the focus of this article provide a special case in this regard, as the features of the sound itself contains all aspects of modulation over the other sound.