[ANN] reMID.lv2 (that's right. a chiptune plugin.)

Discuss anything new and newsworthy! See http://planet.linuxaudio.org and https://libreav.org/news for more Linux Audio News!

Announcements of proprietary software may fit better in the Marketplace.


Moderators: raboof, MattKingUSA, khz

ssj71
Established Member
Posts: 1294
Joined: Tue Sep 25, 2012 6:36 pm
Has thanked: 1 time

[ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by ssj71 »

So I've been keeping this project quiet cause I wanted it to be a big surprise, but I may as well let you in on the secret now.

Announcing: reMID.lv2!
https://github.com/ssj71/reMID.lv2

reMID.lv2 is a reboot of the codebase for the little known project reMID (http://gp2x.org/remid/). It is a midi implementation of a SID6581/8580 chip famously designed into the commodore64 computer using the reSID library. I've heard many requests for a chiptune plugin, and thought this one would be pretty cool so I started the long process of refactoring the code to make it appropriate for a plugin last year. And now it works. It also works as a standalone jack application.

True to the commodore64, this loads files to set the registers of the chip and "instruments" defined in the file can be scripted to make instrument programs that allow per-note arpeggiation, filter sweeps, PWM, or whatever your mind can come up with. I selected this codebase because of this powerful feature (and 'cause bitrot makes me sad). Unlike the commodore64 though, this plugin has polyphony (configurable up to 128) so its actually a bank of SID chips. You can now use all 3 oscillators for your sound design rather than to get triphony (is that a real thing?).

The plugin UI only provides a dialog to load instrument files (standalone must load through the command line options). The original reMID was designed to allow a single instance to have different sounds on each midi channel and program change, so you could just use a sequencer and 1 reMID to do a whole chiptune track. That capability is still there but I realize that its much more common workflow to have 1 plugin in each track with a single instrument so I made that possible. You can work both ways. This architecture also allows drumkits to be made with a different sound on each note.

For the more common latter workflow you just load the plugin and open the file chooser to find the .conf file you want. If you decide to edit it you'll have to use a text editor like vim or gedit or kate or whatever. Open the instrument file in the editor, make your changes and reload the instrument file in the plugin. Its a little weird, but I hope its not a deal breaker for folks. I was able to make a couple instruments pretty quickly last night by just copying one of the existing files and tweaking some stuff. I hope this workflow will work for you.

There is some documentation in the readme, and the default instruments.conf file. Several instrument files provide examples as well as presets to give you an idea of some sonic possibilities. The full documentation for programming remains at the original project's site: http://gp2x.org/remid/inst_config.php

Please give it a whirl (it has very few dependencies and should be easy to install, just follow the readme) and let me have some feedback. New instruments would be a great contribution as well as any bug reports or patches.

Some notes:
1. qtractor doesn't support file loading through a generic UI. Therefore only the presets allow you to load different instruments. One workaround is to edit the .ttl files to add your own presets with your instrument files.
2. there is no DAW automation available. Exposing the parameters to allow tweaking the registers in realtime and automation is on the roadmap, but its going to be a long way out. Some deep architectural challenges require a lot of refactoring before that becomes feasible. It would actually be much quicker if I just make a second plugin that does not have the scripting capability, basically like an LV2 port of the lmms SID plugin (https://lmms.io/wiki/index.php?title=SID). If you have an opinion on whether this scripting is worth keeping for the version 2 reMID or not I'd like to hear your thoughts.

ENJOY!
_ssj71

music: https://soundcloud.com/ssj71
My plugins are Infamous! http://ssj71.github.io/infamousPlugins
I just want to get back to making music!
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by danboid »

Big thanks for fixing the loooooooong overdue Linux chiptune plugin void ssj71! The SID was my most-wanted chip to emulate too so I'm very happy about this! :D

Although I enjoy using the terminal and writing scripts etc, coding doesn't work for me for creating music. I prefer to input with (MIDI) instruments or mics when I can actually play what I want to record but the second best solution for me (when dealing with MIDI) is entering musical data visually ie GUI point n' click stuff. Hence, I will likely rarely use the reMID scripting once I can draw automation curves.

I can definitely see how the scripting of effects would be cool to have so it would be a shame to lose that but I don't have any issue with having a scriptable and a non-scriptable version of the plugin if it makes things easier for you.

It'd be great if we could use deflemask to create instruments with a UI then convert to reMID instruments with a script. Deflemask has 3 instrument editors. To load SID dmp instruments, select the SID for use then open the STD instrument editor and use the 'Load Ins' feature in that window. Like all trackers you can use your computer keyboard as a MIDI input device to preview instruments.
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by danboid »

I've not done a side-by-side comparison but I think many SID-heads prefer deflemasks emulation over that of the LMMS plugin

BUT

LMMS is FLOSS whilst DM is not. LMMS is also easier to install, it doesn't require GLU to render its UI and it saves its SID instruments as XML so it should be easier to write a conversion script.
ssj71
Established Member
Posts: 1294
Joined: Tue Sep 25, 2012 6:36 pm
Has thanked: 1 time

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by ssj71 »

danboid wrote:Deflemask has 3 instrument editors.
danboid wrote:I think many SID-heads prefer deflemasks emulation over that of the LMMS plugin
I guess I'll have to try this deflemask thing cause honestly I don't really have a clue what its doing yet.
falkTX wrote:nice! didn't thought you were going to announce it so soon.
I was having a lot of fun with it and it's been working so well it seemed a shame not to.
falkTX wrote:I really need to get that working on carla...
sure do ;)
falkTX wrote:How's the license for this btw, do you think there will be any issues in having it in MOD for example?
https://github.com/ssj71/reMID.lv2/blob/master/COPYING
The biggest potential hangup is just the dependency on libglib for file parsing. And the whole thing that you won't be able to edit presets or load your own or anything yet.

falkTX wrote:Also, how would a plugin GUI for this plugin look like?
(I assume there's some default/generic interface for chiptune synths... right?)
I think a tracker would be the generic interface so...
With this version of reMID it only works through loading instrument files, so the GUI would look a lot like a text editor ;)
I don't have a plan for the UI of version2 right now. I'll cross that bridge when I come to it.
_ssj71

music: https://soundcloud.com/ssj71
My plugins are Infamous! http://ssj71.github.io/infamousPlugins
I just want to get back to making music!
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by danboid »

F:

The LMMS UI for its SID plugin is good enough I think. The design could be copied but Qt doesn't seem to be a good choice for LV2 UIs <ducks the wrath of the eternal plugin UI flamefest shitstorm>

Spencer:

I can confirm that reMID is working under Ardour now. I'll be trying it under MusE next.
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by danboid »

That sounds like a good stop-gap measure until reMID grows a proper GUI but I'd still like to be able to choose from a list of presets and load new presets from files too, ideally.

Loading a text/preset file (from a pre-defined presets dir for the plugin) seems easier to me than having to copy/paste from another editor or type any commands into the text box.
ssj71
Established Member
Posts: 1294
Joined: Tue Sep 25, 2012 6:36 pm
Has thanked: 1 time

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by ssj71 »

falkTX wrote: glib is not an issue, many plugins use that too.
good to know.
falkTX wrote: an idea for a gui would be a simple text editor with a 'save' button.
when save is pressed the editor contents are sent via atom (just a string) and the instrument loaded by the plugin.
this is something that MOD can do right now without needing file management.
The host could provide this functionality. It knows I have an atom_path property that can be set or get, so there's nothing barring the host from providing a generic editor. That would be nice for the rkr echotron too, or any plugin that loads a text file.

You have a good idea here. I'm just lazy and want to push it to the host. I'll consider it though I don't think there's much advantage on desktop over using your preferred editor.
_ssj71

music: https://soundcloud.com/ssj71
My plugins are Infamous! http://ssj71.github.io/infamousPlugins
I just want to get back to making music!
ssj71
Established Member
Posts: 1294
Joined: Tue Sep 25, 2012 6:36 pm
Has thanked: 1 time

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by ssj71 »

I see. I like that. Lets chat about this a bit more on IRC. Perhaps I can add another property that is an atom_string and designate it for this. That should be possible.
_ssj71

music: https://soundcloud.com/ssj71
My plugins are Infamous! http://ssj71.github.io/infamousPlugins
I just want to get back to making music!
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by danboid »

I've just tried reMID under the latest git version of MusE. It loads reMID fine but unfortunately there is no way to load new instruments yet as the file selector doesn't show in the plugin UI.

https://github.com/muse-sequencer/muse/issues/507
ssj71
Established Member
Posts: 1294
Joined: Tue Sep 25, 2012 6:36 pm
Has thanked: 1 time

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by ssj71 »

I probably should have done this before I made the announcement but I just pushed a change that gives a huge reduction in CPU/DSP useage.

(for the curious its because previously it would simulate all 32 chips at 1Mhz even if none were sounding. This change only runs the sim for ones that are sounding until their notes end, and it only emulates the analog filter if you use it in your instrument file.)
_ssj71

music: https://soundcloud.com/ssj71
My plugins are Infamous! http://ssj71.github.io/infamousPlugins
I just want to get back to making music!
User avatar
davephillips
Established Member
Posts: 592
Joined: Sat Aug 15, 2015 1:05 pm
Has thanked: 35 times
Been thanked: 23 times

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by davephillips »

Greetings,

Built and installed on Fedora 21 x86_64, tested with Ardour4 from git, works perfectly here.

Best,

dp
User avatar
rncbc
Established Member
Posts: 1060
Joined: Mon Apr 19, 2010 12:20 pm
Has thanked: 45 times
Been thanked: 256 times
Contact:

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by rncbc »

ssj71 wrote:qtractor doesn't support file loading through a generic UI. ...
jfyi.

starting from today's git head, master branch, qtractor v0.7.7.4+ will have this LV2 Patch parameter properties manipulation right from the generic plug-in properties dialog (aka. generic UI); however these parameter properties are not automatable, nor MIDI controllable, not even undoable/redoable, as regular plug-in parameters are, business as usual.

take care :)
cheers
ssj71
Established Member
Posts: 1294
Joined: Tue Sep 25, 2012 6:36 pm
Has thanked: 1 time

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by ssj71 »

rncbc wrote:starting from today's git head, master branch, qtractor v0.7.7.4+ will have this LV2 Patch parameter properties manipulation right from the generic plug-in properties dialog (aka. generic UI);
woohoo! \0/
rncbc wrote:however these parameter properties are not automatable, nor MIDI controllable, not even undoable/redoable, as regular plug-in parameters are, business as usual.
afaik no hosts are doing any of that for patchable parameters so I think you are actually ahead of the game! Right now there isn't much need for those latter features, but some day there may be.
_ssj71

music: https://soundcloud.com/ssj71
My plugins are Infamous! http://ssj71.github.io/infamousPlugins
I just want to get back to making music!
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by danboid »

ssj:

I would doubt it was a major CPU hog before but it sounds like you've added some pretty major, worthwhile optimizations there. Thanks!

RNCBC:

I was expecting you'd get this fixed up in short order but your comments about the patch parameters not being automatable nor MIDI controllable or undoable concerns me. ssj made it clear that MIDI automation/RT control of the parameters wasn't supported in the current version but you say these patches are quite different from regular plug-in parameters? Why is this? Are qtr's internals and TTL files effectively joined at the hip? I'd imagine this would apply to the LV2 support for any audio app if thats the case? I never thought this new patch loading support would come with such debt.

I've just had it confirmed MusE lacks LV2 patch support although Andrew has explained how it can be worked around until patch support arrives:

https://github.com/muse-sequencer/muse/issues/507
ssj71
Established Member
Posts: 1294
Joined: Tue Sep 25, 2012 6:36 pm
Has thanked: 1 time

Re: [ANN] reMID.lv2 (that's right. a chiptune plugin.)

Post by ssj71 »

danboid wrote:ssj made it clear that MIDI automation/RT control of the parameters wasn't supported in the current version but you say these patches are quite different from regular plug-in parameters? Why is this?
I can at least partially answer. Lv2 ports work completely different from patchable parameters. Patch is an event based system and is a more recent development and AFAIK the ONLY thing it is currently being used for is for choosing files for a plugin to load. My plan was to expose the rest of the SID registers and settings through the usual lv2 ports which hosts are used to dealing with. At some point there will proabably be some plugins using only patchable parameters but until then, adding automation for these is just a lot of work that won't support any more plugins than is already done. They're very different interfaces so it may take quite some work to add these features even though they already exist for the port method.
_ssj71

music: https://soundcloud.com/ssj71
My plugins are Infamous! http://ssj71.github.io/infamousPlugins
I just want to get back to making music!
Post Reply