DLSSynth AU Component QC Plug-In

dust's picture

this is a Roland DLS synthesizer plugin for quartz composer. DLS stands for "downloadable sound font" this plugin loads apples default DLS component and runs it through a spatial reverb unit. more of these to come soon.

i'm working on a component host plugin for qc as well, that eventually will let you host audio units, record audio, add effect units plus do 3d spatial mix downs.

the next step for me is to make some core audio unit node plugins that can be strung together as well as make some basic components for sine waves, square waves, etc....

so this is just the basic initial exploration into using quartz composer with core audio units. it seems to work good, but be careful of overloading the plugin or you will get bad frame rates. i suggest using the pulse patch. check out the example....hit the space bar to make music.

i built this plugin for my computer in 10.6 x86_64 but audio components are much older than QC so you will be able to build the source to what ever machine your running.

V2..... custom path.

your bank path looks like this.

/Folder/AnyPlace/Any/File.dls

make sure to include the file and extension.

kDLSSynth AU Component Player. So this version is more of a generic AU DLSSynth player. The bank path is fully working and tested with a .dls file. The synth still loads up system with the original Roland DLS System Synth. Enter a path to your custom DLS or SoundFont bank and viola you got a QC Sampler. In order to load your custom DLSSynth you need to stop the viewer and start it again in order for the Plugin to load a new DLS.

try my custom DLS Scratch kit. i would make lots more of these DLS Synths but I want to add more features to the plugin. Like component loading from a path and multiple configurable Effect Units.

PreviewAttachmentSize
RolandDLSS.zip42.77 KB
kDLSS.zip43.89 KB
DLSSynthDustScratch120BPM.zip14.74 MB

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

im thinking next i will make a component info plugin. components have a four char code that is used for identifying the component type and manufacturer. this i think will be the second essential step to being able to make music in qc.

.lov.'s picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

Awesome! Adding audio features to QC is let us do audio-visual composition/tools, so big up, really nice work!

DanieleCiabba's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

something atomic here... I'm trying with 10.5. I let you know... thanks for the source...

cybero's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

dust, your a star :-)

Works like a charm in 10.6.1 - loads of audio visual possibilities . Changing the velocity by using an Interpolate fed Conditional works pretty well.

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

much .lov. my friend. being able to audio visual comps in qc is my goal. i have been doing audio visual communications for almost 2 decades now and i have always dreamed of being able to do motion graphics and sound design all in one application. max-msp comes pretty close, and i guess now max 5 lets you load up au components, which is very cool but they took out the export VST feature. i find it incredibly difficult to make a good sounding synth with max, although making a sampler rom style type of synth can sound pretty good not to mention all the cross modal av type experiments that can be done.

i find au components to be at the core of my audio productions so being able to integrate them into qc is exciting. see the au graph framework is much like qc graph foundation framework. i could actually see an audio unit node graph application like qc doing very well. kind of like the qc for audio, sort of like plogue bidule, but with the ability to export components so any host can read your audio creation. so i'm taking that principle and using it in a qc plug in context.

the issue im running into is that qc's I/O ports are restricted data types. i have figured out how auto publish ports and use interface builder elements with a qc plugin etc.. right now im trying to figure out how graphing dsp objects would work. i suppose just passing AU nodes reference type from node to node to graph etc.. would be one way. another way could be to pass the wave form in an array or as an image array and or video etc..

any ideas ?

cybero's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

