Home | ER-101 | ER-102 | ER-301 | Wiki | Contact

XOXOXO Units

Thought I would separate this out of the Accents thread as a place for discussion on the XOXOXO units. Kicking things off with a patch walk through video, and will try to do some more. Please feel free to share your tips, patches, recordings, questions here too. :slight_smile:

Patch Walk Through - A Faux Supersaw made with Phase Modulation

16 Likes

20 characters of ALL HAIL!!! :metal::metal::metal::metal::metal::metal::metal::metal::metal::metal::metal:

3 Likes

Here’s a string/bell type patch, based on a DX7 patch (author unknown).

Xoxoxo StrBell.unit (24.3 KB)

Just drop a gate and V/Oct into the front panel controls. Quick demo with some verb and delay.

https://1drv.ms/u/s!ArVvnEREGK0vheoTLIfc9_cRlDlAdQ

5 Likes

I quote this here because it seems perfectly ON topic :grinning:
(Also, just a link seems too weak for me)

@Joe,comment:

  • a fantastic advertisement for working in the middle layer! Especially for the possibilities with the UI.
  • besides that of course, just another awesome creature coming out of frankenjoe’s lab. I imagine that being an otherwise empty and dark garage, with only one dim light on shining onto a simple desk focusing on the amazing er-301 surrounded by some geeky patch cable Spaghetti…
  • can’t wait to find time for the first video
  • it’s alive!
  • also wanted to share joe’s observation, that Brian’s passionate work is a necessary condition to see all this happening. thanks @odevices !
3 Likes

It’s actually a modestly finished basement cluttered with musical instruments, and roughly 4,000 other random things that I have no idea what to do with, and that are pretty questionable whether I should continue to keep them. But you’re right, lighting is challenging. :slight_smile:

Here’s a diagram of the above string/bell patch.

My strategy for “porting” this DX7 patch was to load it up in MOD-7 (Korg Kronos “fm” synth engine, capable of loading DX7 sysex) and try to recreate it piece by piece. This allows me to mute operators, hear their specific impact on the sound, and try to make sure that specific element was ported accurately.

I will say it came out very close to my ear, but the patch on the Kronos sounds just slightly more silky and buttery. I can’t quite explain that yet. Could be due to wavetable vs. generated oscillators, possibly a higher internal sample rate on the Korg vs. the ER-301 48k firmware… The envelopes are also not 1 to 1 - Korg implements the DX7 EG instead of a more traditional ADSR (ER-301). Of course it’s just as likely to be a result of operator error as anything else.

I thought porting some DX7 patches to XO might be a good way of “leveling up” my FM synthesis knowledge. This was a good experiment. Typically I learn synthesis best by experimentation, and also by de-/re-constructing patches others have made.

For those of you who understand FM really well, what techniques have you used to increase your know how?

3 Likes

Any of you aware of this YouTube channel?

He’s doing a very regular breakdown of both classic DX7 patches and own FM creations. Very detailed and easy to follow along.

3 Likes

Ah, yes, I’ve seen a few of his videos. Very good! On my list to watch more of them!

1 Like

@Joe Could you tell me how the feedback option works? Either it’s broken, or I’m not understanding something. Am I correct in assuming “A to A” should be the same for operator A, as “fdbk” is for a regular sine oscillator? When I increase the feedback funny things happen…

Sound is a little low perhaps, but the feedback goes from a very wobbly modulation to noise.

Another question I have, but maybe that will be more for @odevices because it seems like a deeper issue, is the behavior of the [ENTER] button in the extra views of the unit. It will take you back to the main view of the unit every time, and it is not possible to enter the detailed scope view for this reason. Pressing [ENTER] on a parameter jumps back to main view instead.

I have noticed these things too.

The feedback (e.g. A to A) is just like any other routing (e.g. B to A). I have noticed those get pretty unstable around > 0.25 or so. Perhaps I should cap the controls for those around 0.25 or scale them internally by 1/4? I know on the DX7, feedback went to (I think) 7 as opposed to the other indices going to 99. Not sure how Brian implemented feedback on the Sin Osc. It is a completely separate Inlet from Phase.

