Csound Csound-dev Csound-tekno Search About

Re: Mpeg4 was Re: compiler

Date1998-07-06 13:23
FromMichael Gogins
SubjectRe: Mpeg4 was Re: compiler
>>First, let me repeat: I am desperately searching or trying to make,
>>whichever works, a general-purpose software synthesizer that has the
>>academic computer goodies that Csound has, inside the standard
>>Microsoft-world COM interfaces so it works with COM clients, as a DSP
>>plugin, for writing tracks inside of hard disk recorders/editors, and so
>on.
>
>I don't know if this helps at all:
>
>
>http://sound.media.mit.edu/mpeg4/
>
>Hans Mikelson


I'm aware of this, and have compiled it and tested it myself. It MIGHT WELL
help. However, SAOLC is not as capable or comprehensive as Csound. It does
have the advantage of being a newer design, of implementing an international
standard, and of thus avoiding some potential copyright issues with Csound
code.

This reminds me, the software synthesizer I'm proposing would be a GNU
software licensed thing like Linux. It might not be possible to use Csound
without obtaining a specific license from MIT because the existing license
is for "educational and research purposes only." The proposed software would
be used for at least some commercial music production.

If anyone out there is a lawyer, comments?




Received: from stork.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa27257;
          6 Jul 98 13:24 BST
Received: from mercury.bath.ac.uk by stork.maths.Bath.AC.UK id aa17917;
          6 Jul 98 13:23 BST
Received: (qmail 16611 invoked from network); 6 Jul 1998 12:23:57 -0000
Received: from hermes.ex.ac.uk (HELO exeter.ac.uk) (144.173.6.14)
  by mercury.bath.ac.uk with SMTP; 6 Jul 1998 12:23:57 -0000
Received: from noether [144.173.8.10] by hermes via SMTP (NAA14549); Mon, 6 Jul 1998 13:20:23 +0100 (BST)
Received: from hermes.ex.ac.uk by maths.ex.ac.uk; Mon, 6 Jul 98 13:19:21 +0100
Received: from camel14.mindspring.com [207.69.200.64] by hermes via ESMTP (NAA10666); Mon, 6 Jul 1998 13:18:55 +0100 (BST)
Received: from axe (user-38ld0o1.dialup.mindspring.com [209.86.131.1])
	by camel14.mindspring.com (8.8.5/8.8.5) with SMTP id IAA30783;
	Mon, 6 Jul 1998 08:18:22 -0400 (EDT)
Message-Id: <002301bda8d9$87259a40$018356d1@axe>
From: Michael Gogins 
To: Richard Dobson , csound@maths.ex.ac.uk
MMDF-Warning:  Parse error in original version of preceding line at UK.AC.Bath.maths.stork
Subject: Re: compiler
Date: Mon, 6 Jul 1998 08:28:05 -0400
Mime-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-Msmail-Priority: Normal
X-Mailer: Microsoft Outlook Express 4.72.2106.4
X-Mimeole: Produced By Microsoft MimeOLE V4.72.2106.4
Sender: owner-csound-outgoing@maths.ex.ac.uk
Precedence: bulk

>Mmm, one begins to see the potential power of such a system, given such a
list
>of interfaces!
>
>The Filter Graph Builder interface IGraphBuilder is NOT implemented as a
dual
>interface (though most other DirectShow interfaces are), so one cannot
>manipulate it directly using automation. I presume this means you would
need to
>implement your own proxy interfaces (perhaps by setting up Csound as a
PlugIn
>Distributor?) if you need that facility.


Yes.

>While you are looking at Csound primarily as a COM server, accessed through
>automation, I am especially interested in the possibilities of it as a
>main-category ActiveMovie plugin, which means that it must be registered as
>such, so that applications such as Sound Forge can find it, without needing
to
>know about Csound. So, just as CsoundX can implement and/or use DirectShow
>interfaces, the obverse may also need to be true, one way or another.


I thought I had made that clear. An ActiveMovie plugin is ALSO a COM server,
another kind of COM server - any library or application with a COM interface
is a COM server.

My original idea was for something to fit together with my WCSound front
end, and in the back of my mind I was thinking of ActiveMovie plugins and
other plugin formats (like VST), but your posts caused me to bring this
topic to the foreground, and helped greatly to clarify the issues.