18/10/2009 14:22:59   Finder[672]   *** <QCNodeManager | namespace = "com.apple.QuartzComposer" | 701 nodes>: Patch with name "QCPlugInPatch:RolandDLSSPlugIn" is missing
18/10/2009 14:22:59   Finder[672]   *** Message from <QCPatch = 0x22E63060 "(null)">:
Cannot create node of class "QCPlugInPatch" and identifier "RolandDLSSPlugIn"
18/10/2009 14:22:59   Finder[672]   *** Message from <QCPatch = 0x22E63060 "(null)">:
Cannot create connection from ["output" @ "Multiplexer_1"] to ["inputPitch" @ "PlugInPatch_RolandDLSSPlugIn_1"]
18/10/2009 14:22:59   Finder[672]   *** Message from <QCPatch = 0x22E63060 "(null)">:
Cannot create connection from ["outputValue" @ "Interpolation_6"] to ["inputLength" @ "PlugInPatch_RolandDLSSPlugIn_1"]
18/10/2009 14:22:59   Finder[672]   *** Message from <QCPatch = 0x22E63060 "(null)">:
Cannot create connection from ["outputSignal" @ "Pulse_1"] to ["inputTrigger" @ "PlugInPatch_RolandDLSSPlugIn_1"]
18/10/2009 14:22:59   Finder[672]   *** State restoration failed on <QCPatch = 0x22E63060 "(null)">
18/10/2009 14:22:59   Finder[672]   *** <QCNodeManager | namespace = "com.apple.QuartzComposer" | 701 nodes>: Patch with name "QCPlugInPatch:RolandDLSSPlugIn" is missing
18/10/2009 14:22:59   Finder[672]   *** Message from <QCPatch = 0x27A0F870 "(null)">:
Cannot create node of class "QCPlugInPatch" and identifier "RolandDLSSPlugIn"
18/10/2009 14:23:00   Finder[672]   *** Message from <QCPatch = 0x27A0F870 "(null)">:
Cannot create connection from ["output" @ "Multiplexer_1"] to ["inputPitch" @ "PlugInPatch_RolandDLSSPlugIn_1"]
18/10/2009 14:23:00   Finder[672]   *** Message from <QCPatch = 0x27A0F870 "(null)">:
Cannot create connection from ["outputValue" @ "Interpolation_6"] to ["inputLength" @ "PlugInPatch_RolandDLSSPlugIn_1"]
18/10/2009 14:23:00   Finder[672]   *** Message from <QCPatch = 0x27A0F870 "(null)">:
Cannot create connection from ["outputSignal" @ "Pulse_1"] to ["inputTrigger" @ "PlugInPatch_RolandDLSSPlugIn_1"]
18/10/2009 14:23:00   Finder[672]   *** State restoration failed on <QCPatch = 0x27A0F870 "(null)">

at opening the example composition in QC, composition still runs, but just FYI, dust.

Still works OK though :-)

I wonder how many copies of that patch could be run on the Editor stage ?

gtoledo3's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

