Antichambre

The HAARP, an Hardware Advanced Arpeggiator.

17 posts in this topic

Posted (edited)

Hello,

This is an introduction for my new baby, a really funny toy, the HAARP (yes I like conspiracy theory ;)


IMG_0302.jpeg?raw=1


It's a pure MIDIbox Project, just a dedicated CS and some coding. It works with any STM32F4 Core.

IMG_0292.jpeg?raw=1IMG_0293.jpeg?raw=1
 

Why? Many synths have an integrated arpeggiator, the SH-101 is well known for that, but the available parameters are still limited. There is also some good plug-in I think especially of the Ableton live's one but it's software.

So I designed an hardware one, "LIVE" oriented, starting from the @TK.'s arp example. No encoder(except for MENU section Data entry), all parameters are directly accessible and are potentiometers. The screen is a small color TFT with a resolution of 128x160(sorry for picture, colors are better in real).

It's 8 independent voices. 8 banks of 8 Presets. Session are saved/loaded from the SD Card.
1905_mb-haarp_euro_v1b_6_06.png?raw=1
The Arpeggio parameters are divided in 3 sections:
First is the TIMING Section (Purple pots):

  • On/Off button,
  • HOLD Button, it holds or releases the Notes in the notestack.
  • The MODE Pot, it's UP, DOWN, UP-DOWN and AS-PLAYED, fr the moment but I will implement more.
  • The RATE, from slowest to fastest, from 4 Bar to 32nd with dotted and Triplet value.
  • The RESYNC, it retriggers the arpeggio, values are the same as RATE parameter.
  • The OFFSET, it will shift left or right the starting step(note). Is Note Stack and MODE dependent.
  • The DELAY, it will delay the whole arpeggio within the step range(duration), is RATE dependent.
  • The GATE, the length of the Note, max is STEP length, is RATE dependent.
  • The SHUFFLE, it will delay all the odd steps, in the range of an half step, is RATE dependent.

Second is the TRANSPOSITION Section (Yellow, Orange, Red):

  • Simple Transposition On/Off (Yellow).
  • Simple OCTave Transposition, +/- 10.
  • Simple SEMItone Transposition, +/-12
  • Repeat On/Off.
  • Repeat, LOOPS number, 1 to 8.
  • Repeat, SHIFTing on each loop, +/-32 semitones.
  • Force to Scale On/Off
  • Force To Scale, SCALE, list is the same as the Force to Scale example from the repo.
  • Force To Scale, ROOT from C to B semitone.

Third is the VELOCITY Section.

  • REGEN Pre/Post(Target process) button.
  • REGEN, +/- 100%
  • Target process On/Off.
  • TIME, the time to reach the target value, in PRE initial value is the regenerated value. in POST initial value is the one stored in the Note Stack.
  • TARGET is the targetted value, 0 to 127.
  • RETRIG, if on the TIME is retriggered by the RESYNC parameter.

 

The main page of the screen represents an octave range, the note color changes depending on the octave, there's a Velocity section on the bottom, it's like a piano-roll.
In the code, the arpeggio processing is ready, it remains me to complete the MENU section, I was waiting for the CS PCB to write it, now I can... ;)
 

This little guy is to much fun, so I can't keep it for me. Then i will propose it to you ASAP. and I hope it will help me to finance some other bigger projects I've got in my back-pocket ;)
I will try to make it available in two format, I'm currently working on a PCB for USB host/device, sdCard MIDI etc.. which will fit for both version and will be reuse for other small toys like that.

  1. An Eurorack version for the patching addicts. I used a MCP3204(4 channels) instead of a MCP3208(8 channels) for the AINSER, it's an AINSER32. I use only 2 channels for the 16 pots(8Multiplexed lines * 2 channels), it remains 16 analog Inputs which are accessible to connect some CV In Modules, thanks to @Hawkeye for making me think about this.
    The SRIO Chain is available too, you can connect GATE In (DIN) easily.
    You will be able to connect the MIDIPHY CV/GATE Out Modules which will be available soon. @latigid on is working on it.
    MCAN will be available, for an internal MIDI bus within your Eurorack, I reuse the BUS1 and 2 from the Euro Power connector for that purpose.

    1905_mb-haarp_euro_v1b_4_02.png?raw=1

     
  2. A Desktop version, for MIDI purpose only(except if i find a way to add some CV/Gate without designing a too much big box).

 

Voilà! More information will be available soon.
For the moment this is a small video I made, I seem a little febrile but it's because I continue to discover it every day.
 


I really love this little toy, it is very effective and musical, even in LIVE and if the Force To Scale is activated, there's no wrong note ;)

Best regards
Bruno



 

Edited by Antichambre
1 person likes this

Share this post


Link to post
Share on other sites

Hello Bruno

Nothing to say...just great... :cheers:

Best

Zam

 

ps: I'll come back later with maybe more to say :rolleyes:

1 person likes this

Share this post


Link to post
Share on other sites

Looks well thought out, nice job!

Share this post


Link to post
Share on other sites

Great job, Bruno!

