Tahti.studio – a groovebox for the browser

not sure if i mentioned this already but: i totally understand the confusion, and initially those were indeed buttons. accidentally pressing them when just trying to change the track quickly started to become annoying though. i still felt like indicators were important so i left them there. tip: you can press the S and M keys when hovering a tab with the mouse to quickly mute/solo other tracks without having to switch to them :slight_smile:

this is a good point, there is some empty space before the rendered WAV-file at the moment. should be very easy to fix!

1 Like

gave this a shot but it’s unusably laggy! tempo is all over the place, lots of crackling. have it set to max latency with nothing else open and still no dice. opera, win10

Opera might be the problem here… I’ve only used Tahti in brave but every other chromium based browser should work quite flawlessly

haven’t tested with Opera myself, perhaps they have a lacking WebAudio implementation or something… although Opera is apparently using Chromium and V8 under the hood :thinking: i’d suggest trying it with Brave, Firefox or Chrome nonetheless.

fixed, turns out my power management settings on battery (80% cpu restriction) were messing with my network drivers and causing massive dpc spikes. I hate windows!!!

2 Likes

@maxjvh Some users on the AudioBus forum got it working inside AUM on the iPad:

6 Likes

If you are compiling DSP stuff to C++… React native has a wasm polyfill :upside_down_face: (if mobile is something you are interested in).

But yea keep it on web and accessible. Thank you for this project!

Hope you got your hosting egress figured out. Bunch of CDNs are very cheap now!

Is there an easy way to hook up a WASM AudioProcessor to audio given there’s no WebAudio on React Native (unless you use a WebView)?

That is a great question. Not sure why I blanked on that aspect. Maybe you could have a pointer to an empty webview? No clue how to communicate between them though. Seems sticking with web is the best option here. Good call!

Yeah I actually started a little prototype groovebox thing which does this, using Tone.js, just as an experiment (with a 0px high webview, though you have to interact with it initially to allow the AudioContext to start).

The way I pass events into the WebView is with WebView#injectJavaScript, calling a global “receive message” function exposed from the WebView which then calls into the WebAudio stuff. The way I send events back is using window.ReactNativeWebView.postMessage.

It does work, kind of, but felt pretty clunky. I guess you could refine the communication mechanism a fair bit though with some abstractions, this was a total hack. I’ll try to tidy it up and upload it sometime if it’s of interest!

I’ve done a fair bit of work with React Native UIs for audio apps (using JUCE for the audio) so this is an area of interest to me hence my question :smiley:

1 Like

very cool, thanks for sharing!

i wonder if i should first focus on building a plug-in version or a mobile app :nosey: just switched the underlying UI framework (from React to SolidJS, not live yet though) and i think the performance might now good enough to just embed it in a plug-in or mobile app (instead of rebuilding the entire UI from the ground up as i had planned earlier).

1 Like

Are you working on an app version of tahti now ?? That would be so amazing

1 Like

version 1.4 is out :aquarius: tahti.studio/exyxdgqy

the biggest new feature is sample slicing, so you’re now able to

the basic workflow is pretty…basic with support for creating slice grids and moving multiple slices at once:

individual slices can also play in reverse! but what i think makes slicing even more interesting is the ability to automatically chain multiple samples from the library into one, automatically setting its slice points:

this feature is kind of a distant relative to sample-locking on Elektron machines. it can also be used with single-cycle waveforms:

no cross-fading though, so can’t be used as a wavetable synth :cry: (yet)

other notable changes include:

  • search for samples in the library
  • arrow-key navigation in the library
  • parameter for smoothing the LFO signal
  • ping-pong mode for delay
  • option to normalise rendered audio
  • improved visual appearance
  • improved user interface performance
  • the play button now includes a triangle

check it out! :slight_smile:

13 Likes

Holy crap ! Pardon my french but how the f are you able to do all this. If I’m completely honest i think the browser thing is hindering what could be an insane standalone program, on the other hand it probably facilitated a lot on the programming side. I’d love to have your opinion on this. (And I’d love to have tahti on my iPad as an app😭)

3 Likes

İ wish this was an app! Amazing :fire:

1 Like

yeah, tahti only existing in the browser is definitely hindering many from using it, including myself :sweat_smile: but you’re right, it also facilitates fast development on the other hand.

however, i’ve started working on a plug-in version, which also takes it a big step closer to existing as a native app. the dream would be to have browser, plug-in and mobile versions and being able to seamlessly share patterns between them :drooling_face:

6 Likes

I may have mentioned this before in the thread, but I’ve built a library for creating JUCE plugins/apps with web UIs that may be useful for this – it runs the web UI in a JUCE webview, but the audio runs as native JUCE code, and the library provides methods for communicating between the two. It’s kinda alpha-ish but someone has expressed an interest in maintaining it, so if you’re interested to learn more give me a shout via DM.

3 Likes

Your app is amazing man! Sometimes I do beatmaking survey courses with teenagers, for youth associations, and I would love to try with this app, so they can keep working on their beat on the phone, or at home, without having to install or something :wink:

2 Likes

hello everyone! it’s been a while but i’m back with a new tahti version: 1.5.0 :cloud_with_lightning:

this’ll probably be the last version for a while; next i’ll start working on the plug-in since i’d now really like to use this in a DAW.

but until then, the new features are:

internal resampling & rendering tracks to separate files

create something, resample it, slice it, repeat

image

interactive tutorials

probably useful both for newcomers and more advanced users

light theme

it doesn’t always have to be so ominous

pattern name randomiser

so you can come up with inspiring names like:

image

also other smaller things like:

  • new filter drive parameter
  • new saturation bias parameter
  • support for longer samples (~12 seconds @ 44.1 kHz)
  • improved resolution for modulation and sample playback (FM sounds better)
  • nicer-looking and more logical interface
  • too many bug fixes to count

check it out at tahti.studio!

9 Likes