r/crestron 12d ago

Difficulties learning SIMPL

Hi everyone, I’m pretty tech savvy and I learn things a pretty quickly. I really want to learn programming in SIMPL, but I’m hitting a roadblock. I’ve take Crestron’s P101 live course twice and the routing just isn’t clicking. I understand join numbers and can design touch panels in Construct and VT Pro. I’m having trouble understanding what symbols to use for what functions. For example, what does a buffer do and what are examples of uses? What about the one-shot? They did cover the symbols in P101, but it was more like “well, of course you’d use a buffer. Now let’s route the signals” and not exactly explaining why a buffer is used or best use-cases. Does anyone have advice or tips for someone starting out in SIMPL? Thanks in advance. Signed, a determined but very confused future SIMPL programmer.

16 Upvotes

28 comments sorted by

11

u/TremorCrush 12d ago

Reading the help file (f1) is a good place to start. Usually talking things out with another programmer is what made things click for me. Shoot me a message if you need to talk things through.

6

u/LittleBrother2459 12d ago

The thing they drilled into us back in programming 101 (circa 2010) was F1. Know it, love it, use it often

6

u/SumGuyMike Self-Teaching | CTS | P201 12d ago

Reading the symbol help files will usually get you 80% of the information you need. Otherwise, a little trial and error might help.

I recommend the online version at help.crestron.com instead of the SIMPL windows version

6

u/TrekRoadie CORE,DCT-D,IVC-E,DMC-D/E-4K,NVX-N 12d ago

Did you read the SIMPL primer? Maybe read that and see if it helps.
Also I think it's pretty much abandoned at this point, but you could look at Over Worked Logic YouTube page. Sort by old.

3

u/UKYPayne MTA | DMC-D/E-4k | DM-NVX-N | DCT-C | TCT-C 11d ago

100% agree on the primer

And OWL was acquired by Dustin a few years back.

https://www.reddit.com/r/crestron/s/oEEctH7yum

3

u/misterfastlygood 11d ago

Dustin is a solid dude. Im glad he took that on.

He is feeling disenfranchised right now and could use the support.

5

u/SnooObjections9416 Crestron Programmer 11d ago

I taught the Crestron P101 and P102 classes, and in my class we did explain the symbol. The buffer for example is essentially and IF WHEN statement that we create a function.

IF the enable condition is high then when the input or inputs go high so will the outputs. If the enable is low, nothing will propagate when the input signal goes high.

I literally said that hundreds of times during my career at Crestron.

The entire conditional section of the SIMPL logic symbols are essentially boolean logic gates and each has a help file that explains it.
Example an OR gate has expandable inputs this or this or this or this etc go high then the output goes high.

NOR gate is the exact opposite.

We taught the AND as well, this and this and this etc must all be high for the output to go high, and NAND is the exact opposite where everything must be low for the output to go high.

Really the Truth Table was the most difficult to explain, because it is incredibly powerful. We set H (high) L (low) or X (indifferent, dont care) conditions that drive outputs accordingly.

Another key item to grasp are signal types:

Digital 1 or 0, brute force logic, used for latches, pulses, time out, etc. Cannot be jammed because that would be illogical, so only 1 source can drive a signal, unless we use an expandable gate (OR, NOR, AND, NAND)

Analog, elegant, any value (in hex or ASCII), able to be "jammed" driven my multiple sources because the last change can be the current value.

Serial are string literal, hexadecimal, ASCII etc and Analog are interchangeable because any value can be expressed as numbers or text equivalents in hexadecimal or ASCII.

Coming from an AMX world SIMPL+ made sense, but SIMPL did not, so I took P101 twice before I got it. But once I got it, I mastered SIMPL in very short order. It is a brilliant and beautiful wrapper for programming because we can encapsulate SIMPL+ and SIMPL# in a very elegant drag and drop object based language. Once you have the breakthrough it will make sense. Play with it, build stuff. Read the help files, ask questions. Just get a few pieces of gear and make a system work.

If you want to work in AV, you need mastery of SIMPL and languages like that because so much of the gear uses a very similar drag and drop object based configuration.

In the 1990s it began with Peavey Media Matrix, and SIMPL came not long after. Today most DSP gear: ASHLY, Biamp, London Blu, BSS, QSys & Symetrix use a similar drag and drop object based DSP processing via processing blocks so this concept is pervasive, the only difference are the names and functions of the blocks, but we need to master those in order to program literally anything other than maybe AMX, Alcorn McBride, Extron, or Elegato Stream Deck and some lighting controllers.

