DigiChain - web app for making sample chains

Adding a few Octatrack specific shortcuts on the slice panel

Shift+Click a slice to toggle slice looping (this will loop from the beginning to the end if on, one-shot if off, one-shot is the default and highlights the slice purple).
Ctrl/Cmd+Shift+Click will toggle the file loop point to start from the beginning of the clicked slice to the end of the file - one click will set to loop, another to ping-pong, and another to off). loop section will be dotted blue line above the slices, and dashed yellow when ping-pong.

And there is a new ‘Create .ot’ button, to download the .ot file only without needing to re-download the sample after modifying the slice data.

Tempo, bars/loop bars values are also being correctly calculated now - tempo from the filename if present, or by attempting to derive it from the audiobuffer, which works fairly well if there’s a beat in the sample.

4 Likes

v.1.4.9

  • Store list in indexedDb for optional restoring of the last session on next load.
  • Map the Ctrl key to the Cmd key for macOS keyboard shortcuts.
  • Automatically ignore empty or nonsense cue markers (e.g. zero length or start/end greater than file length, end greater than start).
  • Improve handling of joining chains with other chains/files and slice types.
  • Normalize the slice-type to the common format when processing internally.
  • Show the number of slices if the file has any on the slice-grid icon instead of OT/DC/OP text.
  • Improved the speed of conversion between spaced/none-spaced chains from the slice panel.
  • Allow users to change audio context when files are loaded without emptying list; An advisory message to confirm the action is shown, as the sample rates of all files in the list are internally resampled to the new context.
  • Decoupled the working audio sample rate from the export audio sample rate. This allows users to work at 44.1kHz, but export to 48kHz for example without destructively resampling the list source buffers.
  • Audio context options are now an audio config panel, allowing arbitrary sample rates, and choice of bit depth and channel combinations.
  • A list of common configurations by hardware name are available in the audio config panel.
  • Audio config panel has slice grid options inputs so last used values are remembered. These values are also updated as part of the common configs list options.
  • ‘Retain session data between browser refreshes?’ setting on settings panel.
  • Gain adjustment on the edit panel (Thanks to eljeff).
  • Option in settings panel to download single files when Shift+Clicked to prevent accidental downloads being triggered.
  • Added rough stretch to selected actions list, this attempts to retain pitch while doubling the duration of the sample.
  • Importing of Polyend Tracker (OG) .pti instrument files (mono only).
  • Toggle slice looping from the slice panel (useful for .ot exports).
  • Toggle file looping point from the slice panel (useful for .ot exports).
  • Correctly calculate the tempo and bar values on .ot exports.
  • Create .ot button on slice panel to create a .ot metadata file independently of downloading of the audio file.

image

12 Likes

Once more: Thank you so much for creating and maintaining this tool, it brings a lot of fun and I’m very much enjoying it @brian3kb!!!

2 Likes

Amazing app. Thanks for all the enhancements.
Is it possible on the edit screen for there to be a pitch detect tool? (probably very complicated?) Could be a ‘set to pitch C’ etc…

Also, some functions would be great as a ‘select all’ eg normalise, trim right, for a list of samples, maybe possible already?

1 Like

Thanks!

Do the ‘selected actions’ not cover that?

And for pitch detection, I have tried this previously, but could take another look as detecting from a smaller user specified selection of the audio might get me better results than past efforts.

1 Like

Good job ! Respect.

I have a feature request:
A possibility to create a .ot slice file with a specific loop point from 2 samples, the first one being the attack, the second one the loop part.

I was thinking of something like odd imported samples are the beginning of the slice, the even the looped part. The goal being to have 64 slices with loop points, from 128 samples or less.

1 Like

Thanks!

With the Octatrack being the only device that supports the loop points that I’m exporting to, when adding OT specific features I’ve been trying to do so in a way that (hopefully) doesn’t cause confusion for those exporting for use on other devices.

DigiChain is mostly geared towards the Digitakt.

However, I have been considering a focused small tool for just working with .ot files to do the stuff that’s tedious on the Octatrack itself (mostly due to my aging eyesight!) - is that something others might also have interest in?

7 Likes

yes :slight_smile:

1 Like

Sure. Maybe you can create a thread in Octatrack category, or post here :
.OT format definition

1 Like

Yes. For sure.

These “little things” you’re doing are having a BIG impact on using samples in these machines.

Really great work. :raised_hands:t2::raised_hands:t2::raised_hands:t2:

3 Likes

I’ve just registered here after just finding this after looking for this kind of tech for … ages! :clap:

If it’s not too inquisitive to ask… what were the main challenges in making this, and what did you need to know, and what experience(s) did you benefit from?

I’m aware of how some tools in some DAWs and apps let you reduce the manual-effort when using and manipulating samples, from detecting the beats in a measure, to identifying the sweet-spots for splitting samples, and beyond…