Brian has told me how to fix the press Enter for scope view on these controls. I can do that - not very difficult. There is still a challenge with exiting that view. It takes you back to the main view instead of the view you entered from. See the main middle layer thread for some more details.

Ah ok, I’m not following those discussions so I wasn’t aware of a known issue. I must say, first time I noticed it, I thought it was an intended and quite useful feature. I pressed Enter on the unit’s header twice and found myself back in the main view, so I though “oh, that’s a cool shortcut”, but then it turned out the scope view wasn’t available because of this “feature”. I love hidden shortcuts and workflow tricks in general. Let’s see how it progresses.

I see, it’s different I guess because of the wavetable implementation…? I suppose using sine oscillators pushes the CPU usage up? Otherwise you could just use Brian’s feedback (Best to ignore my hunches in this domain because I have no idea what I’m talking about)

I could pretty easily take this code base and make a version that uses Sin oscillators instead of wave tables. I don’t think the CPU would change by much in either direction (just a guess). The thought has definitely crossed my mind, so I’d say its pretty likely to happen at some point. I wanted to try the wave tables to give it kind of a uniqueness. I’m really undecided how valuable they are in this context yet. More experimentation required. :slight_smile:

Interesting! Are the one cycle waves you are using no “pure” sine waves then? In any case, I’m not quite sure how I would use the A to A feedback in this implementation. It’s pretty “out there” as an effect!

I still didn’t dive into lua yet :anguished: a few vague attempts aside. XO got me interested again… especially the alternative views are such an elegant way of building presets.

1 Like

The 4 wave forms in the table are from akwf “pure” bank. Yeah, phase modulation feedback definitely doesn’t behave the same with the wave table as with a generated sin, does it…

I’m absolutely open to changing these units to make them more useful. It’s all a grand experiment. :wink: Please keep the thoughts and feedback coming. It’s really helpful to talk through it.

2 Likes

hello Joe
thx a lot for your work of art !!
i installed last er 301 update , and last accent master folder with xoxo but i dont get whythere is only .LUA and no .unit for the xoxo serie ? when i load it it says :error in xo

sorry for the lonnnng post

---ERROR REPORT BEGIN
Time Since Boot: 17040.031s
Firmware Version: 0.4.25 (stable)
Boot Count: 205
Mount Count: 1
Error Message: Failed to construct unit: Xo
1:/ER-301/libs/Accents-master/Xo.lua:61: attempt to index a boolean value (local 'sample')
stack traceback:
	1:/ER-301/libs/Accents-master/Xo.lua:61: in function 'Accents-master.Xo.loadMonoGraph'
	1:/ER-301/libs/Accents-master/Xo.lua:32: in function 'Accents-master.Xo.onLoadGraph'
	X:/Unit/init.lua:54: in function 'Unit.init'
	1:/ER-301/libs/Accents-master/Xo.lua:25: in function 'Accents-master.Xo.init'
	X:/Base/Class.lua:78: in function <X:/Base/Class.lua:76>
	[C]: in function 'xpcall'
	X:/Unit/Factory/init.lua:100: in function <X:/Unit/Factory/init.lua:92>
	(...tail calls...)
	X:/Chain/Base.lua:405: in function 'Chain.Branch.loadUnit'
	X:/Unit/Chooser/init.lua:168: in function 'Unit.Chooser.choose'
	(...tail calls...)
	X:/Unit/Chooser/Default.lua:45: in method 'onReleased'
	X:/MondrianMenu/AsWindow/init.lua:148: in function 'MondrianMenu.AsWindow.mainReleased'
	X:/Base/Widget.lua:178: in function 'PinView.sendUpHelper'
	X:/Base/Widget.lua:168: in function 'PinView.sendUp'
	X:/Base/Context.lua:231: in function 'Base.Context.notify'
	X:/Application.lua:121: in upvalue 'notify'
	X:/Application.lua:266: in upvalue 'dispatch'
	X:/Application.lua:369: in function 'Application.loop'
	x:/startup/start.lua:54: in function <x:/startup/start.lua:47>
	[C]: in function 'xpcall'
	x:/startup/start.lua:57: in main chunk
	[C]: in function 'dofile'
	[string "dofile('x:/startup/start.lua')"]:1: in main chunk
