November 23, 2025Nov 23 Dear Friends,With the audio tools in windows can we make some breakbeats, like chopping audio files, like beat slicing and starting in different parts of the audio file, like the video below (serato sample plugin), and also sync accurately with midi parts in Opusmodus ?All the best !JulioSOME HISTORYHere are some breakbeats (amen sample)If possible, would be great to includ a sample of the amen beat inside the documentation with an example of breakbeat.This function can also serve to launch samples of any nature for electroacoustic or mixed music.
November 23, 2025Nov 23 Author AMEN LOOPS !!https://rhythm-lab.com/amen_breaks/?srsltid=AfmBOopvuBOnbgi-hw2N7lwrlGbs3w9xekV9m4atKP2m9bl_P4F4iqAiORIGINALhttps://samplefocus.com/samples/amen-break-original-g
November 24, 2025Nov 24 Author FIND IT(make-mix 'mixA '(:audio "E:/Opmo_win_work/opusmodus/Opusmodus/Media/Audio/cw_amen10_135.wav" :segments ((:start 0.3 :len 2.0) (:start 1.3 :len 2.0)))) (play-mix 'mixA)A problem in windows machine examples is that you have to reverse all backslash symbols from this "\" to "/' .In windows It only works with right angled slashes, like this ////A good idea would be a sample to BPM, BPM to length, ms to bpm, etc calculator to slice the audio / beats according to BPM, musical time, and quantize in length.For example, in 60 BPM, each 1/16 length is equal to 240 bpm or 250 ms.And a function to random beats musically.Best
November 24, 2025Nov 24 @JulioHerrlein I once created an OpenMusic patch that would cut and shuffle a voice object. The way I went about it could be translated to Opusmodus without much trouble. Who knows, there might be an easier way to accomplish it in Opusmodus.Here’s the general algorithm:Get the resolution of the slicing grid (1/16 and 1/8 yielded typical breakbeat styles; 1/12, 1/24, 1/20 yielded some interesting chaos)Get the sequence of slices as a list of integers.Rewrite the voice object with the slicing grid resolution as the meter. For example, a 2-measure voice object in 4/4 would be rewritten as 16 measure of 1/8. At this point, it would sound no different than the original.Strip ties over the new measure boundaries.Using the list of integers from #2, extract and assemble the slices, using the integers as indices for the sliced voice object’s measures.Optionally tie any repeated pitches.Rewrite in the original meter.My experiments were with fairly simple voice objects. The Amen break, of course, but some simple melodies as well. Got some really interesting results from very simple voice objects. There were no transformations performed on any of the slices, but one could easily imagine having some slices be transposed, or have their durations halved or doubled, or have the slice reversed (only makes sense for slice resolutions that allow for multiple onsets within a slice), or some combination of any of them. I think this extension of the idea would be far easier to implement in Opusmodus.Cheers,Jon
November 24, 2025Nov 24 Author Can be done with(bar-to-sec '(w) :bpm 135)(make-mix 'mixA '(:audio "E:/Opmo_win_work/opusmodus/Opusmodus/Media/Audio/cw_amen10_135.wav" :segments ((:start 0.0 :len 1.778) (:start 0.0 :len 1.778) (:start 0.0 :len 1.778) ; (:start 1.3 :len 2.0) ))) (play-mix 'mixA)Thanks a lot, Jon !!cw_amen10_135.wavcw_amen10_135.wav - name it that way(make-mix 'mixA '(:audio "E:/Opmo_win_work/opusmodus/Opusmodus/Media/Audio/cw_amen10_135.wav" :segments ( (:start 0.0 :len (bar-to-sec '(w) :bpm 135)) (:start 0.0 :len (bar-to-sec '(h) :bpm 135)) (:start 0.0 :len (bar-to-sec '(h) :bpm 135)) (:start 0.0 :len (bar-to-sec '(s) :bpm 135)) (:start 0.0 :len (bar-to-sec '(e.) :bpm 135)) (:start 0.0 :len (bar-to-sec '(e.) :bpm 135)) (:start 0.0 :len (bar-to-sec '(e.) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) (:start (bar-to-sec '(s) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(s) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(s) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(s) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) ; (:start 1.3 :len 2.0) ))) (bar-to-sec '(s) :bpm 135) (play-mix 'mixA)
November 24, 2025Nov 24 Author The function(make-mix-segments :start '(0.0 1.0 2.0) :len '(0.5 0.5 1.0) :fade-in 0.2 :fade-out '(0.2 0.2 0.5) :amp '(1.0 0.8 0.9))Appear in black and won't work in windowsDear Jon,We can think something like a "audio-dictum" in the way you described.Best !Julio
November 24, 2025Nov 24 Author Some Squarepusher funopmo_squarepusher.mp3(make-mix 'mixA '(:audio "E:/Opmo_win_work/opusmodus/Opusmodus/Media/Audio/cw_amen10_135.wav" :segments ( (:start 0.0 :len (bar-to-sec '(w) :bpm 135)) (:start 0.0 :len (bar-to-sec '(h) :bpm 135)) (:start 0.0 :len (bar-to-sec '(h) :bpm 135)) (:start 0.0 :len (bar-to-sec '(s) :bpm 135)) (:start 0.0 :len (bar-to-sec '(e.) :bpm 135)) (:start 0.0 :len (bar-to-sec '(e.) :bpm 135)) (:start 0.0 :len (bar-to-sec '(e.) :bpm 135)) ;(:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) ;(:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) ;(:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) ;(:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) ;(:start (bar-to-sec '(s) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) ;(:start 0.0 :len (bar-to-sec '(w) :bpm 135)) ;(:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) ;(:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(e) :bpm 135)) ;(:start (bar-to-sec '(q) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) ;(:start (bar-to-sec '(q) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) ;(:start (bar-to-sec '(q) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) ;(:start (bar-to-sec '(q) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) ;(:start (bar-to-sec '(q) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) ;(:start (bar-to-sec '(qe) :bpm 135) :len (bar-to-sec '(e) :bpm 135)) ;(:start (bar-to-sec '(qe) :bpm 135) :len (bar-to-sec '(e) :bpm 135)) ;(:start (bar-to-sec '(qe) :bpm 135) :len (bar-to-sec '(e) :bpm 135)) ;(:start (bar-to-sec '(qe) :bpm 135) :len (bar-to-sec '(e) :bpm 135)) ;(:start (bar-to-sec '(0) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) ;(:start (bar-to-sec '(0) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) ;(:start (bar-to-sec '(0) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) ;(:start (bar-to-sec '(0) :bpm 135) :len (bar-to-sec '(e.) :bpm 135)) (:start (bar-to-sec '(0) :bpm 135) :len (bar-to-sec '(w) :bpm 135)) (:start (bar-to-sec '(0) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(0) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(0) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(0) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(s) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(s) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(s) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(s) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(q) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(q) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(q) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(q) :bpm 135) :len (bar-to-sec '(q) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e.) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) (:start (bar-to-sec '(e) :bpm 135) :len (bar-to-sec '(s) :bpm 135)) ; (:start 1.3 :len 2.0) ))) (play-mix 'mixA)Dear Janusz,Can we make a play-mix many different tracks playing at the same time, like a ps function with audios each one processing one different sample ?How to save the play-mix to a file on disk ?Best
November 24, 2025Nov 24 Yes, the make-mix-segments function was missing on Windows.Fixed in 4.0.304798 hours ago, JulioHerrlein said:Can we make a play-mix many different tracks playing at the same timeYes you can, check the documents.
November 24, 2025Nov 24 Generally, I'm using Redux from Renoise driven by Opusmodus in LiveCoding but with this new audio functions, it is another very cool and interesting way to do it directly inside Opusmodus.
November 24, 2025Nov 24 Author @Stephane Boussuge , This is the way I was going also, sending midi notes to trigger Serato Sample, that is similar to Redux, I think.Here is my session
Create an account or sign in to comment