HuSound

Started by TailChao, 11/08/2014, 09:51 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

TailChao

#50
Quote from: guest on 03/11/2015, 01:27 PMTailChao, do you have any plans for a sane/easy way to convert from a MIDI into your format?

I think that's basically what makes Squirrel so powerful.   You don't really have to actually do the MML.  You just copy paste.

You only generally have to do MML if you're optimizing because your songs are 900 miles long.
There's a general MIDI to SASS converter I wrote available here.
As of version 1.1, it seems to be fairly compatible and will happily split MIDI channels into individual SASS tracks based upon detected activity. Of course, you still have to create your own instruments, set up looping, apply any effects, etc. But this is not a really big deal.

Arkhan Asylum

Cool.   When I have some down time, I might give it a closer look.   What kind of space/resource overhead does using it incur?
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

TailChao

#52
Quote from: guest on 03/11/2015, 01:45 PMCool.   When I have some down time, I might give it a closer look.   What kind of space/resource overhead does using it incur?
I put up some visuals regarding this back on the first page. The only difference between that version and the current one is that we're using ~7 bytes more RAM in v1.2cz.

There are two major things to keep in mind with this driver:
*The performance is extremely variable based upon activity. Playing PCM samples on all six channels will obviously eat your cycles.
*The RAM usage is high and music binaries are large, but I consider these moot because the sound tools are designed for use with the MCGenjin mapper. I think the Wario Land Boss cover was like 17KB or so.

TurboXray

Sort of off side topic, but I see 'tracker' and 'mml' (or script based stuff) as the interface in creating music - and not necessarily the music driver itself (though they can be write specifically this way). The last sound driver I wrote could run both formats: pattern based or command string based. I liked the idea of applying the strengths of command string structure to that of a simpler pattern/list format.

Arkhan Asylum

Unfortunately, a tracker is not a very musical interface, so I've always found it to be a clunky trainwreck to use.   The more modern, functional equivalent to me, is a piano roll.    I find that worlds more effective than a tracker's interface.

Since MML is a text representation of sheet music, it seems a bit more fluid.   
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

spenoza

Sounds like Squirrel is going to be easier for a n00b to get up and running, but HuSound might be a little more powerful/robust in terms of raw capabilities, if you can spare the memory and CPU cycles for it.

elmer

Quote from: TurboXray on 03/11/2015, 03:46 PMSort of off side topic, but I see 'tracker' and 'mml' (or script based stuff) as the interface in creating music - and not necessarily the music driver itself (though they can be write specifically this way).
That's a very good point ... the musician's workflow, and how that workflow enhances (or sometimes crushes) their creativity, is all that's really important.

It's only the progammers of this world that really have to worry about "drivers" and how to actually get the tune to play. From a programmer's POV, whatever the format, it's all just the reasonably simple juggling of bits and bytes and then writing to the PSG's registers.

QuoteThe last sound driver I wrote could run both formats: pattern based or command string based. I liked the idea of applying the strengths of command string structure to that of a simpler pattern/list format.
Cool! Is there a demo of that anywhere?

Do you have any plans to release your xm player?

Quote from: guest on 03/11/2015, 08:59 PMSounds like Squirrel is going to be easier for a n00b to get up and running, but HuSound might be a little more powerful/robust in terms of raw capabilities, if you can spare the memory and CPU cycles for it.
That's certainly what Arkhan would have you believe.

The best thing is for you to experiment yourself.

There's an online MML editor that you can play with and see if you like it ...

http://benjaminsoule.fr/tools/vmml/

And here's a tune from http://www.reddit.com/r/gamedev/comments/1f9l62/visual_mml_a_text_music_editor

#TABLE0{(0,0,-32,32,-32,32,-32,32,-32,32,-32,32,-32,32,-32,32,-32,32,-32,32,-32,32,-32)128};
#TABLE1{(255,0)5};