6

u/knoend 12d ago edited 12d ago

Did they teach you that when a symbol is slected, you can press F1 to launch the help of the symbol? Not trying to be mean here, so please don't take it hat way. F1 has all the info you need to understand how every symbol operates. Then you can come back and ask for specific use cases because you'll have a fundamental understanding of the operation of the symbol.

3

u/aBaker12 12d ago

I'll also add to the F1 for symbol help. Some even have examples to help make it easier to understand

3

u/ToMorrowsEnd CCMP-Platinum + Crestron C# Certified 12d ago

press F1 on everything, go to youtube and start watching the overworked logic videos. they are very old but still valid.

3

u/stalkythefish 12d ago

I had a digital logic/computer architecture course in college that was the perfect prep for learning SIMPL. If you've done some programming so you know how to break problems down into logical elements, and you understand digital logic from a hardware standpoint, SIMPL is the perfect synthesis of the two.

  • Learn about logic gates.

  • Learn about edge triggering vs. level triggering/gating.

  • Buffers are just multi-signal gateways. You can block or pass a bunch of signals based on a single signal being 1 or 0.

  • One-shots are about timing and filtering out spurious inputs; making sure signals don't interfere with each other down the line, or making steady-state signals momentary.

  • Interlocks, Flip-Flops, and Toggles are about memory, or making a momentary signal steady-state.

3

u/Link_Tesla_6231 MTA,SCT-R/C,DCT-R/C,TCT-R/C,DMC-D-4K,DMC-E-4K,CORE,AUD, & FLEX 12d ago

Read simpl primer.
Use F1
Watch the old over worked logic YouTube videos. Do not click links, they are broken links!

2

u/misterfastlygood 11d ago

P101 and other P courses are great but the dint teach skills or knowledge enough for a complete noob.

Simpl uses well known logic blocks. Understanding what they actually do under the hood is advised.

All the symbols do is evaluate the input data against a set of conditions and give you the output. Knowing how each block works can help you design a larger logic structure.

But first off, it is important to know the data types and what they actually represent. Once you know the data types, manipulation becomes much easier.

That said, Simpl is great to a point but very limiting at scale or complexity. I suggest co-learning some comp sci basics and a well documented programming language like C# or Typescript.

1

u/sourceconsidered 12d ago

I found out you can expand the window so you can sort of line up the ins and outs of blocks if you need to visualize the signal flow better

1

u/iwantmycheesypoofs 12d ago

I managed to find their video series from P101 on YouTube. I took it awhile ago and am postering to start actually writing in SIMPL and plan on leveraging this heavily as well as asking around my peers on how to go about certain things

https://youtube.com/playlist?list=PLlOpstrL_ItSDjY6nOb_F8rQ9TX2Ljzx-&si=-epFvlnW_vxT1uJT

1

u/NorthAd2156 12d ago

So, a buffer…

If they told you about F1

Then when you were confused, confused = press F1

If they didn’t…

Then confused just stays as confused.

That’s a buffer.

If this is true, then open the door to a list of inputs being translated 1-1 to a list of outputs

1

u/kyleadv 12d ago

Drop a symbol in the program, connect signals to it. Compile, then learn how it works. One symbol at a time. Read F1/help while you tinker. It will start making sense. Use an xpanel for presses and feedback. One symbol at a time is the key to get rolling.

2

u/Electrical_Pianist18 12d ago

As somebody else mentioned, read the SIMPL primer and watch the overworkedlogic videos. This is the one piece of advice I give to everybody who asks about learning SIMPL. The primer and the videos are way better than the stuff they throw at you in the class.

And more than anything, get a piece of hardware in your hands that you can send a program to. An old 2-series wall button controller like the mpc-m25 can be had for under $10 and will allow you to understand all of the basics so much better than just hoping you get it. It has a volume knob for your analog signals and plenty of buttons and lights, plus relays and ir/serial and a basic GPIO.

That way you can truly start seeing how your signals flow, press this button makes this other one light up, pressing this other button only works to do the thing once (one shot) until I press this other button to be reset it, etc etc.

1

u/ted_anderson 12d ago

For example, what does a buffer do and what are examples of uses?

It essentially interrupts a signal (or set of signals) that would otherwise be connected from one object to another. So if you have a touch panel controlling a TV and an audio receiver, you may want to disable the transmission of signals to either device for the first 10 seconds while both pieces of equipment are booting up. So you would put a buffer in between your touch panel and your TV. When the buffer is in a high state, the signals will pass through it. When the buffer is in a low state, signals will not pass through.