---ERROR REPORT END
---ERROR REPORT BEGIN
Time Since Boot: 17086.266s
Firmware Version: 0.4.25 (stable)
Boot Count: 205
Mount Count: 1
Error Message: Failed to construct unit: Xo
1:/ER-301/libs/Accents-master/Xo.lua:61: attempt to index a boolean value (local 'sample')
stack traceback:
	1:/ER-301/libs/Accents-master/Xo.lua:61: in function 'Accents-master.Xo.loadMonoGraph'
	1:/ER-301/libs/Accents-master/Xo.lua:32: in function 'Accents-master.Xo.onLoadGraph'
	X:/Unit/init.lua:54: in function 'Unit.init'
	1:/ER-301/libs/Accents-master/Xo.lua:25: in function 'Accents-master.Xo.init'
	X:/Base/Class.lua:78: in function <X:/Base/Class.lua:76>
	[C]: in function 'xpcall'
	X:/Unit/Factory/init.lua:100: in function <X:/Unit/Factory/init.lua:92>
	(...tail calls...)
	X:/Chain/Base.lua:405: in function 'Chain.Branch.loadUnit'
	X:/Unit/Chooser/init.lua:168: in function 'Unit.Chooser.choose'
	(...tail calls...)
	X:/Unit/Chooser/Default.lua:45: in method 'onReleased'
	X:/MondrianMenu/AsWindow/init.lua:148: in function 'MondrianMenu.AsWindow.mainReleased'
	X:/Base/Widget.lua:178: in function 'PinView.sendUpHelper'
	X:/Base/Widget.lua:168: in function 'PinView.sendUp'
	X:/Base/Context.lua:231: in function 'Base.Context.notify'
	X:/Application.lua:121: in upvalue 'notify'
	X:/Application.lua:264: in upvalue 'dispatch'
	X:/Application.lua:369: in function 'Application.loop'
	x:/startup/start.lua:54: in function <x:/startup/start.lua:47>
	[C]: in function 'xpcall'
	x:/startup/start.lua:57: in main chunk
	[C]: in function 'dofile'
	[string "dofile('x:/startup/start.lua')"]:1: in main chunk
---ERROR REPORT END
---ERROR REPORT BEGIN
Time Since Boot: 17114.025s
Firmware Version: 0.4.25 (stable)
Boot Count: 205
Mount Count: 1
Error Message: Failed to construct unit: Xoxo
1:/ER-301/libs/Accents-master/Xoxo.lua:61: attempt to index a boolean value (local 'sample')
stack traceback:
	1:/ER-301/libs/Accents-master/Xoxo.lua:61: in function 'Accents-master.Xoxo.loadMonoGraph'
	1:/ER-301/libs/Accents-master/Xoxo.lua:32: in function 'Accents-master.Xoxo.onLoadGraph'
	X:/Unit/init.lua:54: in function 'Unit.init'
	1:/ER-301/libs/Accents-master/Xoxo.lua:25: in function 'Accents-master.Xoxo.init'
	X:/Base/Class.lua:78: in function <X:/Base/Class.lua:76>
	[C]: in function 'xpcall'
	X:/Unit/Factory/init.lua:100: in function <X:/Unit/Factory/init.lua:92>
	(...tail calls...)
	X:/Chain/Base.lua:405: in function 'Chain.Branch.loadUnit'
	X:/Unit/Chooser/init.lua:203: in function 'Unit.Chooser.choose'
	(...tail calls...)
	X:/Unit/Chooser/Default.lua:45: in method 'onReleased'
	X:/MondrianMenu/AsWindow/init.lua:148: in function 'MondrianMenu.AsWindow.mainReleased'
	X:/Base/Widget.lua:178: in function 'PinView.sendUpHelper'
	X:/Base/Widget.lua:168: in function 'PinView.sendUp'
	X:/Base/Context.lua:231: in function 'Base.Context.notify'
	X:/Application.lua:121: in upvalue 'notify'
	X:/Application.lua:262: in upvalue 'dispatch'
	X:/Application.lua:369: in function 'Application.loop'
	x:/startup/start.lua:54: in function <x:/startup/start.lua:47>
	[C]: in function 'xpcall'
	x:/startup/start.lua:57: in main chunk
	[C]: in function 'dofile'
	[string "dofile('x:/startup/start.lua')"]:1: in main chunk