%1 @2 na1 t 110 l16 v8
[[[o>> g+ o>r d+ d+]][[o>> a+ o>r f f]][o> c r g g] o> c r o>> g r a+ r o> f r[[o> c r g g]]
[[o> d+ r a+ a+]][[o>> a+ o>r f f]][o> c r g g] o> c r o>> g r a+ r o> f r[[o> c r g g]]]c;

%1 @2 na1 t 110 l16 v4 l16 r r l16
[[[o>> g+ o>r d+ d+]][[o>> a+ o>r f f]][o> c r g g] o> c r o>> g r a+ r o> f r[[o> c r g g]]
[[o> d+ r a+ a+]][[o>> a+ o>r f f]][o> c r g g] o> c r o>> g r a+ r o> f r[[o> c r g g]]]c;

%1 @8 np0
o< l2 g l4 r r l4 f. l16 f d+ l4 f g f l16 r r l4 d+ l16 r r l2 c l4 r r l16 c d d+ f l4
o< g^ l16 r r g+ g f^ d+^ l4 f r o<< c r o< a+^ r r r l16 r^^^^^^^^^ g a+
o< l2 g l4 r a+ f. l32 f g f d+ l4 f g f l16 r r l4 d+ l16 r r l2 c l4 r r l16 c d d+ f l4
o< g^ l8 r l16 g+ g l8 f d+ l2 f o<< d c^;

%1 @8 np0 l32 r r r r v4
o< l2 g l4 r r l4 f. l16 f d+ l4 f g f l16 r r l4 d+ l16 r r l2 c l4 r r l16 c d d+ f l4
o< g^ l16 r r g+ g f^ d+^ l4 f r o<< c r o< a+^ r r r l16 r^^^^^^^^^ g a+
o< l2 g l4 r a+ f. l32 f g f d+ l4 f g f l16 r r l4 d+ l16 r r l2 c
l4 r r l16 c d d+ f l4 o< g^ l8 r l16 g+ g l8 f d+ l2 f o<< d c^;

%1 @8 np0
l32 r r r r r r r r v3
o< l2 g l4 r r l4 f. l16 f d+ l4 f g f l16 r r l4 d+ l16 r r l2 c l4 r r l16 c d d+ f l4
o< g^ l16 r r g+ g f^ d+^ l4 f r o<< c r o< a+^ r r r l16 r^^^^^^^^^ g a+
o< l2 g l4 r a+ f. l32 f g f d+ l4 f g f l16 r r l4 d+ l16 r r l2 c l4 r r l16 c d d+ f l4
o< g^ l8 r l16 g+ g l8 f d+ l2 f o<< d c^;

I don't know about you ... but that doesn't look fun to edit to me!

Quote from: guest on 03/11/2015, 04:13 PMUnfortunately, a tracker is not a very musical interface, so I've always found it to be a clunky trainwreck to use. 
Although Arkhan obviously doesn't like the tracker interface, there seem to be enough other people that do to support the commercial Renoise editor, and the open-source OpenMPT project.

http://en.wikipedia.org/wiki/Music_tracker
http://en.wikipedia.org/wiki/OpenMPT

As mentioned on Wikipedia ... OpenMPT is still being used in game development at places like PopCap.

Arkhan Asylum

#57
Or, rather than dive into some other example and editor, you could just download Squirrel and use one of the many preincluded examples that are much simpler.

and if you look at the nice manual I wrote, it's all explained pretty good. 

I use 3MLE for MML editing in a modern interface, complete with piano roll: http://3ml.jp/


If you do the right amount of investigation before starting and scaring yourself, you'll find that MML is simple.

It's not like trackers are an easily accessible, approachable interface.   It's columns of bullshit, often with hex values, and it's all fairly unintuitive.


I made some demonstration videos awhile back too, to demonstrate how non-painful it honestly is:
EDIT: also, that MML example is pretty terrible looking.   Don't blame MML for someone else doing a crappy job at editing the thing.
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

OldRover

MML is so easy that a braindead raccoon could understand it. 3MLE makes it easy enough for a completely dead raccoon to use it.
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

spenoza

I suspect a dead parrot is another story altogether, however. Are your raccoons zombies, perchance?

Arkhan Asylum

