penandlim / threejs-beatmaker

🎼

Home Page:https://penandlim.github.io/threejs-beatmaker/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Threejs Beatmaker

TODO

  • Build generic click handler for threejs objects through PickHelper
  // Call raycast from camera to normalizedPosition and store the intersected object to pickHelper.hoveredObject
  pickHelper.pick(normalizedPosition, raycastableObjs, camera);
  // Calls pickHelper.hoveredObject.userData.classObject.onClick() 
  // Returns true if onClick was called successfully.
  pickHelper.execute();
  • Add scroll handler for PickHelper
  // Call raycast from camera to normalizedPosition and store the intersected object to pickHelper.hoveredObject
  pickHelper.pick(normalizedPosition, raycastableObjs, camera);
  // Calls pickHelper.hoveredObject.userData.classObject.onScroll(deltaY) 
  // Returns true if onScroll was called successfully.
  pickHelper.scroll(deltaY);
  • Implement basic timeline (Play, Stop)
  • Scheduling notes by clicking on blocks
  • Changing notes by scrolling on blocks
    • Added onScroll(deltaY) method to NoteBlock class.
    • PickHelper object calls onScroll(deltaY) with the object where raycast is successful and scroll is detected.
  • Create Track class, containing an array of NoteBlock objects.
    • A Track object contains an array of NoteBlock objs and respective instrument, model, and colors.
  • Add basic track control & effects (Mute, Reverb, LR balance, LowFilter, etc)
  • Allow changing instrument type (MembraneSynth, PolySynth, etc)
  • Adjust instrument parameters with knobs
  • Create a class storing instrument types, parameters, and notes.
    • Using Tone.SynthOptions interface from ToneJS library instead.
    • Note that Tone.Instrument has set(options : SynthOptions) and get() methods, allowing us to easily modify each Instrument's vocal settings.
  • Autosave / autoload notes to local storage in JSON format.
    • StorageSystem class deals with saving and loading various data.
  • Allow uploading SynthOptions[] to NoSQL database.
  • Fetch other SynthOptions[] from NoSQL database.
  • Allow voting on other songs
  • Allow searching songs by name

About

🎼

https://penandlim.github.io/threejs-beatmaker/


Languages

Language:TypeScript 67.7%Language:JavaScript 27.2%Language:CSS 2.8%Language:HTML 2.3%