---ERROR REPORT END
---ERROR REPORT BEGIN
Time Since Boot: 21431.713s
Firmware Version: 0.4.25 (stable)
Boot Count: 205
Mount Count: 1
Error Message: Failed to construct unit: Xo
1:/ER-301/libs/Accents-master/Xo.lua:61: attempt to index a boolean value (local 'sample')
stack traceback:
	1:/ER-301/libs/Accents-master/Xo.lua:61: in function 'Accents-master.Xo.loadMonoGraph'
	1:/ER-301/libs/Accents-master/Xo.lua:32: in function 'Accents-master.Xo.onLoadGraph'
	X:/Unit/init.lua:54: in function 'Unit.init'
	1:/ER-301/libs/Accents-master/Xo.lua:25: in function 'Accents-master.Xo.init'
	X:/Base/Class.lua:78: in function <X:/Base/Class.lua:76>
	[C]: in function 'xpcall'
	X:/Unit/Factory/init.lua:100: in function <X:/Unit/Factory/init.lua:92>
	(...tail calls...)
	X:/Chain/Base.lua:405: in function 'Chain.Branch.loadUnit'
	X:/Unit/Chooser/init.lua:203: in function 'Unit.Chooser.choose'
	(...tail calls...)
	X:/Unit/Chooser/Default.lua:45: in method 'onReleased'
	X:/MondrianMenu/AsWindow/init.lua:148: in function 'MondrianMenu.AsWindow.mainReleased'
	X:/Base/Widget.lua:178: in function 'PinView.sendUpHelper'
	X:/Base/Widget.lua:168: in function 'PinView.sendUp'
	X:/Base/Context.lua:231: in function 'Base.Context.notify'
	X:/Application.lua:121: in upvalue 'notify'
	X:/Application.lua:266: in upvalue 'dispatch'
	X:/Application.lua:369: in function 'Application.loop'
	x:/startup/start.lua:54: in function <x:/startup/start.lua:47>
	[C]: in function 'xpcall'
	x:/startup/start.lua:57: in main chunk
	[C]: in function 'dofile'
	[string "dofile('x:/startup/start.lua')"]:1: in main chunk
---ERROR REPORT END
---ERROR REPORT BEGIN
Time Since Boot: 21093.307s
Firmware Version: 0.4.25 (stable)
Boot Count: 206
Mount Count: 1
Error Message: Failed to construct unit: Xo
1:/ER-301/libs/Accents-master/Xo.lua:61: attempt to index a boolean value (local 'sample')
stack traceback:
	1:/ER-301/libs/Accents-master/Xo.lua:61: in function 'Accents-master.Xo.loadMonoGraph'
	1:/ER-301/libs/Accents-master/Xo.lua:32: in function 'Accents-master.Xo.onLoadGraph'
	X:/Unit/init.lua:54: in function 'Unit.init'
	1:/ER-301/libs/Accents-master/Xo.lua:25: in function 'Accents-master.Xo.init'
	X:/Base/Class.lua:78: in function <X:/Base/Class.lua:76>
	[C]: in function 'xpcall'
	X:/Unit/Factory/init.lua:100: in function <X:/Unit/Factory/init.lua:92>
	(...tail calls...)
	X:/Chain/Base.lua:405: in function 'Chain.Branch.loadUnit'
	X:/Unit/Chooser/init.lua:168: in function 'Unit.Chooser.choose'
	(...tail calls...)
	X:/Unit/Chooser/Default.lua:45: in method 'onReleased'
	X:/MondrianMenu/AsWindow/init.lua:148: in function 'MondrianMenu.AsWindow.mainReleased'
	X:/Base/Widget.lua:178: in function 'PinView.sendUpHelper'
	X:/Base/Widget.lua:168: in function 'PinView.sendUp'
	X:/Base/Context.lua:231: in function 'Base.Context.notify'
	X:/Application.lua:121: in upvalue 'notify'
	X:/Application.lua:266: in upvalue 'dispatch'
	X:/Application.lua:369: in function 'Application.loop'
	x:/startup/start.lua:54: in function <x:/startup/start.lua:47>
	[C]: in function 'xpcall'
	x:/startup/start.lua:57: in main chunk
	[C]: in function 'dofile'
	[string "dofile('x:/startup/start.lua')"]:1: in main chunk