1- DLS stands for Downloadable Sound Format not Downloadable Sound Font (hey, maybe I'm wrong...I would be surprised, but you never know with all of the acronyms that have flown around over the years).

A sound font is a file type that was used/packaged as a part of a system that Creative Labs used to (and probably still do) use. I had heard of them suing over the association of the words "sound" and "font" together when used by other companies, so I would be really surprised if Roland used that term. I wouldn't be surprised if they did something together, and somehow the term got lumped in, but it does seem unlikely.

2- How do I use my Roland equipment with this, and what does it have to do with Roland? I guess they commissioned this?

3- As a long time Roland user, if this name was picked for general association, and has nothing to do with them, I'm speechless.

4- The apple patch can do polyphonic sound, and pitch shifts, fwiw (as in, I can stack 8 of them on the editor, all with the same pitch, and use QC to play chords). I like the idea of a midi file player/controller though. That part is cool.

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

so i forgot to mention the velocity, pitch, and note length all execute every frame i guess so interpolating them is no problem. if you want to change banks or set program numbers etc.. you need to disable and re-enable the plugin to load the changes. i did it this way with a conditional statement on the plugin enable so the plugin wouldn't be creating an audio unit every frame or 100+ times a second seeing you need to destroy and recreate the graph unit every time you want to switch nodes. thought that might be to taxing... creating the graph every frame. although i didn't try it so it might be all good ? actually i enjoyed making this, it was a good learning experience. the core audio unit stuff is primarily written in c++ so combining that with obj c was interesting. obj c++ actually compiles well. sometimes my pre compile .pch cache would get corrupted with obj c++ , but that not that big of deal, although a restart doesn't clear that cache its a manual delete but other than that c++ and cocoa work pretty good together.

pixelnoizz's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

yes, great, awesome!!!

but the .sfpack format is not working. could you define whitch format is the right one?

thanks

d.

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

@cybero

im not sure about those errors, i opened that file a whole bunch of times while testing the plugin. weird it still works although and doesn't break the connections.

@george

i though DLS simply stood for "down-loadable-sound" i guess down loadable sound format would be DLSF but either way they are the same. however you are correct... although in Windows a DLS Synth stands for "down loadable soundfont" the funny thing is that the Microsoft DLS("down loadable soundfont") Synth does not play soundfonts ?? go figure. //see link// im with you regardless, i have never really used soundfonts and i guess thats the pc definition so i like the mac definition much better.

http://www.cycling74.com/docs/max5/vignettes/core/dls_synthesizer.html

roland did not commission me to make this plugin, although that would have been awesome GT. roland makes great synths, i can't believe how much data they hold now. i switched from roland to korg about five years ago or well a combination of both.

i have finally changed to an all audio unit component virtual set up as of late. i was actually late going all virtual because i really loved hardware, and my attempts at using VST instruments ages ago just was not working. i guess g3's couldn't really handle the amount of virtual synth tracks i need to make song. although using a g3 to sequence my midi hardware and record audio mix down at the same time was entirely possible.

but yeah sorry for the rant to answer your question george. apples quick time synthesizer otherwise known as the DLS Synth was actually made by Roland, in 1997. //see attached pic for proof//

so i named the plugin Roland DLSSynth because it was made by roland corp. so i was just trying to give credit to the original authors. plus i figured i can't get in trouble for distributing a audio unit synth that is built into the system seeing that the dls isn't actually in the plugin its in your /system/library/components folder so, there really isn't any kind of distribution other than the general Midi notes which are only integers.

although i am making a group of my own au components so when i make the au host plugin i can distribute some synths with it because, i really have no idea what audio units people use.

i use this au called predator a lot. its made by rob papen who has a bunch of cool virtual synths kind of modeled after the old moogs. i also use an AU called nexus just as frequently. its a sort of rom sampler synth that gives you all those 80's synth pop sounds, but thats like a 10gb bank so i can't really distribute or share that seeing its someone else's intellectual property.

im thinking im going to start with just some basic saw, sine, and square wave au components like max msp has to start off. plus either enumerate through all of apples au effect units as one plugin or make a different plugin for each im not sure how im going to do that yet.

so george im not sure how you would use this plugin with your roland hardware. im sure you can get roland soundbanks and put them in your /library/audio/sounds/banks folder. this plugin does use general midi to im sure there is some midi tool out there that can capture the gmidi packets maybe and route them to a hardware device. normally you could do something with the IAC driver globally like with kineme midi tools or something.

although the midi data may only be used in this plugins context. you will have to experiment and let me know about that. i am interested. i thought about that. i put in a midi channel number because i thought that would be useful, but i didn't really want to make this soley a midi plug-in. don't really want to step on chris's or smorkis toes. they do wonderful things for qc in relation to midi, audio, gl, cv etc.. all good things. so im more focusing on the au component aspect because i feel that area has yet to be explored.

GT what roland gear are you using. would love to know. right now im using the dls but have been using roland for many years. i use the MC303,MC505,SP808, and JP8080 although i do know how to use the TB303,TR808 & 909 never bothered going vintage with those systems because well they are over virtualized and sound pretty identical to me. one of my benefactors is mailing me a B3 Hammond in exchange for some graphics i have done for him years ago. im excited its actually midi but still has the Hammond draw bars and wood finish etc.. im sure that will be a beast to ship, i know my triton is like 200lb. a Hammond has to weigh more than that ? i don't really need the b3 i could rather use the cash but thats what you get when you do work for x rock stars. they like to barter with old gear.

PreviewAttachmentSize
Screen shot 2009-10-18 at 9.45.26 AM.png
Screen shot 2009-10-18 at 9.45.26 AM.png423.58 KB

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

these are apples words.

"A virtual instrument unit that lets you play MIDI data using sound banks in the SoundFont or Downloadable Sounds (DLS) format. Sound banks must be stored in the /Library/Audio/Sounds/Banks folder of either your home or system directory"

from: http://developer.apple.com/mac/library/documentation/MusicAudio/Conceptu...

i don't have any soundfonts in my /banks folder the only .dls i have found on my system is apples core audio component dls synth made by roland. there is an input for sound bank path which is intended for loading .dls files from disk or something.

this plugin actually scans your system in all the spots components are supposed to be so the path is really useless. but you can change banks and use program change numbers. the banks are indexed integers as well as the program change numbers not really sure what the offset does ?

this is the one plugin that doesn't like my plugin.

Quartz Composer[9770:a0f] Error loading /Library/Audio/Plug-Ins/HAL/DVCPROHDAudio.plugin/Contents/MacOS/DVCPROHDAudio: dlopen(/Library/Audio/Plug-Ins/HAL/DVCPROHDAudio.plugin/Contents/MacOS/DVCPROHDAudio, 262): no suitable image found. Did find: /Library/Audio/Plug-Ins/HAL/DVCPROHDAudio.plugin/Contents/MacOS/DVCPROHDAudio: no matching architecture in universal wrapper

not really sure if i need DVCPROHDAudio i don't have dvcpro hd camera and most likely would not be using that codec unless i had content recorded with that codec. it might actually be an important part of some program i use that i don't know about yet ?

so seeing that the DLS is stands for "down loadable sound" im sure i can download some banks to test with. i just wanted to get a component working in qc before i started making the au host plugin which will let you load up files from your /library/audio/plugins/components folder. actually this plugin does search this folder but i set my audio unit subtype to dls so it will not pick up anything other than a DLS Music Device so maybe soundfonts do not work ? try with a DLS.

i was happy enough to just get the piano working first. let me know if you find anything out...

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

GT do you think it would be better to call the plug in Apple DLSSynth instead of Roland DLSSynth ? i could change it to just DLSSynth because the banks can be changed. i have not confirmed this yet.

here is some info from the apple list. it might be useful in determining what kind of bank you can load.

The synth comes with a sound bank from Roland which is a GS bank. >

The "engine" - that is the DLS synth AU itself - will read DLS, Level 2 revision, and SoundFont, current revision (2.0) sound banks.

So, the synth engine itself is GS compatible, which is very close to what GM2 is, but we don't currently support the GM2 additions that are added on to the GS specification - we are looking at this.

http://lists.apple.com/archives/coreaudio-api/2009/Oct/msg00042.html

cybero's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

.sf2 is the SoundFont format that can still be used in GarageBand application as an instrument http://www.thegaragedoor.com/tutorials/sftutorial.html.

toneburst's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

Wow... I was wondering when someone would get around to this! Brilliant work, man! Can't wait for full AU support- that will be awesome (and I don't use that word often, believe me)...

