Тёмный
Mister Bomb
Mister Bomb
Mister Bomb
Подписаться
Sonic Pi Tutorial  - Swing Rhythms using Arrays
25:19
5 месяцев назад
Sonic Pi Beat - Micro Dills with Swing
1:25
7 месяцев назад
Sonic Pi Beat - Stay Quiet
1:28
7 месяцев назад
How to set up Sonic Pi and p5js OSC Communication
21:20
11 месяцев назад
Комментарии
@anthonymccarthy4164
@anthonymccarthy4164 8 дней назад
It's kind of funny you don't mention using it on Rapsberry Pi considering that's the computer it was written for. I use it on my old $5 Pi Zero I dedicated to it and it does everything I need.
@DecartesGreatStar
@DecartesGreatStar 9 дней назад
What is the difference between look and tick?, I get that look doesn't increment the value of the array but it kinda does when it's in the live_loop...so I don't really get it
@MrBombMusic
@MrBombMusic 7 дней назад
look returns the current value of tick, so the reason it seems to increment the value in a live loop is that if you have a tick, it is constantly incrementing each time through the loop. The main reason I use look is when I have a ring for play and sleep. if you don't use look for the second ring and instead use tick, you will wind up skipping every other value in the rings instead of iterating through each value. You can read more about it here: sonic-pi.net/tutorial.html#section-9-4 you can also check the entry about look in the built in documentation. Hope that helps
@DecartesGreatStar
@DecartesGreatStar 12 дней назад
how do you play them 1 at a time, like first the drums, then the melody, then the bass etc
@MrBombMusic
@MrBombMusic 7 дней назад
If you wanted to play them one at a time, it would make more sense to put all of the code in a single loop. The benefit of using multiple live loops is that it allows you to have multiple pieces of code running concurrently.
@whiter2620
@whiter2620 19 дней назад
good video, I'm Brazilian, and surprisingly there are no videos in Portuguese on how to create an audio LOOP, LOL
@MrBombMusic
@MrBombMusic 7 дней назад
Valeu! Um dia, eu gostaria tentar um video em Portuguese. Talvez eu comenco com audio loop!
@enginatan
@enginatan 23 дня назад
@enginatan
@enginatan 23 дня назад
Si good !
@purplebutterflyprod
@purplebutterflyprod 2 месяца назад
Great tuto, thanks a lot. Silly question, is there a way to do : sample :bd_haus if a[i] == 1 or 3 sleep 0.25 or the only way is to make two lines like that : sample :bd_haus if a[i] == 1 sample :bd_haus if a[i] == 3 sleep 0.25
@MrBombMusic
@MrBombMusic 2 месяца назад
Hello! You can do it in one line of code like this: sample :bd_haus if a[i] == 1 or a[i] == 3 Full example: a = [1, 0, 1, 0, 3, 3, 0, 0] live_loop :a do 8.times do |i| sample :bd_haus if a[i] == 1 or a[i] == 3 sleep 0.25 end end Hope that helps. Thanks for watching.
@purplebutterflyprod
@purplebutterflyprod 2 месяца назад
@@MrBombMusic You have no idea how much you helped me to clean the mess that I name "code" of one of my tracks XD Thanks a lot !
@purplebutterflyprod
@purplebutterflyprod 2 месяца назад
@@MrBombMusic Aaaaaaand it's me again XD I tried to mess arround with this sequencer style code with synth instead of sample and when the loop is replayed, I have a "parasite" note who comes with the first note of the loop. The way I solved it is to put a rest during a ridiculous short time and on the journal, instead of à 128 I've got a rest, do you think it's normal ? (feel free to take your time to answer of course) Here is my code : use_bpm 80 a = [1, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 5, 0, 4, 0, 3, 0, 2, 0, 3, 0, 4, 0, 2, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 5, 0, 4, 0, 3, 0, 2, 0, 3, 0, 4, 0, 6, 0, 4, 0, 8, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 5, 0, 4, 0, 3, 0, 2, 0, 3, 0, 4, 0, 2, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 5, 0, 4, 0, 3, 0, 2, 0, 3, 0, 4, 0, 6, 0, 4, 0] define :intro do play c4 sleep define :maintheme do 128.times do |i| play :c4 if a[i] == 1 play :g4 if a[i] == 2 play :a4 if a[i] == 3 play :b4 if a[i] == 4 play :c5 if a[i] == 5 play :d5 if a[i] == 6 play :d4 if a[i] == 7 play :e4 if a[i] == 8 sleep 0.25 end sleep 0.00001 ##Told you it's ridiculous end
@harryleblanc4939
@harryleblanc4939 2 месяца назад
Spread is super cool. It's an instant provider of euclidean rhythms (that's the algorithm used to spread them). You can rotate them to shift the beat. You can also use it to calculate odds (e.g, to get a chance of 3 out of 7, just say if spread(3,7).pick). Love these videos!
@harryleblanc4939
@harryleblanc4939 2 месяца назад
Helpful.
@michelfelipe875
@michelfelipe875 2 месяца назад
wow, amazing content, thank you
@harryleblanc4939
@harryleblanc4939 2 месяца назад
So simple and elegant.
@harryleblanc4939
@harryleblanc4939 2 месяца назад
You could also use the .each option to iterate through the outer array. That way, if you added more patterns to the data, you wouldn't have to change the code: outerarray.each do |pattern| pattern.each do |beat| sample kick if beat == 1 sample snare if beat == 2 end #each beat end #each pattern Easy peasy.
@harryleblanc4939
@harryleblanc4939 2 месяца назад
or .pick to choose a random element, without knowing how many elements.
@slepxjdkx5028
@slepxjdkx5028 3 месяца назад
hi can you share her code?
@MrBombMusic
@MrBombMusic 2 месяца назад
Here you go: editor.p5js.org/mrbombmusic/sketches/brXO5Aa4 I also made a step by step tutorial on how to do this project on Instructables.com: www.instructables.com/Paper-Doorbell-W-P5js-Makey-Makey/
@Chef_John_PSX
@Chef_John_PSX 3 месяца назад
hey, i like music but I'm more into coding than music production, I'm sure you've heard this a lot but your videos have been an absolute god send for me, I just wanted to say thanks for doing what you do :) I'm still at the start of my journey with learning sonic pi but I wouldn't have even been able to even get started without your tutorials
@MrBombMusic
@MrBombMusic 3 месяца назад
Thank you so much! I always appreciate hearing that these tutorials are helping people on their music coding journey. 🙏
@udomatthiasdrums5322
@udomatthiasdrums5322 3 месяца назад
cool
@xavierhollebecq601
@xavierhollebecq601 4 месяца назад
thx
@jasmine8182
@jasmine8182 4 месяца назад
is there a way that you can switch bpm during a live set in a way that mkaes it blend fluidly? would love a video on this!! thanks
@rosemarydessa3260
@rosemarydessa3260 4 месяца назад
Love all your work related to Music, especially the ones using Arduino , SO COOL!!!
@hachetrescomacatorce2340
@hachetrescomacatorce2340 4 месяца назад
grettings from colombia
@Italanon
@Italanon 4 месяца назад
Hi there, I'm someone who has dipped into your very informative and practical videos in the past. Thanks. The other day I saw this video (ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-pio85Lr3pHw.html ) and thought I would attempt to make the music side happen purely with Sonic Pi. I've been finding it a struggle as it implies reverse engineering the timings and then trying to map it onto what Sonic Pi is capable of. I would be honoured if you can give your valuable opinion on it. I'm wondering if this is something best approached using the Jscript + OSC toolset? (Something I haven't even tried yet)
@MrBombMusic
@MrBombMusic 4 месяца назад
Hello! Thanks for watching. It seems like there are two things you need to implement here: 1.) Each individual column has two notes that gradually shift out of phase with each other. This could be done with two separate loops in which one loop sleeps for a slightly longer duration. # metronome loop for all other loops to sync with live_loop :metro do sleep 1 end a = 1 notePhase = 0.005 live_loop :a, sync: :metro do play 60 sleep a end live_loop :aPhase, sync: :metro do play 60 sleep a + notePhase end 2.) The multiple columns which also shift out of phase, with each column moving slightly slower than the one before it. This could also be done with loops in which you have a variable representing the phase shift time and then multiply that amount incrementally for each loop. live_loop :metro do sleep 1 end a = 1 totalPhase = 0.01 live_loop :a, sync: :metro do play 60 sleep a end live_loop :b, sync: :metro do play 64 sleep a + totalPhase end live_loop :c, sync: :metro do play 67 sleep a + totalPhase*2 end live_loop :d, sync: :metro do play 72 sleep a + totalPhase*3 end and so on.... To get the full affect, you would need an accompanying phase loop to go with each loop that represents a different column which would look like this: live_loop :metro do sleep 1 end a = 1 notePhase = 0.005 totalPhase = 0.01 live_loop :a, sync: :metro do play 60 sleep a end live_loop :aPhase, sync: :metro do play 60 sleep a + notePhase end live_loop :b, sync: :metro do play 64 sleep a + totalPhase end live_loop :bPhase, sync: :metro do play 64 sleep a + totalPhase + notePhase end live_loop :c, sync: :metro do play 67 sleep a + totalPhase*2 end live_loop :cPhase, sync: :metro do play 67 sleep a + (totalPhase*2) + notePhase end live_loop :d, sync: :metro do play 72 sleep a + totalPhase*3 end live_loop :dPhase, sync: :metro do play 72 sleep a + (totalPhase*3) + notePhase end You may have to experiment with the values to get the right timing but the variables should make it easier to do this no matter how many loops you use. There is probably a more concise and elegant way to write this but this seems to get the effect you are looking for. Hope this helps!
@Italanon
@Italanon 4 месяца назад
@@MrBombMusic thanks for that - I always try to make things too complicated! I got in a mess using loops of threads or threads of loops :) I will try that approach. It has prompted me to step into the world of p5js which will also prove to be interesting avenue to explore. Thanks so much. Cheers.
@SilverStef00
@SilverStef00 4 месяца назад
@mariobroselli3642
@mariobroselli3642 5 месяцев назад
I recently found Out that Sonic Pi Compiler is Kind of a Version of sup collider to Run another language 😅😮
@mariobroselli3642
@mariobroselli3642 5 месяцев назад
Is it Imperative or functional?
@mariobroselli3642
@mariobroselli3642 5 месяцев назад
😮😮😮
@casim8842
@casim8842 5 месяцев назад
I've scoured the internet for ages, trying to find advice on receiving OSC in Hydra (from Sonic Pi in my case), have found nothing. Anyone able to help?
@MrBombMusic
@MrBombMusic 5 месяцев назад
Check out this link: github.com/ojack/hydra-osc I was able to get it to work for both sending OSC from Sonic Pi into Hydra and from Hydra to Sonic Pi, although to do that you need to change the client side port to 4560 (The Sonic Pi Incoming OSC port). Doesn't look like this Github has been maintained much over the last two years, but it does work. Good luck!
@genwav
@genwav 5 месяцев назад
Nice
@janewatts3834
@janewatts3834 5 месяцев назад
literally clapped out loud at the end, perfectly paced tut thank u for ur service <3
@najjaman
@najjaman 5 месяцев назад
1:11 Lol it _did_ trip the copyright monitoring (besides that, didn't watch the full video yet, but always nice to see your uploads!)
@MrBombMusic
@MrBombMusic 5 месяцев назад
Uhh I know! Included the link to listen to the instrumental instead. Thanks for watching. Appreciate it!
@cedriccourtois2724
@cedriccourtois2724 6 месяцев назад
can you help me plz ,i typed exact the same but keep getting errors : a = [ 1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0] live_loop :drums do 16.times do |i| sample :bd_haus if a(i) ==1 sample :sn_zome if a(i) ==2 sleep 0.25 end end the error I get is :runtime error :[buffer 0 line 6 (((which is sample :bd_haus )) -thread death +-- live _loop_ drums undefined method a no method error did you mean at .that's the error I keep getting. what is it I'm doing wrong?
@MrBombMusic
@MrBombMusic 6 месяцев назад
The issue is that you are using parentheses instead of square brackets in these lines of code: sample :bd_haus if a(i) ==1 sample :sn_zome if a(i) ==2 It should be: sample :bd_haus if a[i] ==1 sample :sn_zome if a[i] ==2 a is a variable which stores an array, so when you use the counter i to iterate through all the indices in that array, you need to be using square brackets for a[i] to evaluate as one of the values in the array. That should work
@timestamp-b5p
@timestamp-b5p 6 месяцев назад
love it! very clear! thaks!
@mjejfvqhdb
@mjejfvqhdb 6 месяцев назад
Hey, huge thanks for your efforts - incredibly enjoy watching your Sonic Pi tutorials and learn how to code. While all my life crunching excel / ppt with finance related stuff and it makes much more sense to me vs other attempts to approach coding One small q - are aware of similar platforms to do data analysis / visualisation tools with same syntax and commands as those from Sonic Pi?
@MrBombMusic
@MrBombMusic 6 месяцев назад
Thank you for your kind words! Sonic Pi is built on top of the Ruby programming language, so if you are looking for something with a similar syntax, it would also have to be based onRuby. I am not sure what types of data viz /analysis tools are available in Ruby, but I would have to imagine they exist. I am a big fan of p5.js for doing data viz. It uses Javascript so not the same syntax as Sonic Pi, but has a pretty low barrier to entry with the ability to do some pretty advanced things. Hope that is helpful for you.
@theJamBoxTV
@theJamBoxTV 6 месяцев назад
imagine Michael jackson using this!?
@casim8842
@casim8842 6 месяцев назад
Excellent explanation, I ran into exactly the same challenge myself, without a solution - you clearly have a strong programming background. I. have watched all your vids, and use them in my own teaching.
@user-bw5jo9bj4k
@user-bw5jo9bj4k 7 месяцев назад
Thx)
@LeonardoAguiar3D
@LeonardoAguiar3D 7 месяцев назад
Thank you for sharing your code. Is there a way for the sketch to print out other midi events from which ever key, knob or pad that is changed; so that you can find out what channel each is using?
@MangeshMahajan-g8x
@MangeshMahajan-g8x 2 месяца назад
console.log(channel) insert this line in your code
@luvtv7433
@luvtv7433 7 месяцев назад
I like how this program focus more in the composition of a song, you can quickly arrange something complete.
@stefanhansen5882
@stefanhansen5882 7 месяцев назад
This was awesome! Can Hydra also be controlled from TidalCycles and SuperCollider?
@franrios3843
@franrios3843 8 месяцев назад
"Question: How do you comment out a code snippet?"
@kuimo-Q
@kuimo-Q 8 месяцев назад
Thank you! This is a cool project!
@bigbadvl4d65
@bigbadvl4d65 8 месяцев назад
Hey brother how are you, this is such helpfull stuff. Im working on a django project right now, do you know by change how to integrate this graph, with the live cursor feature into an html page? Thank you!
@anairhorn9448
@anairhorn9448 8 месяцев назад
the goat 🐐
@zizou37
@zizou37 8 месяцев назад
hi plz it s possible contact you ?
@MrBombMusic
@MrBombMusic 8 месяцев назад
mrbombmusic at gmail dot com
@zizou37
@zizou37 8 месяцев назад
@@MrBombMusic code for soni pi ? plz
@ananthvedala4106
@ananthvedala4106 9 месяцев назад
hey i want to implement this, how can i contact you
@MrBombMusic
@MrBombMusic 9 месяцев назад
Mrbombmusic at gmail dot com
@daaniyaalmirza2060
@daaniyaalmirza2060 9 месяцев назад
Super cool! I'm doing something similar for a project right now :)
@MrBombMusic
@MrBombMusic 9 месяцев назад
Niiice! Let me know if there’s anything I can do to help. Would love to see what you make when it’s done
@beryannParker
@beryannParker 9 месяцев назад
Thanks Mr Bomb, now this notion of "seed" is clear for me!😀
@lampenfieber
@lampenfieber 9 месяцев назад
The 110 pitch really caught me off guard bahahahaha, that sound isn't meant for human ears
@blaze.kimbie
@blaze.kimbie 10 месяцев назад
:)
@DIYRobotGirl
@DIYRobotGirl 10 месяцев назад
I get the remote control. I just don't understand why it just can't be written in the Arduino IDE like a piezo buzzer and make the tone in the synthesizer. Instead of using the using the piezo buzzer. If we wanted a song to play automated while making led lights and servo movements in the microcontroller. There is a lot on Arduino going to the synthesizer but none of it is just writing the music with an embedded system through the Arduino to a synthesizer. I would like to know if we can do these things in separate synthesizers and still have the Arduino involved why is the Movi Audume still a thing. No one has thought to make a voice chatbot with a Sonic Pi or even the Supercollider. Still have the system capable of making music.
@andyyyy4102
@andyyyy4102 10 месяцев назад
1:57
@jakebrown1879
@jakebrown1879 10 месяцев назад
to consolidate your code just make an array for each sound and you can still use i to sort through it in the same loop.... only reason youd want to seperate into different loop is if you need to change the beat or something... @ 16:15