[Csnd] Question re: tab vs tab_i
| Date | 2023-04-25 02:58 |
| From | Scott Daughtrey |
| Subject | [Csnd] Question re: tab vs tab_i |
If I have a table, for example:
iFrq ftgen 1, 0, -5, -2, 100, 200, 300, 400, 500
then
iFrq1 = tab_i(0, 1)
works fine, but
kFrq1 = tab(0, 1)
gives an error message "tab off end". I'm curious as to why, as the index isn't changing.
Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here |
| Date | 2023-04-25 08:03 |
| From | "Jeanette C." |
| Subject | Re: [Csnd] Question re: tab vs tab_i |
Hi Scott,
I copied your code into an instrument as is. Using either statement
worked fine, as did using both.
I wouldn't know why this happens. Perhaps you could post the complete
code of your instrument?
As an aside: it makes for better reading if you write:
iFreq1 = tab_i(0, iFreq)
Best wishes,
Jeanette
Apr 25 2023, Scott Daughtrey has written:
> If I have a table, for example:
> iFrq ftgen 1, 0, -5, -2, 100, 200, 300, 400, 500
>
> then
>
> iFrq1 = tab_i(0, 1)
>
> works fine, but
>
> kFrq1 = tab(0, 1)
>
> gives an error message "tab off end". I'm curious as to why, as the index isn't changing.
>
> Csound mailing list
> Csound@listserv.heanet.ie
> https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
> Send bugs reports to
> https://github.com/csound/csound/issues
> Discussions of bugs and features can be posted here
>
--
* Website: http://juliencoder.de - for summer is a state of sound
* Youtube: https://www.youtube.com/channel/UCMS4rfGrTwz8W7jhC1Jnv7g
* Audiobombs: https://www.audiobombs.com/users/jeanette_c
* GitHub: https://github.com/jeanette-c
For whatever reason,
I feel like I've been wanting you all my life <3
(Britney Spears)
Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here |
| Date | 2023-04-25 09:36 |
| From | ST Music |
| Subject | Re: [Csnd] Question re: tab vs tab_i |
Hi Jeanette, thanks for taking the time to test & reply. The instr is getting big so just posting an example. It's a formant/vowel type thing, so ultimately probably using a morph opcode anyways & the issue will be moot; that's also why I didn't use iFreq = tab_i(0, iFrq) as I was testing different vowel freq tables using p4 to select the table. But your point was well taken =) Nonetheless when I come across these issues I like to follow up for future reference or in case I need to report a bug. So here's a short example: <CsoundSynthesizer> <CsOptions> -o dac </CsOptions> <CsInstruments> sr = 48000 ksmps = 32 nchnls = 1 0dbfs = 1 iFrq ftgen 1, 0, -4, -2, 100, 200, 300, 400, 500 instr 1 iFrq1 = tab_i(2, 1) kNdx = 0 kFrq1 = tab(0, 1) aSig = oscil(.8, iFrq1) out aSig endin </CsInstruments> <CsScore> i1 0 3 </CsScore> </CsoundSynthesizer> This gives the error: PERF ERROR in instr 1 (opcode tab) line 17: tab off end 2147483647 from file *string* (1) #a1 tab 0 1 0 If I comment out kFrq1 = tab(0, 1) it runs fine. Where it gets even weirder is if I instead use kFrq1 = tab(kNdx, 1), then still an error but instead it's: PERF ERROR in instr 1 (opcode tab) line 17: tab off end 100 from file *string* (1) #a1 tab kNdx 1 0 In that case it's reporting the right value for index 0 (tab off end 100) as opposed to tab off end 2147483647. As to why I haven't got a clue. Likewise if I use kNdx = 1, then "tab off end 200" etc. But always an error & code won't run. So not sure if I'm doing something wrong or whether this is a Csound for Android specific problem Best & thanks again, Scott On Tue, Apr 25, 2023, 3:03 AM Jeanette C., <julien@mail.upb.de> wrote: Hi Scott, |
| Date | 2023-04-25 11:33 |
| From | "Jeanette C." |
| Subject | Re: [Csnd] Question re: tab vs tab_i |
Apr 25 2023, ST Music has written:
...
Hm, the error output citing #a1 tab ... makes me think. Have you tried:
kFrq1 = tab:k(0, 1)
tab can return both an a-rate or k-rate signal. It should not happen, I
think, but this error suggests that it might have used the a-rate
version, which might cause issues.
HTH.
Best wishes,
Jeanette
> kFrq1 = tab(0, 1)
--
* Website: http://juliencoder.de - for summer is a state of sound
* Youtube: https://www.youtube.com/channel/UCMS4rfGrTwz8W7jhC1Jnv7g
* Audiobombs: https://www.audiobombs.com/users/jeanette_c
* GitHub: https://github.com/jeanette-c
There's no time to loose
And next week,
You might not see me here <3
(Britney Spears)
Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here |
| Date | 2023-04-25 20:50 |
| From | Pete Goodeve |
| Subject | Re: [Csnd] Question re: tab vs tab_i |
| Attachments | None |
| Date | 2023-04-25 21:29 |
| From | ST Music |
| Subject | Re: [Csnd] Question re: tab vs tab_i |
Thanks Pete, appeciate the feedback. Appears it may be specific to either the Csound for Android app or library version 6.16 which I think it uses. Jeanette, good catch, you were right (no surprise there =) ). Although it's fairly rare that type annotations are required in this type of situation I occasionally come across them. I can see why with function(al) syntax in Csound it might be useful to always use type annotations as a general practice but seems like a pain, guess I'm lazy. So turns out either: kFrq1 = tab:k(kNdx, 1) or old school kFrq1 tab kNdx, 1 will work in this specific case. On Tue, Apr 25, 2023, 3:50 PM Pete Goodeve, <pete.goodeve@computer.org> wrote: Hi Scott, |