You have made learning Super Collider so much easier. Thank you.
@dmmztube4 жыл бұрын
Great tutorials. And great wifi names at 3:50. "Laputa", "No pasa nada", "Do you need a Wifi"
@DRYROT1247 жыл бұрын
You are a master! Very well done videos. The content, the production quality and your delivery...Excellent.
@TheCloudsandTheSkies9 жыл бұрын
This is great stuff! Thanks so much! I am currently doing an MA course and one of my modules is based on the use of SuperCollider. I was originally using GUIs from SuperCollider itself but using OSC seems so much more fun and interesting. Thanks for the Tutorial! Its great!
@linjie19159 жыл бұрын
Couldn't hide any more, since your tutorials are so awesome!
@sphiralstudios10 жыл бұрын
Thank you for this tutorial series - this is the missing piece between where I was and being able to digest the SuperCollider Book. Very interested to see the Kinect stuff in the next vid. Don't know if you play with the Monome gear at all, but I'm working on getting my Arc to play with SuperCollider also. Might be too small a community to dedicate a whole video to, but no one's got one out there yet (that I could find). Anyway, liked and subscribed, keep up the great work!
@wild93910 жыл бұрын
Awesome videos bro. I watched them all and enjoying them alot. U make it easy to be understood and entertaining. Thanks alot. Please keep them coming up.
@Doddinn10 жыл бұрын
Brilliant tutorial as always. You are an inspiration. Keep up the good work.
@ZetaCarinae5 жыл бұрын
Incredibly helpful, thank you!
@Phobia0179 жыл бұрын
Great videos Eli, invaluable.
@lazzarello6 жыл бұрын
controlling parameters via OSC starts at 12:00. Something that bit me is OSC is typed and some UGens in SC fail silently if they are passed an arg of the wrong type.
@ofelia20309 жыл бұрын
I also have a question about how to know the name of a silider or knob in the default TouchOSC layouts so that i could use them in case i don use TouCH OSC Editor.By name, i mean something like the '/main/toggle of your video. I am sorry if this is too far from your tutorial. I am actually trying to install TochOSC editor in linux, but I am having trouble with it, so maybe thatś why i came up with these alternative questions. Cheers, and thanks for the tutorials!
@elifieldsteel9 жыл бұрын
ofelia Open the TouchOSC Editor on your computer, click "Open", and choose one of the default layouts. Click on an object and you'll be able to see the object's address in the column on the left side of the editor.
@ofelia20309 жыл бұрын
i just downloaded touchosc, and there is a thing, which you dont mention i think, called osc midi bridge, which is what hexler.net suggests is THE way of sending-receiving MIDI messages between computer-ipad. I am confused about this, and why you didn need it in your video. I use linux, so it sounds good to not necessarily need that Bridge program that is not available in linux (or maybe i igonre that it is available).
@elifieldsteel9 жыл бұрын
ofelia The primary topic of this video (and the two that follow) is OSC, so hexler's MIDI bridge feature is not directly relevant. Further, the iPad is not really a native MIDI device. Because it is capable of sending/receiving OSC, I rarely (if ever) find the need to enable MIDI communication. I am of the opinion that when OSC is available it should be chosen in favor of MIDI, since it is faster, more customizable, and sends higher resolution data.
@9sirgato99 жыл бұрын
Eli I got a question, For example I got two identical Synthdef that just are different in frequency, so I got 2 toggles to activate each one. The problem is that it can only run one at a time, how do I can make them run sepparately?
@elifieldsteel8 жыл бұрын
+Michel Soto There is absolutely no point in making two identical SynthDefs. Make one SynthDef, and declare a frequency argument so that it can be instantiated with a frequency of your choosing. SynthDef.new(\a, {arg freq=500; etc...}).add; Synth(\a, [\freq, 440]); Synth(\a, [\freq, 880]);
@insightfool9 жыл бұрын
Supercollider is MADDENING. I can't figure out how I would map values from the OSC args to values that are useful for a specific signal/ugen. Something like the .range operator but for a general range? I know there's linlin and such but when I have a msg[0] coming in, I want to be able to just say msg[0].generalrange(1,100) to map values that go from 0-1 to 1-100. Why should this be so dammed hard in SC??!
@insightfool9 жыл бұрын
used linlin...figured it out per your tutorial :)
@user-dt4ih9kh7z4 жыл бұрын
Hello Eli.I have an important question : When I try to "sync" my mobile device with the touch OSC editor, it always fails(with the message "Request time out" ). This happens although I find my pc device on Options, and then I also attempt to manually place my IP. I have an old Iphone 5, do you believe this is the problem? If yes, could you suggest me another way for external control, another program,for an old device like that? As I search the web, I cannot find clear instructions for OSC Communication for SC. Also,from what I have understood, MIDI is an alternative communication to OSC ,so I could search also for MIDI controlling softwares?
@elifieldsteel4 жыл бұрын
I can't tell you precisely why TouchOSC sync is timing out. I think there are several reasons this could be happening. I've gotten a few sync issues in the past, but they are rare and almost always fixed by software and/or hardware restarts. I doubt your iPhone 5 is the source of the problem, but can't be sure. Keep in mind that syncing your mobile device with TouchOSC is a totally separate issue from using your device to communicate with SC over OSC. For example, can you use one of the default TouchOSC layouts to communicate with SC? It sounds like your main issue is related to TouchOSC, not SC, so if you are looking for alternative platforms that allow creation of custom GUI for OSC messaging, you could check out Lemur by Liine, which allows in-app GUI creation and editing: liine.net/en/products/lemur/
@user-dt4ih9kh7z4 жыл бұрын
@@elifieldsteel I appreciate your reply. I found that AVG FireWall for some reason was blocking the sync prodecure. When I turn it off, I can move on normally! But, I have a last question to be honest. I try to connect variables with the OSCDEFS to manipulate the sound. I can do it with Synths/groups and .set method. But what would be the method for Pdef/Pbind manipulation?
@owenerz19 жыл бұрын
Hi Eli. Your videos are really great. I have a question as I am new to SC. Is there a noteOn, noteOff equivalent when using OSC. In the code below I have both synths running with keys on TouchOSC. It's working fine but I'm not sure how to start create the noteon - noteoff type of function. Any help would be greatly appreciated. Thanks man. ( OSCdef( ew1, {arg msg,time, addr, port; // these are the four arguments specified for a function in OSCdef. x.set (\midi, 36 ,msg [1]).postln;//allows me to change the midi note }, '/1/push1'//this assigns the OSCdef to the first key. ); OSCdef( ew2, {arg msg,time, addr, port; x.set (\midi, 37 ,msg [1]).postln; }, '/1/push2' ); OSCdef( ew3, {arg msg,time, addr, port; x.set (\midi, 38 ,msg [1]).postln; }, '/1/push3' ); OSCdef( ew4, {arg msg,time, addr, port; x.set (\midi, 39 ,msg [1]).postln; }, '/1/push4' ); OSCdef( ew5, {arg msg,time, addr, port; x.set (\midi, 40 ,msg [1]).postln; }, '/1/push5' ); OSCdef( ew6, {arg msg,time, addr, port; x.set (\midi, 41 ,msg [1]).postln; }, '/1/push6' ); OSCdef( ew7, {arg msg,time, addr, port; x.set (\midi, 42 ,msg [1]).postln; }, '/1/push7' ); OSCdef( ew8, {arg msg,time, addr, port; x.set (\midi, 43,msg [1]).postln; }, '/1/push8' ); OSCdef( ew9, {arg msg,time, addr, port; x.set (\midi, 44 ,msg [1]).postln; }, '/1/push9' ); OSCdef( ew10, {arg msg,time, addr, port; x.set (\midi, 45 ,msg [1]).postln; }, '/1/push10' ); OSCdef( ew11, {arg msg,time, addr, port; x.set (\midi, 46 ,msg [1]).postln; }, '/1/push11' ); OSCdef( ew12, {arg msg,time, addr, port; x.set (\midi, 47 ,msg [1]).postln; }, '/1/push12' ); OSCdef( ew13, {arg msg,time, addr, port; x.set (\midi, 48 ,msg [1]).postln; }, '/1/push13' ); //Second keyboard on the second page. OSCdef( ew1a, {arg msg,time, addr, port; y.set (\midi, 60 ,msg [1]).postln; }, '/2/push1' ); OSCdef( ew2a, {arg msg,time, addr, port; y.set (\midi, 61 ,msg [1]).postln; }, '/2/push2' ); OSCdef( ew3a, {arg msg,time, addr, port; y.set (\midi, 62 ,msg [1]).postln; }, '/2/push3' ); OSCdef( ew4a, {arg msg,time, addr, port; y.set (\midi, 63 ,msg [1]).postln; }, '/2/push4' ); OSCdef( ew5a, {arg msg,time, addr, port; y.set (\midi, 64 ,msg [1]).postln; }, '/2/push5' ); OSCdef( ew6a, {arg msg,time, addr, port; y.set (\midi, 65 ,msg [1]).postln; }, '/2/push6' ); OSCdef( ew7a, {arg msg,time, addr, port; y.set (\midi, 66 ,msg [1]).postln; }, '/2/push7' ); OSCdef( ew8a, {arg msg,time, addr, port; y.set (\midi, 67,msg [1]).postln; }, '/2/push8' ); OSCdef( ew9a, {arg msg,time, addr, port; y.set (\midi, 68 ,msg [1]).postln; }, '/2/push9' ); OSCdef( ew10a, {arg msg,time, addr, port; y.set (\midi, 69 ,msg [1]).postln; }, '/2/push10' ); OSCdef( ew11a, {arg msg,time, addr, port; y.set (\midi, 70 ,msg [1]).postln; }, '/2/push11' ); OSCdef( ew12a, {arg msg,time, addr, port; y.set (\midi, 71 ,msg [1]).postln; }, '/2/push12' ); ) // Here is the two synths. ( SynthDef("owen",{ arg out,amp=0.25, midi=36; var freq, env; freq=midi.midicps; env = EnvGen.ar(Env.adsr); out=Saw.ar(freq, mul:amp); Out.ar(0, out*env); Out.ar(1, out*env); }).send(s); ) ( SynthDef("owen2",{ arg out, midi=60; var freq1; freq1=midi.midicps; out=SinOsc.ar(freq1); out=FreeVerb.ar(out, 0.35, 1); Out.ar(0, out); Out.ar(1, out); }).send(s); ) x=Synth("owen") y=Synth("owen2")
@elifieldsteel9 жыл бұрын
owen corrigan No. "note on" and "note off" are specific to the MIDI protocol, and OSC is an open-ended protocol in which you can define your own custom messages and behaviors. From a cursory look at your code, you seem to be designing a keyboard-like interface in TouchOSC. From my perspective, you are re-inventing the wheel. It would be so much easier to simply use a MIDI keyboard controller and rely on SC's MIDI functionality.
@owenerz19 жыл бұрын
Eli Fieldsteel Thanks a million for your prompt reply. How would I go about only triggering a sound with touchosc when I touch the button (for example). Could I use and if statement to tell SC only to trigger the sound when it is pressed on the iPad?? How would I go about that type of syntax?? I hope my question makes sense. Thanks again for your help.
@elifieldsteel9 жыл бұрын
owen corrigan It's quite simple, really. Here's a simplified example, something like this should work: OSCdef.new( ew1, { arg msg; if( msg[1] == 1, {x = Synth.new(\owen)}, {x.free} ); }, '/1/push1' );
@owenerz19 жыл бұрын
Eli Fieldsteel Thanks a lot for your help Eli.
@curiuser Жыл бұрын
I would like to receive data from a python flask application in supercollider, is this possible? Any help will be greatly appreciated. Thank you.
@elifieldsteel Жыл бұрын
If you can express your data as OSC messages, yes. For sending OSC data from python, I’d recommend python-osc: pypi.org/project/python-osc/
@curiuser Жыл бұрын
@@elifieldsteel great thank you! applying this.
@PsebDX8 жыл бұрын
Hi Eli, I've been trying to use Max to control some synths I've written in SuperCollider via OSC, similarly to what you've been doing with TouchOSC. The problem I'm having stems from the gate in the envelope generator. If I play a note on my synth, then let go, the gate goes from 1 to 0, as it should (doneAction is 2). But then if I make any adjustments to any of the other parameters while the gate is 0, they are not "remembered" by the synth the next time I play a note to open the gate, and instead the default values of the SynthDef are used. Does this make any sense?
@elifieldsteel8 жыл бұрын
It sounds your mechanism for playing a note creates a Synth whose gate value is initially 1, and the mechanism for stopping a note sets the gate to 0, and because doneAction is 2, the Synth is freed. Therefore, any argument value changes don't have any effect after the envelope is finished, because the Synth doesn't exist any more. One solution would involve changing doneAction to zero to prevent freeing the Synths, and making sure to create your Synths in advance, at patch startup time (maybe 128 Synths, one for each possible MIDI note), making sure their gate value is initially 0. Then, change your note on/off mechanism so that it simply sets the corresponding Synth's gate value to 1 and 0. I show something similar toward the end of Tutorial 9.
@PsebDX8 жыл бұрын
Thanks for the helpful response! (It got buried in my junk mail folder so I didn't see it till now).
@cikibli6 жыл бұрын
This is helpful.infinite :P
@folcwin106610 жыл бұрын
Awsome!
@mauropasserino90079 жыл бұрын
Your tutorial is great!! Thanks Eli.., I want to ask you a question,, if I want to use "multi toggle" of "multiXY", what should I write in the Path field of OSCdef?? If i wrote '1/multitoggle1/1/1' ; this only works with one toggle at time,, I need to write multiple paths.,. how do I do this?? Thanks Eli!!
@elifieldsteel9 жыл бұрын
Mauro Passerino Good question. The individual buttons on a multitoggle actually each send out a single integer on a unique OSC address. I think this is a questionable design decision; I would much prefer to have the multitoggle send out an array of values on only one OSC address. So yes, you do in fact have to create multiple OSCdefs to receive individual button data from a multitoggle. Fortunately, you can use nested iteration to do this very quickly. Here is an example for a 5x5 multitoggle:( var gridx=5, gridy=5; gridx.do{ arg x; gridy.do{ arg y; OSCdef( "multitoggle"++(x+1)++(y+1), { arg msg; msg.postln; }, "/1/multitoggle1/"++(x+1)++"/"++(y+1) ); }; }; )
@mauropasserino90079 жыл бұрын
Thanks Eli! You are God for me haha,, greetings from Argentina!
@mauropasserino90079 жыл бұрын
Eli Fieldsteel The final last question please! How can I distinguish (or accede) a message from a button from another (multitoggle)? If button1=1 -->do something == if [ /1/multitoggle1/1/1, 1 ]-->do somethingIf button1=0 -->do something == if [ /1/multitoggle1/1/1, 0 ]-->do something If button2=1 -->do something If button2=0 -->do something ... I was trying but can´t solve this..! Thanks Eli!!!!
@elifieldsteel9 жыл бұрын
Mauro Passerino I don't think I understand your question. You can refer to different buttons in a multitoggle by changing the address (for example, /1/multitoggle1/1/1 refers to a single button, /1/multitoggle1/1/2 refers to an adjacent button, etc). If you want to define unique behaviors for discrete buttons, you'll need to create unique OSCdef objects with unique action functions.
@mauropasserino90079 жыл бұрын
Eli Fieldsteel Sorry if I wasn´t clear,, this is what I mean: ( var gridx=1, gridy=5; gridx.do{ arg x; gridy.do{ arg y; OSCdef( "multitoggle"++(x+1)++(y+1), { arg msg,time,addr,port; msg.postln; //This is what I want to do: if(msg =={'/1/multitoggle1/1/1, 1 '}){ "Do something 1".postln; } if(msg =={'/1/multitoggle1/1/2, 1 '}){ "Do something 2".postln; } if(msg =={'/1/multitoggle1/1/3, 1 '}){ "Do something 3".postln; } if(msg =={'/1/multitoggle1/1/4, 1 '}){ "Do something 4".postln; } if(msg =={'/1/multitoggle1/1/5, 1 '}){ "Do something 5".postln; //This obviously doesn´t work, I don´t know how to write this lines of code! } }, "/1/multitoggle1/"++(x+1)++"/"++(y+1) ); }; }; ) Thanks again for your time Eli!!
@coolbaboonable10 жыл бұрын
Thanx a mil Eli! Accelerometer data for SuperCollider: \accxyz [1][2][3]
@9uweeoncbmd8906 жыл бұрын
Hey, Eli. Have you already seen a problem of SuperCollider having short moments of not receiving OSC data exactly every 10 seconds? I have had no problem using OSCdef and its informations in Synths in my own code. However, I noticed that there is a hiccup of sorts from SuperCollider every 10 seconds, in which it does not receive information for a split second, and then dumps all the information at once the very second after. OSCdef.trace has shown me that that behavior is consistent, and I cannot find any sort of mention of this behavior elsewhere in the internet or SC's mailing list. I've pinged my internet connection looking for this same problem in latency, but it seems to only happen on SuperCollider's end when receiving MIDI and OSC information. I'll continue to try and solve this, but all I've tried hasn't worked yet. If you know of something, let me know, because I'm really excited with TouchOSC's possibilities.
@Desafis4 жыл бұрын
Hai Eli, thanks for this Video, but the Syntdef doesn't work at all. The post window shows up that }). add is not correct. Did I miss something?
@elifieldsteel4 жыл бұрын
I would guess that you're pressing shift-enter to evaluate the SynthDef, which only evaluates the cursor's current line, and should instead be using control-enter (win) or command-enter (mac) to evaluate a parenthetical clump of code. Alternatively, highlight the SynthDef code before evaluating.
@wild93910 жыл бұрын
I got a question which maybe not smart or useful one for alot out there but its something that popped up my head. What if I want to invert a toggle button to perform an action when its off (aka msg is "0"). When I turn it on it do a specific action and when I turn it off it does another action and same for faders and knobs if they centered for example and I want the negative values position work for specific function and positive position another one? Is that possible?. Sorry for my bad english but I wish my comment make sense and clear to be understood. Thanks alot
@elifieldsteel10 жыл бұрын
You're describing conditional logic. In your OSCdef function, use an if-statement or something similar: if(value == 0, {"off".postln}, {"on".postln}); so that SC prints "off" when the button value is 0 and "on" when the button value is 1. Then just change the contents of the true/false functions so that they do what you want. When a GUI ranges from 0 to 1, but you want it to range from 1 to 0, use 1 minus the GUI value (in other words, if the GUI value is n, use 1 - n).
@wild93910 жыл бұрын
Thanks very very much for ur fast and detailed reply and the video as well. So helpful bro :). keep it up and keep the videos coming :) thanks again for everything.
@joshuadelorimier16198 жыл бұрын
could you show an example of going the other way using OSCfunc??? and if its possible to get the built in args like \midinote out of a Pbind? Thanks for the tutorials!
@elifieldsteel8 жыл бұрын
+Joshua deLorimier (TRASHTRASH) By "go the other way," do you mean send OSC messages to TouchOSC? I don't understand what you mean by "get the args out of a Pbind." Can you be more specific?
@joshuadelorimier16198 жыл бұрын
+Eli Fieldsteel Thank you so much for the reply sorry for the poorly written question. So I want to Send Osc data to another application or we could pretend the led lights of touchosc. From my research to send data you have to use OSCFunc I believe. I wanted to know if it is possible to send the data from different Pbind's. Here is an example based off your last tut. If you could show me how you would write a OSC function so I could send the \midinote arg data to another application I would appreciate it so much. Thank you so much for your tutorials and your time! ( ~song1=Pdef(\pat2, Pbind( \instrument,\fm1, \dur,Pseq([1/2],inf), \stretch, 60/128*4, \midinote,Pshuf([23,42,33,35,26,74],inf).trace, atio, Prand([2/3,1/3,3/4,3/2,2/6,6/7,1/8],inf), \atk,Pwhite(1,8,inf), el,Pwhite(1,8,inf), \amp,Pwhite(0.1,0.1,inf), \pan,Pwhite(-1,1,inf), ); ).play(quant:60/128*4); ) I want to be able to send the notes that \midinote are playing. Thanks so much!
@elifieldsteel8 жыл бұрын
+Joshua deLorimier (TRASHTRASH) OSCFunc is used for receiving OSC data, not sending it. To send OSC data, create an instance of NetAddr that represents your OSC destination (IP and port number), and use the sendMsg method. You can't directly ask an EventStreamPlayer (Pbind.play) to "send out" certain data. Doing it this way would likely involve defining your own custom event type that sends OSC, creating a second Pbind to generate those events, and playing the two event streams in parallel with Ppar-- too much work IMO. I find it much easier to ask the generated Synths to send OSC data themselves, using SendReply, so that Pbind generates the Synths, and the Synths generate the OSC output. I'd do it like this: ( s.waitForBoot({ //create NetAddr representing TouchOSC //make sure IP and port are correct ~touchOSC = NetAddr.new("192.168.1.100", 9000); //simple percussive sine wave generator SynthDef.new(\a, { arg freq=440, t_trig=1; var sig; sig = SinOsc.ar(freq,0,0.2); sig = sig * EnvGen.kr(Env.perc,t_trig,doneAction:2); //send MIDI note number to sclang SendReply.kr(t_trig, '/pitch', freq.cpsmidi.round); Out.ar(0, sig!2); }).add; //receive MIDI note number from scsynth and send to TouchOSC //I'm using an 8-toggle multitoggle to //represent pitches of an A-major scale OSCdef.new(\pitch, { arg msg; ~touchOSC.sendMsg( '/1/multitoggle2', //convert to 1 if note number is played, 0 if not (msg[3]==69).asInteger, (msg[3]==71).asInteger, (msg[3]==73).asInteger, (msg[3]==74).asInteger, (msg[3]==76).asInteger, (msg[3]==78).asInteger, (msg[3]==80).asInteger, (msg[3]==81).asInteger, ); }, '/pitch'); //Pbind creates Synths, which send pitch data ~pattern = Pbind( \instrument, \a, \dur, 0.5, \midinote, Pxrand((Scale.major.degrees+69)++81,inf), ); }) ) p = ~pattern.play; //start
@joshuadelorimier16198 жыл бұрын
oh my godness thank you sooo much....I've lost at least two days trying to figure out a solution! Much appreciated!
@HighlandViolinist5 жыл бұрын
Is there a way to change the default port in SuperCollider? Also, if you have multiple OSC devices, can you setup SC to receive messages from all of them on multiple ports?
@elifieldsteel5 жыл бұрын
Yes. For OSC listening in sclang, just create an OSCdef and provide the desired port value as the recvPort argument. If you have multiple OSC sources arriving on different ports, you can create multiple OSCdefs listening on those ports. //create OSCdef listening on different port: ( OSCdef( \test, { arg msg; msg.postln; "received".postln; }, '/msg', recvPort:57130 ) ) //establish a NetAddr for sclang to test OSC communication internally ~langAddr = NetAddr("127.0.0.1",57130); //send OSC message. should see "received" in post window ~langAddr.sendMsg('/msg', 1); Keep in mind the server listens on port 57110 and the language listens on 57120, so it depends where you want to send/receive messages. I assume you're doing language-listening on 57120 as this video demonstrates, but just in case, here's what I'd do to change the default server port: //listen on different port s.addr_(NetAddr.new("127.0.0.1",6789)) s.reboot; //(unsure if necessary) s.addr; //confirm new port assignment //establish NetAddr object for localhost server to test OSC communication internally ~serverAddr = NetAddr.new("127.0.0.1",6789) //create a synth by explicitly sending an OSC message ~serverAddr.sendMsg('/s_new', "default", s.nextNodeID, 0, s.defaultGroupID) //done s.freeAll;
@HighlandViolinist5 жыл бұрын
@@elifieldsteel So to summarize; if I have two phones, each time I program a button to do something in an OSCdef, I have to write the specific phone's recvPort.
@elifieldsteel5 жыл бұрын
HighlandViolinist - Chantelle Ko I think that’ll work. I don’t believe I’ve ever actually tested this particular setup. You could certainly try sending both phones to the same port. This might work too, but I have a hunch something will complain about the port being in use or unavailable. What you’re describing is definitely possible, though.
@HighlandViolinist5 жыл бұрын
@@elifieldsteel When I've done this in Max MSP, each phone has their own port, and then make a [udpreceive] object for each phone with the port number in the argument. If the phones were on the same port, then I think what would happen is both phone's buttons would be mapped to control the same things. It could cause problems if people on each phone were both trying to control the same fader or button at the same time.
@HighlandViolinist5 жыл бұрын
@@elifieldsteel I tested it and it works! kzbin.info/www/bejne/a5uQkp2JndaWb5o I discovered this method seems to be more efficient to get SC to listen to multiple ports thisProcess.openUDPPort(1121); //this makes SC additionally listen to the port written inside the brackets thisProcess.openUDPPort(57130); thisProcess.openPorts; // list all open ports And then I used the recvPort:(number) inside the OSCdef like you mentioned.
@coolbaboonable10 жыл бұрын
I have a playbuf synthdef and I have values from accelerometer. Both work, but not together. How do I use "live" OSC values (from OSCdef) to control an arg in the synthdef (where the buffer is stored)?
@elifieldsteel10 жыл бұрын
This video provides answers to your question, exactly as you've asked it. Use OSCdefs whose functions call 'set' commands on the existing Synth.
@coolbaboonable10 жыл бұрын
Eli Fieldsteel Yes, this is true. I went back and watched all the tutorials, losing track of the problem...I was creating a new synth for every .set() by using .play instead of .add for the synthdef(). Thanks.
@elifieldsteel10 жыл бұрын
I had a feeling it was something simple. Glad you got it figured out!
@linjie19159 жыл бұрын
Eli Fieldsteel Hi, Eli! Your video is really helpful to me. I would like to ask you how to send message to multitoggle or multifader in supercollider?
@elifieldsteel9 жыл бұрын
介琳 Append an extra slash and number to the address. For example, an address such as /main/multifader1/3 will address the third fader on the multi object named "multifader1" on the page called "main." See the TouchOSC manual: hexler.net/docs/touchosc-controls-reference#multifader
@humabeing8 жыл бұрын
Message 'linlin' not understood. RECEIVER: nil what could be wrong...... plz help !! i get this with all the faders and the toggle doesnt work!
@elifieldsteel8 жыл бұрын
linlin maps a number from one linear range to another. If a variable is receiving the linlin message, it must first be given a numerical value. If you don't give your variable a numerical value, it has a value of 'nil,' and it makes no sense to map 'nil' some a linear range. For example, x=5; then x.linlin(1,10,20,100); makes sense. Without x=5 first, SC returns your error.
@humabeing8 жыл бұрын
so what values should my osc sliders be sending? they currently sending 0 to 1.
@humabeing8 жыл бұрын
if the value range is 0 to 1 then nil is innevitable as a msg value. and in between o and 1 i get also msg not understood.
@elifieldsteel8 жыл бұрын
+humanbeing No, a value of nil is not inevitable. It doesn't matter what numerical value receives the linlin message, as long as it actually has a numerical value. There is something else wrong with your code causing your linlin receiver to not be given a numerical value, possibly a misspelled variable name. I cannot help you further unless I have more information. You can PM your code to me, if you like.
@humabeing8 жыл бұрын
+Eli Fieldsteel ty you r the best. it is the code u showed on this video. maybe the osc app iam using doesn't send the correct msgs
@gkyriak3807 жыл бұрын
SOS - Please help: I can't get to connect OSC on my Android even if I put the correct IP address of my computer to search for hosts (don't find any unfortunately)! Is there a workaround to make this work (I don't have an Apple mobile device but only an Android)... Does the fact that the WiFi is common to all residents in my residence halls (i.e. public) hinder the process of connecting my Mac to my Android device? Thank you very much in advance!
@elifieldsteel7 жыл бұрын
When you say "connect OSC on my Android," are you referring to the sync process that loads TouchOSC interfaces from your computer onto your mobile device?
@gkyriak3807 жыл бұрын
Both this and the reflection of Android touch actions onto SuperCollider. I've been able to do some sort of workaround by creating a private Wi-Fi hotspot with data disabled, so that network connection is only established between device and Mac computer - getting the connection to work, but how is it sometimes possible that I match the WiFi addresses but still can't get the process to work? I hope I made myself as clear as possible, waiting for your reply!
@elifieldsteel7 жыл бұрын
"getting the connection to work" - I assume this means you can successfully sync layouts between computer and mobile device? "still can't get the process to work" - I assume this means receive OSC messages in SuperCollider? If I'm understanding you correctly, this may be an SC syntax problem (OSC address misspelled in OSCdef, perhaps), and your Android must also send OSC to the correct port as well as the correct IP address. The port to which sclang listens is 57120 by default (configure this in the TouchOSC settings on your mobile device). I'm not sure it's necessary, but I usually boot the audio server before initiating OSC communication with SC. The fact that you're using a heavily-trafficked network may cause dropped packets and slow response times, and there may even be some wireless configuration that inhibits OSC -- but I'm totally speculating here. I've used university-wide networks before with no problems, but I usually use a private network for performances. And, FWIW, I frequently have these sorts of problems when sending OSC between devices, i.e. I can't receive messages coming from another device. I double-check IP and port, make sure devices are both on the same network (doesn't actually have to be wifi, it can be an ethernet connection), and sometimes restart SC and other apps participating in the OSC messaging. That's really all there is to it. Hope this helps.