Quote from: guest on 03/14/2015, 12:38 AMI suspect a dead parrot is another story altogether, however. Are your raccoons zombies, perchance?
From RACCOON CITY.
HAHHH

Get it.

It's a Resident Evil reference.
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

TailChao

#61
Since my 7800 project hit engine complete and PC-Engine playtime will be put on hold once the CD-Stupid Cards are finished, I took some time to try and break my sound tools.

Fortunately, there was not much wrong. So I'm releasing HuSound 1.25cz which includes the following changes:
-HSCC would crash if its first located instrument or sound effect definition was mangled. This has been corrected and the compiler will cleanly alert the user to the syntax problem and exit.
-HuListen's RUN+SEL reset routine was jumping to the wrong portion of my initialization code (the unswapped MCGenjin cold reset rather than a warm reset). This could cause all sorts of interesting behavior on real hardware.
-The waveform previews in HuListen now render on alternating even / odd frames. I don't think anyone really needs finer granularity than that.
-The HuListen builds now default to 4MB in size (the size of the 4MB Plus development card) and spread the audio data around a little more.
-Small change in HuSound->HuMusic where a ROL ROL ROL ROL AND#$F0 was replaced with ASL ASL ASL ASL.

Unfortunately, I've uploaded the Wario Land 2 covers I did to try and break the driver.


Right now the driver is at a state I'm happy with, and will likely be left alone until / if I come back to the PC-Engine for a full game. For the adventurous, I've listed the actions which I might take if the driver proves too cycle hungry for a project:
-There are currently no alignment / placement restrictions for SFX, Music, and PCM data. This is done to make things easier for the programmer and composer, but locking everything in fixed banks would significantly reduce overhead.
-Music data currently includes an instrument set. This is so the programmer can swap among multiple instrument sets during a song very easily and do generally trippy stuff based upon game context. Not everyone needs this and a global instrument set would be quicker for dispatch and obviously use less space.
-Right now the MCGenjin mapper only has a single bank register, this is an issue since we have to cover three contexts (User, VBL IRQ, and Sample IRQ) an preserve its original state on each switch. Having three (or four) banking registers which may be selected via a context register would be very helpful.
-MCGenjin does not handle reversal of the data written to it based upon its current operating region. The new mapper for the CD-Stupid Card (MCGenjin-CD) does this, and would be a welcome addition to an MCGenjin 2 or whatever mapper.

elmer

Thanks for the update, I just downloaded it and listened to the tunes on YouTube.  :D

esteban

Quote from: TailChao on 04/15/2015, 12:48 PMUnfortunately, I've uploaded the Wario Land 2 covers I did to try and break the driver.
I missed this when I originally saw this thread.

That was fun... I know you will want to upload another example for us... :)
IMGIMG IMG  |  IMG  |  IMG IMG

Debvgger_


CPTBadAss

Haha this is great! I can't wait to listen to people's music based off Hu Cards.
Maximum Output. Activate the pit.

TailChao

#66
Not 100% PCE related, but I've released BupBoop + CoreTone. These are the audio tools written for my Atari 7800 project and Windows PC stuff. It's available for download here. The SoftSynth is just a wavetable sampler designed to be easily ported to the numerous performant microcontrollers available, such as the STM32 family, then slapped on a cartridge.

This is another SASS target, and there's enough overlap with HuSound to share resources between a PC-Engine and PC-Windows project if the CoreTone driver tick is knocked down to 60Hz.
Like HuSound, no music covers are included with the toolset as I'd like to avoid that legal grey area. However, you can download the tests I did while writing the toolset here.

If I ever purchase one of those NEC dating sim boxes to develop for, it will likely result in some odd merger between this and HuSound.

I am so done with audio for the next few years.

saturndual32

Does that demo called "Rikki & Vikki : Meet Dut", which features some beautiful sprites =P~, have anything to do with your Atari 7800 project, TailChao :D?

TailChao

Quote from: saturndual32 on 09/17/2015, 11:53 PMDoes that demo called "Rikki & Vikki : Meet Dut", which features some beautiful sprites =P~, have anything to do with your Atari 7800 project, TailChao :D?
In short : Yes.
But more on that later :)

