Week 10

This week I plan to implement a feature across the whole project where information about the unprocessed DSTFT matrix (file name, number of frames, frame size, spectral frame size and hop size) is saved as a text file, and read whenever a spectral effect is opened.

‘text_file_read’ abstraction

The beginning of this week has been focused on refining the playback abstractions. I have integrated Tadej Droljc’s poking ‘holes’ with ‘jit.nosie’ abstraction into my ‘frame_interpolation_playback’ abstraction. I have also drawn inspiration from Jean Francois Charles’ description of transient-based playback speed alteration in his article and designed my own transient playback abstraction. I decided not to investigate Francois-Charles freeze frame playback abstractions as it would not highlight the audio processing techniques in my project. Over the last few days I have experienced some issues in playback speed management given user-specified stationary and transient rate. I fixed this by using ‘send~’ and ‘receive~’ objects to send the updated frame number sync into the ‘jit.peek~’ reading the 1d_transients matrix inside the ‘transient_playback’ abstraction.

I have implemented the blur_water global transformation, inspired by Tadej Droljc’s abstraction ‘Blur Water Effect’. I have created the ‘line_alphablend’ abstraction from ‘circlepoint_&_line_alphablend’ to just display the line, as a circle click point in this context is useless because the information in the ‘jit.window’ is distorted so much by the blur water effect.

I have also decided that with the spectral_smear abstraction, I would not give the user the option to align the playback head with the smeared region, as the difference between normal data and smeared data would not be highlighted.

In building the ‘time_scrambler’ abstraction, I added 256 y-axes into the scrambled matrix that would reposition the matrix ‘noise_fractal_unprocessed’, rather than 128 (which Tadej Droljc did), as I wanted greater accuracy when the frequency bins would be upscaled when passed into the ‘jit.repos’ object. I knew this would come at the cost of computer memory, but since making the decision to compartmentalise the project in such a modular fashion CPU power has been less of an issue.

However, I have since realised this won’t work, as 257 is longer than Max’s max list length (256), meaning that a completed list of 257 was not being passed in completion to the right hand-side ‘jit.fill’ in time_scramble_process – I have resorted to 129.

The randomly scrambled matrix which repositions the unprocessed DSTFT matrix ‘noise_fractal_unprocessed’ in ‘time_scrambler_process’

Leave a comment

Your email address will not be published. Required fields are marked *


*