I’m wondering what technology was used, and what limitations/challenges there are in implementing in other arenas and techstacks (eg equivalent in ruby, or webaudio … and beyond!) , if that’s advantageous/required when trying to integrate a sample-tool like this into an Audio-Development-Environment (ADE™) , so you can make and get and use and share samples and performances with SonicPi, for example :heart_eyes:

To the repo! Stellar work :+1:
Jonny (Another Aspiring developer / Audio Addict:)

1 Like

I think it was this thread (possibly) where someone mentioned the technique of ‘back-to-back’ samples (my terminology, sorry) where the first half of the sample is normal, and the second half is a related sample, a variation of the first, but reversed. The idea being, on a sample trig lock, you can lock it to reverse for the variation (and set the sample playback length to half) ?

Was it this thread, and if so, does DigiChain support this technique ?

Thanks, and welcome to the forum!

I started this originally just to pull the audio data out of some MachineDrum sysex files, expanded on that to join the samples to use on my Digitakt, then decided to share the tool here.

Prior to this, I hadn’t done much in the way of audio programming, so this was mostly just me learning about the web audio API’s and what’s now possible with those in the browser, and it’s just evolved from there.

I actually added tempo detection for the last update as it was needed to correctly calculate the metadata in the .ot file generation, I plan to surface this to the edit panel to work on the selected part of the waveform.

This wasn’t originally intended to grow to such a large project, so there are no JavaScript frameworks used, and other than for bundling/minifying the source, no npm dependencies, you can just pull the repo and serve it locally. I write software as my day job, but I like my own tools and side projects to be as dependency independent as possible, the third party tools it does use are few, and are at the bottom of the resources.js source file with their repo links in the header comment of main.js, this is also all vanilla-JS, HTML and CSS.

Probably quite a lot of challenges, the web audio and file handling are part of the JS / browser specs, so unlikely to exist outside of the browser if porting to non-JS.

You’d probably have to wrap it in something that uses webview, like Tauri, build that wrapper app and use the JS-otherlang bridge to pass data around.

There are lots of tools around that do what DigiChain does, but you have to bounce around between apps to do all the parts, and is one of the reasons I continue to add things I think “would be useful if it just could do x too!”.

6 Likes

Is this the “Ping-Pong” selected action? For each selected sample in the list, this adds a reversed copy of the sample to the end of itself.

2 Likes

I will check that out thanks

1 Like

Very nice feedback :thup:

2 Likes

A use case mostly for myself, getting slices and samples directly from Renoise .xrns project files.


6 Likes

Actually no, what I wanted was something like this

image

Where those two ends of the sample started life as two different samples, A and B, and what you see is A (forward) followed by B (reversed from the original)

I did this for myself with a script using sox in the end.

The motivation for this was to get two alternate sounds on a track, just by hitting the reverse button on model:samples. Two alternate kicks for example.

2 Likes

Got it, I’ll add a back-to-back toggle in the settings where each even sample would be reversed in the exported chains, for spaced chains the reverse will happen after the sample has been padded to maintain the correct lengths for slice grids.

2 Likes

Anyone use this with the new slice machine to get round robin sampling going?

My thought was that you could random lfo the slice and then put a bunch of ‘acoustic’ drum sounds in there like ableton and then get some variation. In my slim attempts tonight (being brand new to digichain) I wasn’t successful. I don’t exactly have a great set of round robin drum samples lying around though I did dl these for free: Round Robin 808 R&D - Test Kit - The Sample Company. Before you go digging, the ones ion the ableton ‘packs’ are custom .aif files and I don’t thinka re worth your time unless you create a script to clean+convert them or something)

Settings I’m trying:
Slice set to 9/16
LFO w/ Depth of ~15.7~?*
LFO HLD

*64 slices in the setting so LFO depth may be off, but for the idea it jumbled it enough. I’m not caring enough to do the math but its what, 8/64 x 127?

Here are the ‘chains’ I made to try with:

(You should be able to right click save as)

Getting a lot of clicks with low end stuff if played too rapidly- to be expected. The snare worked… ok (they were inconsistent in the sample pack). Hat worked better… Anyone try this or know where I could get ~8/16/32 nicely sampled and normalized acoustic drums (legally) for free 99 or cheap? (Realizing this is a large ask…)

Here is the result with these largely bunk samples (in the 8 snares there are 4 tom-ish sounds lmao)
This pattern is uhm, quite bad. the hope was to example to the variation.

Also realizing the samples ‘voice steal’ from one another, so this may be a bit of a daft pursuit. I was hoping sending them to the verb + comp could create a more ‘room’ sounding kit but I’m giving up for the night.
Ok last edit 4rl, I needed to add some comp+verb. Better example, perhaps?:

I feel like this ~could be used. Thread is long, I didn’t read 500 posts. I know people have solved this before by round robin’ing through sample slots but I figured this tool could make it easier.
Pros:(?) You can get some variation in your pattern
Con: You lose an LFO, you are stuck in slice mode on a one shot…