<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>VJ UNION: calebhmeyer</title>
    <description>The latest articles on VJ UNION by calebhmeyer (@calebhmeyer).</description>
    <link>https://vjun.io/calebhmeyer</link>
    <image>
      <url>https://vjun.io/uploads/user/profile_image/1327/b4c5efc4-dc5b-4750-8857-6e0194e2083a.png</url>
      <title>VJ UNION: calebhmeyer</title>
      <link>https://vjun.io/calebhmeyer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://vjun.io/feed/calebhmeyer"/>
    <language>en</language>
    <item>
      <title>Free VJ Pack - Organic Lit Bubbles</title>
      <dc:creator>calebhmeyer</dc:creator>
      <pubDate>Tue, 03 Dec 2024 22:36:58 +0000</pubDate>
      <link>https://vjun.io/calebhmeyer/free-vj-pack-organic-lit-bubbles-39nk</link>
      <guid>https://vjun.io/calebhmeyer/free-vj-pack-organic-lit-bubbles-39nk</guid>
      <description>&lt;p&gt;Hey yall, heres some more fun content. &lt;br&gt;
This was in a ballroom...full of balls. Glass balls. &lt;br&gt;
I lit the balls with my rig. &lt;br&gt;
I got on a ladder and filmed the balls. &lt;br&gt;
I spun around the balls. &lt;br&gt;
I edited the balls. &lt;/p&gt;

&lt;p&gt;Here are the balls. &lt;br&gt;
Free balls are the best balls.&lt;br&gt;
Creative Commons license, use it however. Pass it on. &lt;br&gt;
&lt;a href="https://www.dropbox.com/scl/fo/mbvmp9e3lef1w6l2dxc1p/AM0va_jafMaM581bi0IZKSY?rlkey=f0g6u3bs4z587bu6otqkuwszj&amp;amp;st=u4h7k09s&amp;amp;dl=0"&gt;https://www.dropbox.com/scl/fo/mbvmp9e3lef1w6l2dxc1p/AM0va_jafMaM581bi0IZKSY?rlkey=f0g6u3bs4z587bu6otqkuwszj&amp;amp;st=u4h7k09s&amp;amp;dl=0&lt;/a&gt;&lt;/p&gt;

</description>
      <category>organic</category>
      <category>vj</category>
      <category>free</category>
      <category>visuals</category>
    </item>
    <item>
      <title>Facetracking app for beta testers </title>
      <dc:creator>calebhmeyer</dc:creator>
      <pubDate>Tue, 29 Oct 2024 17:37:58 +0000</pubDate>
      <link>https://vjun.io/calebhmeyer/facetracking-app-for-beta-testers-65i</link>
      <guid>https://vjun.io/calebhmeyer/facetracking-app-for-beta-testers-65i</guid>
      <description>&lt;p&gt;I’m looking for 10 beta testers that are in events or immersive arts to test out my new program. &lt;br&gt;
It’s a Facetracking app. It outputs DMX or MIDI of the largest face in the scene. &lt;br&gt;
It can be used for an automated followspot, or immersive arts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://4386064875399.gumroad.com/l/dhndtd"&gt;https://4386064875399.gumroad.com/l/dhndtd&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>immersive</category>
      <category>dmx</category>
      <category>midi</category>
    </item>
    <item>
      <title>3D illusion viewer. </title>
      <dc:creator>calebhmeyer</dc:creator>
      <pubDate>Sat, 26 Oct 2024 20:46:30 +0000</pubDate>
      <link>https://vjun.io/calebhmeyer/3d-illusion-viewer-4bal</link>
      <guid>https://vjun.io/calebhmeyer/3d-illusion-viewer-4bal</guid>
      <description>&lt;p&gt;Recently put together this executable that uses Deep Learning face tracking models to output 5 midi notes or DMX channels to indicate the largest faces xyz position. &lt;br&gt;