---ERROR REPORT END
---ERROR REPORT BEGIN
Time Since Boot: 21405.641s
Firmware Version: 0.4.25 (stable)
Boot Count: 206
Mount Count: 2
Error Message: Failed to construct unit: Xo
1:/ER-301/libs/Accents-master/Xo.lua:61: attempt to index a boolean value (local 'sample')
stack traceback:
	1:/ER-301/libs/Accents-master/Xo.lua:61: in function 'Accents-master.Xo.loadMonoGraph'
	1:/ER-301/libs/Accents-master/Xo.lua:32: in function 'Accents-master.Xo.onLoadGraph'
	X:/Unit/init.lua:54: in function 'Unit.init'
	1:/ER-301/libs/Accents-master/Xo.lua:25: in function 'Accents-master.Xo.init'
	X:/Base/Class.lua:78: in function <X:/Base/Class.lua:76>
	[C]: in function 'xpcall'
	X:/Unit/Factory/init.lua:100: in function <X:/Unit/Factory/init.lua:92>
	(...tail calls...)
	X:/Chain/Base.lua:405: in function 'Chain.Branch.loadUnit'
	X:/Unit/Chooser/init.lua:168: in function 'Unit.Chooser.choose'
	(...tail calls...)
	X:/Unit/Chooser/Default.lua:45: in method 'onReleased'
	X:/MondrianMenu/AsWindow/init.lua:148: in function 'MondrianMenu.AsWindow.mainReleased'
	X:/Base/Widget.lua:178: in function 'PinView.sendUpHelper'
	X:/Base/Widget.lua:168: in function 'PinView.sendUp'
	X:/Base/Context.lua:231: in function 'Base.Context.notify'
	X:/Application.lua:121: in upvalue 'notify'
	X:/Application.lua:266: in upvalue 'dispatch'
	X:/Application.lua:369: in function 'Application.loop'
	x:/startup/start.lua:54: in function <x:/startup/start.lua:47>
	[C]: in function 'xpcall'
	x:/startup/start.lua:57: in main chunk
	[C]: in function 'dofile'
	[string "dofile('x:/startup/start.lua')"]:1: in main chunk
---ERROR REPORT END

Try renaming the folder (on your sd card)

Accents-master

To

Accents

thx you so much it is done !!
feel easy to delete this looong error log;)

1 Like

I edited your post to use the code block markdown.

https://commonmark.org/help/

1 Like

So the latest Accents 0.4.25.4 has a new unit XXXXXX that uses sin oscillators. The CPU actually dropped about 6%! I suspect this might be due to a slightly lower CPU usage on the actual oscillators, and also being able to eliminate some of the branches for the scan controls.

Be interested to hear what you think. I haven’t had much time to play with it yet but I’m wondering if recreating the bell/string patch in the sin osc version will lead me more toward the buttery character I was hearing on the Kronos.

I’m not even really sure if it’s an issue vs. a design choice. I may just need to think through how to handle this situation with the various views better than what I have.

1 Like

These are sooo much fun in tandem with the 16n faderbank. Thanks for putting these out!

3 Likes