Antichambre Posted June 27, 2019 Report Posted June 27, 2019 (edited) Hello, This is an introduction for my new baby, a really funny toy, the HAARP (yes I like conspiracy theory ;) It's a pure MIDIbox Project, just a dedicated CS and some coding. It works with any STM32F4 Core. 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. 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. 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. 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 January 27, 2021 by Antichambre 1 Quote
Zam Posted June 27, 2019 Report Posted June 27, 2019 Hello Bruno Nothing to say...just great... Best Zam ps: I'll come back later with maybe more to say 1 Quote
Hawkeye Posted June 28, 2019 Report Posted June 28, 2019 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 Quote
Antichambre Posted June 28, 2019 Author Report Posted June 28, 2019 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 Quote
weasel Posted June 28, 2019 Report Posted June 28, 2019 (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 June 28, 2019 by weasel Quote
Zam Posted June 28, 2019 Report Posted June 28, 2019 Hello I'm back with two questions 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 Quote
Antichambre Posted June 28, 2019 Author Report Posted June 28, 2019 (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 June 28, 2019 by Antichambre Quote
Antichambre Posted June 28, 2019 Author Report Posted June 28, 2019 (edited) @Hawkeye I just remember that I made the "Force To Scale" as a regular module, for quick implementation and use in any app.https://www.dropbox.com/s/q8tais6dmtcnny8/force_to_scale.zip?dl=1 Edited June 28, 2019 by Antichambre 1 Quote
weasel Posted June 28, 2019 Report Posted June 28, 2019 (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 June 28, 2019 by weasel Quote
Antichambre Posted June 28, 2019 Author Report Posted June 28, 2019 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. Quote
weasel Posted June 28, 2019 Report Posted June 28, 2019 (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 June 28, 2019 by weasel Quote
Smithy Posted July 4, 2019 Report Posted July 4, 2019 Wow, what a great device and what an amazing demo! Congratulations Bruno! I might have to remix that melody of yours too! ;) Quote
eptheca Posted July 7, 2019 Report Posted July 7, 2019 Brilliant Bruno! I love this project Looking forward to building this Cheers, Hal Quote
Antichambre Posted July 7, 2019 Author Report Posted July 7, 2019 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! :) Quote
Antichambre Posted August 7, 2019 Author Report Posted August 7, 2019 Hello! A short jam video with the HAARP, the first one with the new ADS-7 from AVP Synth ;) 2 Quote
Antichambre Posted October 12, 2019 Author Report Posted October 12, 2019 (edited) Hi, This is some update about the Core part of the project, I just finished to design it, artwork is not perfect but PCB and assembly are ready. I achieve the size of 12 HP and a depth which doesn't exceed 45mm, overall with IDC connectors present at the back. I can reduce it to the previous 11 HP but result is less clean at the front and assembly is more complicated then it will be 12 HP. The features: Euro Module 12 HP x 45mm. 2 MIDI In/Out. 2 independent USB, one Device, one Host. Micro-SD Card. Reset and User Button. 2 leds. Power switch, acts on both external and USB power. It is optional. Automatic switching between the Power sources, EXT/USB. Priority to external first. Can be connected to a regular Euro power connector (IDC16), regulation from 12V. Can use 5V from your skiff or provide it to the bus. 'Regular' MIDIbox ports In the order: J4, IIC A and B. J5, internal ADC for 2 analogue Inputs. J8/9, SPI 5V(SRIO). J11(2xMIDI IO). J15, displays(serial only, 2 CS lines). J16E, SPI 3,3V, Reset and User buttons, 2 leds(. J18. MCAN, Ready for CAN transceiver or 'One-Wire' CAN connection. J19, SPI 5V. Some 3D render: The PCB, all SMD will be assembled by manufacturer. It can be used for small desktop project too. I designed this module for the HAARP but it can be used for other application, you can use it with the MIDIPHY Analog modules to create the perfect interface for your modular system. And you can create your own Surface Control and/or your hybrid analogue modules. Voilà Best regards Bruno Edited October 12, 2019 by Antichambre added MIDbox Ports uses. Quote
Smithy Posted October 12, 2019 Report Posted October 12, 2019 Hi Bruno, what CAD software(s) did you use to design the mockups? im currently studying CAD at the moment, Thanks for yout time, Adrian. Quote
Antichambre Posted October 12, 2019 Author Report Posted October 12, 2019 Autocad is my best friend since a long tilme now ;) 1 hour ago, Smithy said: Hi Bruno, what CAD software(s) did you use to design the mockups? im currently studying CAD at the moment, Thanks for yout time, Adrian. Quote
Zam Posted October 12, 2019 Report Posted October 12, 2019 @Antichambre Look great !!! so J18 for MCAN ? Best Zam Quote
Antichambre Posted October 12, 2019 Author Report Posted October 12, 2019 Just now, Zam said: Look great !!! Thanks! :) Just now, Zam said: so J18 for MCAN ? Yes for CAN, J18 is always the one. But Andy's wCore and Disco platform have only One-Wire connection. This one has Power pins for transceiver supply, RX and TX are separated. But you can add the regular Resistor and a Diode on the dipBoardF4 to link others Cores directly and easily with the One-Wire. This MCAN connector may be called J18E for 'extended' I suppose... A small transceiver module will be created to link the CAN bus with the external world, internally I planned to use the Euro Power connector, the power ribbon by using BUS1 and BUS2(last pins of the 16pins IDC) called CV and GATE sometime but never used in fact. Best regards Bruno Quote
Antichambre Posted October 14, 2019 Author Report Posted October 14, 2019 On 12/10/2019 at 4:50 PM, Zam said: so J18 for MCAN ? I finally decided to add CAN transceiver to the board. The modules will be able to communicate natively in midi thru the regular euro power supply ribbon, using MCAN. No need of an other board to connect to the external world too, just a connector in front which will give access to the lines MCAN_L and MCAN_H. Best regards Bruno Quote
latigid on Posted October 14, 2019 Report Posted October 14, 2019 If you didn't already, add jumpers to the CAN pins in case the buss is used in the conventional manner (CV/gate). Putting a high-speed digital signal on the power cable might introduce some crosstalk and should be tested. Quote
Antichambre Posted October 14, 2019 Author Report Posted October 14, 2019 (edited) Hi Andy, First thanks for taking a look. 1 hour ago, latigid on said: If you didn't already, add jumpers to the CAN pins in case the buss is used in the conventional manner (CV/gate). I didn't but I will add those jumpers. It's a good idea, it adds more flexibility. Done! 1 hour ago, latigid on said: Putting a high-speed digital signal on the power cable might introduce some crosstalk and should be tested. CAN(with transceiver) is a differential pair signal, then bad behaviour like crosstalk to power and audio paths should be very limited, but you're right this has to be tested, noted! Best regards Bruno Edited October 14, 2019 by Antichambre Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.