saturndual32

Quote from: TailChao on 09/21/2015, 02:36 AM
Quote from: saturndual32 on 09/17/2015, 11:53 PMDoes that demo called "Rikki & Vikki : Meet Dut", which features some beautiful sprites =P~, have anything to do with your Atari 7800 project, TailChao :D?
In short : Yes.
But more on that later :)
Cant wait!. Rock the 7800 as hard as you rocked the Lynx with Zaku man! :twisted:. We will all appreciate it! :D

saturndual32

Quote from: TailChao on 09/21/2015, 02:36 AM
Quote from: saturndual32 on 09/17/2015, 11:53 PMDoes that demo called "Rikki & Vikki : Meet Dut", which features some beautiful sprites =P~, have anything to do with your Atari 7800 project, TailChao :D?
In short : Yes.
But more on that later :)
I know this is OT, but were can we check on that and your other projects, TailChao?

TailChao

Quote from: saturndual32 on 10/21/2015, 09:54 PMI know this is OT, but were can we check on that and your other projects, TailChao?
I would not worry about OT, we already had over a page of MML vs. Everything Else.

The games will be announced on PenguiNet, when they're ready. I keep the more personal projects (including tool releases like HuSound) on my portfolio.

Both of these are a bit barren, and I have taken down a good amount of draft / production artwork since I want things to be a surprise. The Rikki & Vikki footage is just to drum up interest and conveniently mentions nothing of that game's mechanics.

I apologize that it's taking so long for me to finish another game, but I only recently made the leap into doing my projects full time, and had to work for a few years to fund them. But I think the end results will be better for that.

Assuming my estimates are accurate, a few interesting things should show up in early 2017. That is really all I can say for now.

saturndual32

OK, sites bookmarked 8)!
Thanks!

TailChao

#73
Alright, I shouldn't be working on this - but here's HuSound 1.3cz.

There was an issue where samples in channel zero were not terminating properly. Playback would stop, but there was a single missing JMP which caused the driver to go and corrupt memory. I've also decided to release all the test covers I did while bringing up the tools. These include the original MIDIs, SASS Scripts, and prebuilt ROM.

After seeing some of the new sound tools around, HuSound's performance needs improvement. So I've decided 1.3cz will be the last version of the toolset to support the original MCGenjin mapper. If / when a future version is released it will use a new codebase and be designed for a new MCGenjin variant focusing on improved driver speed while retaining 100% compatibility with any SASS scripts written for the current version.

elmer

Cool, thanks!  :D

TurboXray

I was reading the manual.. how do you do volume and vibrato envelopes?

TailChao

#76
Quote from: TurboXray on 11/10/2015, 07:39 PMI was reading the manual.. how do you do volume and vibrato envelopes?
All control over an instrument's envelope is done through its macro script. If you look at ./HuListen/SASS/Instruments.txt in the library download or ./Instruments.txt in the Secret SASS download you can see the basic instrument set I've used for most of the test songs and covers.

The big learning curve is that everything in SASS is a script, there are no predefined envelopes. So you're free to do ADSRAR or whatever you want instead of just ADSR.

The first instrument is actually a good example of a volume envelope among other things.
Let's walk through it :
CasioTrumpet
; Approximation of Earthbound / Mother's Trumpets.
; Uses the same waveform as the CasioTone instrument, but has
; a much slower attack phase giving it a brass / wind quality.
;-----------------------
{
wave 0,4,12,24,28,29,28,24,12,8,4,3,2,2,1,1 0,2,6,12,14,15,14,12,6,4,2,2,1,1,0,0
frequency 6 -1
volume 20 2
tuning 16.0
{
rest 4
volume 30 -1
rest 2
frequency 0
volume 28 -2
rest 2
volume 22 0.113
loop -1
wait 9
volume 26 -0.113
wait 9
volume 22 0.113
endloop
noteoff
volume 24 -1
wait 18
end
}
}