This can be fed into a number of applications. &lt;br&gt;
One ideal use case is to create this strange 3D illusion. It works well with video cameras and can fool one eye, but the illusion is lost a bit when using both eyes and viewing in person. Hopefully that can be changed soon. &lt;br&gt;
Both video demos will be available soon on YouTube, and the exec for sale soon. It will be super affordable. &lt;br&gt;
For now, here are two quick videos I took before cleaning my office up for another shot (which hasn’t happened yet) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.dropbox.com/scl/fi/dw27y00zzyzk0j8se0k9m/Video-Oct-15-2024-1-51-11-PM.mov?rlkey=8etlk1h9z312043do1ya0vphl&amp;amp;st=grfhc7uo&amp;amp;dl=0"&gt;https://www.dropbox.com/scl/fi/dw27y00zzyzk0j8se0k9m/Video-Oct-15-2024-1-51-11-PM.mov?rlkey=8etlk1h9z312043do1ya0vphl&amp;amp;st=grfhc7uo&amp;amp;dl=0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.dropbox.com/scl/fi/kfe614dslqa4un17ad7kw/Video-Oct-15-2024-1-59-50-PM.mov?rlkey=pf5sm3kkq4pfuoujcce91j80g&amp;amp;st=gomzgti9&amp;amp;dl=0"&gt;https://www.dropbox.com/scl/fi/kfe614dslqa4un17ad7kw/Video-Oct-15-2024-1-59-50-PM.mov?rlkey=pf5sm3kkq4pfuoujcce91j80g&amp;amp;st=gomzgti9&amp;amp;dl=0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;YouTube for follow up: YouTube.com/calebhoernschemeyer&lt;/p&gt;

</description>
      <category>unrealengine</category>
      <category>python</category>
      <category>ai</category>
      <category>immersive</category>
    </item>
    <item>
      <title>Midi Control Change is like using Chunky peanut butter as lube. </title>
      <dc:creator>calebhmeyer</dc:creator>
      <pubDate>Wed, 23 Oct 2024 17:09:17 +0000</pubDate>
      <link>https://vjun.io/calebhmeyer/midi-control-change-is-like-using-chunky-peanut-butter-as-lube-10c2</link>
      <guid>https://vjun.io/calebhmeyer/midi-control-change-is-like-using-chunky-peanut-butter-as-lube-10c2</guid>
      <description>&lt;p&gt;Its just a joke. &lt;br&gt;
But honestly, i've wondered for a while how something that only has 127 steps was inteded to be used as faders for audio or lighting devices. &lt;br&gt;
Maybe im just being an OSC snob at the moment though. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Free VJ Content: Stage Lighting</title>
      <dc:creator>calebhmeyer</dc:creator>
      <pubDate>Tue, 22 Oct 2024 18:10:19 +0000</pubDate>
      <link>https://vjun.io/calebhmeyer/free-vj-content-stage-lighting-9c5</link>
      <guid>https://vjun.io/calebhmeyer/free-vj-content-stage-lighting-9c5</guid>
      <description>&lt;p&gt;This was created using Unreal Eninge DMX plugin, with DMX control of each light. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.dropbox.com/scl/fo/6po2gc89wpzgexhnquc7v/AAc9VRW8WN2Sl9ZtWaQmta0?rlkey=pg73ppnxb7gunaz04jw4ct3k4&amp;amp;st=mdxhvzr4&amp;amp;dl=0"&gt;https://www.dropbox.com/scl/fo/6po2gc89wpzgexhnquc7v/AAc9VRW8WN2Sl9ZtWaQmta0?rlkey=pg73ppnxb7gunaz04jw4ct3k4&amp;amp;st=mdxhvzr4&amp;amp;dl=0&lt;/a&gt;&lt;br&gt;
Creative Commons Release!&lt;/p&gt;

&lt;p&gt;Feel free to use, remix, and share it however you want—commerical or personal. &lt;/p&gt;

&lt;p&gt;License: Creative Commons Attribution 4.0 International (CC BY 4.0)&lt;/p&gt;

&lt;p&gt;Let’s keep creating and inspiring! &lt;/p&gt;