a\xx

toneburst's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

Works like a charm on my system

MacBook Pro 15" 3.06GHz MacOS X 10.6.1

Great work!!

a|xx

williamcotton's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

I would steer away from the passing of waveform data... seems like it would be incredibly slow and low res.

Instead, I would look in to connecting AU nodes with Structures (or even Strings). You pass along some sort of pointer/interprocess communication id and access the upstream patch's frame buffer in that manner.

I am very excited to see what you can do with this!

dust's picture
Custom DLSSynth AU Component v2 Plugin

TB your going to like V2. I fixed the bank loading problem. I needed to cast my input BankPath NSString port down to a C char array to get a working URL. The Audio Unit Framework is mostly C++. So now that I got that working Im going to work at dynamically adding effect units and also loading custom AU Components, now that I got the "FSPathMakeRef" thing down.

Any suggestions ?

Im hoping to be able to add some sort of dynamic input parameters to the custom component host. So there will be lots of parameters to automate.

to get the custom DLSSynth or SoundFont files working you need to stop or close the viewer and reopen it to load up a new bank. Basically in v2 the Roland loads up initially as a default it remains the default until you put in a correct file path to the .dls file you want to load.

The path will look like this.

/any/folder/file.dls

or

/Library/Audio/Sound/Banks/File.dls