The parameters inside the first set of curlybraces right after the instrument name are the initial settings. I set the waveform and initial envelope operations here. We're interested in the latter, which are :
frequency 6 -1
volume 20 2
...
The first line (frequency 6 -1) sets the instrument's frequency offset, and how that will change over time. When an instrument is played, its final frequency is the sum of its current note, any active pitch bends, and this offset value. We're setting this to 6, which increases the divider value and gives us a lower frequency. The second parameter of -1 indicates how the frequency offset will change over time. In this case it decreases by 1 per tick. So the pitch of the instrument is increasing.
The next line (volume 20 2) does the same, except for amplitude. We set an initial volume of 20 (out of 31), and will add 2 to it each driver tick. So we're getting louder.

That's our attack phase.

Continuing onward :
{
rest 4
volume 30 -1
...
We've hit a rest command, whose argument indicates we're not going to advance our script for 4 frames. Note that rest and wait are interchangeable in instrument scripts, but have different meaning in music scripts. I use both here.
Meanwhile, the frequency and volume envelopes are still calculating in the background. So by the time four frames expires :

Volume = 20 + (2 * (4 + 1)) = 30
Frequency / Divider Offset = 6 + (-1 * (4 + 1)) = 1
Some drivers I wrote pre-add these values on any change, so you need to bias the frame count by one. I think HuSound is one of these. Yay, standards.

Anyway, our next command is volume 30 -1. The volume is getting quieter, and we're starting our decay phase.

Let's skip ahead, since you've likely picked up what's going on by now. A little further down is our first loop :
...
volume 22 0.113
loop -1
wait 9
volume 26 -0.113
wait 9
volume 22 0.113
endloop
...
We set the volume to increase and then enter the loop body with a loop count of -1. This is an infinite loop, and it will continue until either the song hits a note off command, is manually stopped, or the channel is taken over by a sound effect.
Looking at the body of the loop, I'm just delaying for a bit, then reversing the direction of the volume envelope, effectively doing this : /\/\/\/\/ ... during the instrument's sustain period.
Replacing this with a frequency command will effectively give you vibrato. You can make the differentials very large and the delays very small to get arpeggios.


Now about note off commands -
We're effective looping in the sustain period above, and will stay there until we hit a rest / note off command in the music script. Once we hit one of those, the instrument script will JMP to the tagged note off area of its script (if the instrument still has control of the channel).

If we look right below the loop body, you'll see :
...
endloop
noteoff
volume 24 -1
wait 18
end
}

The noteoff tag is where the instrument will jump. If you look right after it, I'm setting the volume to decrease and then telling the instrument to terminate.


Hopefully all this is clear! SASS can be a little difficult.

TurboXray

Ahh I see. That makes sense.

Heh - I thought some of my engines were too mechanical in nature (I always worried that other people would be put off by the complexity). I can visualize that, though, having created music engines and fussing over ticks and divisors/counters.

TailChao

Quote from: TurboXray on 11/10/2015, 10:05 PMHeh - I thought some of my engines were too mechanical in nature (I always worried that other people would be put off by the complexity). I can visualize that, though, having created music engines and fussing over ticks and divisors/counters.
Yeah, it's difficult to get a good balance for a scripting language. I'm still not completely happy with some the choices I made in SASS (especially with how 16.8 or 16.16 values are entered). Graphical editors will knock down most of the learning curve, especially for creating instruments.

One nice thing about SASS is that once your very complex macro is written, all of that functionality is reduced to one "using" statement in your music script :
using CasioTrumpet
...
c.4 14
rest 1
c.4 14
rest 1
e.4 24
rest 5
b.4 25
rest 5
...

You can also use abbreviated commands, i.e. "f" for "frequency" or "l" for "loop" when you get more comfortable with the language.

In any case, all of this is still easier than creating patches for very ancient analog synths  :wink:
But I would like to write a proper graphical editor at some point.

TurboXray

You could always use blargg's sound engine (hes player) source code and interface it with some specific gui/code for your pce sound engine.

 Do you buffer your reg changes, so that they all happen near the same time? So pairing channels for phase effects, the channels get updated near synchronously?

