Feature requests from new user

  • Have Examples section playable without having to copy paste into a buffer
    • Implementation ideas
      • Create a new read-only buffer that the user can play
      • Have a move to buffer button that copies and pastes
  • Describe mix
  • In Synths, Fx, Lang, have a default sound and a slider UI element to allow in doc testing for a range of values
  • Ability to listen/trigger to samples in doc with keyboard (without play button mouse click)
  • Windows: have a modifier + enter combo to restart, similar macOS
  • Buffers
    • Command click to clear
    • Copy entire buffer content to another
    • Copy selection of code to another buffer (I’m aware that functions are globally scoped)
    • Ability to change code area background, which is also applied to the buffer mini number menu
  • Ability to annotate synths in doc
    • For personal organization
    • Or if they had categorization symbols next to them
      • Ex. noise types, low attack types, low amplitute types, high phase types
      • Some way to catagorize the spectrum of pleasant sounding to rough
  • Smart re-ordering in editor of attack, decay, sustain, release (to correspond with the order of the vertical line manipulation)
  • Scope visualization for amplitude
    • On all sound
    • On some kind of division of sound primitives/chunks/functions/scopes…
  • In-Editor summation of sound duration
    • Good quick decision making for sounds with lots of ADSR envelope modifications
    • Or a different key:value colourization for levels vs durations
  • In-editor note (:C) to number (60) translation/indicator (ex. via hover over)
  • Out of editor (web page) reference containing synths, fx, lang
    • With search bar
  • Ability to change Help’s font size
  • Have a Start+Record button that waits for the program to run before it starts recording (for long startup programs), else there will be silence before the recording starts
    • Have a customizable fadeout option applied within the recording upon ending it
  • Loops have an in editor counter of how many times it has looped annotated beside the loop
    • Good for live coding, if you want to modify and apply values at a certain (ex. after 4 or 8 loops)
1 Like

I like that scope idea, breaking it down per-instrument. It would make it easier to analyze the output and help with things like ducking tracks and mixing.

Buffers

  • Command click to clear

I think there is already some sort of shortcut for this but I forget what it is. I always accidentally do it and it clears my entire buffer which pushes me to save things frequently.

  • Have a Start+Record button that waits for the program to run before it starts recording (for long startup programs), else there will be silence before the recording starts

I disagree with this one. I think most people who are recording and publishing their Sonic Pi music online are using a DAW to master the song afterwards. It’s better to always have a slight gap of silence before a song starts when mastering and very easy to trim an exported song in an editor.

  • Have a customizable fadeout option applied within the recording upon ending it

I sort of love this idea though. Maybe not a fadeout option but instead something like an on-song-end trigger that we could code into our programs. This would allow us to not only do a fade out but any number of wild things when the stop button is triggered.

Perhaps your on-song-end trigger could also be used for an on-song-start trigger, which would allow the user the ability to have a deterministic time variable at the start, instead of being dependent on the hardware’s timings, which in some cases may or may not have a gap.

Considering the beginner (who doesn’t use a DAW) as the base use case would be best, and offer predictablility, two concepts that are encouraged by Sam Aaron via an easy to use music production abstraction, and through pseudo-randomization.

Advanced users can use the on-song-start trigger.

1 Like

Have Examples section playable without having to copy paste into a buffer

You can load examples into the buffer using the load_example method

load_example :acid

Then run it (Alt + R). Tab completion works here, so if you start typing load_example followed by tab, you can then select from all of the examples

  • Describe mix

What do you mean?

  • Copy entire buffer content to another

Alt + a will select_all
Alt + c will paste

Out of editor (web page) reference containing synths, fx, lang

This does exist somewhere. look for β€œSonic Pi - Lang.html” within on your local machine

1 Like

Thanks for sharing. Mix: Introduced in tutorial 1.1 as

Try changing any of the blue mix: values to numbers between 0 (not in the mix) and 1 (fully in the mix).

The definition is self referencing, I don’t know what mix means without trying it. I had missed/skimmed this page, other references don’t explain it.

If you define mix by comparing it to amplitude, then my next question would be, what’s the difference, or why didn’t you just use amp:?

I tried searching the install but didn’t find the .html file, could you please share the directory path? Otherwise, the Github path based search (see β€œother references” link above) is a good alternative.

In this case β€œmix” means a percentage of a an effect you want mixed into the overal sound.

For example:

with_fx :echo, mix: 0.2, amp: 1.0 do
   play 60
   sleep 1
end

With mix set at 0.2, you’ll barely hear the echo effect, even with the amplitude set at 1.0

…Higher amplitudes may be used, but won’t make the sound louder, they will just reduce the quality of all the sounds currently being played (due to compression.)

…a mix of 0 means that only the original sound is heard, a mix of 1 means that only the FX is heard

As for out of editor documentation…

I tried searching the install but didn’t find the `.html` file

If you goto to the sonic-pi directory (I’m not sure exactly where it is on a Windows host)…then navigate to etc/doc/tutorial/ you should find markdown documents.

sonic-pi
β”œβ”€β”€ app
β”‚   β”œβ”€β”€ build
β”‚   β”‚   └── gui
β”‚   β”œβ”€β”€ config
β”‚   β”‚   └── user-examples
β”‚   β”œβ”€β”€ gui
β”‚   β”‚   └── qt
β”‚   └── server
β”‚       β”œβ”€β”€ beam
β”‚       β”œβ”€β”€ native
β”‚       └── ruby
β”œβ”€β”€ bin
└── etc
    β”œβ”€β”€ buffers
    β”œβ”€β”€ doc
    β”‚   β”œβ”€β”€ cheatsheets
    β”‚   β”œβ”€β”€ generated
    β”‚   β”œβ”€β”€ images
    β”‚   β”œβ”€β”€ lang
    β”‚   β”œβ”€β”€ templates
    β”‚   └── tutorial
    β”œβ”€β”€ examples
    β”‚   β”œβ”€β”€ algomancer
    β”‚   β”œβ”€β”€ apprentice
    β”‚   β”œβ”€β”€ illusionist
    β”‚   β”œβ”€β”€ incubation
    β”‚   β”œβ”€β”€ magician
    β”‚   β”œβ”€β”€ sorcerer
    β”‚   └── wizard
    β”œβ”€β”€ samples
    β”œβ”€β”€ snippets
    β”‚   β”œβ”€β”€ fx
    β”‚   β”œβ”€β”€ live_loop
    β”‚   └── syntax
    β”œβ”€β”€ synthdefs
    β”‚   β”œβ”€β”€ compiled
    β”‚   β”œβ”€β”€ designs
    β”‚   └── graphviz
    └── wavetables
        └── AKWF
1 Like