So, to start off, I am aware of the growing youtube tutorial base, a lot of which are extremely detailed and well documented and cited. I'm keeping them in mind but for the sake argument I'd like to exclude youtube/vimeo-website based tutorial videos and private organized "tutorial courses" including to leave out written documentation hosted by Atmel on their Atmel Studio and Controllers, as well as any written tutorials out there like Instructables. Before I'm going to jump into using all those resources, I just wanted to ask in case this exists...

Are there any purchase-able College Level courses on understanding, programming and building circuits around the Atmel 32 bit MCUs. I come from a heavily artistic side: music composing, drawing, design, game development etc. I wen't to college for Concept Art when I discovered that I had an interest to create devices with micro-controllers. The one thing I noticed is that subjects like Art and Game Development have a giant video tutorial base on tutoring sites like CGSociety, Lynda.com, Udemy etc. These aren't just courses made to explain common grounds, but most of these have a course plan that cover nearly everything there is to a certain trade, some of which even offer a "diploma-esk" type of certification (not that THAT is a selling point to me). The main subject is that it's extremely board and is, for all intents, a course on a trade, addressing majority of aspects and sides of it. Nearly all of these purchase-able courses are taught by college professors and industry veterans, most of them address common questions asked by students getting in their field too so it makes the course easy to take in from a students perspective. Last year I was about to enroll into a local college for "Information Technology" type of a program which, I thought, would teach me everything I need until I looked at the course outline with things like, "Creating and Managing a Corporate Network" and "Programming a Linux OS" when I realized my money would have been wasted on things I have no interest in and it would barely touch on the subject I was actually interested in. Now I know that those programs "open career opportunities" but that's really not my goal.

So any video courses that take me through the ropes of setting up and programming 32 bit Atmel controllers?

That skills required work for just about any processor. So anything that teaches you the fundamentals of programming is going to be a benefit. There's the Arduino ecosystem that encompases many 32bit microcontrollers including Atmel. There's also MBED which is an ARM initiative. Hopefully thats given you a few things to Google.

Well, I'm actually coming from the Arduino environment. In fact most of my projects have been based on using Arduino bootloader and it's simplified programming language. I also think that while Arduino boot-loader is fantastic, and makes getting into hardware prototyping and development a cakewalk in many cases, I feel that I'm starting to get into subjects (like polyphonic audio playback, and audio editing and processing) that require more robust and powerful platforms like the 32bit MCUs that are not supported by the arduino IDE (which works in conjunction with he arduino bootloader), as well as will require more granular control of the controller that both Arduino IDE, bootloader and programming language would simply not provide due to their inherent selling point of simplifying the process of coding.

There were some discussions of Pros and Cons of the Arduino IDE and boot-loader, I think It's about time I moved onto the direct programming with the Atmel studio. It does make programming atmel products so much easier, doesn't it?: No need to flashing bootloaders, no delay at start-up, , No need to flip the fuses for making the controller compatible with the Arduino ISPs, No need to edit the Arduino IDE configuration files to match ip, and the biggest advantage (as pointed in one of the discussions) is knowing just what is going on with every function where as the Arduino programming language may execute multiple native functions in a code for one arduino IDE function. After all the Arduino bootloader is a sort of translator of the simplified Arduino code into the base controller code

Arduino is not a simplified language -it is C++ with a bunch of library code to do common things. The IDE automates the build process so it becomes a button press. You can bypass the Arduino libraries if you want - simply don't call them and write your own. The Arduino ones have been tested by many and are suitable for most tasks.
Arduino supports a number of 32bit cpus. The concept of the bootloader does not necessarily extend the the 32 bit micros as most of the boards have built in swd and debug hardware that loads the code. As far as you're concerned, you press the button and the code magically gets loaded onto the chip. There's Arduino support for a number of Atmel, STM32, XMC, TI Tiva and more boards.

You've got the wrong idea of the role of the bootloader - it is just a means of getting the code via serial into the flash. Nothing more. Apart from that, you don't need the bootloader.

