jonetsu wrote:And there are no predefined waves in Ardour, or automated way of creating wave patterns. You'd like to quickly put a sine wave, then you have to draw it. And once drawn, there's no way to change it's frequency, it's shape, etc...
After studying bit more I think I've found my way to do LFO's in ardour / mixbus: edit with vi!
1) In Mixbus /Ardour:
- select automation you want to deal with
- select mode as 'touch'
- put some automation values to points where you want to start, stop, change
2) Save your file and quit
3) make backup copy of your songname.ardour file (as a backups, in case you break the file)
4) Open ardour file with your text editor
5) Find string 'Touch'
6) make your edits
For part 6, some script creating values might be handy. Here is my example:
- Created file, and got datapoints:
277590 46.366779327392578
416386 83.077545166015625
I want to have two full sine waves between those time points 277590 and 416386. Distance is 138796 and we rotate 720 degrees, so we travel 192 points/degree. Want to have baselinevalue 40, and have +-30 variation over that. Let's do 25 degree steps. In command line, that will be:
i=0; while [ $i -lt 730 ] ; do val=$(echo "40.0+30*s($i*(3.14159/180))" | bc -l); echo "$((277590+$i*192)) $val"; i=$(($i+25)); done
Paste that output to your editor, save, and open file in Mixbus/Ardour. With your gui you can move datapoints, select region of points and paste them to new place, so that you don't need to edit huge amount of lines by hand.
------------
Here is few more examples of waveforms:
From start to timepoint 2220723, I wanted to have 6 sine waves (2160 degrees), baseline raising from 20 to 80, sine wave height 20 units.
i=0; while [ $i -lt 2160 ] ; do val=$(echo "20.0+$i*60/2160+20*s($i*(3.14159/180))" | bc -l); echo "$(($i*1028)) $val"; i=$(($i+25)); done
From start to timepoint 2220723, I wanted to have 6 sine waves (2160 degrees), baseline 50, sine wave height raising from 0 to 50 units.
i=0; while [ $i -lt 2160 ] ; do val=$(echo "50+$i*50/2160*s($i*(3.14159/180))" | bc -l); echo "$(($i*1028)) $val"; i=$(($i+25)); done
Edit: Timepoints are most likely 48000/s, so most likely this will be 0.5hz wave:
i=0; while [ $i -lt 760 ] ; do val=$(echo "50+30*s($i*(3.14159/180))" | bc -l); echo "$(($i*266)) $val"; i=$(($i+25)); done