Second of all, to folks that are trying to figure out how to give this a go: Open up your favorite DAW (try out Reaper[1] if you don't have one yet), download an install the fantastic open source DX7 emulator plugin Dexed VST plugin [2] and have fun.
In my opinion, FM synthesis is one of the finest things in life I've ever experienced. I never understood the whole culture around an emotional attachment to one's guitar before I realized how closely I could bond with my FM synthesis instruments. It was about five years ago when it started to feel a bit more like an extension of my brain and less like a tool. Now, I've always been an FM8 person myself because of the envelopes, but obviously the DX7 shaped synthesizers have the superior library.
I'm always overjoyed to see projects that get more folks into the joy of music with FM synthesis.
You don't even need a DAW. When I downloaded Dexed as an audio unit for my Mac (thinking “I'll have to try this later; at the moment I don't have enough RAM free to start a DAW”), I was pleasantly surprised that it also came with a stand-alone app. The Dexed wiki says there are such apps for Windows and Linux, too.
Then I downloaded a MIDI file and used Audacity to play some of its channels into the synth. Super easy, even though I'd never used Audacity for MIDI before.
Just one thing stumped me for a minute: When you open the MIDI settings in the Dexed app, under “Active MIDI inputs” it shows a list of available buses, all with what looks like a green light next to it, as if they are indeed active. Those are actually checkboxes and they're initially off.
It's true! You don't technically need a DAW, but I just I like how easy a good one makes it to go from noodling around on an idea to having a full song. In my opinion, any of major DAWs (including Logic/Live/FL/Reaper/Cubase) gives you enough tools to put out really polished stuff if you want to start polishing your craft. I'm not sure if I've found an open source one I like to that level yet, though. Ardour seems really powerful, but I'm unfamiliar with it.
Other things I like about FM that I was just thinking about:
- It's super CPU efficient on modern hardware, so you can use as many instances as you like.
- You can use it to do reasonably convincing physical modeling of many real instruments (or at least the start of it)
- There is little phase smearing or analog noise.
- Even for percussive instruments, you can tune and shape harmonic boundaries so that your instruments gel in the mix.
- Building instruments through sine wave decomposition/recomposition encourages bandwidth efficient sound design and instrument arrangements. They sound sweet to the ear, and instead of using the full bandwidth of a sawtooth or square wave, you can use the first few partials (or a couple choice ones) to sketch out the idea of one without taking up all of the space the full thing would.
- (At least with FM8), The multipoint envelopes editor is as flexible as a DAWs automation curve editor. It uses a zoomable spline based UI that feels a little bit like using Illustrator's pen tool.
- (Matter of taste) It's really easy to get retro video game sounds, so composing with these instruments always triggers pleasant nostalgia for me, even if I'm not writing VGM. This is not a surprise.
- Yamaha's sibling OPL/OPN (YMxxxx) series is responsible for powering sound synthesis in the Sega Genesis, MSX, Sound Blaster and sound cards and arcade game systems of the 80s and 90s.
If I can make a synesthetic analogy to a physical material, it's a lot like silicone. You can make it lifelike, almost unsettlingly or cartoonishly so. It pairs well, and fittingly, with the 80s and the 90s.
Even today, in 2020, I'm amazed at how good the music sounds in those 80s and 90s arcade games that used FM chips like the YM2151. Marble Madness, 720, Pack Rat in particular. Not just a testament to FM synthesis, but to the composers and sound programmers of the day!
Definitely a great point. One of my favorite other examples is the Dune soundtrack[1]. This example uses the AdLib gold which uses the OPL3/YMF262, I believe.
This is a great question and I don't think I have a good answer. Here are some options:
- Some sibling comments have noted that you can built Dexed for Linux. If you can give that a shot and get it to build and run MIDI to it, it's one of the easiest ways you can get things going.
- If you're not partial to the OS you're using (unlikely for most people, I know), give it a shot on OSX.
- Otherwise, you might want to give KXStudio [1] a shot. It's an Ubuntu distro built by Paulo Coelho (@falkTX), who did some great work building Carla [2], which I believe is an evolution of dssi-vst [3]. dssi-vst uses the VeSTige emulator (which may be Wine based) and built a VST to DSSI adapter layer over it; I believe @falkTX forked dssi-vst, improved it over time and eventually came up with Carla. You could use Carla to run an instance of windows Dexed.
- Be aware that it's tricky to get a stable driver chain working properly with Linux (and I suppose you could say the same for Windows, too). You'll want to use a community blessed audio interface and other system components in your computer if you want the highest likelihood of stability. Results aren't guaranteed.
Personally, after multiple tries over the past ten years with a variety of hardware, a combination of bad luck and lack of time led me to give up and go back to the old reliable option, which for me is OSX. There's nothing worse than being in the middle of working on a track with your inspiration going, only to have your computer freeze and reboot losing your last half an hour of work if you forgot to save. But I'd love to be able to stay use Linux for music software.
Frankly, @falkTX's work with KXStudio is impressive, and it continues to evolve. Maybe there will come a day in the future when I can finally make the leap again.
If you have an ubuntu based distro, you can probably install dexed (or hexter, another DX7 softsynth) from the kxstudio repos ( https://kx.studio/Repositories )
Can someone give me a short explanation as to what this is and why it is significant?
It looks quite interesting. I am basically looking for the ELI5 because I have never heard of a DX7 before and I don't know what the file that I was prompted to download was about.
FM synthesisers like the DX7 are notoriously difficult to program compared to other types. There are many parameters to tweak and it can be hard to get an intuition about how each will change the sound. There's also a wide subspace of the possible parameter settings that sounds very bad/not musical.
This project seems to take a bunch of manually designed presets that sound good and use them to train a model on what sounds good, so it can make up new presets.
It appears to generate ROM (cartridge) images, which I'm guessing are sound patches, for a vintage Yamaha FM synthesizer -- A model which was extremely popular and ubiquitous a few decades ago.
The file format that it downloads (.syx) is a MIDI sysex or system-exclusive message file (https://www.midi.org/specifications-old/item/table-4-univers...). These are basically scripts of MIDI instructions that exist outside the regular note on-off messages, and can be used for a variety of things, in this case programming a patch in the DX7’s synthesis engine.
Notably, there are a crapload of software synths emulating DX7—as exemplified by the two mentioned on the page—and at least some of them accept patches in its native format, so apparently there's an ‘ecosystem’ of sorts of these patches floating around.
1. Being able to use a GAN to be able to give a synth an input sound (i.e. a reece sound from a dnb track) and have it generate a patch that matches it.
2. Being able to do 1 but apply it to a whole Ableton project. The interesting thing about Ableton is that they're actually XML files under the covers.
Even if you couldn't get close, it would be fascinating to see how an AI would design synth patches for subtractive synths.
There is a long tradition of using AI and AI-ish techniques to try to generate FM synthesis patches, for example [1] genetic algorithms (1993) to [2] neural networks (2017). See the "previous work" section in the latter paper for more references.
Disclosure: I wrote the original sound engine in Dexed. I love seeing stuff like this!
Hey dexed is awesome! I was the coauthor for [2], it for was my 3rd year undergraduate dissertation. A lot of the work went into creating a Python VST host capable of generating huge datasets of random patches.
I'm looking at some of the fancy new ML tricks that have come out since that paper was wrote and have been thinking there would be significant improvements over the LSTM we used.
1. For sure, I was thinking something along the lines of a multiview VAE that gets as input either `f(z|audio, midi)` or `f(z|dx7_parameters)` and must produce as output `f(audio|midi,z)` or `f(dx7_parameters|z)`
2. Yea, I have tried to pick apart Ableton files in the past but the format is a bit of a nightmare, it might be easier to use source separation like https://github.com/deezer/spleeter to build your dataset!
I am not an ML expert so not sure of the details on how it works, but I believe Google’s DDSP work is similar to 1: https://magenta.tensorflow.org/ddsp
As I understand it, their system can take an audio input and “learn” how to control the parameters of a synth to reproduce that sound. I had the pleasure of seeing a demo of it from someone who worked on it and thought it was impressive!
Synths have existed for a while which can use “resynthesis” to take a sound and recreate it using additive synthesis (e.g. Hartmann Neuron, Alchemy), but I wouldn’t probably call this AI/ML.
It's AI/ML if you capture sounds at different levels/frequencies, run them all through FFTs, and then use AI/ML to model how the FFTs change with level/frequency.
The Neuron used to work like this - but it's not a cheap way to synthesise sounds, and it never sounded all that awesome.
This works in the DX7's parameter space and tries to find sweet spots within that space - which are hard to discover, even if you know what you're doing.
I'm not convinced it's much more successful than a plain old constrained parameter randomiser. But it is much easier to use.
>The interesting thing about Ableton is that they're actually XML files under the covers.
Are .alp files also XML? How would I go about viewing the contents of one? I had a quick go at it once but couldn't get anything not looking like binary.
The reason I ask is because the native alp files and instruments have preview sounds, and I'm curious if there's any way to add previews to your own created instruments.
I have KQ Dixie on this iPad Pro that I'm presently on. The sysex files generated by this website opened up directly into it, and it worked brilliantly. This is so cool. There's a lot of duds, but it also generates some very usable patches.
I actually have a DX7 sitting on my desk at work, although I only use it as a MIDI keyboard because I love the keybed. Dexed or Arturia is so much easier to program, and 100% the same audio, so I have no reason to mess around programming the real thing. When I did play it directly, I programmed it in Dexed anyway.
I've owned multiple DX-7s (only first gen... I've always wanted to buy a DX-7IIfd). While I liked the feel of the keys, I couldn't get passed the MIDI implementation not sending the full 0-127 velocity. (Yamaha implemented a 0 to 100 range because the MIDI spec wasn't complete at the time of production). When I'm actually using it as just a keyboard to play, it doesn't seem to matter... it's only when I'm using a different sound source.
You can patch that if you want, the ROM image is available and there are reasonably accurate disassemblies, enough to figure out where that bit of code lives so you can scale it. You won't be able to fix it at the source (the DX7 contains two processors, the other one is mask programmable), but you can simply scale the 0...100 values to become 0...127.
I fixed this with MidiFire on Mac. I created a map that scales 0-100 to 0-127. I also added a control to shift octaves. The only real annoying thing is the fact that it doesn't send aftertouch unless the current patch has it enabled.
Just loaded mine into my Arturia DX7 VST, and its rad. Threw some juicy reverb after it, and found a couple patches in my pack that will defintely be putting into a track.
Very neat. I refurbish/repair DX7's as a hobby, and it is always surprising to me how much life there is still left in that synth. There is a whole eco-system around them and lots of people still want the actual thing to play on. They're also built like tanks which is one reason they are still so much in use today.
Years ago I had a TX81Z synthesizer unit. It was a rack mount unit (not a keyboard synthesizer; you had to use it with a midi keyboard). It was also an FM synthesizer with a fundamental difference; the DX7 used sine waves modulating each other to produce the sounds, and the TX81Z let you do the frequency modulation with sine waves, or triangle waves, or square waves, or pulse waves. You basically had an order of magnitude more flexibility in creating sounds, and an order of magnitude more difficulty. Some people were able to create some really interesting patches, but I never got good enough to create anything remotely interesting.
I downloaded a .syx and loaded it into Dexed. About half the patches don't make any sound, but the ones that remain are pretty good. Various classic FM sounds in the Sonic the Hedgehog vein.
I sorta wonder if this can be generalized to, say, some number of oscillators (i.e. if there's three in the synth then extra three in the model are considered disabled and we have a subspace of parameters), and to a bunch of common parameters like wave shapes, ADSR, the algo, the LFO. Because I noticed DX7 patches available on the web, but my particular DAW ain't got six oscillators and I can't even imagine what to do with that many of them.
(Though personally I don't believe that we should accelerate the exhaustive search on the musical space, but the geek in me can't help pondering about this.)
(1) This looks interesting. I had no idea any of this existed.
(2) For the level of awesome, this is the worst-documented ecosystem I've stepped into in a long while. I hope some random user volunteers to make really nice documentation at some point. This could go from awesome to a lot awesomer.
I looked for MIDI synthesizer a while back, and never ran into dexed. I suspect I'll have a lot of fun with this at some point.
For (2), yea definitely threw this all together a little too quickly. I have updated the README in https://github.com/Nintorac/NeuralDX7 to give a little explanation of the specific code used for this site.
Hope that helps and feel free to get in contact info@thisdx7cartdoesnotexist.com or create an issue if I can help to make anything clearer
(1) For open source, out early is better than out later. v0 (or v1 or where ever you start numbering) shouldn't be perfect. If it's perfect, you're sharing too late.
(2) All this is volunteer work and a gift to the community. It's a fallacy to think the person who writes the code is also responsible for doing everything else. Some people code well. Others write well. Others do both well. That's okay.
(3) My comment was on the dexed ecosystem; not just on this piece
(4) All that said, what would be awesome is if
- There were sample audio files we could listen to. Ideally, these would be for the generated patches, but even if there was just a half-dozen example WAV or MP3 files.
- If the README file on github had a link to the web page, or at the very least, if the current text (thisdx7cartdoesnotexit.com) said "exist" at the end instead of "exit"
This is so cool. I recently got myself a Reface DX to recapture the feel of the original DX7 and have Dexed on my machines (including the iPad), so will be having some fun over the next few evenings.
wow really nice! will try it later. that topic made me join to do my first comment on HN lol. I wonder if there are many music producers around here? would be nice to exchange some ideas :)
absolutely love when hn has audio related content. Thank you for sharing this, I will use this with dexed next time I'm horsing around with sound design.
I had no idea what a DX7 cartridge was, but out of curiosity I clicked the "Click here to generate" link. It immediately downloaded a file.
I'm sure you have no malicious intent here, but my immediate reaction was that it's a virus or something bad. I immediately deleted the file. The experience felt like one of those scammy popups that initiates a download.
You should really put a label or something to indicate to the user that clicking the link is going to download something.
I think people are talking about "Click" differently.
- There is a click on the link on this page that leads to the webpage. Nothing is downloaded at this time.
- There is a click on the target webpage "Click to generate cartridge". Those who know what DX7 is, who are presumably a target audience, would understand this will generate a file.
For those who do not know what DX7 is or what's happening, well... why are you clicking in the first place - if you have no idea what'll happen, a file is a legitimate possibility;) - but I think mostly it'll differ whether they have "Always ask me where to download" (in which case it'll prompt for location), or "Always download in default folder", in which case yes indeed it'll download a file.
But at that point you've already clicked two times voluntarily on a strange page whose provenance or purpose you don't know, AND you have enabled "Don't ask me for downloads", AND you didn't bother to scroll down two millimeters for explanation but just clicked on first thing that said click me, soooooo... at some point it's no longer author's responsibility and the cries lose their credibility ¯\_(ツ)_/¯
"But at that point you've already clicked two times voluntarily on a strange page whose provenance or purpose you don't know"
How many times have you clicked on an HN submission that you already knew 100% about? This site is for people to showcase their projects, of course curious visitors are expected to poke around.
This app looked like a single page - it's not at all obvious it's even possible to scroll down. It resizes to the browser window so the FAQ is always hidden unless you scroll. This is quite obviously based off "this face does not exist", so its perfectly reasonable to expect it to play something in the browser.
That it automatically downloaded a file is down to your browser, not the site. If you have "ask before downloading" (or similar) set, it'll prompt to download.
Well that is a common social vulnerability of the Hacker News crowd: if you give a link to some binary file for any retro system people here will install an emulator it runs on and execute it, ever if you say that it's actually a viral payload. For example: http://swiftlytilting.com/downloads/PCM.demo.wgraphics.zip (that is viral)
I tried to run it in my homegrown emulator - sadly it crashed because I haven't implemented mapper 2 (and bank swapping). If it's what I think it is though, you're right, very viral. ;)
I did not expect to be downloading a file, either. Like many people, I have no idea what a "DX7 cartridge" is. From context, I assumed this was a picture generator like "This face does not exist".
What browser are you using? It requires a click for me on Firefox. From a quick glance at the source I don't see anything that would automatically initiate a download.
Second of all, to folks that are trying to figure out how to give this a go: Open up your favorite DAW (try out Reaper[1] if you don't have one yet), download an install the fantastic open source DX7 emulator plugin Dexed VST plugin [2] and have fun.
In my opinion, FM synthesis is one of the finest things in life I've ever experienced. I never understood the whole culture around an emotional attachment to one's guitar before I realized how closely I could bond with my FM synthesis instruments. It was about five years ago when it started to feel a bit more like an extension of my brain and less like a tool. Now, I've always been an FM8 person myself because of the envelopes, but obviously the DX7 shaped synthesizers have the superior library.
I'm always overjoyed to see projects that get more folks into the joy of music with FM synthesis.
[1] https://www.reaper.fm/
[2] https://asb2m10.github.io/dexed/