Ah, I see. One thing that bugs me (and I've experienced this at some point) is that once a project gets a certain size, using many libraries made by others starts getting in the way of performance of individual libraries that depend on the same elements. Like multiple libraries that use interrupts, for instance. There's even an Arduino library made for playing back audio that specifically stated on it's GitHub that it would slow down the performance of other libraries using interrupts. Then you'd have to dive into the libraries yourself and try to make sense of what the developer was doing. Also a lot of libraries would include code for multiple boards, a wide variety in some cases, which would make it somewhat difficult to make sense of what is going on and make the library much bigger than your particular board will be using. (Not sure if the IDEs load all of the code and just enables the section of your specific board or if the libraries have certain commands to tell the IDE to only load the code specific to the board you are using) That sort of stuff I believe is why one would opt in for getting into coding the functions themselves.

The compiler is pretty agressive at removing code it doesn't use and consider the compiler is avr-gcc or arm-gcc, there's no advantage here going to Atmel studio - guess what compilers it uses?
There's no magic with Arduino - it puts a handy front end onto the development process to make thing one button press easy. You choose if you want their libraries or not. About the only set of functions that are performance challenged is the digital i/o for AVR. just about everything else works as fast as you could code yourself or better. So don't be fooled into thinking you can gain super performance by going to AVR studio. If the music library slows things down it's because it needs a lot of compute resources to do its job. Don't like how it works? The source code is available or write your own. Arduino doesn't stop you.

Wow thank you for the re-assurance. I was just about to ask "How much less versatile is the Arduino C++ version against the Atmel Studio native Programming language" but you seem to have answered that. There are so many people talking down on the Arduino language when it comes to projects considered for commercial delivery on a mass production scale. All of you folks seem to strongly re-assure to stick to the Arduino IDE and bootloader even or my 32 bit ARM demanding applications so I'll stick around with that for the time being. Thank you.

As I said in my other post (and many times before), a big part of the pain with arduino comes from the very bad / limited ide. It is wonderful at making your first blinking led but they unfornutately made a bunch of big mistakes in trying to make it simpler than it could be made. PlatformIO on the other hand seems to be right on the edge. Making it as simple as it can be made, but not simpler. Never forget that uC's in itself are pretty complex devices.

When dealing with 8-bit AVR you are almost certainly going to mess with fuses.

Compare that with (for example STM32) where the uC always starts up from some "backup" internal RC oscillator and then you configure the main X-tal oscillator and PLL and dividers to distribute different clocks to different parts of the uC. Not simple, but it is handled with library functions.

I'm also a bit confused by your overal goal here. First you dismiss a lot of opportunities an then you ask for advise on those same opportunities ???

What is your role? Are you teaching yourself, or are you a teacher designing coarces?

As I believe it is the "big brother" of wiring / arduino stuff. More oriented at manipulating audio and video on more powerfull processors (and combining that with external hardware & user interaction).

also note that for "arduino" there are a lot of "plugins" which you have to download and install separately.

With PlatformIO you just select what you want and confugre it (Whether it's an arduino based target or not).

All of you folks seem to strongly re-assure to stick to the Arduino IDE and bootloader even or my 32 bit ARM demanding applications so I'll stick around with that for the time being.

I do not agree.

With "arduino" you have to make the distinction between the "ide" (which is a piece of java crap in my opinion), the arduino boards (form factor with the odd connector placement), the arduino "language" setup() loop() and whatever they came up with. and the arduinio "infrastructure" website, downloadable libariers, forum, etc.

So Again (last time I hope)

Give PlatformIO a try. It can do everything that "arduino" can, but does it a lot better. And it can also do a lot more.

Very last:

I think there is so much information in these 2 threads for you that you've forgotten most or haven't even absobed it.

To clarify, I'm just a sole entrepreneur who's interested in creating some commercial music performance hardware as music writing is it's been my main interest for the past 9 years. I've just gotten a hang of reading and interpreting MIDI data input and using that for some personal projects as well as some specialized MIDI sequencing tools. The certifications I'd need to get to make legal sales of these devices are mind boggling alone. Now I'm looking to get more advanced like audio playback and editing, in the same way OP-1 is versatile which means I need to move on to something more complex like the ARM architecture based controllers (which I had an impression I'd need to also move on from Arduino to Atmel Studio).

Also I see a lot of "Lean Basic C++" answers to my questions. I'm more and more convinced that this is the route I need to go. My main concern was that, for example, with video game development in Unreal Engine, which uses C++ with Visual Studio, there are plenty of "Learn C++" Courses out there which usually cover just that: C++ basics. And when you start trying to develop the actual game in Unreal Engine with C++ in Visual Studio, you quickly realize that there is a heap of functions that are specific to Unreal Engine, functions that weren't covered in all these "learn C++" course. So, I am looking at this table of Arduino Functions and I get an impression that there's got to be so much more to the language that what's on there, and that's where my my discouragement of whether Arduino programming language can be used to achieve what I need to achieve comes from. I realize there's probably a heap of misinformation and misunderstanding in the above analogy though, as you guys have shed a new light onto the whole platform for me.

I think there is so much information in these 2 threads for you that you've forgotten most or haven't even absobed it.

Take some time and read it again after a few days.

Yes, there is a LOT of information to take in, in one day. Plus it's the middle of the night right now. So I will go over everything once more during the following few days.

Apologies if I have stated the same sort of question or inquire in different ways. I imagine a lot of it has become redundant. I will give the alternative a go. In face already ordered the ST link and a few STM32 boards an hour ago. Looking forward to that.

I dare say the OP-1 is using something more specialised than an ARM cortex m. There is suggestion it uses a DSP device. DSP are microprocessors specifically for doing 'digital signal processing' so things like filtering and waveform generation are processed more efficiently.

The use of "college" there rather than "university" possibly suggests you are in the US? I don't know about the situation there but even back in 1981 (36 years ago) there were university (BSc Hons) courses in the UK for subjects such as "Microelectronics and Microprocessor Applications", I know, because I did one. Back then it's true that it was a bit of a "trailblazer" but this is 2017: Surely every college/university must now be offering such courses? I guess the question is to what level do you want to take this and how long do you want to invest in the process? If you are just looking for some kind of diploma and a "short" course then you might find your local adult education run evening classes in the basics.

I suppose your real problem is to find the source that specializes in the very particular area you are interested in. I wouldn't be surprised if there are courses very specifically about the hardware and software of MIDI in fact.

The use of "college" there rather than "university" possibly suggests you are in the US?

Yep, I'm in Canada, however when I mentioned some of these programs offering a diploma, it was just for setting precedence just how serious these Art/CGI/Modeling/Animation Oriented online courses can get. Not necessarily what I am primarily looking to get out of them. I'm lookign for the type of course that is not just going to "leaning C++ programming" but also be more specific with Atmel, Microchip and ARM project creation. I'm not forgetting though that if that's not something that exists, there's still plenty of open source tutorials and documentation out there from official and 3rd party sources so I think with enough dedication I can manage.

Kartman wrote:

I dare say the OP-1 is using something more specialised than an ARM cortex m.

I'm not sure how but they've managed to keep it a secret. I'm sure this device has been opened by a number of people too, even if it's going for $900 on average. This is why I started looking at the Atmel Processors and now ended up with looking at ARM controllers. Now I'm not planning on making my own OP-1, the multiple synthesys engines alone surely will suggest DSP (Digital Signal Processing) tools. Now while things like waveform generation is more preferred to come from truly analog circuits, using sampled waveform is not out of the question but in my case I just want to start simple - playing back a short audio clip like a clap or a kick drum which you can load onto an SD card. Just want to start with that for now - small steps.

but also be more specific with Atmel, Microchip and ARM project creation.

You will be lucky to find a course that just happens to use the very chips you are interested in. For example when I did a course my CPUs of interest back then were Z80 and 6502 but the course was based around Motorola CPUs such as 6800, 6809 and 68000, oh and PDP11. But, to honest it didn't really matter - a shift or a roll or an add or a subtract are pretty universal concepts in CPU ALUs whatever the variety.

So don't get too hung up about what equipment you might end up using - college/university is all about exploring and learning anyway - you might find that the equipment they happen to choose to use has some features you haven't encountered before and that could prove useful - that's what learning is all about!

BTW search out threads here by someone called "Rolf" who has created the most amazing audio synthesis systems using Xmega CPUs

Thank you for that link! (Have watched the first ten minutes, and have nodded most of the time. E.g. one of the things I do when evaluating a C++ book is to see in what chapter classes are introduced. Also have blushed a few times, since I am also guilty as charged.)

As of January 15, 2018, Site fix-up work has begun! Now do your part and report any bugs or deficiencies here.

No guarantees, but if we don't report problems they won't get much of a chance to be fixed! Details/discussions at link given just above.

"Some questions have no answers."[C Baird] "There comes a point where the spoon-feeding has to stop and the independent thinking has to start." [C Lawson] "There are always ways to disagree, without being disagreeable."[E Weddington] "Words represent concepts. Use the wrong words, communicate the wrong concept." [J Morin] "Persistence only goes so far if you set yourself up for failure." [Kartman]

If you wanted to learn carpentry, you wouldn't say, "I want a course that uses the Stanley STA515288 saw" would you?

Valid point, but coincidentally, most of the tutorials I've been finding exactly teach "I want a course that uses the Stanley STA515288 saw" instead of "skills to use & select appropriate tools for he job at hand." Just my luck, or maybe I'm just bad at finding proper educational material.

PS. I found a forum post where someone reverse engineered the OP-1 firmware file trying to create custom firmware for it, looks like they got the CPU used in it, now to find an matching controller from Atmel or other:

The OP-1 works with a BF-524 as main CPU. That is a "BlackFin" DSP chip made by Analog Devices. It is also used in digital storage oscilloscopes because of its DSP capabilities.

Well to be honest, I probably am approaching it from the wrong end. I think I'd have to identify what I need to achieve and then find what controllers offer what I need to do. The problem is that I come from the experience of making most of my projects with the Atmega328. Nearly thinking it's a platform for anything and everything. I think a lot of the projects made by other people showing off amazing functionality, much like clawson mentioned in his link, made me believe that. Anyways. I think the STM32F103C8T6 is what I need to look at right now.

I had this whole response to that actually but here. I'll have the use the spaghetti analogy from the other thread again:

How do you know what pasta type do you prefer the most?: Spaghetti, Fusilli or Rogatoni? Well you'd have to taste all 3 in order to find out which one you like the most.

In my case I haven't tasted any of them. So I need to get a feel for them before I can even decide which one would suit me best. I don't have a feel of what is the maximum performance I can squeeze out of an STM32 vs some higher Tier ARM controller. You see where I'm having trouble? You guys can come up with a proper pick because you've got this amazing experience of dealing with a variety of controllers, you know how much each can handle.

So When I said "I think the STM32F103C8T6 is what I need to look at right now" I don't mean that it's the final decision of what I need for this project, I mean it's what I need to start getting a feel for what the 32 bit ARM processors are capable of. Getting a feel for the maximum I can squeeze out of the resources they offer. Get a feel for it to use it as a base of comparison of other, higher tier controllers. Does that make sense? Since I don't think I can use the Atmega328 as a base for comparison here.

rings alarm bells. It looks like its intended for in-car automotive applications so what makes it a good choice for audio? Also the max speed is 72MHz and it's only Cortex M3 not M4 ??

If you insist that the micro has to be an STM series chip (why?) then wouldn't the F4 discovery be a better choice? For a long time it was the most powerful ARM dev board with a debugger around the $10 level:

​As the entrepreneur, you need to see the Big Picture of the business; you need to be careful not get bogged-down in the minutiae of processor choice...

You know, you are absolutely correct on this. Only problem is that, since I am the sole entrepreneur, I can speculate and analyze the approach of the Big Picture of the Business and I still won't know what functions I need to type in the IDE to do what I need to do. So I want to learn the technical side first.

clawson wrote:

What on earth made you pick that. Just a look at this:

The STM32F103C8T6 was refereed to as the Blue Pill and was referenced several times in this thread. It also costs a $1,60 so it's a good starting point. And that's ALL I'm looking for right now.. a starting point. Small steps. You can see now where not having experience working with a variety of boards has lead me to come up with very few choices for an appropriate controller. There may be a perfect controller for just my need, I wouldn't know until I actually found out about it.

since I am the sole entrepreneur, I can speculate and analyze the approach of the Big Picture of the Business and I still won't know what functions I need to type in the IDE to do what I need to do. So I want to learn the technical side first.

Teenage Engineering was founded in 2005 by Jesper Kouthoofd and David Mollerstedt. The OP-1 is the first product developed by the company.[1] At the time, the team consisted of nine engineers and software developers.[2] Following an announcement at Frankfurt Musikmesse in 2009, they presented a prototype of the OP-1 at the 2010 NAMM Show in Anaheim, and it was released in the following year

(that range seems to grow each time I look at their web site). So I have a feeling they had things available long before OP-1

Every Christmas I ask myself if I should get Santa to throw in one or two of the pocket operators. Perhaps I should bear this in mind again for this year. My one argument against is "what would you actually use it for after the first couple of weeks of play time?". Then again, like a PS4 game or something (about the same cost) maybe it is just those first 20..30 hours of "fun" you are paying for ?

BTW I don't know whether I love or hate their website design. It has that very annoying "web 2.0" look but on the other hand it is very slick and professional looking at the same time!

I'm a little lost here. What do the merits of various ST models to do audio, along with links to "nice" projects, have to do with AVRfreaks and Compilers and General Programming? Even the original title and post. Off-topic, maybe? General Electronics?

You can put lipstick on a pig, but it is still a pig.

I've never met a pig I didn't like, as long as you have some salt and pepper.

I'm a little lost here. What do the merits of various ST models to do audio, along with links to "nice" projects, have to do with AVRfreaks and Compilers and General Programming? Even the original title and post. Off-topic, maybe? General Electronics?

The subject was actually moved by someone, it was originally in tutorials category under discussions. It started as a legitimate request for any available courses, after a while it has sort of merged into the same subject as the other thread.

Alright, enough of hardware talk, let's get this thread back on the rails. Besides the above mentioned subjects and links. Are there possibly any resources of similar projects that would go over the general code of subjects like:

> Accessing SD card storage,

> Loading an audio file,

> Playing the file back over a serial DAC iC.

Stuff the that sort. Keep in mind I still have yet to go over all the links collected over the two threads yesterday. Just posting this in case there's anything else. I'm already looking int PlatformIO. Now, Whenever I was looking for some tutorials or code samples for an Arduino project, I'd just google "Serial Communication Arduino" And that would, 98% of the time direct me to some resource on the Arduino Wiki of Site with a tutorial and explanation, maybe even a circuit. Now sure about PlatformIO since it's just and IDE.

Please clarify for me(us) what you would mean by " The certifications I'd need to get to make legal sales of these devices are mind boggling alone. "

What certifications would anyone need to make MIDI software?

At the risk of sounding less than serious, I believe that you should forget about finding any formal education in mail-order/take-out/internet-based study format for anything relevant or modern concerning microprocessors/microcontrollers. The vast array of mediocre YouTube home-made tutorials actually is the best place to learn about this stuff. However since most of them are either too slow or too ineptly made, I suggest getting several computer laptops and watching several of the YouTube tutorials on the same subject all at the same time. That way you can monitor the dull ones just in passing while keeping an ear open for any new and interesting topic that the tutorial maker might be making. You may be able to do this with one laptop by opening several running applications of Monzilla and viewing a different YouTube tutorial on each screen window.

Generally Canadians and Europeans have a higher regard for formal education than people do in the USA. With most students graduating in the USA with $100,000+ in high-interest student debt, the general nature of the Education/University as little more than a massive rip-off Ponzi scheme is somewhat easier to see here. It may seem ridiculous at the present to suggest that a YouTube video tutorial education is more relevant and actually superior to a technical university formal education, but it appears that things are actually going in this exact direction.

Please clarify for me(us) what you would mean by " The certifications I'd need to get to make legal sales of these devices are mind boggling alone. " What certifications would anyone need to make MIDI software?