Csound Csound-dev Csound-tekno Search About

[Csnd] pvocex and pvocex2 programs

Date2008-11-22 19:07
FromTobiah
Subject[Csnd] pvocex and pvocex2 programs
I had been playing around with pvanal and the pvoc opcode.

I found that by using pvsdiskin, and pvsynth, I could get
startling quality in comparison.  I found it difficult to
tell the original sound (high quality voice) from the
synthesized version.  I had to tweak the pitch to convince
myself that I hadn't made mistake, and was actually hearing
the source.

I wondered whether the programs pvocex and pvocex2 programs
mentioned in the manual would give me the same quality over
pvanal.  Unfortunately, I couldn't get them to run.

pvocex compiled cleanly, but when I run it (also the binary version)
it only complains about the output file:

sinewave:toby:pvocex2(1)> pvocex steel.wav steel.pvx

Unable to open outfile steel.pvxsinewave:toby:pvocex2(1)>  

It's odd that there is no newline after the error message.
I tried 'touching' the file name first, but got the same
results.  This is not a permission or space problem.

pvocex2 did not compile cleanly (and the binary seems to 
be missing) but I was able to coerce it into compiling.

Here is how it went:

pvoc.cpp:40: error: new declaration ‘long int round(double)’
/usr/include/bits/mathcalls.h:310: error: ambiguates old declaration ‘double round(double)’

I edit pvoc.cpp and change to 'double round(double)'.

pvoc.cpp:40: error: ‘double round(double)’ was declared ‘extern’ and later ‘static’
/usr/include/bits/mathcalls.h:310: error: previous declaration of ‘double round(double)’

I change to 'extern double round(double)'.  I have know idea what I'm doing mind
you.  Just trying to appease the compiler.

pvocex2.cpp:140: error: ‘::main’ must return ‘int’
make: *** [pvocex2.o] Error 1

So I change it to 'int main()'