Hope you are not mad, if I also implement a few (not all!) of the arp functions on the LoopA arp - but yours will be first, over here still working on it! ;-)

Many greets and have a nice weekend!
Peter

 

Share this post


Link to post
Share on other sites
1 hour ago, Hawkeye said:

Hope you are not mad, if I also implement a few (not all!) of the arp functions on the LoopA arp - but yours will be first, over here still working on it! ;-)

Hi Peter,

There is really no problem. LOOPA and HAARP are more complementary than competitive.
Both are "real time" oriented but have different use and operation.

(I do not remember if you implemented the "Force To Scale" if it's not the case, it can be a good feature on your machine too.)

Internally their process structure are very different, but if you want to know how I coded some parameters, tell me if I can 'help', even if I feel pretentious to say that to someone who codes better than me.
There is no competing here, the important thing is to give life to all that and share it.

But for sure, it's better if our machines or modules can be complementary.
I also look forward to the @Phatline's CC-Looper, here again we are in the complementary.

Best regards
Bruno
 

Share this post


Link to post
Share on other sites

Posted (edited)

Man this is absolutely amazing! Will definately get one if you make them available! I can only imaggine how much time nd effort went into this, incredible.

I have one question which i couldn't answer watching the video: my favourite feature in an arp which unfortunately isn't realized in many is a melodic pattern relative to the pressed keys. there is a m4l plugin that does exactly this, http://www.maxforlive.com/library/device/3545/arpeggio-designer

Does your arp support something like this? you have the piano roll and all in there so if not, i think it would be easy to add and make the arp even more unique?

That way you can write a little rhymthmic sequence, monophonic or even polyphnic, and it will alway be adapted to exactly the keys you press. much more interesting than basic up/down/rnd functions, and makes it super easy and fun to write chord progressions and figure out voicings. The new native instruments kontrol keyboards also have something like this, calling it a "sequence" i think.

Edited by weasel

Share this post


Link to post
Share on other sites

Hello

I'm back with two questions :decayed:

Is there any code modification for various MCP320x in muxed configuration ?

Color TFT is so great, how this is handled ? I suppose there is massive special driver for it...

Anyway I'll have a look when code available

again, un grand bravo !

Best

Zam

Share this post


Link to post
Share on other sites

Posted (edited)

1 hour ago, weasel said:

I have one question which i couldn't answer watching the video: my favourite feature in an arp which unfortunately isn't realized in many is a melodic pattern relative to the pressed keys. there is a m4l plugin that does exactly this, http://www.maxforlive.com/library/device/3545/arpeggio-designer

This feature can be easily considered. we can add some 'USER Patterns' in the MODE parameters. I will give it a try when I will add other Modes like converge/diverge etc...
 

1 hour ago, Zam said:

Is there any code modification for various MCP320x in muxed configuration ?

Like it is, the AINSER module works only for MCP3208, there's no define for this point, but it's possible to enhance it for MCP3204 and 3202, you must read only 4 or 2 channels instead of 8 on each muxed lines increment and manage the data position in the array. It's possible but I did not I don't use the AINSER module, I re-write an adapted one in the app directly, It let the AINSER module available for other features.

 

1 hour ago, Zam said:

Color TFT is so great, how this is handled ? I suppose there is massive special driver for it...

Yes it's a special driver but I write it as an app_lcd module this can be reuse for other app, the MIOS32_LCD and GLCD functions continue to work if you correctly set the back and fore colors, but some direct APP_LCD_xxx functions were added for specific pixel depth.

1 hour ago, Zam said:

Anyway I'll have a look when code available

I will make this code available on next commit, It's also a good practice for me to work on a personal repo before working on the MCAN branch of the official MIOS32 repo.

Best
Bruno

Edited by Antichambre

Share this post


Link to post
Share on other sites

Posted (edited)

2 hours ago, Antichambre said:

This feature can be easily considered. we can add some 'USER Patterns' in the MODE parameters. I will give it a try when I will add other Modes like converge/diverge etc...

this would be so awesome! you could just use your piano roll, and map c1 to the first pressed key, c#1 to the second pressed key etc etc.

or maybe a dynamic "force to scale" that limits any arp noe to the currently pressed keys. more of a "force to notes".

does your arp currently support gaps/silent steps or only via velocity 0? since you have the full very impressive piano roll thing implemented. i think there's a huge potential for an arpeggio/step sequencer crossover like what that Arpegggio Designer does. Not sure if the midiphy SEQ does something like this @Hawkeye@latigid on?

it would be more of a keyboarder arp function as opposed to an eurorack user i guess.

 

two more thoughts from a regular ableton arpeggio user:

- gate values bigger than one step can be a lot of fun and create overlapping poly notes, or legato mono notes. ableton goes up to 200%, maybe even up to 4 steps length though? right now it looked like yours ends at one full step length w no overlaps.

- i didn't fully understand your offset and delay parameters yet but combined with the resync they seem to add what looks like random timing jumps in the video? i LOVE that. having an option to add some kind of randomness/humanize to both timing and velocity is a very big feature of an arp . maybe think about a (hidden shift) function to add some random to velocity, or alternatively to the regen/target. i do this all the time on my arps in ableton. you could also implement this for the CV ins you are mentioning i guess, just CV control the delay time or the target velocity level with a random LFO, was that the idea you had for the CVs?

 

after 3 months of heavy almost full-time work and countless hours in this whole MCU music field i still can't even start to fathom how you pulled this off bruno. the piano roll programming is insanely good for a one man independent diy project. and the whole workflow and choice or parameters seems very well thought out judging from your video!

 

i also have some questions regarding general arpegggio/note stack functions, i need a notestack to spread out 6 poly voices to 3 duophonic synth boards. but i guess i have some reading up on that to do first and obv don't wanna derail your thread with this.

Edited by weasel

Share this post


Link to post
Share on other sites
42 minutes ago, weasel said:

this would be so awesome! you could just use your piano roll, and map c1 to the first pressed key, c#1 to the second pressed key etc etc.

Or enter the note sequentially like any old synth do, don't worry i know how ;) I already through about this feature and consider the architecture for it too since the beginning, I want it too, but It's a step by step work.
Once I publish it, anyone can enhance it, And I will be very happy about this, thankful too. You really have to go into the MIOS32 if you already use an Arduino, and have some coding knowledge,it is not so much more difficult. I don't deserve anything, this OS is made for music.
You want a bpm generator, here it is, you need a button and led matrix here too, you wants potentiometers to you project, no problem etc... everything is already there and ready to use.

 

1 hour ago, weasel said:

does your arp currently support gaps/silent steps or only via velocity 0?

Not for moment, I though about this too, we can define note number 0 as a silent note and treat like  only for the MODE 'User Pattern" feature we mention above

 

1 hour ago, weasel said:

gate values bigger than one step can be a lot of fun and create overlapping poly notes, or legato mono notes. ableton goes up to 200%, maybe even up to 4 steps length though? right now it looked like yours ends at one full step length w no overlaps.

 

1 hour ago, weasel said:

they seem to add what looks like random timing jumps in the video

For overlap(Poly)This is a MIDI voice feature only, they can control CV/Gate too. But a polyphonic processing to control multiple CV/Gate is possible.
I use the sequencer module and midi note are scheduled so you can set it by the length you want, they are not limited by the mechanic of the arpeggiator and the step length.
Some sub parameters for each section or panel parameters will appear when the SECTION MENU pages will be available, like for RATE normal/triplet/dotted filtering for the potentiometer to jump over these timing periods, and avoid timing mistakes for real-time too and create good snapping effect for example ;)
 

 

