Well, one thing that comes immediately to mind in terms of CPU usage would be whether or not you actually *need* the 2048 window for all those FFTs. Have you tried any of those other powers of 2?
Similarly, precisely how accurate does your pitch detection need to be? There are some other third-party options for pitch tracking with a little lower CPU footprint which might be usable instead (sigmund~, pitch~, pt~, vb.pitch~, analyzer~.... I'm sure there are others). I'd spend some time cruising around on www.maxobjects.com
Finally, remember that prefiltering your input signal will allow *any* pitch tracker to do a better job.
I'd start there.
Sharing/Haaaalp- M4L Smart Harmonizer
-
Gregory Taylor
- Posts: 268
- Joined: Tue Sep 01, 2009 3:11 pm
Re: Sharing/Haaaalp- M4L Smart Harmonizer
Gregory Taylor wrote:Well, one thing that comes immediately to mind in terms of CPU usage would be whether or not you actually *need* the 2048 window for all those FFTs. Have you tried any of those other powers of 2?
Similarly, precisely how accurate does your pitch detection need to be? There are some other third-party options for pitch tracking with a little lower CPU footprint which might be usable instead (sigmund~, pitch~, pt~, vb.pitch~, analyzer~.... I'm sure there are others). I'd spend some time cruising around on http://www.maxobjects.com
Finally, remember that prefiltering your input signal will allow *any* pitch tracker to do a better job.
I'd start there.
Thanks so much Greg for the input. I have to admit half of that is going right over my head, but I'm sure I can do some googling and figure it out. If memory serves I did try some of the other pitch trackers, but that may have been before I actually had it working.
I may have to come back once I've looked at it and try to clarify. I definitely have not looked into prefiltering, does this mean I'm filtering the frequencies before tracking?
thanks again!
Re: Sharing/Haaaalp- M4L Smart Harmonizer
I did a test with this- no pitch tracking- just harmonizer objects with pots. Latency issue is the same. This is what it sounds like. Any thoughts? Maybe there is a different way to change pitch?Gregory Taylor wrote:Well, one thing that comes immediately to mind in terms of CPU usage would be whether or not you actually *need* the 2048 window for all those FFTs. Have you tried any of those other powers of 2?
Similarly, precisely how accurate does your pitch detection need to be? There are some other third-party options for pitch tracking with a little lower CPU footprint which might be usable instead (sigmund~, pitch~, pt~, vb.pitch~, analyzer~.... I'm sure there are others). I'd spend some time cruising around on http://www.maxobjects.com
Finally, remember that prefiltering your input signal will allow *any* pitch tracker to do a better job.
I'd start there.
Below is the patch I used.
<pre><code>
----------begin_max5_patcher----------
2704.3oc6b10aiaiEF95jeEBBcA1VjIqHEkrTuXA5hEEs.YwBz16FLXfrEsi
1QVRqDcZlVL42doHkskbzGzIV1hYN233HYQc3gju7vud9yquxbd5izBSiu23
8FWc0ed8UWItT4Etp5+uxbcviKhCJD+Ly3nGn2FFEDadi7tODjmDrlJt4ukG
jTjc26s+v16xnOxVjFmlKeGV2hrP9tnaJ+FF435K91LrCg+MzsVFeX6ClGEj
rJVjtnpqktgESYrOmQkolo4MFlKiSCXl6dtrbZAMgEvhRS9XNcAS9Sss4I9M
FDOwmjxOcrq85R1rNJgm3E0eeYArE2GkrpV535ZW9ry76HchBENhz4+u24Y1
hI0L4y4NNFM+izjf4Mypb6QlaEFDt5pEAOPC+X.i6blugQ2+shpRrphrxRk3
Mzzkau71qW+kFmlrp6RtF+z0ogb2S4OzhmiaIohR9TYRU268rDHMT7pZ64iR
VlJLi1d4o4gTQ0G2Vt4ljHoKp0GsHiRCiiV206sfQyJ55lzGyRS3kah7TqYa
wKm8YYI2r1x17lNhxORqO+5Jm56539Q7zurkVUSmc0xZ7i11bnmDnV8qV8B2
mlyNrlfYqI2CQEQ8jRkEyxbLBOq0rTPRRZUiycuQS4O6KWe89+H97KWeyoTU
BO4TkvU5QuVUIhLEl4MrpzLcTUBCpRfpzaTUIzjSUh+JNIpRXWQJ3gFVUxUG
UkPfpDnJ81TUZpII4O6jnHgPVpFmD1WCkj.8HPOR6ziRn+NuAWcEGwkyh2rh
2F5IytTOJh30+iK0Pp91tlwKSSXEQ+grE4tZ8MUIvcqRLSJ1fQa0G3RadsqR
3XV6Utyo7CbwuXi+UZbnY65AmVuTTxEvI4HzPeGpVnhc4jPWbmTo4SyM9of7
0oI77b9cC4vNJ2jSOyWnsz03ij+gzmih7hbTM5uSp1VuqjkQwzGn4EM685Jy
81nmqvnbEU6cjSsoMFWSyxb9p3zEehFVW7vLjt7nRjzLZx9GPzSbiOZ9KiRN
ri25u3fMwrO1dYSy6uLXAsyGtae7UlqxiBSSJsjFOd4k29N44Zw.bpa5h6mD
j0xixRSimGjWSGdWgAuZcPRz5.FkEIMIr0tmKZcVdjrurcWS1qv8EKxSiiaj
Tx67PK2Ij9PzB5uGExtuY3.MWEf5waTuAWiqePCuEoqWW1c6M6u+tVe+v5r3
nket985nfqqP45LbNGg5CFIp6QlcXaqmIDQNzH5oBvyanYs8FU81sUY5k3vZ
nTcfZ0xkrmL9Oj6tML9VlnG8zBZ9S7pDDOiFYggTuNJmsc+NaOKYC7J8Lmgb
11VuJmM5D5r6q14uDrNyfkZHpkx1DRMhRLbrLVWXHZJV6Y3QJSWjtQ1RDe5q
NSjy6BppKCKQjGX+dbwSlpyC5gWQSn4AL9.IGO+V0zMMrLfkV3290EAwzwyc
4KDMsG1aMYbV7wnVDrh1py5aP7Fs8JM9xDEwC3KskU8jykfcULP83LwSFQwd
5ApTn6IU5mgOrh4AIqFUWqrUsMYv5ouN0P7YpU8ORogyCV7Ii3zzLi+oR8u7
rYgytLdYaR4mjFy61PE.KyWMWsD4XTT7p0FvY1P8ZQbzB42eLm9+MJtOZIyX
A2F4QSeNiEvVtOSvRep2f9TjV3S+o+XD5Oy1S3jj8pgsGRmffmLtpkwo7Du9
6JKOkkVpytyltK5AZuRwxIP+XUh4t2n0aDStJOdnCtWviau2g2hkGUHBKQL9
wYNuzhLRshLh0fEYSGocQV7HhyngWwRIuBdWWcC3UH8DnPs6rsAYsoqczanK
mH5KgvIdlydmHwcvgPMSKDNKXifvIVNDfpQO4O3.58.gylBm0W5ml5lGbmSj
rI1w8XjMs8+pP1rxqnrro0zU17Wy34pbdIy9o8yTiFG.t4bDZMXrX1pLgrF+
LKHNZwkWD9eSiC9rQYGX5TghTjW9oyfy1issFTh7bw9xYKuXy7pk.6crHVb6
ySz9k.z3ue22dpJG8NGMtjB9U+oZRhKWo9NKJc0oFW6l+8QYFOkJQXgqyYvH
cvDsHnv+134pTMlPrdrDD6lzsKv.RHNn8gm3ZMz.RvVPT1Mhx9bO2DUy6rpA
YiQeUDjckWQ0frw3KaP18r3F+CQEGEpyNhKpQ0Zu4NjazcxrZQScsfQTInJr
ggkBPdSFofdp++cOMZ6fjAp7iP02tN1jac52e5oEafj+6FV1Flw1UD8Mvx44
KB6C6V6b6zWDKH8X8794j2lESxcdf+fkR5wJDJmikKPX5H49FR00MvWK7lqK
FikMvxu15sNXLLyfwynVLLXqwY.MUSGqxCnQGBhoZ2w9PXobwSFN2dohooZF
ukgHhrFb9Uczg8+EKHKJ4IQExd8q7eGWoNQ3L9voWnQ5ak0acGb+FSlLd1gG
GdaUHOlQi6YcLCFG4eYGL9XNuDUhaJOuDytrtB4qy7U0f.WM4rClYs6YRXrN
hL69C2RYPXcbNQDlqXswZ0KTjtIew1h6s6oGilldHsfEkr639798mi.Cbie3
8QggMOaMx9XCyRiRXUFnwGTpb6Xs6xEUWc6FMcraKEsaum86zBytrx9DxtcN
lZISGylnnY6LorZ7QX0SmVjH6inE4KvrIDT4LrgsjG8T4I8P7eiUFxSwLDZZ
0VEoZ8mVJwtnMVUs0JYhY2Jqo6OsjYPJZ2tSKyV0p2sj+tj1sppIjWlUivR4
QhXjkaOtE09G4PN87K+UkeejxltpJ9LsBLC4OtEOiUigYp1X3DZ1UWja+04.
D+svGYWOP.ZUb57f3p8z1dhqnDkC57hCwKg9PhvPbWnqm+zyFlKGPOHX4b74
iU.nG1.PO.fd..8..5A.zC.nG.PO.fd..8..5A.zC.nG.PO.fd..8..5A.zC
.nG.PO.fd..8..5A.zC.nG.PO.fd..8..5A.zC.nG.PO.fd..8..5A.zC.nG
.PO.fd..8..5A.zC.nG.PO.fd..8..5A.zC.nG.PO.fd..8..5wD.nGWjSV2
WsmiQM8Ti9UxY5UWOx0Z5IbWWAJftBvAcEXFZKfRdqQJF8DXO5IbjzTRToqf
+RW4rllh0tKCFAAfd71AnGXrrWOeKE.5AF.5A.zC.nG.PO.fd..8..5A.zC.
nG.PO.fd..8..5A.zC.nG.PO.fd..8..5A.zC.nG.PO.fd..8..5A.zC.nG.
PO.fd..8..5A.zC.nG.PO.fd..8..5A.zC.nG.PO.fd..8..5A.zC.nG.PO.
fd..8..5A.zC.nG.PO.fd..8..5A.zC.nG.PO.fd..8..5A.zC.nG.PO.fd.
.8..5wtiBeqS3.QcddraG3A.8..5gdAzC8iOEy7dSxmhK8wPEAGCUUOFpX3X
npaGCULbLT6xq.GC0W2wP0FNFppdLTIvwPUuNFpD3Xn1kWQiOFpuhiU2ucxO
upvQpC1YxvNSF1Yxm0Rowr+A8ZOaAaToidG+LwVQLXWN.q.IrTdvR4M1Kkmv
w1TvUtxdGVfVs9dOe2cznBXWEht0q787Bv1K7d1pMppM4pfIgqWsZzsnYp3j
NqVjmBVD4rZQHEK0rNqVDRgRsokEQNqVDVgRMmypEYqnEc9ziHSNKBMxkZ7+
4KW+W9AVNeB
-----------end_max5_patcher-----------
</code></pre>
-
Gregory Taylor
- Posts: 268
- Joined: Tue Sep 01, 2009 3:11 pm
Re: Sharing/Haaaalp- M4L Smart Harmonizer
Well, you *are* doing FFTs on the fly and then resynthesizing the
results, so a certain amount of latency is always going to be
present.
But has it occurred to you to look at the patch you used for
your starting point? It's got a delay line built into every
single instance that you really don't need if you're only interested
in pitch shifting.
Here's what I'd suggest: go take a look at the help file for the
MSP gizmo~ object, which is the bit of the larger patch you're
cutting and pasting that actually does the pitch shifting. Use
*that* as the starting point for your patch. Start simpler.
results, so a certain amount of latency is always going to be
present.
But has it occurred to you to look at the patch you used for
your starting point? It's got a delay line built into every
single instance that you really don't need if you're only interested
in pitch shifting.
Here's what I'd suggest: go take a look at the help file for the
MSP gizmo~ object, which is the bit of the larger patch you're
cutting and pasting that actually does the pitch shifting. Use
*that* as the starting point for your patch. Start simpler.