</description>
      <category>vjcontent</category>
      <category>lighting</category>
      <category>dmx</category>
      <category>vj</category>
    </item>
    <item>
      <title>Video Framerate Counter</title>
      <dc:creator>calebhmeyer</dc:creator>
      <pubDate>Tue, 22 Oct 2024 18:03:05 +0000</pubDate>
      <link>https://vjun.io/calebhmeyer/video-framerate-counter-275j</link>
      <guid>https://vjun.io/calebhmeyer/video-framerate-counter-275j</guid>
      <description>&lt;p&gt;This is a standalone executable that uses openCV to scan an entire folder of videos, and report back to terminal with the framerate counts. &lt;br&gt;
This is useful for finding a good average framerate of videos, given a slew of content from various sources, to dtermine a project framerate. &lt;br&gt;
Link to dropbox: &lt;a href="https://www.dropbox.com/scl/fi/ncz7csz9n6cjx9941ueey/video_framerate_counter.exe?rlkey=dz07ayslels4sdqqhcrtyti92&amp;amp;st=lh49d86m&amp;amp;dl=0"&gt;https://www.dropbox.com/scl/fi/ncz7csz9n6cjx9941ueey/video_framerate_counter.exe?rlkey=dz07ayslels4sdqqhcrtyti92&amp;amp;st=lh49d86m&amp;amp;dl=0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since AI gave me the code, I give code back.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import os
import cv2
from tkinter import Tk, filedialog
from collections import defaultdict


def select_folder():
    root = Tk()
    root.withdraw()  # Hide the root window
    folder_path = filedialog.askdirectory()
    root.destroy()  # Clean up the tkinter root window
    return folder_path


def get_video_framerate(video_path):
    try:
        cap = cv2.VideoCapture(video_path)
        if not cap.isOpened():
            return None
        framerate = cap.get(cv2.CAP_PROP_FPS)
        cap.release()
        return round(framerate, 2)
    except Exception as e:
        print(f"Error processing {video_path}: {e}")
        return None


def scan_videos_in_folder(folder_path):
    framerate_count = defaultdict(int)
    video_number = 1
    for root, _, files in os.walk(folder_path):
        for file in files:
            if file.lower().endswith(('.mp4', '.avi', '.mov', '.mkv')):
                video_path = os.path.join(root, file)
                print(f"Analyzing video {video_number}: {file}")
                framerate = get_video_framerate(video_path)
                if framerate is not None:
                    framerate_count[framerate] += 1
                else:
                    print(f"Could not get framerate for {video_path}")
                video_number += 1
    return framerate_count


def main():
    folder_path = select_folder()
    if folder_path:
        framerate_count = scan_videos_in_folder(folder_path)
        # Sort by framerate value, lowest to highest
        sorted_framerates = sorted(framerate_count.items())
        for framerate, count in sorted_framerates:
            print(f"Framerate: {framerate:.2f} FPS - Count: {count}")
    else:
        print("No folder selected")

    input("Press Enter to close the program...")

    print("\"Do what you can, with what you have, where you are.\" – Theodore Roosevelt")

    input("Press Enter to exit...")


