I’ve started playing with the new dev build of Sonic-Pi released on Patreon. I was thinking that giving my feedback about it could be useful to track bugs or just to discuss with everyone else about it.
So far, I’ve only experienced a few bugs, but I’m still unable to reproduce some of them. Should I create a specific issue for each one on GitHub or can I open only one topic by including a list of every bug I found so far?
I’ve spend most of my time playing with the new Ixi implementation. This is something I am really hyped for. I’ve been searching for a long time for an implementation like that, mainly because my Sonic-Pi workflow is event-driven (triggering a musical event instead of just a single note, etc…). Being able to write multiline functions for ixi patterns is really great. I’ve tested it both with SuperCollider synths and MIDI, and it works really well.
I’ve tried to read the source code to see if there was any Ixi-related methods that I was not aware of but I was unlucky finding any of them (though I’ve only searched for 20 minutes). The most puzzling thing for me is understanding clearly how time is processed by the Ixi instruction. Is there any link between Sonic-Pi internal BPM and pattern parsing speed? Is it possible to change the speed of an Ixi pattern?
Even if I am able to recreate randomisation and complex pattern manipulation by tweaking the functions assigned to the letters, I’ve not seen anything that could be used to manipulate an ixi pattern (shuffling letters and spaces, etc…). Is it a planned functionality?
Here is a short list of visual bugs that I’ll document on GitHub as soon as I will be able to reproduce them:
— The visual options of the IDE are not saved between sessions (switching back to default light theme with regular icons).
— Editing cursor disappearing (there is a specific interface shortcut that triggers it again but haven’t been able to find which yet).
— Very odd french translation: I’ve never noticed it before but there is some very strange translations that make sense only if you remember that the sentence is a litteral translation from english. The best example I found so far is in the options pane. One of the frames must be labelled “Show or Hide” in english or something very similar. I know it because the french translation sounds like the direct literal translation of a very idiomatic way of speaking in english, but that doesn’t work in french. We would prefer something like “Affichage” (Display) or “Dissimuler” (Hide). I can submit corrections for all the french documentation if needed.
And if I can submit one suggestion about a feature that I would love to see:
— the possibility to use both letters and symbols for Ixi patterns. foo -> |a---a---a---b---| (where “-” is a symbol defined by a function)
Will do. I am already suggesting a few modifications on Weblate. I’ll try to run through all the strings and submit a few corrections. The average quality of the translation is usually pretty good, but there is some points of detail that could be improved.
The best workaround I found so far to ensure that the bpm settings will be followed is to create a few dummy sleep letters and to use them instead of spaces. That’s why I was suggesting the addition of symbols: to extend the available range of dummy controls. Thanks for adding that Ixi syntax! I guess it’s a lot of work, but it will definitely be something great in the end.
Running your example is working just fine. From what I remember, I was playing with a fast bpm, and attributing sleep values to my ixi_define letters in some cases. When I will have time, I’ll post something about it.
Is there something new to know about the sampler? I’m getting a lot of audio crackling when playing with the rate of 2 or 3 samples at the same time (MacBook Air, 2016). Let’s take for example this detuned sample madness:
ixi_define :a do
sample :ambi_glass_hum, finish: 0.1, rate: rrand(-2, 5)
ixi_define :b do
sample :ambi_soft_buzz, finish: 0.3, rate: rrand(-2, 5)
foo -> |a a a a |
foo2 -> | b b b b |
Is there something that could be done when compiling Sonic-Pi or some optional command that could allow me to stack more samples at the price of a more intensive CPU work?