Obviously the real power of a general-purpose software synthesizer is to be
able to plug into the most flexible, most widely used plugin
architectecture, which appears to be ActiveMovie (AKA DirectShow).



>One technical issue I think needs looking at: ActiveMovie expects more
>flexibility regarding sample rate than Csound currently offers. In Extended
>Csound, they get round this problem by resampling audio data on the host to
the
>orchestra srate (which is currently 32KHz 'for historical reasons'). It is
done
>very well, but it is a pity it has to be done at all. Ideally, when Csound
is
>acting as a transform filter, it should accept and use the srate of the
input
>stream, and preferably, deal with different channel-counts in a tolerant
way as
>well. This will become a more pressing issue as multi-channel formats
become
>more commonplace.
>
>I am very intrigued by your suggestion of Csound as a factory for plugins.
Could
>you elaborate?
>
>And, realistically, there is still a way to go to get Csound
>re-entrant...faster...
>
>
>Richard Dobson
>
>Michael Gogins wrote:
>[snip]
>>
>>
>> What is needed is for Csound to either implement, or better contain and
>> expose, several different interfaces. It would provide something like:
>>
>> Csound.WaveInput
>> Csound.WaveOutput
>> Csound.WaveTransform
>>
>> Csound.MidiInput
>> Csound.MidiOutput
>> Csound.MidiTransform
>>
>> Just off the top of my head (C++ style, all returning HRESULT):
>>
>> Csound.Opcode(long index, VARIANT *pOpcode)
>> Csound.FunctionTable(long index, VARIANT *pWavetable)
>> Csound.SetFlag(BSTR Flag, BSTR Value)
>> Csound.GetFlag(BSTR Flag, BSTR *pValue)
>> Csound.GetSamplingRateHz(long *pValue)
>> Csound.SetSamplingRateHz(long Value)
>> Csound.GetKontrolRatio(long *pValue)
>> Csound.SetKontrolRatio(long Value)
>> Csound.GetChannelCount(long *pValue)
>> Csound.SetChannelCount(long Value)
>> // As an alternative to the above suggestion....
>> // Some sort of access to get and set filters... Obviously this is wrong,
>> but you get the idea.
>> Csound.EnumerateFilters(long Index, VARIANT *pFilter)
>> Csound.Play()
>> Csound.Stop()
>> Csound.Pause()
>> Csound.Rewind()
>> Csound.SetCue(double Time)
>> Csound.GetCue(double *pTime)
>> Csound.GetFilterGraphManager(VARIANT *manager)
>> // Some utility functions for encapsulating setup of filters for writing
>> soundfiles, reading soundfiles, etc. by name)
>>
>> Opcode.Initialize(ICsound *csound, VARIANT *pfields)
>> Opcode.OnAudioSample()
>> Opcode.OnKontrolSample()
>> Opcode.Finalize()
>>
>> FunctionTable.Initialize(BSTR fStatement)
>> FunctionTable.GetTable(double **data)
>>
>> CsoundX an ActiveX GUI that knows how to make and control a Csound
object.




Received: from stork.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa27800;
          6 Jul 98 17:47 BST
Received: from pat.bath.ac.uk by stork.maths.Bath.AC.UK id aa01501;
          6 Jul 98 17:47 BST
Received: (qmail 257 invoked from network); 6 Jul 1998 16:47:09 -0000
Received: from hermes.ex.ac.uk (HELO exeter.ac.uk) (144.173.6.14)
  by pat.bath.ac.uk with SMTP; 6 Jul 1998 16:47:09 -0000
Received: from noether [144.173.8.10] by hermes via SMTP (RAA20758); Mon, 6 Jul 1998 17:42:29 +0100 (BST)
Received: from hermes.ex.ac.uk by maths.ex.ac.uk; Mon, 6 Jul 98 17:41:57 +0100
Received: from first1.lnk.telstra.net [139.130.48.118] by hermes via ESMTP (RAA03009); Mon, 6 Jul 1998 17:41:47 +0100 (BST)
Received: from wira (wira.firstpr.com.au [203.36.57.201])
	by gair.firstpr.com.au (8.8.7/8.8.7) with SMTP id DAA13036
	for ; Tue, 7 Jul 1998 03:44:03 +1000