1 hour ago, weasel said:

i didn't fully understand your offset and delay parameters

yes i forgot to show them.
OFFSET is within the range of +/- the arpeggio note length, with it you shift the note in the steps, but the notes keep their order in fact you just select the note to start with.
DELAY, it delay the whole arpeggio sequence in the range of a step duration.

 

1 hour ago, weasel said:

LOVE that. having an option to add some kind of randomness/humanize to both timing and velocity is a very big feature of an arp . maybe think about a (hidden shift) function to add some random to velocity, or alternatively to the regen/target. i do this all the time on my arps in ableton. you could also implement this for the CV ins you are mentioning i guess, just CV control the delay time or the target velocity level with a random LFO, was that the idea you had for the CVs?

Each panel parameter will have their CC number and an associated modulation CC number, all accessible from the CV In too, it's MENU things.

 

Share this post


Link to post
Share on other sites

Posted (edited)

you are getting me very excited for this.. yes i didn't really start going into mios code yet, just fiddling with NG configs. and i already realized i won't get a custom notestack w/o recompiling. it's one of the next 2-3 upcoming steps on my synth. and of course then i'll also hopefully get to look at your code and maybe contribute something to it! like, i'm good at adding hidden jokes in the comments. usually unfunny ones though.

 

for the poly/overlap, yeah my bad i only think of midi and poly synths, and ignore the eurorack needs. but you have it all figured out already!!

CC/CV combination sounds deadly.

i think a gap note 0 like you describe would be a great workaround. you should think about using that even for your regular arp, cause you can easily create much more complex rhythms with that as opposed to straight hammering 16ths lines... and let's be real who ever needs to play a C-2

Edited by weasel

Share this post


Link to post
Share on other sites

Wow, what a great device and what an amazing demo! 

Congratulations Bruno!

 

I might have to remix that melody of yours too! ;)

Share this post


Link to post
Share on other sites

Brilliant Bruno!

I love this project

Looking forward to building this

Cheers, Hal

Share this post


Link to post
Share on other sites
On 04/07/2019 at 9:30 PM, Smithy said:

Wow, what a great device and what an amazing demo! 

Congratulations Bruno!

 

I might have to remix that melody of yours too! ;)

 

6 hours ago, eptheca said:

Brilliant Bruno!

I love this project

Looking forward to building this

Cheers, Hal

 

Thank you Guys! :)

Share this post


Link to post
Share on other sites

Hello!

A short jam video with the HAARP, the first one with the new ADS-7 from AVP Synth ;)
 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now