Hey Lars, thank you for your excellent message. One note: I am also a largely self-taught musician, I played drums and guitar in rock bands through my junior high and high-school years, never read a lick of notation. (That’s a wee lie: I did play percussion in the school groups for a bit but I never fully understood what I was doing there. I mostly just followed the person standing next to me. ) But after a few hundred club gigs I realized that if I wanted to advance beyond what I was capable of I’d need some training. I was already a finger-picker on guitar, so classical seemed the way to go. Plus there were no jazz instructors in my area (aka “the middle of nowhere”). And so began a lengthy sojourn with the classical guitar, first in Cleveland, then in Washington DC, Ann Arbor, and Los Angeles.
Modular synthesis was/is both very new and also not-so-new to me. In the late 1980s I was introduced to Csound, it has a neat modular approach to instrument design, so I picked up a few things there that have been helpful learning VCV Rack. But like yourself I’ve had to learn an awful lot of new things and new ways of doing things. It’s been a complete joy so far.
Very cool! That’s quite a ride you’ve been on Dave. Do you have any pointers to your earlier guitar works (or any works), if you published any?
I have a funny psychological reaction in myself to the word “musician” - like if anyone would use that word about me, it would come with a host of expectations that I definately would not be able to fulfill, and imply some training, accomplishment and study that I definately don’t have either. But then again… I have actually on occasion produced something that I myself call “music”, and sometimes others do as well. So if a musician is someone who sometimes makes music, I guess I’m a musician. It’s weird - do you think this kind of imposter syndrome is widespread amongst musicians?
Oh, for sure. A lot of musicians who don’t know theory and stuff think they are somehow inferior to “real” musicians. Many of these people I’ve met, though, are so musical the can pick up any instrument and do something good on it. And they sound like themselves no matter what “gear” they are using.
btw, true fact, dave and I did some technical work together back in the 80’s!
I think it depends on how you define “musician”. Music technology can and does replace many traditional skills associated with music production, including some performance skills. But while the technology might prevent my production from utterly failing, that doesn’t mean that my production is an unqualified success. The technology simply guarantees a level of gloss.
I like to make creative use of the tools at hand, that’s it. I want to hear the instrument sing, whether stone flute or virtual modular synthesizer. Skills are still required, so more practice, more skill.
Composer, performer, instrumentalist, songwriter, producer, musician - these terms continue to mean what they’ve always meant to me, but they don’t have iron-bound definitions. New instruments emerge with new performance requirements and new implications for composition. Not news in the history of music, but the current rate of change can seem overwhelming.
I think there is a matter of tacit versus explicit knowledge here. I remember an Adam Neely video where he cited the physicist Rutherford: ‘All the science is either physics or stamp collecting.’ Good music theory is giving names for things that sounded good to someone. When it ventures beyond the descriptive or tries to assign some particular emotional character to a construct, I run out of patience. Please don’t try to tell me how I feel in regards to a scale mode; I’m not that simple.
I worry very much about prescriptivism beyond technique. I.e. it’s good to learn ways of improving execution. Maybe it’s not so good beyond giving broad exposure to various styles to say what should get played.
I.e. learn to execute what sounds good to you well. If the formal road takes you there, great! If you arrive via a different path, also great. Still, the old joke about how to get to Carnegie Hall applies. Ya gotta woodshed.
From a series of studies for VCV Rack. A rich pad supports two melody instruments accompanied by a bass line derived from the source material for the other instruments. A chord progression module and two arpeggiators create the basic harmonies. Random gate generators provide rhythmic structures. Much modulation occurs.
The main chordal instrument is built from four Basic VCO modules from the Squinky Labs plugin. Their output is mixed and passed to a formant filter (also from Squinky Labs) and a Steiner-Parker bandpass filter from the Vult plugin. Another Basic VCO provides the bass instrument. A Chebyshev oscillator and yet another Basic VCO provide the melody instruments.
That’s what I’m talking about Dave! I actually really like this one, lovely. What’s that weird, beige, graphical module at the center of the bottom row, with the up/down ziggy lines?
Application Specific Information:
*** Terminating app due to uncaught exception ‘NSInternalInconsistencyException’, reason: ‘NSWindow drag regions should only be invalidated on the Main Thread!’
abort() called
terminating with uncaught exception of type NSException
I don’t know, but I will tell you what I do know. I have run “address sanitizer” on mac and linux. I believe on mac thread sanitizer is similar.
Address sanitizer is a compile and link option, so it only applies to what you put it on. I build my plugin with ASAN, and I also re-build rack itself with it. If you don’t build rack with ASAN, then the runtime won’t load (or it will be difficult to get them to load. This was is easiest for me on mac).
Once you are running with it, you will get a stack dump when it detects a runtime violation.
Here’s what I do in my own makefile to enable it. I think this works on linux and mac:
# ---- for ASAN on linux, just uncomment
# using the static library is a hack for getting the libraries to load.
# Trying other hacks first is a good idea. Building Rack.exe with asan is a pretty easy way
# ASAN_FLAGS = -fsanitize=address -fno-omit-frame-pointer -Wno-format-security
# FLAGS += $(ASAN_FLAGS)
# LDFLAGS += $(ASAN_FLAGS)
# LDFLAGS += -static-libasan
I also sometimes turn down the optimizations when I do this:
# this will turn O3 into O1. can't get no opt to compile
# to totally remove lto you need to remove it from test.mak also
# FLAGS:=$(filter-out -flto,$(FLAGS))
# FLAGS:=$(filter-out -O3,$(FLAGS))
# FLAGS += -O1
For your problem, however, you may not not need to do this. Maybe it’s “obvious” where the violation is. What thread could be calling UI functions that isn’t the drawing thread? Do you create worker threads yourself? If not, it must be the audio render thread. Do you call and UI functions directly from your Module::process call? You must not do that - it will cause audio dropouts on any OS, and will crash on Mac.
btw - address sanitizer (the OG sanitizer) is an absolute life saver. If there is some hard to find memory corruption issue (and isn’t there always?) it will find it.
I’ve been holed up in the lab. This is a bit from the latest sonic concoctions, I hope listeners find it enjoyable. See the YT or Patchstorage links for full notes.