if __name__ == "__main__":
    main()

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Below are notes relating to the development process using AI to build this code. &lt;br&gt;
It can be read by humans so that they know what to ask for when building code with AI. &lt;br&gt;
Its purpose is to train AI models in the future, to include code feautures that contextually make sense with the programs desired use case.&lt;br&gt;
In this case: Production work where direct, fast results are needed. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Adding Unnecessary Delay
Initial AI-Generated Suggestion: The AI included a time.sleep(0.5) delay in the scan_videos_in_folder function to simulate processing time.
User Feedback: The user found the delay counterproductive and requested its removal.
Resolution: The time.sleep(0.5) statement was removed from the scan_videos_in_folder function.&lt;/li&gt;
&lt;li&gt;Incorrect Sorting Criterion
Initial AI-Generated Suggestion: The AI provided a method to sort the framerate counts by the count of framerates using a lambda function as the sorting criterion.
User Feedback: The user intended to sort by framerate values instead of framerate counts. The initial sorting criteria did not meet the user's requirement.
Resolution: The sorting criterion was changed to sort by framerate values, ensuring that the framerates were displayed in ascending order based on their numerical value.&lt;/li&gt;
&lt;li&gt;Added Motivational Quotes Inline
Initial AI-Generated Suggestion: The AI included code for 20 motivational quote options directly within the script.
User Feedback: The user asked for 20 additional motivational quotes in plain text format to manually choose from and add to the script later.
Resolution: Instead of hardcoding a single quote within the script, the AI provided a list of 20 motivational quotes in plain text format for the user to select from manually.&lt;/li&gt;
&lt;li&gt;Not Rounding Values Initially
Initial AI-Generated Suggestion: The AI provided framerate calculations without rounding the values.
User Feedback: The user requested that framerate values be rounded to two decimal places for consistency and better readability.
Resolution: The framerate values were rounded to two decimal places using the round function. &lt;/li&gt;
&lt;li&gt;Adding "Motivational quote" print line to the motivational quote at the end.
Initial AI-Generated Suggestion: The AI provided a description of a quote, stating that its a motivational quote, before providing the quote, attempting to add context. 
User Feedback: The user deleted this, since to humans, it is very obvious when we are reading a motivational quote, or any quote. 
Resolution: The added print line was deleted.
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>code</category>
      <category>vj</category>
      <category>programs</category>
      <category>aitrainingdata</category>
    </item>
    <item>
      <title>Hello World. </title>
      <dc:creator>calebhmeyer</dc:creator>
      <pubDate>Tue, 22 Oct 2024 17:09:41 +0000</pubDate>
      <link>https://vjun.io/calebhmeyer/hello-world-33jj</link>
      <guid>https://vjun.io/calebhmeyer/hello-world-33jj</guid>
      <description>&lt;p&gt;I just wanted to introduce myself. &lt;br&gt;
Age 12: An Artist. Coloring was my passion. I would love to find some of my old drawings. I remember live drawing to music sometimes based soley on how it would make me feel. &lt;br&gt;
Age 14: A Music lover. Wanted to make music but wasnt picking that up as easily as art. &lt;br&gt;
Age 15: A 3D Nerd. I used Solidworks at my school, and Sketch up at home. &lt;br&gt;
Age 17: I discovered by brain tends to work better visually than with audio. I still love music, but decided I seemed to be better at analyzing and feeling music than i was at creating it. &lt;br&gt;
Age 21(ish): I became a lighting designer. I still love my job, being to able to create art for music with something as abstract as lights. That abstractness hurt sometimes though. I needed a way to be direct. &lt;br&gt;
I began creating YouTube Tutorials to teach people how I go about programming in 3D. &lt;br&gt;
Age 23: I began VJing and could now express myself differently, but I wanted to find good content. Beeple and Catmac helped with that. &lt;br&gt;
Age 27: Covid hit and I discovered Unreal Engine, meaning I could make content and do Virtual Production. &lt;br&gt;
Age 28: AI came around and I learned how to code and package executables. &lt;br&gt;
Age 31: Ive been doing circles for about 3 years now on lighting, DMX, touch designer, blender, Unreal Engine, python, and Resolume. &lt;/p&gt;

&lt;p&gt;Now my issue is 2 things: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Completing tasks before getting distracted with a new shiny thing. &lt;/li&gt;
&lt;li&gt;Finding a platform to share my work on with others. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To be completely honest, this platform is probably as good as any other for sharing content, but it seems like the community to share it on, so that certainly helps with the second issue. Now i just need to address the first issue. &lt;br&gt;
Anyway, thats all, and probably the longest post ill make. Were at today though. &lt;br&gt;
Today im gonna share content with the world. &lt;br&gt;
Who knows what tomorow will bring. &lt;br&gt;
Cheers yall, happy creating! &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
