I'm trying to implement a good pitch tracker as a ChuGin. Is there any kind of tutorial or walk-through that anyone has done? A few questions: - Is it possible to create a UAna ChuGin or must it be a UGen? - How do you suggest implementing an FFT-based instrument which uses 1024 or 2048 sample frames for analysis? - Besides the CCRMA paper and the source code, is there any documentation of ChuGin programming? Thanks! Joel
Hi Joel,
I'm not much help on knowing how to implement this in Chuck but I am
curious what kind of pitch extraction algorithm you intend to use. I've
reviewed quite a few but never found one I really liked. It is a tricky
problem (What is the difference between a chord and an note from an
instrument with harmonics? Theoretically not much.) but based on the number
of commercial packages that claim to be doing score extraction I assume
there has been some progress since the last time I checked.
-Steve (aka zencuke)
PS. I've looked but I've found very little public documentation for any
kind of ChucK extension capabilities whether at the C++ level or ChucK
(ChuGin etc.) level. Most of the support focus (documentation etc) seems to
be on naive users and/or beginners. That's good but it sort of leaves users
trying to do sophisticated things out in the cold. ChucK seems more
targeted as a classroom teaching vehicle than as a serious music tool.
There doesn't seem to be much interest in developing and supporting a
serious ChucK user community. I'm learning that there are quite a few
serious users but they mostly seem to work in isolation. I like ChucK but
I'm thinking of switching to SuperCollider for serious work and only using
ChucK for quick simple experiments. The SuperCollider community seems to
encourage serious users. At least the advanced interfaces are documented.
On Mon, Dec 23, 2013 at 6:04 PM, Joel Matthys
I'm trying to implement a good pitch tracker as a ChuGin. Is there any kind of tutorial or walk-through that anyone has done?
A few questions: - Is it possible to create a UAna ChuGin or must it be a UGen?
- How do you suggest implementing an FFT-based instrument which uses 1024 or 2048 sample frames for analysis?
- Besides the CCRMA paper and the source code, is there any documentation of ChuGin programming?
Thanks! Joel _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
On 12/23/2013 07:20 PM, Steve Morris wrote:
Hi Joel,
I'm not much help on knowing how to implement this in Chuck but I am curious what kind of pitch extraction algorithm you intend to use. I've reviewed quite a few but never found one I really liked. It is a tricky problem (What is the difference between a chord and an note from an instrument with harmonics? Theoretically not much.) but based on the number of commercial packages that claim to be doing score extraction I assume there has been some progress since the last time I checked.
I've been very impressed with Katja's helmholtz~ pitch tracker in Pd; I wrote an implementation in RTcmix but I think it can be very useful in ChucK. I'm not so interested in polyphonic score extraction; I know there has been success in the proprietary sphere but I think that monophonic tracking is sufficient to produce some interesting work in ChucK.
-Steve (aka zencuke)
PS. I've looked but I've found very little public documentation for any kind of ChucK extension capabilities whether at the C++ level or ChucK (ChuGin etc.) level. Most of the support focus (documentation etc) seems to be on naive users and/or beginners. That's good but it sort of leaves users trying to do sophisticated things out in the cold. ChucK seems more targeted as a classroom teaching vehicle than as a serious music tool.
It is of course a very good tool for teaching music coding, but I see no reason that it can't be a serious music tool as well. It's a young language, and definitely needs a documentation push (there is a new book and, thanks to Coursera, the beginnings of a coding community). But the new developments in 1.3 (String parsing, Serial, and ChuGins) have great potential.
There doesn't seem to be much interest in developing and supporting a serious ChucK user community. I'm learning that there are quite a few serious users but they mostly seem to work in isolation. I like ChucK but I'm thinking of switching to SuperCollider for serious work and only using ChucK for quick simple experiments. The SuperCollider community seems to encourage serious users. At least the advanced interfaces are documented.
On Mon, Dec 23, 2013 at 6:04 PM, Joel Matthys
mailto:jwmatthys@yahoo.com> wrote: I'm trying to implement a good pitch tracker as a ChuGin. Is there any kind of tutorial or walk-through that anyone has done?
A few questions: - Is it possible to create a UAna ChuGin or must it be a UGen?
- How do you suggest implementing an FFT-based instrument which uses 1024 or 2048 sample frames for analysis?
- Besides the CCRMA paper and the source code, is there any documentation of ChuGin programming?
Thanks! Joel _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu mailto:chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
Cool. Thanks. "Katja's helmholtz~ pitch tracker in Pd;" Even the math is
well documented which is unusual.
I also see no reason that ChucK can't be a serious music tool. It is
already pretty sophisticated as well as being quite mature in the sense of
showing very few bugs. I was hoping to do serious things with it.
Unfortunately want I want to do amounts to extensions to the core model
more than using existing features. It is unfortunate that there is so
little support for people who want to do so. Dynamic library support is
probably what I need. It has already been implemented but like ChuGins is
basically undocumented.
ChucK has been around for a long time so it is not clear that things will
change. This may be paranoia but ChucK seems to have all the stigmata of a
project tightly controlled by a small group that wants to maintain control
for their own narrow purposes and vision. I'm sure it is not malicious. It
is just that a small group has limited resources and need to stick with
their priorities. There's nothing wrong with that. They're doing the work.
ChucK is free and open source so it is hard to complain. But it makes it
less valuable to people who want to push in different directions. In a
different project those people would be implementing things that the core
group might not have time for. Other groups support their superusers
because they give back. Here they are ignored.
-steve
On Mon, Dec 23, 2013 at 8:53 PM, Joel Matthys
On 12/23/2013 07:20 PM, Steve Morris wrote:
Hi Joel,
I'm not much help on knowing how to implement this in Chuck but I am curious what kind of pitch extraction algorithm you intend to use. I've reviewed quite a few but never found one I really liked. It is a tricky problem (What is the difference between a chord and an note from an instrument with harmonics? Theoretically not much.) but based on the number of commercial packages that claim to be doing score extraction I assume there has been some progress since the last time I checked.
I've been very impressed with Katja's helmholtz~ pitch tracker in Pd; I wrote an implementation in RTcmix but I think it can be very useful in ChucK. I'm not so interested in polyphonic score extraction; I know there has been success in the proprietary sphere but I think that monophonic tracking is sufficient to produce some interesting work in ChucK.
-Steve (aka zencuke)
PS. I've looked but I've found very little public documentation for any kind of ChucK extension capabilities whether at the C++ level or ChucK (ChuGin etc.) level. Most of the support focus (documentation etc) seems to be on naive users and/or beginners. That's good but it sort of leaves users trying to do sophisticated things out in the cold. ChucK seems more targeted as a classroom teaching vehicle than as a serious music tool.
It is of course a very good tool for teaching music coding, but I see no reason that it can't be a serious music tool as well. It's a young language, and definitely needs a documentation push (there is a new book and, thanks to Coursera, the beginnings of a coding community). But the new developments in 1.3 (String parsing, Serial, and ChuGins) have great potential.
There doesn't seem to be much interest in developing and supporting a serious ChucK user community. I'm learning that there are quite a few serious users but they mostly seem to work in isolation. I like ChucK but I'm thinking of switching to SuperCollider for serious work and only using ChucK for quick simple experiments. The SuperCollider community seems to encourage serious users. At least the advanced interfaces are documented.
On Mon, Dec 23, 2013 at 6:04 PM, Joel Matthys
wrote: I'm trying to implement a good pitch tracker as a ChuGin. Is there any kind of tutorial or walk-through that anyone has done?
A few questions: - Is it possible to create a UAna ChuGin or must it be a UGen?
- How do you suggest implementing an FFT-based instrument which uses 1024 or 2048 sample frames for analysis?
- Besides the CCRMA paper and the source code, is there any documentation of ChuGin programming?
Thanks! Joel _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing listchuck-users@lists.cs.princeton.eduhttps://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
Interesting remark Steve. I'm a Pure Data user and was intrigued by ChucK. I've been learning the language for a while and also get a strange sense of where's the support? What makes languages/programs such as supercollider, PD, Max, CSound etc preferable over another is a) the support and b) the way these programs help system works. PD as you know really has a great system of right-clicking to get more information and examples to explain the object. Supercollider also has a great internal help system. I'd love to try and work with ChucK but at the moment radio silence (or cryptic help remarks) on various topics can be a little frustrating. I've already made the remark - as did many on the Coursera ChucK course - to ask "why isn't there a good (and complete) ChucK manual"?
- Joe
From: steve@judgement.com
Date: Tue, 24 Dec 2013 01:34:13 -0500
To: chuck-users@lists.cs.princeton.edu
Subject: Re: [chuck-users] chugin tutorial or docs?
Cool. Thanks. "Katja's helmholtz~ pitch tracker in Pd;" Even the math is well documented which is unusual.
I also see no reason that ChucK can't be a serious music tool. It is already pretty sophisticated as well as being quite mature in the sense of showing very few bugs. I was hoping to do serious things with it. Unfortunately want I want to do amounts to extensions to the core model more than using existing features. It is unfortunate that there is so little support for people who want to do so. Dynamic library support is probably what I need. It has already been implemented but like ChuGins is basically undocumented.
ChucK has been around for a long time so it is not clear that things will change. This may be paranoia but ChucK seems to have all the stigmata of a project tightly controlled by a small group that wants to maintain control for their own narrow purposes and vision. I'm sure it is not malicious. It is just that a small group has limited resources and need to stick with their priorities. There's nothing wrong with that. They're doing the work. ChucK is free and open source so it is hard to complain. But it makes it less valuable to people who want to push in different directions. In a different project those people would be implementing things that the core group might not have time for. Other groups support their superusers because they give back. Here they are ignored.
-steve
On Mon, Dec 23, 2013 at 8:53 PM, Joel Matthys
With the ChucK plugin for SublimeText3 , we included the option to select a
keyword and hit a keycombo, it opens the online docs on that page #
section. Without having coded that first, I don't know how fast I would
have thrown in the towel.
On Tue, Dec 24, 2013 at 1:58 PM, joe higham
Interesting remark Steve. I'm a Pure Data user and was intrigued by ChucK. I've been learning the language for a while and also get a strange sense of where's the support? What makes languages/programs such as supercollider, PD, Max, CSound etc preferable over another is a) the support and b) the way these programs help system works. PD as you know really has a great system of right-clicking to get more information and examples to explain the object. Supercollider also has a great internal help system. I'd love to try and work with ChucK but at the moment radio silence (or cryptic help remarks) on various topics can be a little frustrating. I've already made the remark - as did many on the Coursera ChucK course - to ask "why isn't there a good (and complete) ChucK manual"?
- Joe
------------------------------ From: steve@judgement.com Date: Tue, 24 Dec 2013 01:34:13 -0500 To: chuck-users@lists.cs.princeton.edu Subject: Re: [chuck-users] chugin tutorial or docs?
Cool. Thanks. "Katja's helmholtz~ pitch tracker in Pd;" Even the math is well documented which is unusual.
I also see no reason that ChucK can't be a serious music tool. It is already pretty sophisticated as well as being quite mature in the sense of showing very few bugs. I was hoping to do serious things with it. Unfortunately want I want to do amounts to extensions to the core model more than using existing features. It is unfortunate that there is so little support for people who want to do so. Dynamic library support is probably what I need. It has already been implemented but like ChuGins is basically undocumented.
ChucK has been around for a long time so it is not clear that things will change. This may be paranoia but ChucK seems to have all the stigmata of a project tightly controlled by a small group that wants to maintain control for their own narrow purposes and vision. I'm sure it is not malicious. It is just that a small group has limited resources and need to stick with their priorities. There's nothing wrong with that. They're doing the work. ChucK is free and open source so it is hard to complain. But it makes it less valuable to people who want to push in different directions. In a different project those people would be implementing things that the core group might not have time for. Other groups support their superusers because they give back. Here they are ignored.
-steve
On Mon, Dec 23, 2013 at 8:53 PM, Joel Matthys
wrote: On 12/23/2013 07:20 PM, Steve Morris wrote:
Hi Joel,
I'm not much help on knowing how to implement this in Chuck but I am curious what kind of pitch extraction algorithm you intend to use. I've reviewed quite a few but never found one I really liked. It is a tricky problem (What is the difference between a chord and an note from an instrument with harmonics? Theoretically not much.) but based on the number of commercial packages that claim to be doing score extraction I assume there has been some progress since the last time I checked.
I've been very impressed with Katja's helmholtz~ pitch tracker in Pd; I wrote an implementation in RTcmix but I think it can be very useful in ChucK. I'm not so interested in polyphonic score extraction; I know there has been success in the proprietary sphere but I think that monophonic tracking is sufficient to produce some interesting work in ChucK.
-Steve (aka zencuke)
PS. I've looked but I've found very little public documentation for any kind of ChucK extension capabilities whether at the C++ level or ChucK (ChuGin etc.) level. Most of the support focus (documentation etc) seems to be on naive users and/or beginners. That's good but it sort of leaves users trying to do sophisticated things out in the cold. ChucK seems more targeted as a classroom teaching vehicle than as a serious music tool.
It is of course a very good tool for teaching music coding, but I see no reason that it can't be a serious music tool as well. It's a young language, and definitely needs a documentation push (there is a new book and, thanks to Coursera, the beginnings of a coding community). But the new developments in 1.3 (String parsing, Serial, and ChuGins) have great potential.
There doesn't seem to be much interest in developing and supporting a serious ChucK user community. I'm learning that there are quite a few serious users but they mostly seem to work in isolation. I like ChucK but I'm thinking of switching to SuperCollider for serious work and only using ChucK for quick simple experiments. The SuperCollider community seems to encourage serious users. At least the advanced interfaces are documented.
On Mon, Dec 23, 2013 at 6:04 PM, Joel Matthys
wrote: I'm trying to implement a good pitch tracker as a ChuGin. Is there any kind of tutorial or walk-through that anyone has done?
A few questions: - Is it possible to create a UAna ChuGin or must it be a UGen?
- How do you suggest implementing an FFT-based instrument which uses 1024 or 2048 sample frames for analysis?
- Besides the CCRMA paper and the source code, is there any documentation of ChuGin programming?
Thanks! Joel _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing listchuck-users@lists.cs.princeton.eduhttps://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
Hey Joel,
Its not currently possible to create a UAna ChuGin, though this is
something we are definitely considering for the future. If it were me doing
this right now I would buffer FFT frames internally in a UGen and spit out
pitches from a member function or variable as they become available. You
would probably have to write your own FFT (or use code/a library from
somewhere else), which is sort of lame/inefficient from a software design
perspective, given that ChucK already has its own FFT implementation
built-in.
That being said, I think a dependable, go-to pitch tracker would be a great
addition to ChucK's chugin library, so please keep us posted on your work
and we would be happy to help with any general guidance or specific
questions. This is the kind of use case we want to make easy, or at least
not unnecessarily cumbersome.
Im planning to write a solid chugin tutorial some time in the next month or
so, but for now, yes, the paper and the source code are the primary
documentation. A good portion of ChucK's internal ugens/libraries use the
ChuGin-style API (but are compiled in statically of course). So the ChucK
source tends to have more breadth in showing how the system works than most
of the existing chugins, which are generally pretty simple.
spencer
On Mon, Dec 23, 2013 at 6:04 PM, Joel Matthys
I'm trying to implement a good pitch tracker as a ChuGin. Is there any kind of tutorial or walk-through that anyone has done?
A few questions: - Is it possible to create a UAna ChuGin or must it be a UGen?
- How do you suggest implementing an FFT-based instrument which uses 1024 or 2048 sample frames for analysis?
- Besides the CCRMA paper and the source code, is there any documentation of ChuGin programming?
Thanks! Joel _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
Thanks for the response, Spencer. Your suggestions matched exactly with what I implemented! I used my own FFT, and filled an internal sample buffer. It works great! I also have a stereo GVerb ChuGin underway. The DSP is working but I haven't implemented all of the settable options yet. My code is in a fork of the CCRMA chugin repo at https://github.com/jwmatthys/chugins I made a little demo of the pitch tracker by combining it with PitShift to make a simple autotuner. The ostinato ModalBar is GVerb-ed. It's here: https://soundcloud.com/jwmatthys/obama-autotuned-chuck-version Thanks, Joel On 12/24/2013 11:00 AM, Spencer Salazar wrote:
Hey Joel,
Its not currently possible to create a UAna ChuGin, though this is something we are definitely considering for the future. If it were me doing this right now I would buffer FFT frames internally in a UGen and spit out pitches from a member function or variable as they become available. You would probably have to write your own FFT (or use code/a library from somewhere else), which is sort of lame/inefficient from a software design perspective, given that ChucK already has its own FFT implementation built-in.
That being said, I think a dependable, go-to pitch tracker would be a great addition to ChucK's chugin library, so please keep us posted on your work and we would be happy to help with any general guidance or specific questions. This is the kind of use case we want to make easy, or at least not unnecessarily cumbersome.
Im planning to write a solid chugin tutorial some time in the next month or so, but for now, yes, the paper and the source code are the primary documentation. A good portion of ChucK's internal ugens/libraries use the ChuGin-style API (but are compiled in statically of course). So the ChucK source tends to have more breadth in showing how the system works than most of the existing chugins, which are generally pretty simple.
spencer
On Mon, Dec 23, 2013 at 6:04 PM, Joel Matthys
mailto:jwmatthys@yahoo.com> wrote: I'm trying to implement a good pitch tracker as a ChuGin. Is there any kind of tutorial or walk-through that anyone has done?
A few questions: - Is it possible to create a UAna ChuGin or must it be a UGen?
- How do you suggest implementing an FFT-based instrument which uses 1024 or 2048 sample frames for analysis?
- Besides the CCRMA paper and the source code, is there any documentation of ChuGin programming?
Thanks! Joel _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu mailto:chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
participants (5)
-
Dealga McArdle
-
joe higham
-
Joel Matthys
-
Spencer Salazar
-
Steve Morris