Message-Id: <199807061744.DAA13036@gair.firstpr.com.au>
Comments: Authenticated sender is 
From: Robin Whittle 
Organization: First Principles
To: Csound list 
Date: Tue, 7 Jul 1998 02:39:19 +1000
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7BIT
Subject: Backslashes in .orc code
Reply-To: rw@firstpr.com.au
Priority: normal
X-Mailer: Pegasus Mail for Win32 (v2.53/R1)
Sender: owner-csound-outgoing@maths.ex.ac.uk
Precedence: bulk

I have developed a simple patch to rdorch.c which enables a backslash 
character to survive when it is not being used as a command to 
continue a logical line on the next physical line.

The details are at the end of:

   http://www.firstpr.com.au/csound/

together with some examples of using the printks command.  Csound 
with this patch enables the printks codes "\n" etc. to work fine.  
While the manual examples show a backslash before the double quotes 
of the string, these are not in fact necessary.

- Robin


===============================================================

Robin Whittle     rw@firstpr.com.au  http://www.firstpr.com.au
                  Heidelberg Heights, Melbourne, Australia 

First Principles  Research and expression: music, Internet 
                  music marketing, telecommunications, human 
                  factors in technology adoption. Consumer 
                  advocacy in telecommunications, especially 
                  privacy. Consulting and technical writing. 

Real World        Electronics and software for music: eg.
Interfaces        the Devil Fish mods for the TB-303. 

===============================================================



Received: from stork.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa27969;
          6 Jul 98 19:48 BST
Received: from mercury.bath.ac.uk by stork.maths.Bath.AC.UK id aa06612;
          6 Jul 98 19:48 BST
Received: (qmail 7548 invoked from network); 6 Jul 1998 18:48:46 -0000
Received: from hermes.ex.ac.uk (HELO exeter.ac.uk) (144.173.6.14)
  by mercury.bath.ac.uk with SMTP; 6 Jul 1998 18:48:46 -0000
Received: from noether [144.173.8.10] by hermes via SMTP (TAA00218); Mon, 6 Jul 1998 19:44:09 +0100 (BST)
Received: from hermes.ex.ac.uk by maths.ex.ac.uk; Mon, 6 Jul 98 19:43:50 +0100
Received: from f50.hotmail.com [207.82.250.61] by hermes via SMTP (TAA20578); Mon, 6 Jul 1998 19:43:38 +0100 (BST)
Received: (qmail 25038 invoked by uid 0); 6 Jul 1998 18:43:12 -0000
Message-Id: <19980706184312.25037.qmail@hotmail.com>
Received: from 207.172.192.225 by www.hotmail.com with HTTP;
	Mon, 06 Jul 1998 11:43:12 PDT
X-Originating-Ip: [207.172.192.225]
From: Paul Winkler 
To: csound@maths.ex.ac.uk, hljmm@werewolf.net
Subject: Re: timout, reinit & rireturn
Content-Type: text/plain
Date: Mon, 06 Jul 1998 11:43:12 PDT
Sender: owner-csound-outgoing@maths.ex.ac.uk
Precedence: bulk

Thanks Hans, it works now. Not sure I understand completely, but I'm 
working on it. Anyway, what I'm doing here is cooking up a semi-random 
note generation orchestra for the purpose of playing along with to 
develop instrumental hand-ear coordination. I'll post more when I have a 
more useful version of it happening...

regards,

PW


______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com



Received: from stork.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa28466;
          7 Jul 98 0:58 BST
Received: from pat.bath.ac.uk by stork.maths.Bath.AC.UK id aa20353;
          7 Jul 98 0:58 BST
Received: (qmail 16838 invoked from network); 6 Jul 1998 23:58:15 -0000
Received: from hermes.ex.ac.uk (HELO exeter.ac.uk) (144.173.6.14)
  by pat.bath.ac.uk with SMTP; 6 Jul 1998 23:58:15 -0000
Received: from noether [144.173.8.10] by hermes via SMTP (AAA19718); Tue, 7 Jul 1998 00:55:11 +0100 (BST)
Received: from hermes.ex.ac.uk by maths.ex.ac.uk; Tue, 7 Jul 98 00:54:54 +0100
Received: from camel7.mindspring.com [207.69.200.57] by hermes via ESMTP (AAA10031); Tue, 7 Jul 1998 00:54:47 +0100 (BST)
Received: from axe (user-38ld1fh.dialup.mindspring.com [209.86.133.241])
	by camel7.mindspring.com (8.8.5/8.8.5) with SMTP id TAA04181;
	Mon, 6 Jul 1998 19:54:49 -0400 (EDT)