riffwav.c:(.text+0x0): multiple definition of `round'
pvoc.o:pvoc.cpp:(.text+0x0): first defined here
collect2: ld returned 1 exit status
make: *** [pvocex2] Error 1

So I comment out the definition in riffwav.c
Now I get an executable, but have:

riffwav.c: In function ‘wavWriteFloatFrames’:
riffwav.c:912: warning: incompatible implicit declaration of built-in function ‘round’

Whoops, that doesn't sound great.


But I run it:

pvocex2 steel2.wav steel2.pvx

Outfile name has unrecognized extension.sinewave:toby:pvocex2(1)> 

Same missing newline.

Thanks for any help.

Toby

Date2008-11-22 19:24
Fromjpff@cs.bath.ac.uk
Subject[Csnd] Re: pvocex and pvocex2 programs
I did not understand

> pvoc.cpp:40: error: new declaration ‘long int round(double)’
> /usr/include/bits/mathcalls.h:310: error: ambiguates old declaration
> ‘double round(double)’
>

I do not have a pvoc.cpp file in my tree.  Where did nyou get it?  What am
I missing?  What is the pvocex program?

==John



Date2008-11-22 19:44
FromTobiah
Subject[Csnd] Re: Re: pvocex and pvocex2 programs
jpff@cs.bath.ac.uk wrote:
> I did not understand
> 
>> pvoc.cpp:40: error: new declaration ‘long int round(double)’
>> /usr/include/bits/mathcalls.h:310: error: ambiguates old declaration
>> ‘double round(double)’
>>
> 
> I do not have a pvoc.cpp file in my tree.  Where did nyou get it?  What am
> I missing?  What is the pvocex program?
> 

Sorry.

There is a section in the manual:

http://www.csounds.com/manual/html/SpectralRealTime.html

That points the user to:

http://www.cs.bath.ac.uk/~jpff/NOS-DREAM/researchdev/pvocex/pvocex.html

This is the page from which I downloaded the source for the programs.

Now, I noticed that I can use pvsfwrite to create a .pvx file for
subsequent use as fodder for another orchestra using the pvs* opcodes.
This may be a workaround.  I'm able to change pitch of sounds using
pvsanal, and pvsynth, but that won't give me access to time stretch
unless I miss my guess.  Other than using pvsfwrite and two orchestras,
is there a better way to do this other than with the seemingly inferior
pvanal, or the programs pvocex and pvocex2 which I am unable to get working?

Thanks,

Tobiah

Date2008-11-22 19:57
FromRichard Dobson
Subject[Csnd] Re: Re: pvocex and pvocex2 programs
These are my original  PVOC_EX demo programs from my PVOC_EX web page. 
pvocex is a straight port of CARL pvoc, pvocex2 a modified C++wrapped 
version handling stereo  sources.  Totally unrelated to Csound except 
inasmuch as they employ the file format.  Probably best discussed 
offlist at this stage, to avoid any suggestion they are part of Csound. 
The programs probably need some updating!

Richard Dobson

jpff@cs.bath.ac.uk wrote:
> I did not understand
> 
>> pvoc.cpp:40: error: new declaration ‘long int round(double)’
>> /usr/include/bits/mathcalls.h:310: error: ambiguates old declaration
>> ‘double round(double)’
>>
> 
> I do not have a pvoc.cpp file in my tree.  Where did nyou get it?  What am
> I missing?  What is the pvocex program?
> 


Date2008-11-22 20:06
Fromjpff@cs.bath.ac.uk
Subject[Csnd] Re: Re: Re: pvocex and pvocex2 programs
Still confused; I do not see a file pvoc.cpp in the
pvocex_src01.zip file

Thsi code is rather old (May 2000), and it does not surprise me that it
does not run when compiled on a Linux machine; but perhaps yu ned to wait
fror Richard Dobson to reply


> jpff@cs.bath.ac.uk wrote:
>> I did not understand
>>
>>> pvoc.cpp:40: error: new declaration ‘long int round(double)’
>>> /usr/include/bits/mathcalls.h:310: error: ambiguates old declaration
>>> ‘double round(double)’
>>>
>>
>> I do not have a pvoc.cpp file in my tree.  Where did nyou get it?  What
>> am
>> I missing?  What is the pvocex program?
>>
>
> Sorry.
>
> There is a section in the manual:
>
> http://www.csounds.com/manual/html/SpectralRealTime.html
>
> That points the user to:
>
> http://www.cs.bath.ac.uk/~jpff/NOS-DREAM/researchdev/pvocex/pvocex.html
>
> This is the page from which I downloaded the source for the programs.
>
> Now, I noticed that I can use pvsfwrite to create a .pvx file for
> subsequent use as fodder for another orchestra using the pvs* opcodes.
> This may be a workaround.  I'm able to change pitch of sounds using
> pvsanal, and pvsynth, but that won't give me access to time stretch
> unless I miss my guess.  Other than using pvsfwrite and two orchestras,
> is there a better way to do this other than with the seemingly inferior
> pvanal, or the programs pvocex and pvocex2 which I am unable to get
> working?
>
> Thanks,
>
> Tobiah
>
>
> Send bugs reports to this list.
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe
> csound"
>
>
>



Date2008-11-22 20:14
Fromjpff@cs.bath.ac.uk
Subject[Csnd] Re: Re: Re: Re: pvocex and pvocex2 programs
> Still confused; I do not see a file pvoc.cpp in the
> pvocex_src01.zip file
>
>

I thought this code was superceded by pvanal. I think I nissed some
earlier mail, but what is wrong with pvanal?  It is that that shoudl be
fixed

==John



Date2008-11-22 20:38
FromRichard Dobson
Subject[Csnd] Re: pvocex and pvocex2 programs
Tobiah wrote:
> I had been playing around with pvanal and the pvoc opcode.
> 
> I found that by using pvsdiskin, and pvsynth, I could get
> startling quality in comparison.  I found it difficult to
> tell the original sound (high quality voice) from the
> synthesized version.  I had to tweak the pitch to convince
> myself that I hadn't made mistake, and was actually hearing
> the source.
> 
> I wondered whether the programs pvocex and pvocex2 programs
> mentioned in the manual would give me the same quality over
> pvanal.  Unfortunately, I couldn't get them to run.
> 
> pvocex compiled cleanly, but when I run it (also the binary version)
> it only complains about the output file:
> 
> sinewave:toby:pvocex2(1)> pvocex steel.wav steel.pvx
> 
> Unable to open outfile steel.pvxsinewave:toby:pvocex2(1)> 
> It's odd that there is no newline after the error message.
> I tried 'touching' the file name first, but got the same
> results.  This is not a permission or space problem.


The pvocex command line is simply (without using any flags):

pvocex  insoundfile  outanalfile.pvx

I don't understand what your notation here means:

sinewave:toby:pvocex2(1)>

ostensibly this seems to be being appended to the outfile name, which is 
presumably not intended - it has no file extension apart from anything 
else. These programs do not read from stdin.

They were basically written on a PC using the usual Microsoft tools, and 
  then copied relatively indiscriminately to a Linux machine. I have 
done quite a lot to pvocex2 since then, not sure if it is tidy enough to 
publish  yet.

Can you email me offlist so we can continue to investigate?

richarddobson@blueyonder.co.uk

Richard








Date2008-11-22 20:40
FromTobiah
Subject[Csnd] Re: Re: Re: Re: Re: pvocex and pvocex2 programs
> I thought this code was superceded by pvanal. I think I nissed some
> earlier mail, but what is wrong with pvanal?  It is that that shoudl be
> fixed

Well, I tried it again, and it works fine.  I was never able to get
convincing results with it in the past for some reason.  I just ran
it again, and got the same great results as with pvsanal.

Sorry for the bother.  I had simply come across better then ever
results with pvsanal, and the PVS section of the manual pointed
me to the pvocex and pvocex2 programs, so I figured that they
use the same 'new and better' algorithms.

Nevermind.  pvanal seems to work fine now.

Date2008-11-22 20:43
FromRichard Dobson
Subject[Csnd] Re: pvocex and pvocex2 programs
Tobiah wrote:
..
> Here is how it went:
> 
> pvoc.cpp:40: error: new declaration ‘long int round(double)’
> /usr/include/bits/mathcalls.h:310: error: ambiguates old declaration 
> ‘double round(double)’
> 
> I edit pvoc.cpp and change to 'double round(double)'.

This is an old problem between PC and unix - ANSI math.h (as done on 
Windows) does not define round() (one of many things added by gcc) so I 
had to roll my own. The simplest correction  is to replace round() with 
lround(). It is intended to round the argument to an int, not a double. 
Looks like I omitted/forgot to make that change  when I posted  the sources.


Richard Dobson


Date2008-11-22 20:54
FromRichard Dobson
Subject[Csnd] Re: Re: Re: Re: Re: pvocex and pvocex2 programs
There are two programs: pvocex, in C
and pvocex2 in C++  (and which uses pvoc.cpp).

The latter is in the archive pvocex2_src-0.11.tar.gz

(I am up to v 0.15 here, with some more-than-slightly cumbersome 
experimental convolution code added).

With regard to superceding, it's really the other way round - the CARL 
version of pvoc supercedes the old pvanal pvoc code (or rather, was 
added to it). The CARL code (as in pvocex) is the basis for the 
streaming framework. But these are ~not~ Csound programs, they should 
not be confused with the Csound pvanal utility, and are not meant to 
replace it. So this is not actually a Csound problem at all, just a 
problem between me,  my code, and users thereof!

But the idea remains that pvocex files created by either program can be 
read by the relevant streaming opcodes.


Richard Dobson




jpff@cs.bath.ac.uk wrote:
>> Still confused; I do not see a file pvoc.cpp in the
>> pvocex_src01.zip file
>>
>>
> 
> I thought this code was superceded by pvanal. I think I nissed some
> earlier mail, but what is wrong with pvanal?  It is that that shoudl be
> fixed
> 


Date2008-11-23 02:20
FromDavidW
Subject[Csnd] Re: Re: Re: Re: Re: Re: pvocex and pvocex2 programs
Hi Richard, all.

Does anyone know of any work that uses these opcodes to do text-to- 
speech?

David.

On 23/11/2008, at 7:54 AM, Richard Dobson wrote:

> There are two programs: pvocex, in C
> and pvocex2 in C++  (and which uses pvoc.cpp).
>
> The latter is in the archive pvocex2_src-0.11.tar.gz
>
> (I am up to v 0.15 here, with some more-than-slightly cumbersome  
> experimental convolution code added).
>
> With regard to superceding, it's really the other way round - the  
> CARL version of pvoc supercedes the old pvanal pvoc code (or rather,  
> was added to it). The CARL code (as in pvocex) is the basis for the  
> streaming framework. But these are ~not~ Csound programs, they  
> should not be confused with the Csound pvanal utility, and are not  
> meant to replace it. So this is not actually a Csound problem at  
> all, just a problem between me,  my code, and users thereof!
>
> But the idea remains that pvocex files created by either program can  
> be read by the relevant streaming opcodes.
>
>
> Richard Dobson
>
>
>
>
> jpff@cs.bath.ac.uk wrote:
>>> Still confused; I do not see a file pvoc.cpp in the
>>> pvocex_src01.zip file
>>>
>>>
>> I thought this code was superceded by pvanal. I think I nissed some
>> earlier mail, but what is wrong with pvanal?  It is that that  
>> shoudl be
>> fixed
>
>
>
> Send bugs reports to this list.
> To unsubscribe, send email sympa@lists.bath.ac.uk with body  
> "unsubscribe csound"
>

________________________________________________
David Worrall.
- Experimental Polymedia:	www.avatar.com.au
- Education for Financial Independence: www.mindthemarkets.com.au
Australian research affiliations:
- Capital Markets Cooperative Research Centre: www.cmcrc.com
- Sonic Communications Research Group:	creative.canberra.edu.au/scrg
- MARCS Auditory Laboratories: marcs.uws.edu.au