make sure to include the file name and extension with the path.

yeah sound fonts work as well or .sf2 files

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

yeah thats what I was thinking about passing some kind of reference from node to node. although the final out put node would be cool if it had a spectrum and waveform image outlet.

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

i don't think using more than one synth patch will work. you can try it im sure it will not hurt anything, i just think they would be competing against each other seeing they both are in the same graph space and share the same output node. actually i don't think it is possible to hook up multiple nodes to one out node. i need to make the mixer patch to be able to do thing like this. although it might be possible to output to different sound cards or channels, if this patch had a option to choose audio devices. this is just a simple implementation, but thankfully i have been sequencing midi for a long time and programming synths since floppy disks where used so i am some what familiar with the process. a lot of the dsp algorithms seem very similar to the visual algorithms like Gaussian and noise filter etc.. so i think there might be a good fit with qc.

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

.sf2 and .dls are confirmed working in v2 DLSSynth

gtoledo3's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

I just think your selling yourself short by not putting your name on it in the prominent positions, and possibly confusing people into thinking it's a Roland branded product.

For instance, I know people that make "remakes" of gear that's more accurate than the people that own the name of the company that originally made said gear. They don't slap a name on it that would in anyway make one question where it's coming from. It's usually the name of their company, and then a model name that is obvious enough to let you know what it is, but also that it isn't from that actual company.

It's a really cool thing that you got going here. The last thing you want to do is come up on Roland's radar and have them start messing with you. If you go into it with a more moderate route from the start, it's a win win. Roland gets the benefit of you spreading the tech and raising awareness of something they did, you get the notice for having pulled off the plug-in, and roles are clearly defined for everyone. It's like "Dust's Roland DLSSynth" (not saying that would be the name), is WAY different in connotation from "Roland DLSSynth". It may seem like a fine line, but I think it might be constructive to think about that.