Message-Id: <002e01bda93a$d13746e0$f18556d1@axe>
From: Michael Gogins 
To: Eric Scheirer 
Cc: Richard Dobson , csound 
Subject: Re: compiler
Date: Mon, 6 Jul 1998 20:04:29 -0400
Mime-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-Msmail-Priority: Normal
X-Mailer: Microsoft Outlook Express 4.72.2106.4
X-Mimeole: Produced By Microsoft MimeOLE V4.72.2106.4
Sender: owner-csound-outgoing@maths.ex.ac.uk
Precedence: bulk

>I think this is a great project and one that is quite useful for
>the long-term development of the field.  This is one of the
>goals for the MPEG-4 Structured Audio project as well,
>and I would encourage you to examine and support that
>work for your purpose.

Let me deal with the most important question first. Suppose I took SAOLC,
the reference implementation, and without causing it to cease to implement
MPEG-4, gave it additional opcodes, a realtime scheduler, a DirectSound
filter graph driver model so it would work as a plugin inside Cakewalk Pro
Audio or you could play it with a MIDI keyboard. Could I then turn around
and just sell this thing? Or could I license it under the GNU license or the
GNU library license?

I have examined SAOLC from time to time over the past few years, including a
few weeks ago. It doesn't appear to have a phase vocoder or other builtin
time/frequency representation of sound like Csound's pvoc or adsyn. I think
they could probably be done using the existing opcodes; has anyone done it?
Are there any plans for time/frequency opcodes beyond fft and ifft?

>Having an open standard available which has the advancedcapabilities you
desire
>is a good way to speak to industry
>concerns for this functionality.  There will soon be industry
>development for MPEG-4 support, and it would be a shame
>if you did a lot of work on a Csound COM server only to
>find it didn't work with new, advanced hardware which
>supported MPEG-4 instead.


Actually, the Csound COM server would probably be a DircectShow filter, or
set of filters, and so could SAOLC or other implementations of MPEG-4.

I am starting to think about how best to structure these filter graphs as a
means of representing input, mixing, synthesis, remixing, and output signal
paths in a standard yet flexible way. I invite input.

>As you note this things -- all excellent suggestions I think -- youmay be
>interested to know that MPEG has recently decided to
>have a second version of MPEG-4.  All of the capabilities I've
>described previously will be in the first version; the second version
>will notably add Java capability and interfaces for manipulating
>the multimedia data.


What does "manipulating the multimedia data" mean? Reading soundfiles and
getting MIDI input in real time? This is what would be gained by having a
realtime scheduler and a filter graph architecture.






Received: from stork.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa29690;
          7 Jul 98 12:12 BST
Received: from pat.bath.ac.uk by stork.maths.Bath.AC.UK id aa22652;
          7 Jul 98 12:12 BST
Received: (qmail 11652 invoked from network); 7 Jul 1998 11:12:11 -0000
Received: from hermes.ex.ac.uk (HELO exeter.ac.uk) (144.173.6.14)
  by pat.bath.ac.uk with SMTP; 7 Jul 1998 11:12:11 -0000
Received: from noether [144.173.8.10] by hermes via SMTP (MAA13350); Tue, 7 Jul 1998 12:07:05 +0100 (BST)
Received: from hermes.ex.ac.uk by maths.ex.ac.uk; Tue, 7 Jul 98 12:06:41 +0100
Received: from exim@wallace.maths.bath.ac.uk [138.38.100.104] by hermes via ESMTP (MAA02458); Tue, 7 Jul 1998 12:06:35 +0100 (BST)
Received: from [138.38.99.25] (helo=maths.Bath.AC.UK ident=mmdf)
	by wallace.maths.bath.ac.uk with smtp (Exim 1.92 #2)
	id 0ytVZv-0004yW-00; Tue, 7 Jul 1998 12:06:31 +0100
Date:     Tue, 7 Jul 98 12:06:27 BST
From: jpff@maths.bath.ac.uk
Subject:  Re: Table sizes
To: mmcferron@cctr.umkc.edu, csound@maths.ex.ac.uk
Message-Id: 
Sender: owner-csound-outgoing@maths.ex.ac.uk
Precedence: bulk

Message written at 07 Jul 1998 08:07:51 +0100

The amaximum sizew of any table is given my teh line
 #define	MAXLEN	   0x1000000L
in cs.h

==John ffitch