TailChao

Quote from: TurboXray on 11/11/2015, 01:41 AMYou could always use blargg's sound engine (hes player) source code and interface it with some specific gui/code for your pce sound engine.
Huh, I didn't think of that approach. That could definitely work.
It's nice that so many tools are being made available  :)

Long term I definitely need a SASS graphical suite, since it's being used on more targets than just the PCE. Being able to just draw notes on a staff is great.

Quote from: TurboXray on 11/11/2015, 01:41 AMDo you buffer your reg changes, so that they all happen near the same time? So pairing channels for phase effects, the channels get updated near synchronously?
Yeah, that's actually one of the reasons the memory consumption is a little high. My Lynx driver doesn't do this since the resources are so constrained, but it definitely helps with the macro setup.

So for HuSound updates you do two calls : one right at the beginning of your VBL IRQ (HuSound_WriteBack) which dumps all of the register updates calculated on the last frame, then one at the end of the IRQ (HuSound_Main) which calculates the next register update set and is interruptable.

elmer

Quote from: TailChao on 11/11/2015, 02:30 AMSo for HuSound updates you do two calls : one right at the beginning of your VBL IRQ (HuSound_WriteBack) which dumps all of the register updates calculated on the last frame, then one at the end of the IRQ (HuSound_Main) which calculates the next register update set and is interruptable.
Nice, clean design.  :)

Gredler

Quote from: elmer on 03/11/2015, 10:24 PMsupport the commercial Renoise editor
My friend who is trying to make PCE tunes with renoise is having trouble getting it to export midi's that contain the intended channel information, and also linking the sounds he has access to in squirrel to what he has in renoise.

I have 0% musical knowledge, and about 5% coding knowledge, so troubleshooting for him is so hard hahaha.

Is it a fools errand for him to continue trying to use renoise, or is it possible and cockpit trouble preventing his renoise>midi>3ml>squirrel>huc workflow?

elmer

OK, switching from the MML back to this one ...

Quote from: TailChao on 11/23/2016, 02:10 PM
Quote from: guest on 11/22/2016, 01:54 PMIt'd be great if that SASS thing from TailChao had a midi--->SASS conversion.
It has one here, which is also under zlib.
Cool, thanks!  :D

BTW ... I've read the HuSound documentation and I have a question for you ...

How do you add arpeggios, vibrato, tremolo, note-transposition, and *musical* sweeps and slides to the tracks in HuSound (the hard-coded add-a-frequency-step isn't *musical*, the step size needs to depend upon the note that was played)?

TailChao

Quote from: elmer on 11/23/2016, 03:01 PMHow do you add arpeggios, vibrato, tremolo, note-transposition, and *musical* sweeps and slides to the tracks in HuSound (the hard-coded add-a-frequency-step isn't *musical*, the step size needs to depend upon the note that was played)?
I usually accomplish this by making two or three instruments with manually tuned hard steps to cover a wider frequency range, kind of like how you'd have multiple source instrument samples at different octaves for a sampler.

This is one thing I'm not really happy about, but usually one instrument won't wander around a huge octave range anyway (and to be honest many games don't even bother with this). If that kind of precision is needed you could probably build it into the SASS compiler side to autogenerate more instruments or shove some tables into ROM and let the driver deal with it.

Arkhan Asylum

Quote from: Gredler on 01/27/2016, 09:15 PM
Quote from: elmer on 03/11/2015, 10:24 PMsupport the commercial Renoise editor
My friend who is trying to make PCE tunes with renoise is having trouble getting it to export midi's that contain the intended channel information, and also linking the sounds he has access to in squirrel to what he has in renoise.

I have 0% musical knowledge, and about 5% coding knowledge, so troubleshooting for him is so hard hahaha.

Is it a fools errand for him to continue trying to use renoise, or is it possible and cockpit trouble preventing his renoise>midi>3ml>squirrel>huc workflow?
Renoise pissed me off, so I blame Renoise.

I had the best luck with MODPlug for Windows, years ago.
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!