For instance, it is v002 Rutt Etra, not Rutt Etra (as the Rutt wasn't invented by Vade, but is his interpretation). Kineme PBMesh is another example of that. Now, another take is the Particle Tools, where other "stuff" has been introduced. It isn't called Kineme VEE, because it's different than VEE, but the roots are precisely described, source is included, per Tommi's licensing.

It pays off in the long run to be really aware of that stuff, and think about the difference of the fine points of things like that. I mean, for all you know, small difference of phrasing can take it from someone at Roland going "who is this guy? We have to sue him, or tell him to desist", to "Hey who is this guy, let's hire him!". The people at Roland are pretty serious about what they do, and fiercely defend their engineering.

gtoledo3's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

Kudos on the B3! I have an L3 and an M3, but they aren't the same :) The real grab on the Hammond's are the A-100's.

On the Roland stuff, I've had a real diversity over the years. The things that remain are an XP80 with a bunch of the expansion boards (all of them?), the R8mkii drum machine (very sweet in that it was co-designed by Linn), a TR 707, the RE-201 Space Echo, two VS1880's... and... it really seems like I'm forgetting something.

toneburst's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

You probably don't want to mess with Roland. They have a reputation for taking people to court for alleged copyright-infringement.

a|x

toneburst's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

Does the DLS synth support all the standard General MIDI patch parameters (ie envelopes, filters etc.)? If so, it would be great if the plugin also exposed these parameters. I'm thinking it would be great to, for example, have filter cutoff change when a particular control is tweaked. I'm sure there would be other possibilities, too.

a|x

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

@ george & tb

i'm most defiantly thinking of just changing the name of this plugin to dls synth seeing that i have added the feature of adding your own user banks so it kind of makes the default roland dls sort of irrelevant in that context. i don't really want to confuse anybody or claim associations to a company that i have no relations with. there are a ton of people selling soundbanks from various synth companies that i find questionable as to there actual association and use of the originating sound source. im not sure if the new influx of virtual tb-303 iphone emulators actually pay royalties to roland corp for reproducing a sound of a discontinued product but at least a credit should be mentioned seeing they are using the name to sell more products.

if i where to commercially sell a product i most defiantly would do what ever licensing needed to be done i have done this many times in my past life as a designer not my current life as a college student. i have got actually got a desist letter before (or well my boss got the letter) the funny thing is that the licensing for the product was legitimate. we where making disney products some years ago and disney wasn't so happy with us changing mini mouses skirt length. it wasn't until jc penny ordered a lot of items that disney got upset. if there is any company in the world it is disney that takes this stuff the most serious. by the time we got the letter my boss had made all ready made killing and just switched to warner brothers stuff which seemed to sell better anyways. thankfully it wasn't my idea to change mini mouses skirt length and i got to get deeper into the whole manufacturing business, we eventually moved from licensing to actually being the licensor for many top shelf brands. the unfortunate reality i learned as designer of these things was that it is the manufacturer "my boss" that made all the money. i got to roll with people like paul guezz and what not which was cool. found out that even people with a brand that has there actual name on it don't own the company. like DKNY for example donna had to buy her own name from paul because he was the manufacturer.

in the case of this plugin, i was really only trying to put a name to the sound source. i guess roland sounded better to me than system audio component does. i most certainly think apple has paid for the use of the roland sound font. now the difference with vades rutt etra and the kineme pbmesh is that i believe that there is an actual association of sorts between them. i know i have seen paul lurking around these forums and his work is internationally recognized and credited, i like his recent contributions to apples developer site. pauls work is an inspiration to me as a college student.

unfortunately i am in the exact same situation that bill etra is in.. living on disability, raising a child, and trying to continue my work with the lack of company funds and the benefactors i once had. the good thing is that i still remain friends with the benefactors i have worked with before. i'm using this time in my life to work on things i find interesting and important, although i have worked with and for many influential people, the projects have always been someone else's dream and not mine, regardless of kindred interests.

when i made this plugin it was my dream to be able to integrate synthesis into quartz composer in the end no one will be able to take that away from me because it is something i wanted to code and something that interests me. i really do love how big you guys think though, that makes me happy. its a much better mentality to have and i personalty try to think like that and stay positive but i highly doubt that roland would take notice of me or even care about some synth they made a decade ago that has made its way into every macintosh computer for i don't how long. and if by the off chance they did take notice and bothered all they would have to do is read the paragraph before this to realize that suing me at this point in my life wouldn't well amount to much.

if anything i think this topic could be perceived as good promotion for them. they most certainly have to be aware of the current impact virtual synths have on their market share. i have actually discussed this topic with one of my professors... copyrights, intellectual properties and performance rights are discussed often because it is important to either protect your ideas or share them. i don't feel like there could actually be any infringement in this case because this plugin doesn't actually bundle the dls it merely hosts the dls and accesses the resources built in to the system.

i do how ever see your guys points of view. for example i wouldn't name the component plug-in i use for my web-set the broadcom plug-in because it needs to access your apple airport who's chipset was made by broadcom. well thats actually taking it a bit far and i feel that in the synthesis context it is important to people to know what technology they are using to create. so i was simply trying to make or raise that sort of awareness that people find important with synthesis by using roland in the plug-ins name. i feel it would have been much worse or equally wrong to claim that i had something to do with making the synth.

i have been working very hard at getting a synth that i have designed to load up in quartz composer, but unfortunately i am only able to get the system audio units working at the moment and they happen to be made by roland. which i was un aware of until i started getting deeper into the structure of components by studying apples core audio component. i do how ever appreciate your concerns and am glad that you guys would take the time to bring this up as a discussion. so i thank you for that i have a new update pretty soon.

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

[edit] to answer the question tb, kind of went on a rant there i will defiantly add midi sysex input to the plugin for extended midi features and see what can be done about having polyphonic input. [end edit]

tb i have been working hard at getting non system audio units to load up in quartz. i have had to take a break for a few days because i lost a lot of sleep trying to figure out why qc will only register the system components and fell behind on some of my scholastic duties.

how ever you will be pleased to know that i have been able to implemented the dls parameters into the patch settings panel. the dls only has a volume control and a built in reverb, the plugin also has an additional fx unit node in the graph with parameters as well. i think i'm using the 3d spatial reverb unit with this plugin. unfortunately it is not as useful with out being able to adjust the parameters.

i had planned on releasing a full blown AU host that would make this plug-in obsolete so i have not got a chance to update this plug-in. how ever possibly tomorrow i will take the code from the AU host i have built that is working fine as an app and put it into this plugin.

i have built the parameter settings to load up the units GUI. so i have that built all ready. i plan on making the parameters show up as inputs to the plug-in so they can be automated but once i copied everything over to a plug-in build my AU components stopped showing up so i have been focusing on getting a custom AU to load and not coding the parameter automation part. how ever the GUI controls will show up and do to the limitations of the QC plug-in data types some of the parameters in the effects units will not be able to automated. kind of like how the interpolation patches custom curves settings are.

i will extend the AU graph to have more synth nodes so you will be able to do a multi track type of thing with your own samples or soundbanks plus im thinking about adding 3 more effect units that will be choosable. so you will be able to add they effect you want from the list of available units and adjust their parameters. im thinking of only having 4 synth nodes and 4 effect units for the core audio system host. more than that the plugin would end up being very long. i intended on the plug-in to be small and you could just add more to the editor but it seems all the units have to be in the same graph making it not possible to use more than one patch, at least until i figure out how incorporate a dynamic graph rendering system or a virtual multi-track mixing unit that you could plug the synths into.

i will see what i can come up with this weekend, my daughter is away at her grandparents house and i don't have much homework. actually haven't got a chance to really make anything with QC because i have been trying to get this plug-in working. i do have to make up some examples and things in QC for next week. one of the new media professors wants me to introduce the 100 an 200 level students to QC. which is wonderful news to me because i rather enjoy this programing environment and wish more people knew about it. so i am rather exciting about introducing a few classes to qc even if its only a few introductory workshop. don't really know what to have them make yet but plugins are essential to qc and it would be a good thing to show if i get this plug-in polished off. i guess my apple script plug-in isn't as exciting.

superflea's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

Hello, any news on this patch? I only recently stumbled upon it, and while I was able to run it just fine, I noticed performance issues.

I appreciate the work done on this, and have been hoping for some time that someone would add audio features to QC. In my opinion it could become just as good with audio and synthesis as it is with video and graphics.

I poked around the source code out of curiosity, and while I am no programmer, I noticed the mention of the MatrixReverb AU in the code. I use it in Garageband and I think this is a bit of a heavy duty reverb compared to the traditional one. Could this be what is causing performance issues?

It's a real shame, as even sending a pulse to the note in the plugin bogs it up if the length is too long and overlaps with the previous one. At least in my experience, there are severe slowdowns whenever I try to use it in QC.

But excellent work on it nonetheless Dust, and here's hoping you find time to work on it a bit more!

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

thanks flea,

i put this on hold for a bit. i racked my head a for a week or two straight trying to get component hosting working with qc. i wanted to improve on this and be able to load custom AU's, right now you can use sf2 banks which is nice but for some reason i couldn't get anything but apple AU's to host in qc. i learned a lot about audio unit graphing etc.. which may come in handy for the iphone someday. i have planed on putting more features into the dls like switchable effect units with exposed inputs and midi sysex input which i had done but a unfortunate incident happened for xmas...

my time machine went down and now my actual mac book pros HD S.M.A.R.T status is reporting a hardware failure on my laptop so it has been sent in for repair. the unfortunate thing is that my time machine failed right after a fresh install. i was getting some clicks and what not out of my internal HD so i thought a fresh install with all new permissions and what not might help. that was pretty stupid because a clicking drive would mean its a hardware problem but i thought it couldn't hurt and subsequently it didn't fix the problem, so i have lost all my development files. i had a bunch of versions of this in various stages. i pretty much lost everything i have done in the last year. the sad thing is i massed a bunch of examples from users of this forum and what not that where real helpful to solve certain problems.

i don't think i will be able to get to this for a little while. i'm designing a curriculum for a new media 202 class at my school this semester so possibly i could use this as an example for creating a qc plugin but it might be a little complex for 202 students im not sure so more than likely, i will be able to get to it spring break or this summer.

i can however maybe try and speed things up for you by removing the code in the execute function so its not executing every frame. as much as i had dreams of making some sort of plugin graphing audio stuff for qc i think cpu intensive things like virtual synthesis or samplers are best left to programs dedicated for that type of stuff because there is no way i would be able to make something comparable to ableton's max5 live suite. which by the way is awesome i mean i have been a live guy and a max guy but now they integrated.

i know i have been successful making a step recorder with kineme audio and even then with all the kineme expertise the audio playback while editing or something was a bit glitchy, who knows apple might really try to put some audio features into qc. the 3d audio openAL is a step forward. i just need some time to put back into this. i was real psyched for a bit but had to put this to the side and come back to it cause i got burnt out trying to register components and what not from the qc bundle. figured i could come back to it fresh and solve the problem that usually helps. just got to find the time now.

but yeah any suggestions would be nice. i did make a generic au parameters factory like the sliders in garage band and got it working with qc but i will have to rebuild seeing all the nightly builds are gone now. i got to build some sort of cloud or remote repository for myself. the thing that bothered me the most with this that in a standalone application bundle AU hosting works flawless but soon as i try to run it from a the QC bundle i could only use apple AU's so more or less this project will get updated but my primary focus is on hosting custom audio units.

jersmi's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

dust -- exciting work here... imho, having access to apple's au plugins is a fine place to start. by the way, would the au's have to be used with audio? i.e., could a filter, etc., be used for data other than audio? and hopefully your DLSSynth is more stable than apple's DLSMusicDevice...

dust's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

i can't say this plug-in is more stable than apples synth as this plug-in merely accesses apples synth, actually given the context of how quartz plug-ins execute based on frame-rates i would have to say that this plug-in actually makes apples dls synth less stable than using it in AU lab for instance.

although i do feel it is a step forward into incorporating audio unit nodes into quartz composer. i feel it is still best to use an AU host like AU lab and to route boolean OSC 2 Midi from QC.

However it is spring break and i plan on spending some more time on this project maybe starting over again using vades ofx plug-ins ?

In principle using an audio filter to filter a stream of numbers is not impossible as many of the principles of audio apply to pixels and the math is basically the same. now an AU graph uses a HAL layer which can parse out lets say an audio file to steam of numbers much like the audio input in QC. there are a few development examples of this but turning pixel data into audio is a bit more difficult. there have been various programs that do this over the years and from an experimental stand point it could be really interesting in QC. for me to take that undertaking though i do not feel would be very gratifying as I am into harmonic mixing and what not, and i feel the problem with lots of experimental audio controlling is that it sounds bad regardless of how cool the technology is but it is entirely possible.

actually that question has been proposed a few times, actually if i remember anything from that thread is that chris has to talk smorkis out of doing this every other week or so. but if you just want to use an audio filter like a delay or something that is all ready possible and as far as oscillation is concerned in a synthesis context there is all ready the LFO patch that generates sine and saw waves as well as does pulse width modulation so the principles are all ready in QC.

jersmi's picture
Re: DLSSynth AU Component QC Plug-In. (Composition by dust)

That's a good response, dust.

I like things that sound good, too. :)