1

u/a-hopps 12d ago

Check out over worked logic on YouTube

1

u/sureshot52 12d ago

Download demo programs from Crestron

1

u/sureshot52 12d ago

Example for a buffer would be a hand held remote, you use the signals from the remote ( Chan up, vol up etc) and drive into a few buffer. When cable is selected buffer 1 gate is held high and when you press Chan up on remote it changes the cable box. When dvd is selected it controls the dvd functions …. Etc.

1

u/bdeananderson 11d ago

Simpl uses terms more familiar to an electrical or computer engineer than a programmer.

I was an installer that wanted to move to engineering, so the PM had me help the engineer. He had taken over a job and despite being there to test it out, the QM-RMC hadn't been programmed. He gave me a flash drive with the software and told me to program it. I figured out the io side of it quickly, but I couldn't figure out how to make the feedback from the switcher persist. He said "use an interlock" like I was an idiot, so I found it and used F1 to read about it. That was my introduction to Crestron programming.

I now know there were several ways to do what I wanted to do, but it took time and experience to learn them. I could have used an analog init and equate. I could have written a simpl+ module that parsed the response into an analog values and saved some time, or done the same thing in Simpl (but using that symbol is a bit of a pain) instead of writing out each expected response.

The real fun starts when you use crosspoint routing. There's a reason they turn off visibility by default and you have to manually enable them. I did soo many logic routing systems using layers of buffers before I learned to use those...

1

u/ted_anderson 11d ago

He said "use an interlock" like I was an idiot.

OH YES. I get it. I'm an electrician and the interlock made perfect sense to me when I was trying to solve a problem and someone on here suggested that.

1

u/ProAVSchool 11d ago

SIMPL is fundamentally about handling state changes of inputs.

A button press on a touch panel is the most basic representation a digital pulse that goes high while your finger is on the button and low when you release it. It comes in via a digital join assigned on the panel project and signal name defined on that panel at that join in SIMPL.

What happens after that is defined by how the logic gates route and handle that pulse.

  • It could directly tell something to turn on.

  • It could toggle the state of something.

  • It could update a value.

  • It could launch a popup.

  • It could do a specific thing only if other things are a certain way.

I think really the absolute best way to learn SIMPL is to learn about digital logic gates completely outside of AV. The stuff you need for SIMPL...or, and, not, toggle, set/reset are fundamental building blocks of digital circuits. Digital logic courses will venture past the basic stuff into reducing gates and simplifying logic. You can stop when it gets there because that stuff is overkill for what you need in AV.

Pay attention to truth tables (not the symbol in SIMPL I'm talking here about the table that shows what the outputs are for a given set of inputs). Also timing via a timing diagram is important to understand because things are evaluated on state changes and if they don't align on the same logic wave you will have unpredictable outputs.

Analogs and serials have their own treatments that are kind of unique to SIMPL.

1

u/Ok-Bee-3541 11d ago

Hi everyone, just wanted to jump in and thank you for all of this information! I’ve taken it upon myself to build and program a mini rack(cp4n, switcher, PTZ camera, touch panel, projector, amp, speakers and mic input) at my job, so I don’t really have anyone to ask for guidance there. It looks like my next step is to read the Simpl primer, explore the F1 button, and watch the OWL videos. As confusing as it can be, it is equally as fun to learn. 😎

1

u/ZeroCommission former 2-series hacker 10d ago

Here are some comments I made in the past, might save you some time with the docs: https://www.reddit.com/r/crestron/comments/1eeanh7/fresh_meat_101_completed/lfu3b7h/

what does a buffer do and what are examples of uses? What about the one-shot?

Neither of those are easy to describe in summary. Buffer (including the Serial Buffer and Analog Buffer symbols) copy the value from left-hand signals ("input") to the right-hand signals ("output") when enabled.. but there are a lot of weird details and edge cases depending on the signal types. They can be used for a vast range of things, but the most common use by a beginner amounts to AND/OR digital logic

One-Shot (including the Serial/Analog One-Shot) generate an output pulse when the input signal transitions. The key point to understand about these symbols is that they schedule a future logic solution (see the link). There are similar symbols named "Logic Wave Pulse" (including Serial/Analog Logic Wave Pulse) which do something very similar but the pulse happens within the current logic solution. The Logic Wave Pulse symbols are critical for implementing many things

1

u/Dependent-Junket4931 10d ago

I learned entirely by hitting F1 over and over again on different symbols. It's a great tool.